diff options
author | Priyanka Gujjula <pgujjula@codeaurora.org> | 2019-10-22 14:55:26 +0530 |
---|---|---|
committer | Priyanka Gujjula <pgujjula@codeaurora.org> | 2019-10-22 15:06:14 +0530 |
commit | 27227399598f7675a951218f796915e5dcb5e8d6 (patch) | |
tree | e654b3467a266ef37b08b35897bb6cd1b6c8527e | |
parent | a59d2a5e14752123aa6bcd4291e9de6827dff1af (diff) | |
download | android_hardware_qcom_media-27227399598f7675a951218f796915e5dcb5e8d6.tar.gz android_hardware_qcom_media-27227399598f7675a951218f796915e5dcb5e8d6.tar.bz2 android_hardware_qcom_media-27227399598f7675a951218f796915e5dcb5e8d6.zip |
vdec: Set correct output buffer size: dynamic meta mode
When frameworks queries for output buffer size on
decoder via OMX_IndexParamPortDefinition, expectation
is to return metadata buffer size instead of YUV
buffer size in dynamic metadata mode.
Change-Id: Ica54841cbc81b29c4b3bfa0b58f94a0f82de300b
-rw-r--r-- | mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp index cf2d0e56..dbff8f44 100644 --- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp +++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp @@ -12617,8 +12617,13 @@ OMX_BUFFERHEADERTYPE* omx_vdec::allocate_color_convert_buf::get_il_buf_hdr { bool status = true; pthread_mutex_lock(&omx->c_lock); + /* Whenever port mode is set to kPortModeDynamicANWBuffer, Video Frameworks + always uses VideoNativeMetadata and OMX recives buffer type as + grallocsource via storeMetaDataInBuffers_l API. The buffer_size + will be communicated to frameworks via IndexParamPortdefinition. */ if (!enabled) - buffer_size = omx->drv_ctx.op_buf.buffer_size; + buffer_size = omx->dynamic_buf_mode ? sizeof(struct VideoNativeMetadata) : + omx->drv_ctx.op_buf.buffer_size; else { buffer_size = c2dcc.getBuffSize(C2D_OUTPUT); } @@ -12627,9 +12632,10 @@ OMX_BUFFERHEADERTYPE* omx_vdec::allocate_color_convert_buf::get_il_buf_hdr } OMX_ERRORTYPE omx_vdec::allocate_color_convert_buf::set_buffer_req( - OMX_U32 buffer_size, OMX_U32 actual_count) { - OMX_U32 expectedSize = enabled ? buffer_size_req : omx->drv_ctx.op_buf.buffer_size; - + OMX_U32 buffer_size, OMX_U32 actual_count) +{ + OMX_U32 expectedSize = enabled ? buffer_size_req : omx->dynamic_buf_mode ? + sizeof(struct VideoDecoderOutputMetaData) : omx->drv_ctx.op_buf.buffer_size; if (buffer_size < expectedSize) { DEBUG_PRINT_ERROR("OP Requirements: Client size(%u) insufficient v/s requested(%u)", buffer_size, expectedSize); |