display: Add support for interleaved YUY2 and YUYV format.

Adding support for interleaved HAL_PIXEL_FORMAT_YCbCr_422_I and
HAL_PIXEL_FORMAT_YCrCb_422_I format in display HAL.

Change-Id: Ib87d9bf481c20bf6a92293dd04746719b1d928c1
This commit is contained in:
Ramkumar Radhakrishnan
2013-08-06 20:17:29 -07:00
committed by Tatenda Chipeperekwa
parent d74361da20
commit b52399cfa0
6 changed files with 23 additions and 2 deletions

View File

@@ -129,6 +129,8 @@ static int get_format(int format) {
case HAL_PIXEL_FORMAT_RGB_888: return MDP_RGB_888; case HAL_PIXEL_FORMAT_RGB_888: return MDP_RGB_888;
case HAL_PIXEL_FORMAT_RGBA_8888: return MDP_RGBA_8888; case HAL_PIXEL_FORMAT_RGBA_8888: return MDP_RGBA_8888;
case HAL_PIXEL_FORMAT_BGRA_8888: return MDP_BGRA_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_422_SP: return MDP_Y_CRCB_H2V1;
case HAL_PIXEL_FORMAT_YCrCb_420_SP: return MDP_Y_CRCB_H2V2; case HAL_PIXEL_FORMAT_YCrCb_420_SP: return MDP_Y_CRCB_H2V2;
case HAL_PIXEL_FORMAT_YCbCr_422_SP: return MDP_Y_CBCR_H2V1; case HAL_PIXEL_FORMAT_YCbCr_422_SP: return MDP_Y_CBCR_H2V1;

View File

@@ -152,6 +152,8 @@ int AdrenoMemInfo::getStride(int width, int format)
case HAL_PIXEL_FORMAT_YV12: case HAL_PIXEL_FORMAT_YV12:
case HAL_PIXEL_FORMAT_YCbCr_422_SP: case HAL_PIXEL_FORMAT_YCbCr_422_SP:
case HAL_PIXEL_FORMAT_YCrCb_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); stride = ALIGN(width, 16);
break; break;
case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS:
@@ -324,6 +326,8 @@ size_t getBufferSizeAndDimensions(int width, int height, int format,
break; break;
case HAL_PIXEL_FORMAT_YCbCr_422_SP: case HAL_PIXEL_FORMAT_YCbCr_422_SP:
case HAL_PIXEL_FORMAT_YCrCb_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) { if(width & 1) {
ALOGE("width is odd for the YUV422_SP format"); ALOGE("width is odd for the YUV422_SP format");
return -EINVAL; return -EINVAL;

View File

@@ -100,6 +100,7 @@ enum {
HAL_PIXEL_FORMAT_RG_88 = 0x10E, HAL_PIXEL_FORMAT_RG_88 = 0x10E,
HAL_PIXEL_FORMAT_YCbCr_444_SP = 0x10F, HAL_PIXEL_FORMAT_YCbCr_444_SP = 0x10F,
HAL_PIXEL_FORMAT_YCrCb_444_SP = 0x110, HAL_PIXEL_FORMAT_YCrCb_444_SP = 0x110,
HAL_PIXEL_FORMAT_YCrCb_422_I = 0x111,
HAL_PIXEL_FORMAT_INTERLACE = 0x180, HAL_PIXEL_FORMAT_INTERLACE = 0x180,
}; };

View File

@@ -400,6 +400,10 @@ void HwcDebug::getHalPixelFormatStr(int format, char pixFormatStr[])
case HAL_PIXEL_FORMAT_YCbCr_422_I: case HAL_PIXEL_FORMAT_YCbCr_422_I:
strcpy(pixFormatStr, "YCbCr_422_I_YUY2"); strcpy(pixFormatStr, "YCbCr_422_I_YUY2");
break; 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: case HAL_PIXEL_FORMAT_NV12_ENCODEABLE:
strcpy(pixFormatStr, "NV12_ENCODEABLE"); strcpy(pixFormatStr, "NV12_ENCODEABLE");
break; break;

View File

@@ -114,6 +114,10 @@ int getMdpFormat(int format) {
return MDP_Y_CBCR_H2V2; return MDP_Y_CBCR_H2V2;
case HAL_PIXEL_FORMAT_YCrCb_422_SP: case HAL_PIXEL_FORMAT_YCrCb_422_SP:
return MDP_Y_CRCB_H2V1; 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: case HAL_PIXEL_FORMAT_YCbCr_444_SP:
return MDP_Y_CBCR_H1V1; return MDP_Y_CBCR_H1V1;
case HAL_PIXEL_FORMAT_YCrCb_444_SP: case HAL_PIXEL_FORMAT_YCrCb_444_SP:
@@ -128,7 +132,6 @@ int getMdpFormat(int format) {
//---graphics.h-------- //---graphics.h--------
//HAL_PIXEL_FORMAT_RGBA_5551 //HAL_PIXEL_FORMAT_RGBA_5551
//HAL_PIXEL_FORMAT_RGBA_4444 //HAL_PIXEL_FORMAT_RGBA_4444
//HAL_PIXEL_FORMAT_YCbCr_422_I
//---gralloc_priv.h----- //---gralloc_priv.h-----
//HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO = 0x7FA30C01 //HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO = 0x7FA30C01
//HAL_PIXEL_FORMAT_R_8 = 0x10D //HAL_PIXEL_FORMAT_R_8 = 0x10D
@@ -169,7 +172,11 @@ int getHALFormat(int mdpFormat) {
return HAL_PIXEL_FORMAT_YCbCr_420_SP; return HAL_PIXEL_FORMAT_YCbCr_420_SP;
case MDP_Y_CRCB_H2V1: case MDP_Y_CRCB_H2V1:
return HAL_PIXEL_FORMAT_YCrCb_422_SP; 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; return HAL_PIXEL_FORMAT_YCbCr_444_SP;
case MDP_Y_CRCB_H1V1: case MDP_Y_CRCB_H1V1:
return HAL_PIXEL_FORMAT_YCrCb_444_SP; return HAL_PIXEL_FORMAT_YCrCb_444_SP;

View File

@@ -488,6 +488,8 @@ inline bool isYuv(uint32_t format) {
case MDP_Y_CR_CB_H2V2: case MDP_Y_CR_CB_H2V2:
case MDP_Y_CR_CB_GH2V2: case MDP_Y_CR_CB_GH2V2:
case MDP_Y_CBCR_H2V2_VENUS: case MDP_Y_CBCR_H2V2_VENUS:
case MDP_YCBYCR_H2V1:
case MDP_YCRYCB_H2V1:
return true; return true;
default: default:
return false; return false;
@@ -518,6 +520,7 @@ inline const char* getFormatString(int format){
formats[MDP_ARGB_8888] = STR(MDP_ARGB_8888); formats[MDP_ARGB_8888] = STR(MDP_ARGB_8888);
formats[MDP_RGB_888] = STR(MDP_RGB_888); formats[MDP_RGB_888] = STR(MDP_RGB_888);
formats[MDP_Y_CRCB_H2V2] = STR(MDP_Y_CRCB_H2V2); 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_YCRYCB_H2V1] = STR(MDP_YCRYCB_H2V1);
formats[MDP_CBYCRY_H2V1] = STR(MDP_CBYCRY_H2V1); formats[MDP_CBYCRY_H2V1] = STR(MDP_CBYCRY_H2V1);
formats[MDP_Y_CRCB_H2V1] = STR(MDP_Y_CRCB_H2V1); formats[MDP_Y_CRCB_H2V1] = STR(MDP_Y_CRCB_H2V1);