diff options
author | Surajit Podder <spodder@codeaurora.org> | 2015-07-21 15:29:39 +0530 |
---|---|---|
committer | Satish Kamuju <skamuj@codeaurora.org> | 2015-10-06 17:36:01 +0530 |
commit | 9953765019ae2243e98e8e74eee327c9893b93d1 (patch) | |
tree | a0d21f06540cbdac85dcb6348a27b9eddf3cb68d /media/libstagefright | |
parent | bd019775a921ae9165e924e4d37bc838a7ef5781 (diff) | |
download | frameworks_av-9953765019ae2243e98e8e74eee327c9893b93d1.zip frameworks_av-9953765019ae2243e98e8e74eee327c9893b93d1.tar.gz frameworks_av-9953765019ae2243e98e8e74eee327c9893b93d1.tar.bz2 |
video: Modify classes to support camcorder pause/resume
* Modify MediaRecorder, CameraSource, AudioSource to
be extendable.
* Add hooks to instantiate extended implementations to
implement pause/resume.
Change-Id: I847263fc69e4f613c5ea60fb6809c7da176d3a8d
Diffstat (limited to 'media/libstagefright')
-rw-r--r-- | media/libstagefright/MPEG4Writer.cpp | 6 | ||||
-rw-r--r-- | media/libstagefright/MediaCodecSource.cpp | 5 |
2 files changed, 8 insertions, 3 deletions
diff --git a/media/libstagefright/MPEG4Writer.cpp b/media/libstagefright/MPEG4Writer.cpp index dd80b42..94f40b4 100644 --- a/media/libstagefright/MPEG4Writer.cpp +++ b/media/libstagefright/MPEG4Writer.cpp @@ -697,8 +697,6 @@ status_t MPEG4Writer::start(MetaData *param) { mIsRealTimeRecording = isRealTimeRecording; } - mStartTimestampUs = -1; - if (mStarted) { if (mPaused) { mPaused = false; @@ -707,6 +705,8 @@ status_t MPEG4Writer::start(MetaData *param) { return OK; } + mStartTimestampUs = -1; + if (!param || !param->findInt32(kKeyTimeScale, &mTimeScale)) { mTimeScale = 1000; @@ -2331,6 +2331,7 @@ status_t MPEG4Writer::Track::threadEntry() { previousPausedDurationUs = mStartTimestampUs; } +#if 0 if (mResumed) { int64_t durExcludingEarlierPausesUs = timestampUs - previousPausedDurationUs; if (WARN_UNLESS(durExcludingEarlierPausesUs >= 0ll, "for %s track", trackName)) { @@ -2347,6 +2348,7 @@ status_t MPEG4Writer::Track::threadEntry() { previousPausedDurationUs += pausedDurationUs - lastDurationUs; mResumed = false; } +#endif timestampUs -= previousPausedDurationUs; if (WARN_UNLESS(timestampUs >= 0ll, "for %s track", trackName)) { diff --git a/media/libstagefright/MediaCodecSource.cpp b/media/libstagefright/MediaCodecSource.cpp index ac25683..dbd9cb0 100644 --- a/media/libstagefright/MediaCodecSource.cpp +++ b/media/libstagefright/MediaCodecSource.cpp @@ -645,6 +645,9 @@ status_t MediaCodecSource::onStart(MetaData *params) { resume(); } else { CHECK(mPuller != NULL); + if (mIsVideo) { + mEncoder->requestIDRFrame(); + } mPuller->resume(); } return OK; @@ -864,7 +867,7 @@ void MediaCodecSource::onMessageReceived(const sp<AMessage> &msg) { } case kWhatPause: { - if (mFlags && FLAG_USE_SURFACE_INPUT) { + if (mFlags & FLAG_USE_SURFACE_INPUT) { suspend(); } else { CHECK(mPuller != NULL); |