diff options
author | James Dong <jdong@google.com> | 2011-01-25 16:31:28 -0800 |
---|---|---|
committer | James Dong <jdong@google.com> | 2011-01-26 12:11:22 -0800 |
commit | 7757f5010a771fb8824b6fdf9788f588a1577e3f (patch) | |
tree | a4ba5608184d5141deae9bed5efd3d2b37d7593c /include | |
parent | 2494373e91399a97ad405f4e42dff6543cc296c7 (diff) | |
download | frameworks_av-7757f5010a771fb8824b6fdf9788f588a1577e3f.zip frameworks_av-7757f5010a771fb8824b6fdf9788f588a1577e3f.tar.gz frameworks_av-7757f5010a771fb8824b6fdf9788f588a1577e3f.tar.bz2 |
Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.
This will fix the stop failure issue where we have to wait n * time_interval before a key frame can be received by the file writer, where
o n is the actual number of buffers advertised by the video encoder
o time_interval is the interval settings for timelapse video recording
specifying the time distance between neighboring input video frames
The fix includes two parts:
o OMXCodec will not submit all n buffers at one time, but instead submit one input
frame at one time if it become available.
o Timelapse camera source made available the first two input frames and do not skip
them so that the first compressed output frame data can be received regardless
the specified time_interval
bug - 3367659
Change-Id: Ia68cc2cb0d71aa7dc54540e9ad82fae911ad530b
Diffstat (limited to 'include')
-rw-r--r-- | include/media/stagefright/CameraSource.h | 2 | ||||
-rw-r--r-- | include/media/stagefright/OMXCodec.h | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/include/media/stagefright/CameraSource.h b/include/media/stagefright/CameraSource.h index 794355b..4a39fbf 100644 --- a/include/media/stagefright/CameraSource.h +++ b/include/media/stagefright/CameraSource.h @@ -158,6 +158,7 @@ protected: int32_t mNumFramesReceived; int64_t mLastFrameTimestampUs; bool mStarted; + int32_t mNumFramesEncoded; CameraSource(const sp<ICamera>& camera, int32_t cameraId, Size videoSize, int32_t frameRate, @@ -189,7 +190,6 @@ private: List<int64_t> mFrameTimes; int64_t mFirstFrameTimeUs; - int32_t mNumFramesEncoded; int32_t mNumFramesDropped; int32_t mNumGlitches; int64_t mGlitchDurationThresholdUs; diff --git a/include/media/stagefright/OMXCodec.h b/include/media/stagefright/OMXCodec.h index 3251c28..82948cb 100644 --- a/include/media/stagefright/OMXCodec.h +++ b/include/media/stagefright/OMXCodec.h @@ -47,6 +47,9 @@ struct OMXCodec : public MediaSource, // Store meta data in video buffers kStoreMetaDataInVideoBuffers = 32, + + // Only submit one input buffer at one time. + kOnlySubmitOneInputBufferAtOneTime = 64, }; static sp<MediaSource> Create( const sp<IOMX> &omx, @@ -192,6 +195,7 @@ private: Condition mBufferFilled; bool mIsMetaDataStoredInVideoBuffers; + bool mOnlySubmitOneBufferAtOneTime; OMXCodec(const sp<IOMX> &omx, IOMX::node_id node, uint32_t quirks, bool isEncoder, const char *mime, const char *componentName, |