diff options
author | James Dong <jdong@google.com> | 2010-04-21 16:14:15 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2010-05-05 11:34:43 -0700 |
commit | 13aec890216948b0c364f8f92792129d0335f506 (patch) | |
tree | 73b6a98aa3a58fc4091129448561403098acb218 /media/libmediaplayerservice | |
parent | aa9ca29395eebfcfa64e070dc71009b99131769f (diff) | |
download | frameworks_av-13aec890216948b0c364f8f92792129d0335f506.zip frameworks_av-13aec890216948b0c364f8f92792129d0335f506.tar.gz frameworks_av-13aec890216948b0c364f8f92792129d0335f506.tar.bz2 |
Support audio and video track interleaving in the recorded mp4 file
Change-Id: Ifa27eb23ee265f84fe06773b29b0eb2b0b075b60
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/StagefrightRecorder.cpp | 20 | ||||
-rw-r--r-- | media/libmediaplayerservice/StagefrightRecorder.h | 4 |
2 files changed, 19 insertions, 5 deletions
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp index 682ff3a..57db7e4 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.cpp +++ b/media/libmediaplayerservice/StagefrightRecorder.cpp @@ -213,25 +213,31 @@ status_t StagefrightRecorder::setParamVideoEncodingBitRate(int32_t bitRate) { return OK; } -status_t StagefrightRecorder::setMaxDurationOrFileSize(int32_t limit, bool limit_is_duration) { - LOGV("setMaxDurationOrFileSize: limit (%d) for %s", +status_t StagefrightRecorder::setParamMaxDurationOrFileSize(int32_t limit, + bool limit_is_duration) { + LOGV("setParamMaxDurationOrFileSize: limit (%d) for %s", limit, limit_is_duration?"duration":"size"); return OK; } +status_t StagefrightRecorder::setParamInterleaveDuration(int32_t durationUs) { + LOGV("setParamInterleaveDuration: %d", durationUs); + mInterleaveDurationUs = durationUs; + return OK; +} status_t StagefrightRecorder::setParameter( const String8 &key, const String8 &value) { LOGV("setParameter: key (%s) => value (%s)", key.string(), value.string()); if (key == "max-duration") { int32_t max_duration_ms; if (safe_strtoi64(value.string(), &max_duration_ms)) { - return setMaxDurationOrFileSize( + return setParamMaxDurationOrFileSize( max_duration_ms, true /* limit_is_duration */); } } else if (key == "max-filesize") { int32_t max_filesize_bytes; if (safe_strtoi64(value.string(), &max_filesize_bytes)) { - return setMaxDurationOrFileSize( + return setParamMaxDurationOrFileSize( max_filesize_bytes, false /* limit is filesize */); } } else if (key == "audio-param-sampling-rate") { @@ -254,6 +260,11 @@ status_t StagefrightRecorder::setParameter( if (safe_strtoi64(value.string(), &video_bitrate)) { return setParamVideoEncodingBitRate(video_bitrate); } + } else if (key == "param-interleave-duration-us") { + int32_t durationUs; + if (safe_strtoi64(value.string(), &durationUs)) { + return setParamInterleaveDuration(durationUs); + } } else { LOGE("setParameter: failed to find key %s", key.string()); return BAD_VALUE; @@ -480,6 +491,7 @@ status_t StagefrightRecorder::startMPEG4Recording() { mWriter->addSource(encoder); } + ((MPEG4Writer *)mWriter.get())->setInterleaveDuration(mInterleaveDurationUs); mWriter->start(); return OK; } diff --git a/media/libmediaplayerservice/StagefrightRecorder.h b/media/libmediaplayerservice/StagefrightRecorder.h index ad1153c..3b99e91 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.h +++ b/media/libmediaplayerservice/StagefrightRecorder.h @@ -74,6 +74,7 @@ private: int32_t mAudioBitRate; int32_t mAudioChannels; int32_t mSampleRate; + int32_t mInterleaveDurationUs; String8 mParams; int mOutputFd; @@ -87,7 +88,8 @@ private: status_t setParamAudioEncodingBitRate(int32_t bitRate); status_t setParamAudioNumberOfChannels(int32_t channles); status_t setParamAudioSamplingRate(int32_t sampleRate); - status_t setMaxDurationOrFileSize(int32_t limit, bool limit_is_duration); + status_t setParamInterleaveDuration(int32_t durationUs); + status_t setParamMaxDurationOrFileSize(int32_t limit, bool limit_is_duration); StagefrightRecorder(const StagefrightRecorder &); StagefrightRecorder &operator=(const StagefrightRecorder &); |