Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 524077ca authored by Lajos Molnar's avatar Lajos Molnar
Browse files

OMX: add supporting methods for flexible YUV

Bug: 10706245
Change-Id: I2427930a34c468e49d3db7ba2865344f1fba2960
parent c268068c
Loading
Loading
Loading
Loading
+57 −0
Original line number Original line Diff line number Diff line
@@ -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();
+7 −0
Original line number Original line Diff line number Diff line
@@ -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,