aboutsummaryrefslogtreecommitdiffstats
path: root/videocodec/OMXVideoEncoderVP8.cpp
diff options
context:
space:
mode:
authorbolunliu <bolun.liu@intel.com>2014-04-22 16:03:56 +0800
committerPatrick Tjin <pattjin@google.com>2014-07-21 22:02:59 -0700
commitdc6587395a102b4d59af5010adf5a6507b1f6556 (patch)
tree08c7843d90dd30b94affe6fe11480be2c2761771 /videocodec/OMXVideoEncoderVP8.cpp
parentc7c62e049c2339d74164c393ee637890cf00454b (diff)
downloadandroid_hardware_intel_common_omx-components-dc6587395a102b4d59af5010adf5a6507b1f6556.tar.gz
android_hardware_intel_common_omx-components-dc6587395a102b4d59af5010adf5a6507b1f6556.tar.bz2
android_hardware_intel_common_omx-components-dc6587395a102b4d59af5010adf5a6507b1f6556.zip
Add NO_Request_Data error processing for VP8 encode.
BZ: 189358 FW may output empty buffer when bitrate is low. OMX Component will process this kind of error. Just hold output buffer and get again not return error value to application. Change-Id: Ib3f4e06b034fb3dabe5288f747f862ec99b22e52 Signed-off-by: bolunliu <bolun.liu@intel.com>
Diffstat (limited to 'videocodec/OMXVideoEncoderVP8.cpp')
-rw-r--r--videocodec/OMXVideoEncoderVP8.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/videocodec/OMXVideoEncoderVP8.cpp b/videocodec/OMXVideoEncoderVP8.cpp
index 2866ba1..d952913 100644
--- a/videocodec/OMXVideoEncoderVP8.cpp
+++ b/videocodec/OMXVideoEncoderVP8.cpp
@@ -115,8 +115,18 @@ OMX_ERRORTYPE OMXVideoEncoderVP8::ProcessorProcess(OMX_BUFFERHEADERTYPE **buffer
{
outBuf.format = OUTPUT_EVERYTHING;
- mVideoEncoder->getOutput(&outBuf);
- CHECK_ENCODE_STATUS("getOutput");
+ ret = mVideoEncoder->getOutput(&outBuf);
+ //CHECK_ENCODE_STATUS("getOutput");
+ if(ret == ENCODE_NO_REQUEST_DATA) {
+ mFrameRetrieved = OMX_TRUE;
+ retains[OUTPORT_INDEX] = BUFFER_RETAIN_GETAGAIN;
+ if (mSyncEncoding)
+ retains[INPORT_INDEX] = BUFFER_RETAIN_NOT_RETAIN;
+ else
+ retains[INPORT_INDEX] = BUFFER_RETAIN_ACCUMULATE;
+
+ goto out;
+ }
LOGV("VP8 encode output data size = %d", outBuf.dataSize);