diff options
-rw-r--r-- | mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp | 38 |
1 files changed, 27 insertions, 11 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 201f6e09..68b48073 100644 --- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp +++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp @@ -1612,7 +1612,7 @@ void omx_vdec::process_event_cb(void *ctxt) pThis->omx_report_error (); break; } -#if !HDR10_SETMETADATA_ENABLE +//#if !HDR10_SETMETADATA_ENABLE if (pThis->output_capability != V4L2_PIX_FMT_VP9 && pThis->output_capability != V4L2_PIX_FMT_HEVC) break; @@ -1634,7 +1634,7 @@ void omx_vdec::process_event_cb(void *ctxt) OMX_CORE_OUTPUT_PORT_INDEX, OMX_QTIIndexConfigDescribeHDR10PlusInfo, NULL); } -#endif +//#endif break; case OMX_COMPONENT_GENERATE_EVENT_INPUT_FLUSH: @@ -3142,7 +3142,7 @@ OMX_ERRORTYPE omx_vdec::send_command_proxy(OMX_IN OMX_HANDLETYPE hComp, struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts); - ts.tv_sec += 2; + ts.tv_sec += 1; DEBUG_PRINT_LOW("waiting for %d EBDs of CODEC CONFIG buffers ", m_queued_codec_config_count); BITMASK_SET(&m_flags, OMX_COMPONENT_FLUSH_DEFERRED); @@ -11535,14 +11535,14 @@ bool omx_vdec::handle_extradata(OMX_BUFFERHEADERTYPE *p_buf_hdr) (payload_len > HDR_DYNAMIC_META_DATA_SZ)) { DEBUG_PRINT_ERROR("Invalid User extradata size %u for HDR10+", data->nDataSize); } else { -#if HDR10_SETMETADATA_ENABLE +// enable setting metadata via gralloc handle +//#if HDR10_SETMETADATA_ENABLE color_mdata.dynamicMetaDataValid = true; color_mdata.dynamicMetaDataLen = payload_len; memcpy(color_mdata.dynamicMetaDataPayload, userdata_payload->data, payload_len); DEBUG_PRINT_HIGH("Copied %u bytes of HDR10+ extradata", payload_len); -#else +//#endif store_hevc_hdr10plusinfo(payload_len, userdata_payload); -#endif } } if (client_extradata & OMX_EXTNUSER_EXTRADATA) { @@ -11610,7 +11610,8 @@ bool omx_vdec::handle_extradata(OMX_BUFFERHEADERTYPE *p_buf_hdr) final_color_aspects.mMatrixCoeffs = ColorAspects::MatrixBT601_6; } get_preferred_hdr_info(final_hdr_info); -#if HDR10_SETMETADATA_ENABLE +// enable setting metadata via gralloc handle +//#if HDR10_SETMETADATA_ENABLE convert_hdr_info_to_metadata(final_hdr_info, color_mdata); convert_hdr10plusinfo_to_metadata(p_buf_hdr->pMarkData, color_mdata); remove_hdr10plusinfo_using_cookie(p_buf_hdr->pMarkData); @@ -11618,7 +11619,7 @@ bool omx_vdec::handle_extradata(OMX_BUFFERHEADERTYPE *p_buf_hdr) print_debug_hdr_color_info_mdata(&color_mdata); print_debug_hdr10plus_metadata(color_mdata); set_colormetadata_in_handle(&color_mdata, buf_index); -#endif +//#endif } } @@ -12802,9 +12803,9 @@ bool omx_vdec::allocate_color_convert_buf::get_color_format(OMX_COLOR_FORMATTYPE void omx_vdec::send_codec_config() { if (codec_config_flag) { - unsigned long p1 = 0; // Parameter - 1 - unsigned long p2 = 0; // Parameter - 2 - unsigned long ident = 0; + unsigned long p1 = 0, p2 = 0; + unsigned long p3 = 0, p4 = 0; + unsigned long ident = 0, ident2 = 0; pthread_mutex_lock(&m_lock); DEBUG_PRINT_LOW("\n Check Queue for codec_config buffer \n"); while (m_etb_q.m_size) { @@ -12822,6 +12823,21 @@ void omx_vdec::send_codec_config() { } } else if (ident == OMX_COMPONENT_GENERATE_ETB) { if (((OMX_BUFFERHEADERTYPE *)p2)->nFlags & OMX_BUFFERFLAG_CODECCONFIG) { + while (m_ftb_q.m_size) { + m_ftb_q.pop_entry(&p3,&p4,&ident2); + if (ident2 == OMX_COMPONENT_GENERATE_FTB) { + pthread_mutex_unlock(&m_lock); + if (fill_this_buffer_proxy((OMX_HANDLETYPE)p3,\ + (OMX_BUFFERHEADERTYPE *)p4) != OMX_ErrorNone) { + DEBUG_PRINT_ERROR("\n fill_this_buffer_proxy failure"); + omx_report_error (); + } + pthread_mutex_lock(&m_lock); + } else if (ident2 == OMX_COMPONENT_GENERATE_FBD) { + fill_buffer_done(&m_cmp,(OMX_BUFFERHEADERTYPE *)p3); + } + } + pthread_mutex_unlock(&m_lock); if (empty_this_buffer_proxy((OMX_HANDLETYPE)p1,\ (OMX_BUFFERHEADERTYPE *)p2) != OMX_ErrorNone) { DEBUG_PRINT_ERROR("\n empty_this_buffer_proxy failure"); |