From ea5da67d90647a1d4b395be51bf9cec218b98b71 Mon Sep 17 00:00:00 2001 From: Lajos Molnar Date: Fri, 30 Jan 2015 10:36:11 -0800 Subject: [PATCH] add bUsingNativeBuffers to DescribeColorFormatParams This is needed to find proper color format for flex-YUV native buffer support. Bug: 19179927 Change-Id: I91ae6764e302c4307a0750c1d6820506d735c942 --- include/media/hardware/HardwareAPI.h | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/include/media/hardware/HardwareAPI.h b/include/media/hardware/HardwareAPI.h index 90150c63b..d5f42befe 100644 --- a/include/media/hardware/HardwareAPI.h +++ b/include/media/hardware/HardwareAPI.h @@ -174,8 +174,8 @@ struct MediaImage { Type mType; size_t mNumPlanes; // number of planes - size_t mWidth; // width of largest plane - size_t mHeight; // height of largest plane + size_t mWidth; // width of largest plane (unpadded, as in nFrameWidth) + size_t mHeight; // height of largest plane (unpadded, as in nFrameHeight) size_t mBitDepth; // useable bit depth struct PlaneInfo { size_t mOffset; // offset of first pixel of the plane in bytes @@ -194,12 +194,26 @@ struct MediaImage { // other than invalid. The color-format, frame width/height, and stride/ // slice-height parameters are ones that are associated with a raw video // port (input or output), but the stride/slice height parameters may be -// incorrect. The component shall fill out the MediaImage structure that +// incorrect. bUsingNativeBuffers is OMX_TRUE if native android buffers will +// be used (while specifying this color format). +// +// The component shall fill out the MediaImage structure that // corresponds to the described raw video format, and the potentially corrected // stride and slice-height info. // -// For non-YUV packed planar/semiplanar image formats, the component shall set -// mNumPlanes to 0, and mType to MEDIA_IMAGE_TYPE_UNKNOWN. +// The behavior is slightly different if bUsingNativeBuffers is OMX_TRUE, +// though most implementations can ignore this difference. When using native buffers, +// the component may change the configured color format to an optimized format. +// Additionally, when allocating these buffers for flexible usecase, the framework +// will set the SW_READ/WRITE_OFTEN usage flags. In this case (if bUsingNativeBuffers +// is OMX_TRUE), the component shall fill out the MediaImage information for the +// scenario when these SW-readable/writable buffers are locked using gralloc_lock. +// Note, that these buffers may also be locked using gralloc_lock_ycbcr, which must +// be supported for vendor-specific formats. +// +// For non-YUV packed planar/semiplanar image formats, or if bUsingNativeBuffers +// is OMX_TRUE and the component does not support this color format with native +// buffers, the component shall set mNumPlanes to 0, and mType to MEDIA_IMAGE_TYPE_UNKNOWN. struct DescribeColorFormatParams { OMX_U32 nSize; OMX_VERSIONTYPE nVersion; @@ -209,6 +223,7 @@ struct DescribeColorFormatParams { OMX_U32 nFrameHeight; OMX_U32 nStride; OMX_U32 nSliceHeight; + OMX_BOOL bUsingNativeBuffers; // output: fill out the MediaImage fields MediaImage sMediaImage;