OMX: add supporting methods for flexible YUV

Bug: 10706245
Change-Id: I2427930a34c468e49d3db7ba2865344f1fba2960
This commit is contained in:
Lajos Molnar 2014-07-25 07:53:56 -07:00
parent c268068c55
commit 524077caa6
2 changed files with 64 additions and 0 deletions

View File

@ -157,6 +157,63 @@ struct PrependSPSPPSToIDRFramesParams {
OMX_BOOL bEnable; OMX_BOOL bEnable;
}; };
// Structure describing a media image (frame)
// Currently only supporting YUV
struct MediaImage {
enum Type {
MEDIA_IMAGE_TYPE_UNKNOWN = 0,
MEDIA_IMAGE_TYPE_YUV,
};
enum PlaneIndex {
Y = 0,
U,
V,
MAX_NUM_PLANES
};
Type mType;
size_t mNumPlanes; // number of planes
size_t mWidth; // width of largest plane
size_t mHeight; // height of largest plane
size_t mBitDepth; // useable bit depth
struct PlaneInfo {
size_t mOffset; // offset of first pixel of the plane in bytes
// from buffer offset
size_t mColInc; // column increment in bytes
size_t mRowInc; // row increment in bytes
size_t mHorizSubsampling; // subsampling compared to the largest plane
size_t mVertSubsampling; // subsampling compared to the largest plane
};
PlaneInfo mPlane[MAX_NUM_PLANES];
};
// A pointer to this struct is passed to OMX_GetParameter when the extension
// index for the 'OMX.google.android.index.describeColorFormat'
// extension is given. This method can be called from any component state
// 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
// 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.
struct DescribeColorFormatParams {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
// input: parameters from OMX_VIDEO_PORTDEFINITIONTYPE
OMX_COLOR_FORMATTYPE eColorFormat;
OMX_U32 nFrameWidth;
OMX_U32 nFrameHeight;
OMX_U32 nStride;
OMX_U32 nSliceHeight;
// output: fill out the MediaImage fields
MediaImage sMediaImage;
};
} // namespace android } // namespace android
extern android::OMXPluginBase *createOMXPlugin(); extern android::OMXPluginBase *createOMXPlugin();

View File

@ -157,6 +157,13 @@ typedef enum OMX_COLOR_FORMATTYPE {
* an acceptable range once that is done. * an acceptable range once that is done.
* */ * */
OMX_COLOR_FormatAndroidOpaque = 0x7F000789, OMX_COLOR_FormatAndroidOpaque = 0x7F000789,
/** Flexible 8-bit YUV format. Codec should report this format
* as being supported if it supports any YUV420 packed planar
* or semiplanar formats. When port is set to use this format,
* codec can substitute any YUV420 packed planar or semiplanar
* format for it. */
OMX_COLOR_FormatYUV420Flexible = 0x7F420888,
OMX_TI_COLOR_FormatYUV420PackedSemiPlanar = 0x7F000100, OMX_TI_COLOR_FormatYUV420PackedSemiPlanar = 0x7F000100,
OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00, OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00,
OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka = 0x7FA30C03, OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka = 0x7FA30C03,