@@ -112,6 +112,10 @@ static_assert(
112112 static_cast <int >(aidl::android::hardware::graphics::common::PixelFormat::RGBA_10101010) ==
113113 AHARDWAREBUFFER_FORMAT_R10G10B10A10_UNORM,
114114 " HAL and AHardwareBuffer pixel format don't match" );
115+ static_assert (
116+ static_cast <int >(aidl::android::hardware::graphics::common::PixelFormat::YCBCR_P210) ==
117+ AHARDWAREBUFFER_FORMAT_YCbCr_P210,
118+ " HAL and AHardwareBuffer pixel format don't match" );
115119
116120static enum AHardwareBufferStatus filterStatus (status_t status) {
117121 switch (status) {
@@ -300,8 +304,10 @@ int AHardwareBuffer_lockPlanes(AHardwareBuffer* buffer, uint64_t usage,
300304 if (result == 0 ) {
301305 outPlanes->planeCount = 3 ;
302306 outPlanes->planes [0 ].data = yuvData.y ;
303- // P010 is word-aligned 10-bit semiplaner, and YCbCr_422_I is a single interleaved plane
307+ // P010 & P210 are word-aligned 10-bit semiplaner, and YCbCr_422_I is a single interleaved
308+ // plane
304309 if (format == AHARDWAREBUFFER_FORMAT_YCbCr_P010 ||
310+ format == AHARDWAREBUFFER_FORMAT_YCbCr_P210 ||
305311 format == AHARDWAREBUFFER_FORMAT_YCbCr_422_I) {
306312 outPlanes->planes [0 ].pixelStride = 2 ;
307313 } else {
@@ -724,6 +730,7 @@ bool AHardwareBuffer_formatIsYuv(uint32_t format) {
724730 case AHARDWAREBUFFER_FORMAT_YCrCb_420_SP:
725731 case AHARDWAREBUFFER_FORMAT_YCbCr_422_I:
726732 case AHARDWAREBUFFER_FORMAT_YCbCr_P010:
733+ case AHARDWAREBUFFER_FORMAT_YCbCr_P210:
727734 return true ;
728735 default :
729736 return false ;
0 commit comments