diff --git a/libcopybit/copybit.cpp b/libcopybit/copybit.cpp index 25a2cae8..ec12b831 100644 --- a/libcopybit/copybit.cpp +++ b/libcopybit/copybit.cpp @@ -129,6 +129,8 @@ static int get_format(int format) { case HAL_PIXEL_FORMAT_RGB_888: return MDP_RGB_888; case HAL_PIXEL_FORMAT_RGBA_8888: return MDP_RGBA_8888; case HAL_PIXEL_FORMAT_BGRA_8888: return MDP_BGRA_8888; + case HAL_PIXEL_FORMAT_YCrCb_422_I: return MDP_YCRYCB_H2V1; + case HAL_PIXEL_FORMAT_YCbCr_422_I: return MDP_YCBYCR_H2V1; case HAL_PIXEL_FORMAT_YCrCb_422_SP: return MDP_Y_CRCB_H2V1; case HAL_PIXEL_FORMAT_YCrCb_420_SP: return MDP_Y_CRCB_H2V2; case HAL_PIXEL_FORMAT_YCbCr_422_SP: return MDP_Y_CBCR_H2V1; diff --git a/libgralloc/alloc_controller.cpp b/libgralloc/alloc_controller.cpp index 89ac9191..9af45e2e 100644 --- a/libgralloc/alloc_controller.cpp +++ b/libgralloc/alloc_controller.cpp @@ -152,6 +152,8 @@ int AdrenoMemInfo::getStride(int width, int format) case HAL_PIXEL_FORMAT_YV12: case HAL_PIXEL_FORMAT_YCbCr_422_SP: case HAL_PIXEL_FORMAT_YCrCb_422_SP: + case HAL_PIXEL_FORMAT_YCbCr_422_I: + case HAL_PIXEL_FORMAT_YCrCb_422_I: stride = ALIGN(width, 16); break; case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: @@ -324,6 +326,8 @@ size_t getBufferSizeAndDimensions(int width, int height, int format, break; case HAL_PIXEL_FORMAT_YCbCr_422_SP: case HAL_PIXEL_FORMAT_YCrCb_422_SP: + case HAL_PIXEL_FORMAT_YCbCr_422_I: + case HAL_PIXEL_FORMAT_YCrCb_422_I: if(width & 1) { ALOGE("width is odd for the YUV422_SP format"); return -EINVAL; diff --git a/libgralloc/gralloc_priv.h b/libgralloc/gralloc_priv.h index 3187648b..b3fddf1a 100644 --- a/libgralloc/gralloc_priv.h +++ b/libgralloc/gralloc_priv.h @@ -100,6 +100,7 @@ enum { HAL_PIXEL_FORMAT_RG_88 = 0x10E, HAL_PIXEL_FORMAT_YCbCr_444_SP = 0x10F, HAL_PIXEL_FORMAT_YCrCb_444_SP = 0x110, + HAL_PIXEL_FORMAT_YCrCb_422_I = 0x111, HAL_PIXEL_FORMAT_INTERLACE = 0x180, }; diff --git a/libhwcomposer/hwc_dump_layers.cpp b/libhwcomposer/hwc_dump_layers.cpp index cf23b655..b9c09b64 100644 --- a/libhwcomposer/hwc_dump_layers.cpp +++ b/libhwcomposer/hwc_dump_layers.cpp @@ -400,6 +400,10 @@ void HwcDebug::getHalPixelFormatStr(int format, char pixFormatStr[]) case HAL_PIXEL_FORMAT_YCbCr_422_I: strcpy(pixFormatStr, "YCbCr_422_I_YUY2"); break; + case HAL_PIXEL_FORMAT_YCrCb_422_I: + strlcpy(pixFormatStr, "YCrCb_422_I_YVYU", + sizeof("YCrCb_422_I_YVYU")); + break; case HAL_PIXEL_FORMAT_NV12_ENCODEABLE: strcpy(pixFormatStr, "NV12_ENCODEABLE"); break; diff --git a/liboverlay/overlayUtils.cpp b/liboverlay/overlayUtils.cpp index 927e7e9d..df2c09e5 100644 --- a/liboverlay/overlayUtils.cpp +++ b/liboverlay/overlayUtils.cpp @@ -114,6 +114,10 @@ int getMdpFormat(int format) { return MDP_Y_CBCR_H2V2; case HAL_PIXEL_FORMAT_YCrCb_422_SP: return MDP_Y_CRCB_H2V1; + case HAL_PIXEL_FORMAT_YCbCr_422_I: + return MDP_YCBYCR_H2V1; + case HAL_PIXEL_FORMAT_YCrCb_422_I: + return MDP_YCRYCB_H2V1; case HAL_PIXEL_FORMAT_YCbCr_444_SP: return MDP_Y_CBCR_H1V1; case HAL_PIXEL_FORMAT_YCrCb_444_SP: @@ -128,7 +132,6 @@ int getMdpFormat(int format) { //---graphics.h-------- //HAL_PIXEL_FORMAT_RGBA_5551 //HAL_PIXEL_FORMAT_RGBA_4444 - //HAL_PIXEL_FORMAT_YCbCr_422_I //---gralloc_priv.h----- //HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO = 0x7FA30C01 //HAL_PIXEL_FORMAT_R_8 = 0x10D @@ -169,7 +172,11 @@ int getHALFormat(int mdpFormat) { return HAL_PIXEL_FORMAT_YCbCr_420_SP; case MDP_Y_CRCB_H2V1: return HAL_PIXEL_FORMAT_YCrCb_422_SP; - case MDP_Y_CBCR_H1V1: + case MDP_YCBYCR_H2V1: + return HAL_PIXEL_FORMAT_YCbCr_422_I; + case MDP_YCRYCB_H2V1: + return HAL_PIXEL_FORMAT_YCrCb_422_I; + case MDP_Y_CBCR_H1V1: return HAL_PIXEL_FORMAT_YCbCr_444_SP; case MDP_Y_CRCB_H1V1: return HAL_PIXEL_FORMAT_YCrCb_444_SP; diff --git a/liboverlay/overlayUtils.h b/liboverlay/overlayUtils.h index a9b7e6a9..c8549757 100644 --- a/liboverlay/overlayUtils.h +++ b/liboverlay/overlayUtils.h @@ -488,6 +488,8 @@ inline bool isYuv(uint32_t format) { case MDP_Y_CR_CB_H2V2: case MDP_Y_CR_CB_GH2V2: case MDP_Y_CBCR_H2V2_VENUS: + case MDP_YCBYCR_H2V1: + case MDP_YCRYCB_H2V1: return true; default: return false; @@ -518,6 +520,7 @@ inline const char* getFormatString(int format){ formats[MDP_ARGB_8888] = STR(MDP_ARGB_8888); formats[MDP_RGB_888] = STR(MDP_RGB_888); formats[MDP_Y_CRCB_H2V2] = STR(MDP_Y_CRCB_H2V2); + formats[MDP_YCBYCR_H2V1] = STR(MDP_YCBYCR_H2V1); formats[MDP_YCRYCB_H2V1] = STR(MDP_YCRYCB_H2V1); formats[MDP_CBYCRY_H2V1] = STR(MDP_CBYCRY_H2V1); formats[MDP_Y_CRCB_H2V1] = STR(MDP_Y_CRCB_H2V1);