| /*-------------------------------------------------------------------------- |
| Copyright (c) 2011,2015 The Linux Foundation. All rights reserved. |
| |
| Redistribution and use in source and binary forms, with or without |
| modification, are permitted provided that the following conditions are met: |
| * Redistributions of source code must retain the above copyright |
| notice, this list of conditions and the following disclaimer. |
| * Redistributions in binary form must reproduce the above copyright |
| notice, this list of conditions and the following disclaimer in the |
| documentation and/or other materials provided with the distribution. |
| * Neither the name of The Linux Foundation nor |
| the names of its contributors may be used to endorse or promote |
| products derived from this software without specific prior written |
| permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
| CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
| OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
| OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
| ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| --------------------------------------------------------------------------*/ |
| |
| #ifndef __H_QOMX_VIDEOEXTENSIONS_H__ |
| #define __H_QOMX_VIDEOEXTENSIONS_H__ |
| |
| /*======================================================================== |
| |
| *//** @file QOMX_VideoExtensions.h |
| |
| @par FILE SERVICES: |
| Qualcomm extensions API for OpenMax IL Video. |
| |
| This file contains the description of the Qualcomm OpenMax IL |
| video extention interface, through which the IL client and OpenMax |
| components can access additional video capabilities. |
| |
| *//*====================================================================== */ |
| |
| |
| /*========================================================================== */ |
| |
| /*======================================================================== |
| |
| INCLUDE FILES FOR MODULE |
| |
| ========================================================================== */ |
| #include <OMX_Core.h> |
| #include <OMX_Video.h> |
| |
| /*======================================================================== |
| |
| DEFINITIONS AND DECLARATIONS |
| |
| ========================================================================== */ |
| |
| #if defined( __cplusplus ) |
| extern "C" |
| { |
| #endif /* end of macro __cplusplus */ |
| |
| /* Video extension strings */ |
| #define OMX_QCOM_INDEX_PARAM_VIDEO_SYNTAXHDR "OMX.QCOM.index.param.video.SyntaxHdr" |
| #define OMX_QCOM_INDEX_PARAM_VIDEO_ENCODERMODE "OMX.QCOM.index.param.video.EncoderMode" |
| #define OMX_QCOM_INDEX_CONFIG_VIDEO_INTRAREFRESH "OMX.QCOM.index.config.video.IntraRefresh" |
| #define OMX_QCOM_INDEX_CONFIG_VIDEO_INTRAPERIOD "OMX.QCOM.index.config.video.IntraPeriod" |
| #define OMX_QCOM_INDEX_CONFIG_VIDEO_TEMPORALSPATIALTRADEOFF "OMX.QCOM.index.config.video.TemporalSpatialTradeOff" |
| #define OMX_QCOM_INDEX_CONFIG_VIDEO_MBCONCEALMENTREPORTING "OMX.QCOM.index.config.video.MBConcealmentReporting" |
| #define OMX_QCOM_INDEX_PARAM_VIDEO_EXTRADATAMULTISLICEINFO "OMX.QCOM.index.param.video.ExtraDataMultiSliceInfo" /**< reference: QOMX_ENABLETYPE */ |
| #define OMX_QCOM_INDEX_CONFIG_VIDEO_FLOWSTATUS "OMX.QCOM.index.config.video.FlowStatus" /**< reference: QOMX_FLOWSTATUSTYPE */ |
| #define OMX_QCOM_INDEX_PARAM_VIDEO_PICTURETYPEDECODE "OMX.QCOM.index.param.video.PictureTypeDecode" /**< reference: QOMX_VIDEO_DECODEPICTURETYPE */ |
| #define OMX_QCOM_INDEX_PARAM_VIDEO_SAMPLEASPECTRATIO "OMX.QCOM.index.param.video.SampleAspectRatio" /**< reference: QOMX_VIDEO_SAMPLEASPECTRATIO */ |
| #define OMX_QCOM_INDEX_PARAM_VIDEO_EXTRADATALTRINFO "OMX.QCOM.index.param.video.ExtraDataLTRInfo" /**< reference: QOMX_ENABLETYPE */ |
| |
| /* Video coding types */ |
| #define OMX_QCOM_INDEX_PARAM_VIDEO_DIVX "OMX.QCOM.index.param.video.DivX" |
| #define OMX_QCOM_INDEX_PARAM_VIDEO_VP "OMX.QCOM.index.param.video.VP" |
| #define OMX_QCOM_INDEX_PARAM_VIDEO_SPARK "OMX.QCOM.index.param.video.Spark" |
| #define OMX_QCOM_INDEX_PARAM_VIDEO_VC1 "OMX.QCOM.index.param.video.VC1" |
| |
| /** |
| * Enumeration used to define the extended video compression |
| * codings, not present in the OpenMax IL 1.1.2 specification. |
| * NOTE: This essentially refers to file extensions. If the |
| * coding is being used to specify the ENCODE type, then |
| * additional work must be done to configure the exact |
| * flavor of the compression to be used. |
| */ |
| typedef enum QOMX_VIDEO_CODINGTYPE |
| { |
| QOMX_VIDEO_CodingDivX = 0x7F000001, /**< all versions of DivX */ |
| QOMX_VIDEO_CodingVP = 0x7F000002, /**< all versions of On2 VP codec */ |
| QOMX_VIDEO_CodingSpark = 0x7F000003, /**< Sorenson Spark */ |
| QOMX_VIDEO_CodingVC1 = 0x7F000004, /**< VC-1 */ |
| QOMX_VIDEO_MPEG1 = 0x7F000005 /**< MPEG-1 */ |
| } QOMX_VIDEO_CODINGTYPE; |
| |
| /** |
| * DivX Versions |
| */ |
| typedef enum QOMX_VIDEO_DIVXFORMATTYPE { |
| QOMX_VIDEO_DIVXFormatUnused = 0x01, /**< Format unused or unknown */ |
| QOMX_VIDEO_DIVXFormat311 = 0x02, /**< DivX 3.11 */ |
| QOMX_VIDEO_DIVXFormat4 = 0x04, /**< DivX 4 */ |
| QOMX_VIDEO_DIVXFormat5 = 0x08, /**< DivX 5 */ |
| QOMX_VIDEO_DIVXFormat6 = 0x10, /**< DivX 6 */ |
| QOMX_VIDEO_DIVXFormatKhronosExtensions = 0x6F000000, |
| QOMX_VIDEO_DIVXFormatVendorStartUnused = 0x7F000000, |
| QOMX_VIDEO_DIVXFormatMax = 0x7FFFFFFF |
| } QOMX_VIDEO_DIVXFORMATTYPE; |
| |
| /** |
| * DivX profile types, each profile indicates support for |
| * various performance bounds. |
| */ |
| typedef enum QOMX_VIDEO_DIVXPROFILETYPE { |
| QOMX_VIDEO_DivXProfileqMobile = 0x01, /**< qMobile Profile */ |
| QOMX_VIDEO_DivXProfileMobile = 0x02, /**< Mobile Profile */ |
| QOMX_VIDEO_DivXProfileMT = 0x04, /**< Mobile Theatre Profile */ |
| QOMX_VIDEO_DivXProfileHT = 0x08, /**< Home Theatre Profile */ |
| QOMX_VIDEO_DivXProfileHD = 0x10, /**< High Definition Profile */ |
| QOMX_VIDEO_DIVXProfileKhronosExtensions = 0x6F000000, |
| QOMX_VIDEO_DIVXProfileVendorStartUnused = 0x7F000000, |
| QOMX_VIDEO_DIVXProfileMax = 0x7FFFFFFF |
| } QOMX_VIDEO_DIVXPROFILETYPE; |
| |
| /** |
| * DivX Video Params |
| * |
| * STRUCT MEMBERS: |
| * nSize : Size of the structure in bytes |
| * nVersion : OMX specification version information |
| * nPortIndex : Port that this structure applies to |
| * eFormat : Version of DivX stream / data |
| * eProfile : Profile of DivX stream / data |
| */ |
| typedef struct QOMX_VIDEO_PARAM_DIVXTYPE { |
| OMX_U32 nSize; |
| OMX_VERSIONTYPE nVersion; |
| OMX_U32 nPortIndex; |
| QOMX_VIDEO_DIVXFORMATTYPE eFormat; |
| QOMX_VIDEO_DIVXPROFILETYPE eProfile; |
| } QOMX_VIDEO_PARAM_DIVXTYPE; |
| |
| /** |
| * VP Versions |
| */ |
| typedef enum QOMX_VIDEO_VPFORMATTYPE { |
| QOMX_VIDEO_VPFormatUnused = 0x01, /**< Format unused or unknown */ |
| QOMX_VIDEO_VPFormat6 = 0x02, /**< VP6 Video Format */ |
| QOMX_VIDEO_VPFormat7 = 0x04, /**< VP7 Video Format */ |
| QOMX_VIDEO_VPFormat8 = 0x08, /**< VP8 Video Format */ |
| QOMX_VIDEO_VPFormat9 = 0x10, /**< VP9 Video Format */ |
| QOMX_VIDEO_VPFormatKhronosExtensions = 0x6F000000, |
| QOMX_VIDEO_VPFormatVendorStartUnused = 0x7F000000, |
| QOMX_VIDEO_VPFormatMax = 0x7FFFFFFF |
| } QOMX_VIDEO_VPFORMATTYPE; |
| |
| /** |
| * VP profile types, each profile indicates support for various |
| * encoding tools. |
| */ |
| typedef enum QOMX_VIDEO_VPPROFILETYPE { |
| QOMX_VIDEO_VPProfileSimple = 0x01, /**< Simple Profile, applies to VP6 only */ |
| QOMX_VIDEO_VPProfileAdvanced = 0x02, /**< Advanced Profile, applies to VP6 only */ |
| QOMX_VIDEO_VPProfileVersion0 = 0x04, /**< Version 0, applies to VP7 and VP8 */ |
| QOMX_VIDEO_VPProfileVersion1 = 0x08, /**< Version 1, applies to VP7 and VP8 */ |
| QOMX_VIDEO_VPProfileVersion2 = 0x10, /**< Version 2, applies to VP8 only */ |
| QOMX_VIDEO_VPProfileVersion3 = 0x20, /**< Version 3, applies to VP8 only */ |
| QOMX_VIDEO_VPProfileKhronosExtensions = 0x6F000000, |
| QOMX_VIDEO_VPProfileVendorStartUnused = 0x7F000000, |
| QOMX_VIDEO_VPProfileMax = 0x7FFFFFFF |
| } QOMX_VIDEO_VPPROFILETYPE; |
| |
| /** |
| * VP Video Params |
| * |
| * STRUCT MEMBERS: |
| * nSize : Size of the structure in bytes |
| * nVersion : OMX specification version information |
| * nPortIndex : Port that this structure applies to |
| * eFormat : Format of VP stream / data |
| * eProfile : Profile or Version of VP stream / data |
| */ |
| typedef struct QOMX_VIDEO_PARAM_VPTYPE { |
| OMX_U32 nSize; |
| OMX_VERSIONTYPE nVersion; |
| OMX_U32 nPortIndex; |
| QOMX_VIDEO_VPFORMATTYPE eFormat; |
| QOMX_VIDEO_VPPROFILETYPE eProfile; |
| } QOMX_VIDEO_PARAM_VPTYPE; |
| |
| /** |
| * Spark Versions |
| */ |
| typedef enum QOMX_VIDEO_SPARKFORMATTYPE { |
| QOMX_VIDEO_SparkFormatUnused = 0x01, /**< Format unused or unknown */ |
| QOMX_VIDEO_SparkFormat0 = 0x02, /**< Video Format Version 0 */ |
| QOMX_VIDEO_SparkFormat1 = 0x04, /**< Video Format Version 1 */ |
| QOMX_VIDEO_SparkFormatKhronosExtensions = 0x6F000000, |
| QOMX_VIDEO_SparkFormatVendorStartUnused = 0x7F000000, |
| QOMX_VIDEO_SparkFormatMax = 0x7FFFFFFF |
| } QOMX_VIDEO_SPARKFORMATTYPE; |
| |
| /** |
| * Spark Video Params |
| * |
| * STRUCT MEMBERS: |
| * nSize : Size of the structure in bytes |
| * nVersion : OMX specification version information |
| * nPortIndex : Port that this structure applies to |
| * eFormat : Version of Spark stream / data |
| */ |
| typedef struct QOMX_VIDEO_PARAM_SPARKTYPE { |
| OMX_U32 nSize; |
| OMX_VERSIONTYPE nVersion; |
| OMX_U32 nPortIndex; |
| QOMX_VIDEO_SPARKFORMATTYPE eFormat; |
| } QOMX_VIDEO_PARAM_SPARKTYPE; |
| |
| /** |
| * VC-1 profile types, each profile indicates support for |
| * various encoding tools. |
| */ |
| typedef enum QOMX_VIDEO_VC1PROFILETYPE { |
| QOMX_VIDEO_VC1ProfileSimple = 0x01, /**< Simple Profile */ |
| QOMX_VIDEO_VC1ProfileMain = 0x02, /**< Main Profile */ |
| QOMX_VIDEO_VC1ProfileAdvanced = 0x04, /**< Advanced Profile */ |
| QOMX_VIDEO_VC1ProfileKhronosExtensions = 0x6F000000, |
| QOMX_VIDEO_VC1ProfileVendorStartUnused = 0x7F000000, |
| QOMX_VIDEO_VC1ProfileMax = 0x7FFFFFFF |
| } QOMX_VIDEO_VC1PROFILETYPE; |
| |
| /** |
| * VC-1 level types, each level indicates support for various |
| * performance bounds. |
| */ |
| typedef enum QOMX_VIDEO_VC1LEVELTYPE { |
| QOMX_VIDEO_VC1LevelLow = 0x01, /**< Low Level, applies to simple and main profiles*/ |
| QOMX_VIDEO_VC1LevelMedium = 0x02, /**< Medium Level, applies to simple and main profiles */ |
| QOMX_VIDEO_VC1LevelHigh = 0x04, /**< High Level, applies to main profile only */ |
| QOMX_VIDEO_VC1Level0 = 0x08, /**< Level 0, applies to advanced profile only */ |
| QOMX_VIDEO_VC1Level1 = 0x10, /**< Level 1, applies to advanced profile only */ |
| QOMX_VIDEO_VC1Level2 = 0x20, /**< Level 2, applies to advanced profile only */ |
| QOMX_VIDEO_VC1Level3 = 0x40, /**< Level 3, applies to advanced profile only */ |
| QOMX_VIDEO_VC1Level4 = 0x80, /**< Level 4, applies to advanced profile only */ |
| QOMX_VIDEO_VC1LevelKhronosExtensions = 0x6F000000, |
| QOMX_VIDEO_VC1LevelVendorStartUnused = 0x7F000000, |
| QOMX_VIDEO_VC1LevelMax = 0x7FFFFFFF |
| } QOMX_VIDEO_VC1LEVELTYPE; |
| |
| /** |
| * VC-1 Video Params |
| * |
| * STRUCT MEMBERS: |
| * nSize : Size of the structure in bytes |
| * nVersion : OMX specification version information |
| * nPortIndex : Port that this structure applies to |
| * eProfile : Profile of VC-1 stream / data |
| * eLevel : Level of VC-1 stream / data |
| */ |
| typedef struct QOMX_VIDEO_PARAM_VC1TYPE { |
| OMX_U32 nSize; |
| OMX_VERSIONTYPE nVersion; |
| OMX_U32 nPortIndex; |
| QOMX_VIDEO_VC1PROFILETYPE eProfile; |
| QOMX_VIDEO_VC1LEVELTYPE eLevel; |
| } QOMX_VIDEO_PARAM_VC1TYPE; |
| |
| /** |
| * Extended MPEG-4 level types not defined in the OpenMax IL |
| * 1.1.2 specification, each level indicates support for various |
| * frame sizes, bit rates, decoder frame rates. |
| */ |
| typedef enum QOMX_VIDEO_MPEG4LEVELTYPE { |
| QOMX_VIDEO_MPEG4Level6 = 0x7F000001, /**< Level 6 */ |
| QOMX_VIDEO_MPEG4Level7 = 0x7F000002, /**< Level 7 */ |
| QOMX_VIDEO_MPEG4Level8 = 0x7F000003, /**< Level 8 */ |
| QOMX_VIDEO_MPEG4Level9 = 0x7F000004, /**< Level 9 */ |
| QOMX_VIDEO_MPEG4LevelMax = 0x7FFFFFFF |
| } QOMX_VIDEO_MPEG4LEVELTYPE; |
| |
| /** |
| * This structure is used in retrieving the syntax header from a |
| * video encoder component, or setting the out of band syntax |
| * header configuration data on a video decoder component. |
| * |
| * STRUCT MEMBERS: |
| * nSize : Size of the structure in bytes |
| * nVersion : OMX specification version info |
| * nPortIndex : Port that this structure applies to |
| * nBytes : When used with OMX_GetParameter for the encoder |
| * component, it is a read-write field. When |
| * QOMX_VIDEO_SYNTAXHDRTYPE is passed in |
| * OMX_GetParameter this is the size of the buffer |
| * array pointed by data field. When the |
| * OMX_GetParameter call returns this is the |
| * amount of data within the buffer array. |
| * |
| * The IL client needs to allocate the buffer |
| * array and then request for the syntax header. |
| * If the size of buffer array to allocate is |
| * unknown to the IL client, then it can call |
| * OMX_GetParamter with nBytes set to 0. In this |
| * case, when OMX_GetParameter returns, the nBytes |
| * field will be set to the size of the syntax |
| * header. IL Client can then allocate a buffer of |
| * this size and call OMX_GetParamter again. |
| * |
| * When used with OMX_SetParameter for the decoder |
| * component, it is a read-only field specifying |
| * the amount of data in the buffer array. |
| * data : The syntax header data. The format of the |
| * syntax header is specific to the video codec, |
| * and is described below. |
| * |
| * H.263 : N/A |
| * H.264 : The SPS and PPS parameter sets |
| * MPEG-4 : The VO, VOS, and VOL header |
| * WMV7 : The "Extra Data" info, in the ASF Stream |
| * Properties Object. |
| * WMV8 : The "Extra Data" info, in the ASF Stream |
| * Properties Object. |
| * WMV9 SP/MP : The STRUCT_C portion of the sequence layer |
| * meta data, defined in Table 263 of the VC-1 |
| * specification. |
| * VC-1 SP/MP : The STRUCT_C portion of the sequence layer |
| * meta data, defined in Table 263 of the VC-1 |
| * specification. |
| * VC-1 AP : The sequence and entry point header |
| * DivX 3 : N/A |
| * DivX 4.x : The VO, VOS, and VOL header |
| * DivX 5.x : The VO, VOS, and VOL header |
| * DivX 6.x : The VO, VOS, and VOL header |
| * VP6 : N/A |
| * Spark : N/A |
| */ |
| typedef struct QOMX_VIDEO_SYNTAXHDRTYPE { |
| OMX_U32 nSize; |
| OMX_VERSIONTYPE nVersion; |
| OMX_U32 nPortIndex; |
| OMX_U32 nBytes; |
| OMX_U8 data[1]; |
| } QOMX_VIDEO_SYNTAXHDRTYPE; |
| |
| |
| /** |
| * Enumeration used to define the extended video intra refresh types, not |
| * present in the OpenMax IL 1.1.2 specification. |
| * |
| * ENUMS: |
| * IntraRefreshRandom : Random intra refresh mode. |
| */ |
| typedef enum QOMX_VIDEO_INTRAREFRESHTYPE |
| { |
| QOMX_VIDEO_IntraRefreshRandom = 0x7F100000 |
| } QOMX_VIDEO_INTRAREFRESHTYPE; |
| |
| |
| /** |
| * This structure is used to configure the intra periodicity for encoder. |
| * |
| * STRUCT MEMBERS: |
| * nSize : Size of the structure in bytes |
| * nVersion : OMX specification version info |
| * nPortIndex : Port that this structure applies to |
| * nIDRPeriod : Defines the periodicity of IDR occurrence. This specifies |
| * coding a frame as IDR after a specific number of intra |
| * frames. The periodicity of intra frame coding is specified by |
| * the nPFrames. If nIDRPeriod is set to 0, only the first |
| * frame of the encode session is an IDR frame. This field is |
| * ignored for non-AVC codecs and is used only for codecs that |
| * support IDR Period. |
| * nPFrames : Specifies the number of P frames between each I Frame. |
| * nBFrames : Specifies the number of B frames between each I Frame. |
| */ |
| typedef struct QOMX_VIDEO_INTRAPERIODTYPE { |
| OMX_U32 nSize; |
| OMX_VERSIONTYPE nVersion; |
| OMX_U32 nPortIndex; |
| OMX_U32 nIDRPeriod; |
| OMX_U32 nPFrames; |
| OMX_U32 nBFrames; |
| } QOMX_VIDEO_INTRAPERIODTYPE; |
| |
| |
| /** |
| * Enumeration used to define the extended video extra data payload types not |
| * present in the OpenMax IL 1.1.2 specification. |
| * |
| * ENUMS: |
| * VideoMultiSliceInfo : Multi slice layout information |
| * |
| * Slice information layout: |
| * First 4 bytes = Number of Slice Entries |
| * |
| * Then individual slice entries: 8 bytes per entry. |
| * Slice1 information: offset (4 bytes), Length (4 bytes) |
| * Slice2 information: offset (4 bytes), Length (4 bytes) |
| * Slice3 information: offset (4 bytes), Length (4 bytes) |
| * ................................... |
| * ................................... |
| * SliceN information: offset (4 bytes), Length (4 bytes) |
| * |
| * |
| * VideoNumConcealedMB : Number of concealed MBs |
| * |
| * The data array consists of an unsigned 32-bit size field |
| * indicating the number of concealed macroblocks in the |
| * uncompressed frame. |
| * |
| * |
| * QOMX_ExtraDataOMXIndex : Indicates that the data payload contains an |
| * OpenMax index and associated payload. |
| * |
| * The data of the extra data payload shall contain the value of the |
| * OMX_INDEXTYPE corresponding to the requested operation as an unsigned |
| * 32 bit number occupying the first four bytes of the payload. The index |
| * will be immediately followed by the associated structure. Padding bytes |
| * are appended to ensure 32 bit address alignment if needed. |
| */ |
| typedef enum QOMX_VIDEO_EXTRADATATYPE |
| { |
| QOMX_ExtraDataVideoMultiSliceInfo = 0x7F100000, |
| QOMX_ExtraDataVideoNumConcealedMB, |
| QOMX_ExtraDataOMXIndex, |
| QOMX_ExtraDataHDCPEncryptionInfo |
| } QOMX_VIDEO_EXTRADATATYPE; |
| |
| |
| /** |
| * Enumeration used to define the video encoder modes |
| * |
| * ENUMS: |
| * EncoderModeDefault : Default video recording mode. |
| * All encoder settings made through |
| * OMX_SetParameter/OMX_SetConfig are applied. No |
| * parameter is overridden. |
| * EncoderModeMMS : Video recording mode for MMS (Multimedia Messaging |
| * Service). This mode is similar to EncoderModeDefault |
| * except that here the Rate control mode is overridden |
| * internally and set as a variant of variable bitrate with |
| * variable frame rate. After this mode is set if the IL |
| * client tries to set OMX_VIDEO_CONTROLRATETYPE via |
| * OMX_IndexParamVideoBitrate that would be rejected. For |
| * this, client should set mode back to EncoderModeDefault |
| * first and then change OMX_VIDEO_CONTROLRATETYPE. |
| */ |
| typedef enum QOMX_VIDEO_ENCODERMODETYPE |
| { |
| QOMX_VIDEO_EncoderModeDefault = 0x01, |
| QOMX_VIDEO_EncoderModeMMS = 0x02, |
| QOMX_VIDEO_EncoderModeMax = 0x7FFFFFFF |
| } QOMX_VIDEO_ENCODERMODETYPE; |
| |
| /** |
| * This structure is used to set the video encoder mode. |
| * |
| * STRUCT MEMBERS: |
| * nSize : Size of the structure in bytes |
| * nVersion : OMX specification version info |
| * nPortIndex : Port that this structure applies to |
| * nMode : defines the video encoder mode |
| */ |
| typedef struct QOMX_VIDEO_PARAM_ENCODERMODETYPE { |
| OMX_U32 nSize; |
| OMX_VERSIONTYPE nVersion; |
| OMX_U32 nPortIndex; |
| QOMX_VIDEO_ENCODERMODETYPE nMode; |
| } QOMX_VIDEO_PARAM_ENCODERMODETYPE; |
| |
| |
| /** |
| * This structure is used to set the temporal (picture rate) - spatial |
| * (picture quality) trade-off factor. |
| * This setting is only valid when rate control is enabled and set to a mode |
| * with variable frame rate. For all other rate control modes this setting is |
| * ignored. |
| * |
| * STRUCT MEMBERS: |
| * nSize : Size of the structure in bytes |
| * nVersion : OMX specification version info |
| * nPortIndex : Port that this structure applies to |
| * nTSFactor : temporal-spatial tradeoff factor value in the range of 0-100. |
| * A factor of 0 won't emphasizes picture rate in rate |
| * control decisions at all i.e only picture quality is emphasized. For |
| * increasing values from 1 to 99 the emphasis of picture rate in rate |
| * control decisions increases. A factor of 100 emphasizes only picture rate |
| * in rate control decisions. |
| */ |
| typedef struct QOMX_VIDEO_TEMPORALSPATIALTYPE { |
| OMX_U32 nSize; |
| OMX_VERSIONTYPE nVersion; |
| OMX_U32 nPortIndex; |
| OMX_U32 nTSFactor; |
| } QOMX_VIDEO_TEMPORALSPATIALTYPE; |
| |
| /** |
| * This structure is used to enable or disable the MB concealmenet reporting |
| * for the uncompressed frames emitted from the port. |
| * |
| * STRUCT MEMBERS: |
| * nSize : Size of the structure in bytes |
| * nVersion : OMX specification version info |
| * nPortIndex : Port that this structure applies to |
| * bEnableMBConcealmentReporting : Flag indicating whether MB concealment |
| * reporting is enabled or disabled. |
| * OMX_TRUE: Enables MB concealment reporting |
| * OMX_FALSE: Disables MB concealment reporting |
| */ |
| typedef struct QOMX_VIDEO_MBCONCEALMENTREPORTINGTYPE { |
| OMX_U32 nSize; |
| OMX_VERSIONTYPE nVersion; |
| OMX_U32 nPortIndex; |
| OMX_BOOL bEnableMBConcealmentReporting; |
| } QOMX_VIDEO_MBCONCEALMENTREPORTINGTYPE; |
| |
| /** |
| * Specifies the extended picture types. These values should be |
| * OR'd along with the types defined in OMX_VIDEO_PICTURETYPE to |
| * signal all pictures types which are allowed. |
| * |
| * ENUMS: |
| * H.264 Specific Picture Types: IDR |
| */ |
| typedef enum QOMX_VIDEO_PICTURETYPE { |
| QOMX_VIDEO_PictureTypeIDR = OMX_VIDEO_PictureTypeVendorStartUnused + 0x1000 |
| } QOMX_VIDEO_PICTURETYPE; |
| |
| /** |
| * This structure is used to configure the processing of |
| * specific picture types. |
| * |
| * STRUCT MEMBERS: |
| * nSize : Size of the structure in bytes |
| * nVersion : OMX specification version info |
| * nPortIndex : Port that this structure applies to |
| * nPictureTypes : Specifies the picture type(s) |
| * that shall be processed. The value consists |
| * of the desired picture types, defined by the |
| * OMX_VIDEO_PICTURETYPE and |
| * QOMX_VIDEO_PICTURETYPE enumerations, OR'd to |
| * signal all the pictures types which are |
| * allowed. |
| */ |
| typedef struct QOMX_VIDEO_DECODEPICTURETYPE { |
| OMX_U32 nSize; |
| OMX_VERSIONTYPE nVersion; |
| OMX_U32 nPortIndex; |
| OMX_U32 nPictureTypes; |
| } QOMX_VIDEO_DECODEPICTURETYPE; |
| |
| /** |
| * This structure describes the sample aspect ratio information. |
| * |
| * STRUCT MEMBERS: |
| * nSize : Size of the structure in bytes |
| * nVersion : OMX specification version info |
| * nPortIndex : Port that this structure applies to |
| * nWidth : Specifies the horizontal aspect size of |
| * the sample |
| * nHeight : Specifies the vertical aspect size of the |
| * sample |
| */ |
| typedef struct QOMX_VIDEO_SAMPLEASPECTRATIO { |
| OMX_U32 nSize; |
| OMX_VERSIONTYPE nVersion; |
| OMX_U32 nPortIndex; |
| OMX_U16 nWidth; |
| OMX_U16 nHeight; |
| } QOMX_VIDEO_SAMPLEASPECTRATIO; |
| |
| #if defined( __cplusplus ) |
| } |
| #endif /* end of macro __cplusplus */ |
| |
| #endif /* end of macro __H_QOMX_VIDEOEXTENSIONS_H__ */ |