summaryrefslogtreecommitdiff
path: root/gralloc/gr_utils.cpp
diff options
context:
space:
mode:
authorRajavenu Kyatham <rkyatham@codeaurora.org>2018-07-31 10:27:19 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2018-08-07 00:23:51 -0700
commit6e8c1823c89c306825b4c2aab9fe3db65aee89e4 (patch)
treeaea8eb843a6da573289ce59c32e70e11d5987e51 /gralloc/gr_utils.cpp
parent5540dbc283f36d817ca50c1245ba9ede3590fdab (diff)
gralloc : Add support for NV12_HEIF format
- camera as producer set NV12_HEIF format to gralloc handle. - video HAL query color format from gralloc handle and accordingly setup. CRs-Fixed: 2292230 Change-Id: Idd46721014226997d54d80fde16b852fe886aecb
Diffstat (limited to 'gralloc/gr_utils.cpp')
-rw-r--r--gralloc/gr_utils.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/gralloc/gr_utils.cpp b/gralloc/gr_utils.cpp
index dc64b584..1ecbce34 100644
--- a/gralloc/gr_utils.cpp
+++ b/gralloc/gr_utils.cpp
@@ -66,6 +66,7 @@ bool IsYuvFormat(int format) {
// Below formats used by camera and VR
case HAL_PIXEL_FORMAT_BLOB:
case HAL_PIXEL_FORMAT_RAW_OPAQUE:
+ case HAL_PIXEL_FORMAT_NV12_HEIF:
return true;
default:
return false;
@@ -328,6 +329,9 @@ unsigned int GetSize(const BufferInfo &info, unsigned int alignedw, unsigned int
size = ALIGN((alignedw * alignedh) + (alignedw * alignedh) / 2,
SIZE_4K);
break;
+ case HAL_PIXEL_FORMAT_NV12_HEIF:
+ size = VENUS_BUFFER_SIZE(COLOR_FMT_NV12_512, width, height);
+ break;
default:ALOGE("%s: Unrecognized pixel format: 0x%x", __FUNCTION__, format);
return 0;
}
@@ -457,6 +461,7 @@ int GetYUVPlaneInfo(const private_handle_t *hnd, struct android_ycbcr ycbcr[2])
case HAL_PIXEL_FORMAT_YCbCr_422_SP:
case HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS:
case HAL_PIXEL_FORMAT_NV12_ENCODEABLE:
+ case HAL_PIXEL_FORMAT_NV12_HEIF:
// Same as YCbCr_420_SP_VENUS
GetYuvSPPlaneInfo(hnd->base, width, height, 1, ycbcr);
break;
@@ -908,6 +913,10 @@ void GetAlignedWidthAndHeight(const BufferInfo &info, unsigned int *alignedw,
aligned_w = ALIGN(width, 64);
aligned_h = ALIGN(height, 64);
break;
+ case HAL_PIXEL_FORMAT_NV12_HEIF:
+ aligned_w = INT(VENUS_Y_STRIDE(COLOR_FMT_NV12_512, width));
+ aligned_h = INT(VENUS_Y_SCANLINES(COLOR_FMT_NV12_512, height));
+ break;
default:
break;
}
@@ -979,6 +988,7 @@ int GetBufferLayout(private_handle_t *hnd, uint32_t stride[4], uint32_t offset[4
case HAL_PIXEL_FORMAT_YCbCr_420_TP10_UBWC:
case HAL_PIXEL_FORMAT_YCbCr_420_P010_UBWC:
case HAL_PIXEL_FORMAT_YCbCr_420_P010_VENUS:
+ case HAL_PIXEL_FORMAT_NV12_HEIF:
offset[1] = static_cast<uint32_t>(reinterpret_cast<uint64_t>(yuvInfo.cb) - hnd->base);
break;
case HAL_PIXEL_FORMAT_YCrCb_420_SP: