/*-------------------------------------------------------------------------- | |
Copyright (c) 2011 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_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__ */ |