From 9c075bca0b75093ca0514a3c8f74d73c8e9e83fd Mon Sep 17 00:00:00 2001 From: Nipun Kwatra Date: Thu, 26 Aug 2010 17:05:18 -0700 Subject: 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 --- media/libmediaplayerservice/StagefrightRecorder.h | 29 ++++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'media/libmediaplayerservice/StagefrightRecorder.h') 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); 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& listener); virtual status_t prepare(); @@ -65,7 +69,7 @@ private: sp mCamera; sp mPreviewSurface; sp mListener; - sp mWriter; + sp mWriter, mWriterAux; sp 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 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); + void setupMPEG4MetaData(int64_t startTimeUs, int32_t totalBitRate, + sp *meta); status_t startMPEG4Recording(); status_t startAMRRecording(); status_t startAACRecording(); status_t startRTPRecording(); sp createAudioSource(); - status_t setupCameraSource(); + status_t setupCamera(); + status_t setupCameraSource(sp *cameraSource); status_t setupAudioEncoder(const sp& writer); - status_t setupVideoEncoder(sp *source); + status_t setupVideoEncoder( + sp cameraSource, + int32_t videoBitRate, + sp *source); // Encoding parameter handling utilities status_t setParameter(const String8 &key, const String8 &value); -- cgit v1.1