diff options
author | Rajavenu Kyatham <rkyatham@codeaurora.org> | 2018-07-31 10:27:19 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-08-07 00:23:51 -0700 |
commit | 6e8c1823c89c306825b4c2aab9fe3db65aee89e4 (patch) | |
tree | aea8eb843a6da573289ce59c32e70e11d5987e51 /gralloc/gr_utils.cpp | |
parent | 5540dbc283f36d817ca50c1245ba9ede3590fdab (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.cpp | 10 |
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: |