aboutsummaryrefslogtreecommitdiffstats
path: root/videocodec/OMXVideoEncoderH263.cpp
diff options
context:
space:
mode:
authorZhao Liang <leo.zhao@intel.com>2013-08-23 14:21:16 +0800
committerPatrick Tjin <pattjin@google.com>2014-07-21 22:02:53 -0700
commit88c8d2ab4d97fe48ed25c3adff105f2cef5a2d36 (patch)
tree36bc56a577c464b86342f0c30d9bcb59e9e97d1d /videocodec/OMXVideoEncoderH263.cpp
parentdccea72fa33ead9951c7863344d4b1c99deb820a (diff)
downloadandroid_hardware_intel_common_omx-components-88c8d2ab4d97fe48ed25c3adff105f2cef5a2d36.tar.gz
android_hardware_intel_common_omx-components-88c8d2ab4d97fe48ed25c3adff105f2cef5a2d36.tar.bz2
android_hardware_intel_common_omx-components-88c8d2ab4d97fe48ed25c3adff105f2cef5a2d36.zip
Support Sync mode video encoding in omx
BZ: 131021 Use one new ext parameter to control sync mode, this mode is used for timelapse recording Signed-off-by: Zhao Liang <leo.zhao@intel.com> Change-Id: I099d62d02bdf28598893d7167486b4d5f1623120 Reviewed-on: http://android.intel.com:8080/127318 Reviewed-by: Zhao, Leo <leo.zhao@intel.com> Reviewed-by: Yuan, Shengquan <shengquan.yuan@intel.com> Reviewed-by: Shi, PingX <pingx.shi@intel.com> Tested-by: Shi, PingX <pingx.shi@intel.com> Reviewed-by: cactus <cactus@intel.com> Tested-by: cactus <cactus@intel.com>
Diffstat (limited to 'videocodec/OMXVideoEncoderH263.cpp')
-rw-r--r--videocodec/OMXVideoEncoderH263.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/videocodec/OMXVideoEncoderH263.cpp b/videocodec/OMXVideoEncoderH263.cpp
index 0c62532..c81e9ec 100644
--- a/videocodec/OMXVideoEncoderH263.cpp
+++ b/videocodec/OMXVideoEncoderH263.cpp
@@ -143,14 +143,12 @@ OMX_ERRORTYPE OMXVideoEncoderH263::ProcessorProcess(
ports[INPORT_INDEX]->ReturnAllRetainedBuffers();
}
-#ifndef SYNC_MODE
- if (mFrameInputCount == 0) {
+ if (mSyncEncoding == OMX_FALSE && mFrameInputCount == 0) {
retains[INPORT_INDEX] = BUFFER_RETAIN_ACCUMULATE;
retains[OUTPORT_INDEX] = BUFFER_RETAIN_GETAGAIN;
mFrameRetrieved = OMX_TRUE;
goto out;
}
-#endif
outBuf.format = OUTPUT_EVERYTHING;
ret = mVideoEncoder->getOutput(&outBuf);
@@ -158,7 +156,11 @@ OMX_ERRORTYPE OMXVideoEncoderH263::ProcessorProcess(
if(ret == ENCODE_NO_REQUEST_DATA) {
mFrameRetrieved = OMX_TRUE;
retains[OUTPORT_INDEX] = BUFFER_RETAIN_GETAGAIN;
- retains[INPORT_INDEX] = BUFFER_RETAIN_ACCUMULATE;
+ if (mSyncEncoding)
+ retains[INPORT_INDEX] = BUFFER_RETAIN_NOT_RETAIN;
+ else
+ retains[INPORT_INDEX] = BUFFER_RETAIN_ACCUMULATE;
+
goto out;
}
@@ -174,7 +176,10 @@ OMX_ERRORTYPE OMXVideoEncoderH263::ProcessorProcess(
if(outBuf.flag & ENCODE_BUFFERFLAG_ENDOFFRAME) {
outflags |= OMX_BUFFERFLAG_ENDOFFRAME;
mFrameRetrieved = OMX_TRUE;
- retains[INPORT_INDEX] = BUFFER_RETAIN_ACCUMULATE;
+ if (mSyncEncoding)
+ retains[INPORT_INDEX] = BUFFER_RETAIN_NOT_RETAIN;
+ else
+ retains[INPORT_INDEX] = BUFFER_RETAIN_ACCUMULATE;
} else {
retains[INPORT_INDEX] = BUFFER_RETAIN_GETAGAIN; //get again