diff options
author | Umesh Pandey <umeshp@codeaurora.org> | 2017-07-06 15:02:31 -0700 |
---|---|---|
committer | Umesh Pandey <umeshp@codeaurora.org> | 2017-07-13 16:17:26 -0700 |
commit | 8ecad1bb87e63d62359304277b6136713c430d73 (patch) | |
tree | 86800fa25e56ed1e960cc3cc9a9984b94a969aae | |
parent | 4159dd886075d60854b3b8a25f7fd662646b4274 (diff) | |
download | media-8ecad1bb87e63d62359304277b6136713c430d73.tar.gz |
mm-video-v4l2: vdec: Color Concealment
8 bit and 10bit color concealment can have 2 different values. Set
separate conceal color values using extended controls.
CRs-Fixed: 2073948
Change-Id: I861b166c7fc371b690c7ae9a3823c8777769f477
-rw-r--r-- | libplatformconfig/PlatformConfig.cpp | 2 | ||||
-rw-r--r-- | libplatformconfig/PlatformConfig.h | 8 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp | 32 |
3 files changed, 27 insertions, 15 deletions
diff --git a/libplatformconfig/PlatformConfig.cpp b/libplatformconfig/PlatformConfig.cpp index 0636c1bc..34a88173 100644 --- a/libplatformconfig/PlatformConfig.cpp +++ b/libplatformconfig/PlatformConfig.cpp @@ -38,7 +38,7 @@ namespace Platform { -#define PLAT_CONFIG_FILE "vendor/etc/system_properties.xml" +#define PLAT_CONFIG_FILE "/vendor/etc/system_properties.xml" Config* Config::mInstance; diff --git a/libplatformconfig/PlatformConfig.h b/libplatformconfig/PlatformConfig.h index 72776bc9..ebe27e40 100644 --- a/libplatformconfig/PlatformConfig.h +++ b/libplatformconfig/PlatformConfig.h @@ -53,7 +53,9 @@ typedef enum { vidc_dec_log_in = 0, vidc_dec_log_out, vidc_enc_log_in, - vidc_enc_log_out + vidc_enc_log_out, + vidc_dec_conceal_color_8bit, + vidc_dec_conceal_color_10bit, } Config_t; struct configStr { @@ -65,7 +67,9 @@ static const struct configStr configStrMap[] = { {vidc_dec_log_in, "vidc_dec_log_in"}, {vidc_dec_log_out, "vidc_dec_log_out"}, {vidc_enc_log_in, "vidc_enc_log_in"}, - {vidc_enc_log_out, "vidc_enc_log_out"} + {vidc_enc_log_out, "vidc_enc_log_out"}, + {vidc_dec_conceal_color_8bit, "vidc_dec_conceal_color_8bit"}, + {vidc_dec_conceal_color_10bit, "vidc_dec_conceal_color_10bit"}, }; class Config { 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 bd4a84d9..e2f80552 100644 --- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp +++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp @@ -113,7 +113,9 @@ extern "C" { #define DEFAULT_EXTRADATA (OMX_INTERLACE_EXTRADATA | OMX_FRAMEPACK_EXTRADATA | OMX_OUTPUTCROP_EXTRADATA \ | OMX_DISPLAY_INFO_EXTRADATA | OMX_HDR_COLOR_INFO_EXTRADATA) -#define DEFAULT_CONCEAL_COLOR "32784" //0x8010, black by default + +// Y=16(0-9bits), Cb(10-19bits)=Cr(20-29bits)=128, black by default +#define DEFAULT_VIDEO_CONCEAL_COLOR_BLACK 0x8020010 #ifndef ION_FLAG_CP_BITSTREAM #define ION_FLAG_CP_BITSTREAM 0 @@ -2212,8 +2214,9 @@ OMX_ERRORTYPE omx_vdec::component_init(OMX_STRING role) char property_value[PROPERTY_VALUE_MAX] = {0}; FILE *soc_file = NULL; char buffer[10]; - struct v4l2_ext_control ctrl[1]; + struct v4l2_ext_control ctrl[2]; struct v4l2_ext_controls controls; + int conceal_color_8bit = 0, conceal_color_10bit = 0; #ifdef _ANDROID_ char platform_name[PROPERTY_VALUE_MAX]; @@ -2406,16 +2409,21 @@ OMX_ERRORTYPE omx_vdec::component_init(OMX_STRING role) /* * refer macro DEFAULT_CONCEAL_COLOR to set conceal color values */ - property_get("persist.vidc.dec.conceal_color", property_value, "0"); - m_conceal_color= atoi(property_value); - if (m_conceal_color) { - DEBUG_PRINT_HIGH("trying to set 0x%u as conceal color\n", (unsigned int)m_conceal_color); - control.id = V4L2_CID_MPEG_VIDC_VIDEO_CONCEAL_COLOR; - control.value = m_conceal_color; - ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control); - if (ret) { - DEBUG_PRINT_ERROR("Failed to set conceal color %d\n", ret); - } + Platform::Config::getInt32(Platform::vidc_dec_conceal_color_8bit, &conceal_color_8bit, DEFAULT_VIDEO_CONCEAL_COLOR_BLACK); + Platform::Config::getInt32(Platform::vidc_dec_conceal_color_10bit, &conceal_color_10bit, DEFAULT_VIDEO_CONCEAL_COLOR_BLACK); + memset(&controls, 0, sizeof(controls)); + memset(ctrl, 0, sizeof(ctrl)); + ctrl[0].id = V4L2_CID_MPEG_VIDC_VIDEO_CONCEAL_COLOR_8BIT; + ctrl[0].value = conceal_color_8bit; + ctrl[1].id = V4L2_CID_MPEG_VIDC_VIDEO_CONCEAL_COLOR_10BIT; + ctrl[1].value = conceal_color_10bit; + + controls.count = 2; + controls.ctrl_class = V4L2_CTRL_CLASS_MPEG; + controls.controls = ctrl; + ret = ioctl(drv_ctx.video_driver_fd, VIDIOC_S_EXT_CTRLS, &controls); + if (ret) { + DEBUG_PRINT_ERROR("Failed to set conceal color %d\n", ret); } //Get the hardware capabilities |