overlay/copybit: Set Color Space for MDP to configure CSC matrix
Set Color Space for MDP (Overlay & Blit) to configure CSC matrix
correctly.
Change-Id: Ie1cada971d43339f334c061591fa848d8bb2385d
diff --git a/libcopybit/copybit.cpp b/libcopybit/copybit.cpp
index 84d7620..2302d64 100644
--- a/libcopybit/copybit.cpp
+++ b/libcopybit/copybit.cpp
@@ -37,6 +37,7 @@
#include "gralloc_priv.h"
#include "software_converter.h"
+#include <qdMetaData.h>
#define DEBUG_MDP_ERRORS 1
@@ -504,6 +505,13 @@
flags |= MDP_BLIT_NON_CACHED;
}
+ // Set Color Space for MDP to configure CSC matrix
+ req->color_space = ITU_R_601;
+ MetaData_t *metadata = (MetaData_t *)src_hnd->base_metadata;
+ if (metadata && (metadata->operation & UPDATE_COLOR_SPACE)) {
+ req->color_space = metadata->colorSpace;
+ }
+
set_infos(ctx, req, flags);
set_image(&req->dst, dst);
set_image(&req->src, src);
diff --git a/liboverlay/overlayMdp.cpp b/liboverlay/overlayMdp.cpp
index ddc40ee..b8bb33e 100644
--- a/liboverlay/overlayMdp.cpp
+++ b/liboverlay/overlayMdp.cpp
@@ -218,6 +218,13 @@
bool MdpCtrl::setVisualParams(const MetaData_t& data) {
ALOGD_IF(0, "In %s: data.operation = %d", __FUNCTION__, data.operation);
+
+ // Set Color Space for MDP to configure CSC matrix
+ mOVInfo.color_space = ITU_R_601;
+ if (data.operation & UPDATE_COLOR_SPACE) {
+ mOVInfo.color_space = data.colorSpace;
+ }
+
#ifdef USES_POST_PROCESSING
bool needUpdate = false;
/* calculate the data */