summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVasantha Balla <vballa@codeaurora.org>2015-08-05 17:31:36 +0530
committerVasantha Balla <vballa@codeaurora.org>2015-08-17 19:18:58 +0530
commitdcb46d44c51e3e1389529acb1e594df0e35c16cf (patch)
treee28e35b2e2f86068a4b25e689fb7189f673fdaa7
parent21d55c230f7de07f0107bed8ded4f740cf116314 (diff)
downloadandroid_hardware_qcom_media-dcb46d44c51e3e1389529acb1e594df0e35c16cf.tar.gz
android_hardware_qcom_media-dcb46d44c51e3e1389529acb1e594df0e35c16cf.tar.bz2
android_hardware_qcom_media-dcb46d44c51e3e1389529acb1e594df0e35c16cf.zip
mm-video-v4l2: vdec: Handle empty EOS buffer.
Input buffer queued with EOS flag may have 0 filled-length. Ignore checks for pBuffer-sanity and continue to signal EOS. Bug: 21659665 Change-Id: I2d0e09ffe37e73b1799fd41a869cdf0372277ecf
-rw-r--r--mm-video-v4l2/vidc/venc/src/omx_video_base.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
index 632467de..c607db43 100644
--- a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
+++ b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
@@ -4479,6 +4479,7 @@ OMX_ERRORTYPE omx_video::empty_this_buffer_opaque(OMX_IN OMX_HANDLETYPE hComp,
unsigned nBufIndex = 0;
OMX_ERRORTYPE ret = OMX_ErrorNone;
encoder_media_buffer_type *media_buffer;
+ private_handle_t *handle = NULL;
DEBUG_PRINT_LOW("ETBProxyOpaque: buffer[%p]", buffer);
if (buffer == NULL) {
@@ -4492,13 +4493,15 @@ OMX_ERRORTYPE omx_video::empty_this_buffer_opaque(OMX_IN OMX_HANDLETYPE hComp,
return OMX_ErrorBadParameter;
}
media_buffer = (encoder_media_buffer_type *)buffer->pBuffer;
- if (!media_buffer || !media_buffer->meta_handle) {
+ if ((!media_buffer || !media_buffer->meta_handle) &&
+ !(buffer->nFlags & OMX_BUFFERFLAG_EOS)) {
DEBUG_PRINT_ERROR("Incorrect Buffer queued media buffer = %p meta handle = %p",
media_buffer, media_buffer->meta_handle);
m_pCallbacks.EmptyBufferDone(hComp, m_app_data, buffer);
return OMX_ErrorBadParameter;
+ } else if (media_buffer) {
+ handle = (private_handle_t *)media_buffer->meta_handle;
}
- private_handle_t *handle = (private_handle_t *)media_buffer->meta_handle;
/*Enable following code once private handle color format is
updated correctly*/