diff options
author | Vinay Kalia <vkalia@codeaurora.org> | 2013-01-14 17:51:05 -0800 |
---|---|---|
committer | Vinay Kalia <vkalia@codeaurora.org> | 2013-01-18 11:34:33 -0800 |
commit | 384c1ac04a493fcaba27043511a2d583fefc4642 (patch) | |
tree | 08e2888a36b38d5dc0d808154208170e8aca7d5f | |
parent | 5713bb33baa039de1e0af0b46a479caf2ec154d3 (diff) | |
download | media-384c1ac04a493fcaba27043511a2d583fefc4642.tar.gz |
libc2dcolorconvert: Support NV12 format for venus
NV12 format on venus has different alignment requirements.
This change supports color conversion from Venus NV12 format.
Change-Id: I0a83068d1ea6c09202343a8c4b2425e4557cc7fa
-rw-r--r-- | libc2dcolorconvert/C2DColorConverter.cpp | 14 | ||||
-rw-r--r-- | libc2dcolorconvert/C2DColorConverter.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/libc2dcolorconvert/C2DColorConverter.cpp b/libc2dcolorconvert/C2DColorConverter.cpp index a7bb763a..c47f5ca6 100644 --- a/libc2dcolorconvert/C2DColorConverter.cpp +++ b/libc2dcolorconvert/C2DColorConverter.cpp @@ -270,6 +270,7 @@ bool C2DColorConverter::isYUVSurface(ColorConvertFormat format) case YCbCr420P: case YCrCb420P: case NV12_2K: + case NV12_128m: return true; case RGB565: case RGBA8888: @@ -378,6 +379,7 @@ uint32_t C2DColorConverter::getC2DFormat(ColorConvertFormat format) return (C2D_COLOR_FORMAT_420_NV12 | C2D_FORMAT_MACROTILED); case YCbCr420SP: case NV12_2K: + case NV12_128m: return C2D_COLOR_FORMAT_420_NV12; case YCbCr420P: return C2D_COLOR_FORMAT_420_I420; @@ -402,6 +404,8 @@ size_t C2DColorConverter::calcStride(ColorConvertFormat format, size_t width) return ALIGN(width, ALIGN32); case NV12_2K: return ALIGN(width, ALIGN16); + case NV12_128m: + return ALIGN(width, ALIGN128); case YCbCr420P: return width; case YCrCb420P: @@ -427,6 +431,8 @@ size_t C2DColorConverter::calcYSize(ColorConvertFormat format, size_t width, siz size_t lumaSize = ALIGN(alignedw * height, ALIGN2K); return lumaSize; } + case NV12_128m: + return ALIGN(width, ALIGN128) * ALIGN(height, ALIGN32); default: return 0; } @@ -471,6 +477,11 @@ size_t C2DColorConverter::calcSize(ColorConvertFormat format, size_t width, size ALOGV("NV12_2k, width = %d, height = %d, size = %d", width, height, size); } break; + case NV12_128m: + alignedw = ALIGN(width, ALIGN128); + alignedh = ALIGN(height, ALIGN32); + size = ALIGN(alignedw * alignedh + (alignedw * ALIGN(height/2, ALIGN16)), ALIGN4K); + break; default: break; } @@ -550,6 +561,8 @@ size_t C2DColorConverter::calcLumaAlign(ColorConvertFormat format) { switch (format) { case NV12_2K: return ALIGN2K; + case NV12_128m: + return 1; default: ALOGE("unknown format passed for luma alignment number"); return 1; @@ -563,6 +576,7 @@ size_t C2DColorConverter::calcSizeAlign(ColorConvertFormat format) { case YCbCr420SP: //OR NV12 case YCbCr420P: case NV12_2K: + case NV12_128m: return ALIGN4K; default: ALOGE("unknown format passed for size alignment number"); diff --git a/libc2dcolorconvert/C2DColorConverter.h b/libc2dcolorconvert/C2DColorConverter.h index 93bf39b7..999d297c 100644 --- a/libc2dcolorconvert/C2DColorConverter.h +++ b/libc2dcolorconvert/C2DColorConverter.h @@ -73,6 +73,7 @@ enum ColorConvertFormat { YCrCb420P, RGBA8888, NV12_2K, + NV12_128m, }; typedef struct { |