summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/StagefrightRecorder.h
diff options
context:
space:
mode:
authorNipun Kwatra <nkwatra@google.com>2010-08-26 17:05:18 -0700
committerNipun Kwatra <nkwatra@google.com>2010-08-31 10:38:49 -0700
commit9c075bca0b75093ca0514a3c8f74d73c8e9e83fd (patch)
tree5669e5acd20c684e4ec8f28e68f883066c640600 /media/libmediaplayerservice/StagefrightRecorder.h
parent6865ddb29fc7e7a14104d73c65b71074502bb6c7 (diff)
downloadframeworks_av-9c075bca0b75093ca0514a3c8f74d73c8e9e83fd.zip
frameworks_av-9c075bca0b75093ca0514a3c8f74d73c8e9e83fd.tar.gz
frameworks_av-9c075bca0b75093ca0514a3c8f74d73c8e9e83fd.tar.bz2
Adding support for parallel recording sessions.
- Added setOutputFileAuxiliary to pass the auxiliary file descriptor. The java interface through JNI will be checked in next. - renamed setupCameraSource to setupCamera as the function just sets the camera. - Added setupCameraSource which sets up the camera source. This functionality was in setupVideoEncoder before. - setupVideoEncoder now takes in a cameraSource instead of creating it on it own. - Refactored startMPEG4Recording() to use setupMPEG4Recording, setupMPEG4MetaData. - setupMPEG4Recording() takes in file descriptor, bitrates to setup a mpeg4 writer. This function can be called multiple times to setup multiple writers. - Added setupMPEG4MetaData() for setting up the meta data for mpeg4 writer. startMPEG4Recording() now calls setupMPEG4Recording, setupMPEG4MetaData for each recording session. Change-Id: I07f5334a1ff8e12a36f58e94129fcfa6add2208b
Diffstat (limited to 'media/libmediaplayerservice/StagefrightRecorder.h')
-rw-r--r--media/libmediaplayerservice/StagefrightRecorder.h29
1 files changed, 23 insertions, 6 deletions
diff --git a/media/libmediaplayerservice/StagefrightRecorder.h b/media/libmediaplayerservice/StagefrightRecorder.h
index 628e19b..d75a540 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.h
+++ b/media/libmediaplayerservice/StagefrightRecorder.h
@@ -24,8 +24,11 @@
namespace android {
class Camera;
+class CameraSource;
+class MediaSourceSplitter;
struct MediaSource;
struct MediaWriter;
+class MetaData;
struct AudioSource;
class MediaProfiles;
@@ -45,6 +48,7 @@ struct StagefrightRecorder : public MediaRecorderBase {
virtual status_t setPreviewSurface(const sp<Surface>& surface);
virtual status_t setOutputFile(const char *path);
virtual status_t setOutputFile(int fd, int64_t offset, int64_t length);
+ virtual status_t setOutputFileAuxiliary(int fd);
virtual status_t setParameters(const String8& params);
virtual status_t setListener(const sp<IMediaRecorderClient>& listener);
virtual status_t prepare();
@@ -65,7 +69,7 @@ private:
sp<Camera> mCamera;
sp<Surface> mPreviewSurface;
sp<IMediaRecorderClient> mListener;
- sp<MediaWriter> mWriter;
+ sp<MediaWriter> mWriter, mWriterAux;
sp<AudioSource> mAudioSourceNode;
audio_source mAudioSource;
@@ -76,8 +80,8 @@ private:
bool mUse64BitFileOffset;
int32_t mVideoWidth, mVideoHeight;
int32_t mFrameRate;
- int32_t mVideoBitRate;
- int32_t mAudioBitRate;
+ int32_t mVideoBitRate, mVideoBitRateAux;
+ int32_t mAudioBitRate, mAudioBitRateAux;
int32_t mAudioChannels;
int32_t mSampleRate;
int32_t mInterleaveDurationUs;
@@ -95,21 +99,34 @@ private:
bool mCaptureTimeLapse;
bool mUseStillCameraForTimeLapse;
int64_t mTimeBetweenTimeLapseFrameCaptureUs;
+ bool mCaptureAuxVideo;
+ sp<MediaSourceSplitter> mCameraSourceSplitter;
String8 mParams;
- int mOutputFd;
+ int mOutputFd, mOutputFdAux;
int32_t mFlags;
MediaProfiles *mEncoderProfiles;
+ status_t setupMPEG4Recording(
+ bool useAuxiliaryCameraSource,
+ int outputFd, int32_t audioBitRate, int32_t videoBitRate,
+ int32_t *totalBitRate,
+ sp<MediaWriter> *mediaWriter);
+ void setupMPEG4MetaData(int64_t startTimeUs, int32_t totalBitRate,
+ sp<MetaData> *meta);
status_t startMPEG4Recording();
status_t startAMRRecording();
status_t startAACRecording();
status_t startRTPRecording();
sp<MediaSource> createAudioSource();
- status_t setupCameraSource();
+ status_t setupCamera();
+ status_t setupCameraSource(sp<CameraSource> *cameraSource);
status_t setupAudioEncoder(const sp<MediaWriter>& writer);
- status_t setupVideoEncoder(sp<MediaSource> *source);
+ status_t setupVideoEncoder(
+ sp<MediaSource> cameraSource,
+ int32_t videoBitRate,
+ sp<MediaSource> *source);
// Encoding parameter handling utilities
status_t setParameter(const String8 &key, const String8 &value);