summaryrefslogtreecommitdiff
path: root/mm-video-v4l2/vidc/vdec/src
diff options
context:
space:
mode:
Diffstat (limited to 'mm-video-v4l2/vidc/vdec/src')
-rwxr-xr-xmm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp34
1 files changed, 23 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 95e37677..2aa3fc2a 100755
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -1055,13 +1055,6 @@ OMX_ERRORTYPE omx_vdec::decide_dpb_buffer_mode(bool is_downscalar_enabled)
bool dither_enable = false;
bool capability_changed = false;
- // Check the component for its valid current state
- if (!BITMASK_PRESENT(&m_flags ,OMX_COMPONENT_IDLE_PENDING) &&
- !BITMASK_PRESENT(&m_flags, OMX_COMPONENT_OUTPUT_ENABLE_PENDING)) {
- DEBUG_PRINT_LOW("Invalid state to decide on dpb-opb split");
- return OMX_ErrorNone;
- }
-
// Downscalar is not supported
is_downscalar_enabled = false;
@@ -1087,7 +1080,7 @@ OMX_ERRORTYPE omx_vdec::decide_dpb_buffer_mode(bool is_downscalar_enabled)
if (dpb_bit_depth == MSM_VIDC_BIT_DEPTH_10) {
enable_split = true;
dpb_color_format = V4L2_MPEG_VIDC_VIDEO_DPB_COLOR_FMT_TP10_UBWC;
- if(is_flexible_format){ // if flexible formats are expected, QCom_P010 is set for 10bit cases here
+ if(is_flexible_format){ // if flexible formats are expected, P010 is set for 10bit cases here
drv_ctx.output_format = VDEC_YUV_FORMAT_P010_VENUS;
capture_capability = V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_P010;
capability_changed = true;
@@ -1109,6 +1102,9 @@ OMX_ERRORTYPE omx_vdec::decide_dpb_buffer_mode(bool is_downscalar_enabled)
if (dither_enable) {
dpb_color_format = V4L2_MPEG_VIDC_VIDEO_DPB_COLOR_FMT_TP10_UBWC;
+ capture_capability = m_disable_ubwc_mode ?
+ V4L2_PIX_FMT_NV12 : V4L2_PIX_FMT_NV12_UBWC;
+ capability_changed = true;
} else {
drv_ctx.output_format = VDEC_YUV_FORMAT_NV12_TP10_UBWC;
capture_capability = V4L2_PIX_FMT_NV12_TP10_UBWC;
@@ -1137,7 +1133,12 @@ OMX_ERRORTYPE omx_vdec::decide_dpb_buffer_mode(bool is_downscalar_enabled)
return OMX_ErrorUnsupportedSetting;
}
}
-
+ // Check the component for its valid current state
+ if (!BITMASK_PRESENT(&m_flags ,OMX_COMPONENT_IDLE_PENDING) &&
+ !BITMASK_PRESENT(&m_flags, OMX_COMPONENT_OUTPUT_ENABLE_PENDING)) {
+ DEBUG_PRINT_LOW("Invalid state to decide on dpb-opb split");
+ return OMX_ErrorNone;
+ }
eRet = set_dpb(enable_split, dpb_color_format);
if (eRet) {
DEBUG_PRINT_HIGH("Failed to set DPB buffer mode: %d", eRet);
@@ -1150,8 +1151,8 @@ bool omx_vdec::check_supported_flexible_formats(OMX_COLOR_FORMATTYPE required_fo
{
if(required_format == (OMX_COLOR_FORMATTYPE)QOMX_COLOR_FORMATYUV420PackedSemiPlanar32m ||
required_format == (OMX_COLOR_FORMATTYPE)QOMX_COLOR_FORMATYUV420SemiPlanarP010Venus) {
- //for now, the flexible formats should be QCOM_NV12 by default for 8bit cases
- //it will change to QCOM_P010 after 10bit port-reconfig accordingly
+ //for now, the flexible formats should be NV12 by default for 8bit cases
+ //it will change to P010 after 10bit port-reconfig accordingly
return TRUE;
}
else {
@@ -9022,6 +9023,17 @@ OMX_ERRORTYPE omx_vdec::update_portdef(OMX_PARAM_PORTDEFINITIONTYPE *portDefn)
portDefn->nBufferCountMin = MIN_NUM_INPUT_OUTPUT_EXTRADATA_BUFFERS;
portDefn->nBufferCountActual = MIN_NUM_INPUT_OUTPUT_EXTRADATA_BUFFERS;
portDefn->eDir = OMX_DirOutput;
+ portDefn->format.video.nFrameHeight = drv_ctx.video_resolution.frame_height;
+ portDefn->format.video.nFrameWidth = drv_ctx.video_resolution.frame_width;
+ portDefn->format.video.nStride = drv_ctx.video_resolution.stride;
+ portDefn->format.video.nSliceHeight = drv_ctx.video_resolution.scan_lines;
+ portDefn->format.video.eCompressionFormat = OMX_VIDEO_CodingUnused;
+ portDefn->format.video.eColorFormat = OMX_COLOR_FormatUnused;
+ DEBUG_PRINT_LOW(" get_parameter: Port idx %d nBufSize %u nBufCnt %u",
+ (int)portDefn->nPortIndex,
+ (unsigned int)portDefn->nBufferSize,
+ (unsigned int)portDefn->nBufferCountActual);
+ return eRet;
} else {
portDefn->eDir = OMX_DirMax;
DEBUG_PRINT_LOW(" get_parameter: Bad Port idx %d",