summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUmesh Pandey <umeshp@codeaurora.org>2017-07-06 15:02:31 -0700
committerUmesh Pandey <umeshp@codeaurora.org>2017-07-13 16:17:26 -0700
commit8ecad1bb87e63d62359304277b6136713c430d73 (patch)
tree86800fa25e56ed1e960cc3cc9a9984b94a969aae
parent4159dd886075d60854b3b8a25f7fd662646b4274 (diff)
downloadmedia-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.cpp2
-rw-r--r--libplatformconfig/PlatformConfig.h8
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp32
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