summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2020-04-07 11:17:52 -0700
committerXin Li <delphij@google.com>2020-04-07 15:14:04 -0700
commit9d48fd3b30a6fda147094c9eb960207b659cf21f (patch)
treec5dc9195f7479351ef97a702ba8403c37df5d406
parent507841ed486153fd14cbc1f4a9a6ffad12385254 (diff)
parent3903fa9cea4c24ee2b269136325aaae4aa14f7a3 (diff)
downloadmedia-9d48fd3b30a6fda147094c9eb960207b659cf21f.tar.gz
DO NOT MERGE - Merge QQ2A.200405.005 into master
Bug: 150877681 Change-Id: Ib0929861836cfd12fa29cc371c461355ef832173 Merged-In: Ica54841cbc81b29c4b3bfa0b58f94a0f82de300b
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp14
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 af9125f1..8eb30c3f 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -11375,8 +11375,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 receives 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);
}
@@ -11385,9 +11390,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 = is_color_conversion_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);