blob: 55000c649169178b904aeaa9fc6e8eba44d92ce5 [file] [log] [blame]
/*
* Copyright (c) 2010, Texas Instruments Incorporated
* 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 Texas Instruments Incorporated 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 AND FITNESS FOR A PARTICULAR
* PURPOSE 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.
*/
/* -------------------------------------------------------------------------- */
/*
* @file:Omx_ti_video.h
* This header defines the structures specific to the param or config indices of Openmax Video Component.
*
* @path:
* \WTSD_DucatiMMSW\ omx\omx_il_1_x\omx_core\
* -------------------------------------------------------------------------- */
/* =========================================================================
*!
*! Revision History
*! =====================================================================
*! 24-Dec-2008 Navneet navneet@ti.com Initial Version
*! 14-Jul-2009 Radha Purnima radhapurnima@ti.com
*! 25-Aug-2009 Radha Purnima radhapurnima@ti.com
* =========================================================================*/
#ifndef OMX_TI_VIDEO_H
#define OMX_TI_VIDEO_H
#define H264ENC_MAXNUMSLCGPS 2
#include <OMX_Core.h>
/**
* @brief mode selection for the data that is given to the Codec
*/
typedef enum OMX_VIDEO_DATASYNCMODETYPE {
OMX_Video_FixedLength, //!< Interms of multiples of 4K
OMX_Video_SliceMode, //!< Slice mode
OMX_Video_NumMBRows, //!< Number of rows, each row is 16 lines of video
OMX_Video_EntireFrame //!< Processing of entire frame data
} OMX_VIDEO_DATASYNCMODETYPE;
/* ========================================================================== */
/*!
@brief OMX_TI_VIDEO_PARAM_DATAMODE :to configure how the input and output data is fed to the Codec
@param nPortIndex to specify the index of the port
@param eDataMode to specify the data mode
@sa OMX_VIDEO_DATASYNCMODETYPE
@param nNumDataUnits to specify the number of data units (where units are of type defined by eDataMode)
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_PARAM_DATASYNCMODETYPE{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_DATASYNCMODETYPE eDataMode;
OMX_U32 nNumDataUnits;
} OMX_VIDEO_PARAM_DATASYNCMODETYPE;
/**
* @brief Aspect Ratio type selection for the encoded bit stream
*/
typedef enum OMX_VIDEO_ASPECTRATIOTYPE{
OMX_Video_AR_Unspecified, //!< Unspecified aspect ratio
OMX_Video_AR_Square , //!< 1:1 (square) aspect ratio
OMX_Video_AR_12_11 , //!< 12:11 aspect ratio
OMX_Video_AR_10_11 , //!< 10:11 aspect ratio
OMX_Video_AR_16_11 , //!< 16:11 aspect ratio
OMX_Video_AR_40_33 , //!< 40:33 aspect ratio
OMX_Video_AR_24_11 , //!< 24:11 aspect ratio
OMX_Video_AR_20_11 , //!< 20:11 aspect ratio
OMX_Video_AR_32_11 , //!< 32:11 aspect ratio
OMX_Video_AR_80_33 , //!< 80:33 aspect ratio
OMX_Video_AR_18_11 , //!< 18:11 aspect ratio
OMX_Video_AR_15_15 , //!< 15:15 aspect ratio
OMX_Video_AR_64_33 , //!< 64:33 aspect ratio
OMX_Video_AR_160_99 , //!< 160:99 aspect ratio
OMX_Video_AR_4_3 , //!< 4:3 aspect ratio
OMX_Video_AR_3_2 , //!< 3:2 aspect ratio
OMX_Video_AR_2_1 , //!< 2:1 aspect ratio
OMX_Video_AR_Extended = 255, //!< Extended aspect ratio
OMX_Video_AR_Extended_MAX = 0X7FFFFFFF
}OMX_VIDEO_ASPECTRATIOTYPE;
/* ========================================================================== */
/*!
@brief OMX_TI_VIDEO_PARAM_VUI_SELECT :to select the VUI Settings
@param bAspectRatioPresent flag to indicate the insertion of aspect ratio information in VUI part of bit-stream
@param ePixelAspectRatio to specify the Aspect Ratio
@param bFullRange to indicate whether pixel value range is specified as full range or not (0 to 255)
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_PARAM_VUIINFOTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_BOOL bAspectRatioPresent;
OMX_VIDEO_ASPECTRATIOTYPE ePixelAspectRatio;
OMX_BOOL bFullRange;
}OMX_VIDEO_PARAM_VUIINFOTYPE;
/* ========================================================================== */
/*!
@brief OMX_VIDEO_CONFIG_PIXELINFOTYPE :to specify the information related to the input pixel data (aspect ratio & range) to the Codec
so that codec can incorporate this info in the coded bit stream
@param nWidth to specify the Aspect ratio: width of the pixel
@param nHeight to specify the Aspect ratio: height of the pixel
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_CONFIG_PIXELINFOTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nWidth;
OMX_U32 nHeight;
} OMX_VIDEO_CONFIG_PIXELINFOTYPE;
/* ========================================================================== */
/*!
@brief OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE : to configure what NALU need to send along the frames of different types (Intra,IDR...etc)
@param nStartofSequence to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the Start of sequence frame
@param nEndofSequence to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the End of sequence frame
@param nIDR to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the IDR frame
@param nIntraPicture to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the Intra frame
@param nNonIntraPicture to to configure the different NALU (specified via enabling/disabling (1/0) the bit positions) that need to send along with the Non Intra frame
Bit Position: 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0
NALU TYPE: SPS_VUI|FILLER|EOSTREAM|EOSEQ|AUD|PPS|SPS|SEI|IDR_SLICE|SLICE_DP_C|SLICE_DP_B|SLICE_DP_A|SLICE|UNSPECIFIED \n
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nStartofSequence;
OMX_U32 nEndofSequence;
OMX_U32 nIDR;
OMX_U32 nIntraPicture;
OMX_U32 nNonIntraPicture;
}OMX_VIDEO_PARAM_AVCNALUCONTROLTYPE;
/* ========================================================================== */
/*!
@brief OMX_VIDEO_CONFIG_MESEARCHRANGETYPE : to configure Motion Estimation Parameters
@param eMVAccuracy to specify the Motion Vector Accuracy
@sa OMX_VIDEO_MOTIONVECTORTYPE
@param sHorSearchRangeP to Specify the Horizontal Search range for P Frame
@param sVerSearchRangeP to Specify the Vertical Search range for P Frame
@param sHorSearchRangeB to Specify the Horizontal Search range for B Frame
@param sVerSearchRangeB to Specify the Vertical Search range for B Frame
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_CONFIG_MESEARCHRANGETYPE{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_MOTIONVECTORTYPE eMVAccuracy;
OMX_U32 nHorSearchRangeP;
OMX_U32 nVerSearchRangeP;
OMX_U32 nHorSearchRangeB;
OMX_U32 nVerSearchRangeB;
}OMX_VIDEO_CONFIG_MESEARCHRANGETYPE;
/**
* @brief Block size specification
*/
typedef enum OMX_VIDEO_BLOCKSIZETYPE {
OMX_Video_Block_Size_16x16=0,
OMX_Video_Block_Size_8x8,
OMX_Video_Block_Size_8x4,
OMX_Video_Block_Size_4x8,
OMX_Video_Block_Size_4x4,
OMX_Video_Block_Size_MAX = 0X7FFFFFFF
}OMX_VIDEO_BLOCKSIZETYPE;
/* ========================================================================== */
/*!
@brief OMX_VIDEO_PARAM_MEBLOCKSIZETYPE : to configure the Min Motion Estimation block size for P and B frames
@param eMinBlockSizeP to specify the Min Block size used for Motion Estimation incase of P Frames
@sa OMX_VIDEO_BLOCKSIZETYPE
@param eMinBlockSizeB to specify the Min Block size used for Motion Estimation incase of B Frames
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_PARAM_MEBLOCKSIZETYPE{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeP;
OMX_VIDEO_BLOCKSIZETYPE eMinBlockSizeB;
}OMX_VIDEO_PARAM_MEBLOCKSIZETYPE;
/**
* @brief to select the chroma component used for Intra Prediction
*/
typedef enum OMX_VIDEO_CHROMACOMPONENTTYPE {
OMX_Video_Chroma_Component_Cr_Only=0, //!< consider only Cr chroma component for Intra prediction
OMX_Video_Chroma_Component_Cb_Cr_Both, //!< consider both (Cb & Cr) chroma components for Intra prediction
OMX_Video_Chroma_Component_MAX = 0X7FFFFFFF
}OMX_VIDEO_CHROMACOMPONENTTYPE;
/* ========================================================================== */
/*!
@brief OMX_VIDEO_PARAM_INTRAPREDTYPE : to configure the Modes for the different block sizes during Intra Prediction
@param nLumaIntra4x4Enable to configure the Modes for 4x4 block size during luma intra prediction: bit position specifies the modes that are enabled/disabled
HOR_UP|VERT_LEFT|HOR_DOWN|VERT_RIGHT|DIAG_DOWN_RIGHT|DIAG_DOWN_LEFT|DC|HOR|VER
@param nLumaIntra8x8Enable to configure the Modes for 4x4 block size during luma intra prediction
HOR_UP|VERT_LEFT|HOR_DOWN|VERT_RIGHT|DIAG_DOWN_RIGHT|DIAG_DOWN_LEFT|DC|HOR|VER
@param nLumaIntra16x16Enable to configure the Modes for 4x4 block size during luma intra prediction
PLANE|DC|HOR|VER
@param nChromaIntra8x8Enable to configure the Modes for 4x4 block size during luma intra prediction
PLANE|DC|HOR|VER
@param eChromaComponentEnable to select the chroma components used for the intra prediction
@sa OMX_VIDEO_CHROMACOMPONENTTYPE
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_PARAM_INTRAPREDTYPE{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nLumaIntra4x4Enable;
OMX_U32 nLumaIntra8x8Enable;
OMX_U32 nLumaIntra16x16Enable;
OMX_U32 nChromaIntra8x8Enable;
OMX_VIDEO_CHROMACOMPONENTTYPE eChromaComponentEnable;
}OMX_VIDEO_PARAM_INTRAPREDTYPE;
/**
* @brief Encoding Mode Preset
*/
typedef enum OMX_VIDEO_ENCODING_MODE_PRESETTYPE {
OMX_Video_Enc_Default=0, //!< for all the params default values are taken
OMX_Video_Enc_High_Quality, //!< todo: mention the parameters that takes specific values depending on this selection
OMX_Video_Enc_User_Defined,
OMX_Video_Enc_High_Speed_Med_Quality,
OMX_Video_Enc_Med_Speed_Med_Quality,
OMX_Video_Enc_Med_Speed_High_Quality,
OMX_Video_Enc_High_Speed,
OMX_Video_Enc_Preset_MAX = 0X7FFFFFFF
}OMX_VIDEO_ENCODING_MODE_PRESETTYPE;
/**
* @brief Rate Control Preset
*/
typedef enum OMX_VIDEO_RATECONTROL_PRESETTYPE {
OMX_Video_RC_Low_Delay, //!<todo: mention the parameters that takes specific values depending on this selection
OMX_Video_RC_Storage,
OMX_Video_RC_Twopass,
OMX_Video_RC_None,
OMX_Video_RC_User_Defined,
OMX_Video_RC_MAX = 0X7FFFFFFF
}OMX_VIDEO_RATECONTROL_PRESETTYPE;
/* ========================================================================== */
/*!
@brief OMX_VIDEO_PARAM_ENCODER_PRESETTYPE : to select the preset for Encoding Mode & Rate Control
@param eEncodingModePreset to specify Encoding Mode Preset
@sa OMX_VIDEO_ENCODING_MODE_PRESETTYPE
@param eRateControlPreset to specify Rate Control Preset
@sa OMX_VIDEO_RATECONTROL_PRESETTYPE
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_PARAM_ENCODER_PRESETTYPE{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_ENCODING_MODE_PRESETTYPE eEncodingModePreset;
OMX_VIDEO_RATECONTROL_PRESETTYPE eRateControlPreset;
}OMX_VIDEO_PARAM_ENCODER_PRESETTYPE;
/**
* @brief input content type
*/
typedef enum OMX_TI_VIDEO_FRAMECONTENTTYPE {
OMX_TI_Video_Progressive = 0, //!<Progressive frame
OMX_TI_Video_Interlace_BothFieldsTogether = 1, //!<Interlaced frame
OMX_TI_Video_Interlace_OneField = 2,
OMX_TI_Video_AVC_2004_StereoInfoType = 3,
OMX_TI_Video_AVC_2010_StereoFramePackingType = 4,
OMX_TI_Video_FrameContentType_MAX = 0x7FFFFFFF
}OMX_TI_VIDEO_FRAMECONTENTTYPE;
/**
* @brief Specifies the type of interlace content
*/
typedef enum OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE {
OMX_TI_Video_Interlace_PICAFF = 0, //!< PicAFF type of interlace coding
OMX_TI_Video_Interlace_MBAFF, //!< MBAFF type of interlace coding
OMX_TI_Video_Interlace_Fieldonly, //!< Field only coding
OMX_TI_Video_Interlace_Fieldonly_MRF=OMX_TI_Video_Interlace_Fieldonly,
OMX_TI_Video_Interlace_Fieldonly_ARF,
OMX_TI_Video_Interlace_Fieldonly_SPF, //!< Field only coding where codec decides the partiy of the field to be used based upon content
OMX_Video_Interlace_MAX = 0x7FFFFFFF
}OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE;
/* ========================================================================== */
/*!
@brief OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE : to configure the data content
@param eContentType to specify Content type
@sa OMX_VIDEO_FRAMECONTENTTYPE
*/
/* ==========================================================================*/
typedef struct OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_TI_VIDEO_FRAMECONTENTTYPE eContentType;
}OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE;
/* ========================================================================== */
/*!
@brief OMX_TI_VIDEO_PARAM_AVCINTERLACECODING : to configure the interlace encoding related settings
@param eInterlaceCodingType to specify the settings of interlace content
@sa OMX_VIDEO_INTERLACE_CODINGTYPE
@param bTopFieldFirst to specify the first field sent is top or bottom
@param bBottomFieldIntra to specify codec that encode bottomfield also as intra or not
*/
/* ==========================================================================*/
typedef struct OMX_TI_VIDEO_PARAM_AVCINTERLACECODING{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_TI_VIDEO_AVC_INTERLACE_CODINGTYPE eInterlaceCodingType;
OMX_BOOL bTopFieldFirst;
OMX_BOOL bBottomFieldIntra;
}OMX_TI_VIDEO_PARAM_AVCINTERLACECODING;
/* ========================================================================== */
/*!
@brief OMX_TI_VIDEO_PARAM_AVCENC_STEREOINFO2004 : to configure the 2004 related stereo information type
*/
/* ==========================================================================*/
typedef struct OMX_TI_VIDEO_PARAM_AVCENC_STEREOINFO2004
{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_BOOL btopFieldIsLeftViewFlag;
OMX_BOOL bViewSelfContainedFlag;
} OMX_TI_VIDEO_AVCENC_STEREOINFO2004;
typedef enum OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE{
OMX_TI_Video_FRAMEPACK_CHECKERBOARD = 0,
OMX_TI_Video_FRAMEPACK_COLUMN_INTERLEAVING = 1,
OMX_TI_Video_FRAMEPACK_ROW_INTERLEAVING = 2,
OMX_TI_Video_FRAMEPACK_SIDE_BY_SIDE = 3,
OMX_TI_Video_FRAMEPACK_TOP_BOTTOM = 4,
OMX_TI_Video_FRAMEPACK_TYPE_DEFAULT = OMX_TI_Video_FRAMEPACK_SIDE_BY_SIDE,
OMX_TI_Video_FRAMEPACK_TYPE_MAX = 0x7FFFFFFF
} OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE;
/* ========================================================================== */
/*!
@brief OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010 : to configure the 2010 related stereo information type
*/
/* ==========================================================================*/
typedef struct OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010
{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_TI_VIDEO_AVCSTEREO_FRAMEPACKTYPE eFramePackingType;
OMX_U8 nFrame0PositionX;
OMX_U8 nFrame0PositionY;
OMX_U8 nFrame1PositionX;
OMX_U8 nFrame1PositionY;
}OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010;
/**
* @brief Specifies Transform Block Size
*/
typedef enum OMX_VIDEO_TRANSFORMBLOCKSIZETYPE {
OMX_Video_Transform_Block_Size_4x4 =0, //!< Transform blocks size is 8x8 : Valid for only High Profile
OMX_Video_Transform_Block_Size_8x8, //!< Transform blocks size is 4x4
OMX_Video_Transform_Block_Size_Adaptive, //!< Adaptive transform block size : encoder decides as per content
OMX_Video_Transform_Block_Size_MAX = 0X7FFFFFFF
}OMX_VIDEO_TRANSFORMBLOCKSIZETYPE;
/* ========================================================================== */
/*!
@brief OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE : to select the Block Size used for transformation
@param eTransformBlocksize to specify Block size used for transformation
@sa OMX_VIDEO_TRANSFORMBLOCKSIZETYPE
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_TRANSFORMBLOCKSIZETYPE eTransformBlocksize;
}OMX_VIDEO_PARAM_TRANSFORM_BLOCKSIZETYPE;
/* ========================================================================== */
/*!
@brief OMX_VIDEO_CONFIG_SLICECODINGTYPE : to configure the Slice Settings
@param eSliceMode to specify the Slice mode
@sa OMX_VIDEO_AVCSLICEMODETYPE
@param nSlicesize to specify the sliceSize
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_CONFIG_SLICECODINGTYPE{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_VIDEO_AVCSLICEMODETYPE eSliceMode;
OMX_U32 nSlicesize;
}OMX_VIDEO_CONFIG_SLICECODINGTYPE;
/**
* @brief Specifies Slice Group Change Direction Flag
*/
typedef enum OMX_VIDEO_SLIGRPCHANGEDIRTYPE{
OMX_Video_Raster_Scan = 0 , //!< 0 : Raster scan order
OMX_Video_Clockwise = 0 , //!< 0 : Clockwise (used for BOX OUT FMO Params)
OMX_Video_Right = 0 , //!< 0 : RIGHT (Used for Wipe FMO type)
OMX_Video_Reverse_Raster_Scan= 1 , //!< 1 : Reverse Raster Scan Order
OMX_Video_Counter_Clockwise = 1 , //!< 1 : Counter Clockwise (used for BOX OUT FMO Params)
OMX_Video_Left = 1, //!< 1 : LEFT (Used for Wipe FMO type)
OMX_Video_Left_MAX = 0X7FFFFFFF
} OMX_VIDEO_SLICEGRPCHANGEDIRTYPE;
/* ========================================================================== */
/*!
@brief OMX_TI_VIDEO_PARAM_FMO_ADVANCEDSETTINGS : to configure the FMO Settings
@param
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_PARAM_AVCADVANCEDFMOTYPE{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U8 nNumSliceGroups;
OMX_U8 nSliceGroupMapType;
OMX_VIDEO_SLICEGRPCHANGEDIRTYPE eSliceGrpChangeDir;
OMX_U32 nSliceGroupChangeRate;
OMX_U32 nSliceGroupChangeCycle;
OMX_U32 nSliceGroupParams[H264ENC_MAXNUMSLCGPS] ;
}OMX_VIDEO_PARAM_AVCADVANCEDFMOTYPE;
/* ========================================================================== */
/*!
@brief OMX_TI_VIDEO_CONFIG_QPSETTINGS : to configure the Qp Settings of I, P &B Frames
@param nQpI
*/
/* ==========================================================================*/
typedef struct OMX_VIDEO_CONFIG_QPSETTINGSTYPE{
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nQpI;
OMX_U32 nQpMaxI;
OMX_U32 nQpMinI;
OMX_U32 nQpP;
OMX_U32 nQpMaxP;
OMX_U32 nQpMinP;
OMX_U32 nQpOffsetB;
OMX_U32 nQpMaxB;
OMX_U32 nQpMinB;
}OMX_VIDEO_CONFIG_QPSETTINGSTYPE;
/* ========================================================================== */
/*!
@brief OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING : to configure the HRD
(Hypothetical Reference Decoder) related params
@param nInitialBufferLevel Initial buffer level for HRD compliance
@param nHRDBufferSize Hypothetical Reference Decoder buffer size
@param nTargetBitrate Target bitrate to encode with
*/
/* ==========================================================================*/
typedef struct OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nInitialBufferLevel;
OMX_U32 nHRDBufferSize;
OMX_U32 nTargetBitrate;
} OMX_TI_VIDEO_PARAM_AVCHRDBUFFERSETTING;
/* ========================================================================== */
/*!
@brief OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING : to configure the HRD
(Hypothetical Reference Decoder) related params
@param nHRDBufferSize Hypothetical Reference Decoder Buffer Size
@param nEncodeBitrate Target bitrate to encode with
*/
/* ==========================================================================*/
typedef struct OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_U32 nHRDBufferSize;
OMX_U32 nEncodeBitrate;
} OMX_TI_VIDEO_CONFIG_AVCHRDBUFFERSETTING;
/* ========================================================================= */
/*!
@brief OMX_TI_VIDEO_CODINGTYPE :
Extension to video coding type enum for VP6 and VP7
@param
*/
/* ==========================================================================*/
typedef enum OMX_TI_VIDEO_CODINGTYPE {
OMX_VIDEO_CodingVP6 =
(OMX_VIDEO_CODINGTYPE) OMX_VIDEO_CodingVendorStartUnused +1, /* VP6 */
OMX_VIDEO_CodingVP7, /* VP7 */
OMX_TI_VIDEO_CodingSORENSONSPK /* Sorenson Spark */
}OMX_TI_VIDEO_CODINGTYPE;
/* ========================================================================= */
/*!
@brief OMX_TI_VIDEO_MPEG4LEVELTYPE:
Extension to MPEG-4 level to cater to level 6
@param
*/
/* ==========================================================================*/
typedef enum OMX_TI_VIDEO_MPEG4LEVELTYPE {
OMX_TI_VIDEO_MPEG4Level6 =
(OMX_VIDEO_MPEG4LEVELTYPE) OMX_VIDEO_MPEG4LevelVendorStartUnused + 1
} OMX_TI_VIDEO_MPEG4LEVELTYPE;
/**
* @brief Specifies various intra refresh methods
*/
typedef enum OMX_TI_VIDEO_INTRAREFRESHTYPE {
OMX_TI_VIDEO_IntraRefreshNone = 0,
OMX_TI_VIDEO_IntraRefreshCyclicMbs,
OMX_TI_VIDEO_IntraRefreshCyclicRows,
OMX_TI_VIDEO_IntraRefreshMandatory,
OMX_TI_VIDEO_IntraRefreshMax = 0x7FFFFFFF
} OMX_TI_VIDEO_INTRAREFRESHTYPE;
/* ========================================================================== */
/*!
@brief OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE : Configuration parameters for
intra refresh settings
@param eRefreshMode Various refresh modes supported
@param nIntraRefreshRate Intra refresh rate
*/
/* ==========================================================================*/
typedef struct OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_TI_VIDEO_INTRAREFRESHTYPE eRefreshMode;
OMX_U32 nIntraRefreshRate;
} OMX_TI_VIDEO_PARAM_INTRAREFRESHTYPE;
/* ============================================================================= */
/*!
@brief OMX_TI_STEREODECINFO : Structure to access 2004 SEI message generated by
H264 decoder as metatadata on its output port.
*/
/* ============================================================================= */
typedef struct OMX_TI_STEREODECINFO {
OMX_U32 nFieldViewsFlag;
OMX_U32 nTopFieldIsLeftViewFlag;
OMX_U32 nCurrentFrameIsLeftViewFlag;
OMX_U32 nNextFrameIsSecondViewFlag;
OMX_U32 nLeftViewSelfContainedFlag;
OMX_U32 nRightViewSelfContainedFlag;
} OMX_TI_STEREODECINFO;
typedef struct OMX_TI_FRAMEPACKINGDECINFO {
OMX_U32 nFramePackingArrangementId;
OMX_U32 nFramePackingArrangementRepetitionPeriod;
OMX_U8 nFramePackingArrangementCancelFlag;
OMX_U8 nFramePackingArrangementType;
OMX_U8 nQuincunxSamplingFlag;
OMX_U8 nContentInterpretationType;
OMX_U8 nSpatialFlippingFlag;
OMX_U8 nFrame0FlippedFlag;
OMX_U8 nFieldViewsFlag;
OMX_U8 nCurrentFrameIsFrame0Flag;
OMX_U8 nFrame0SelfContainedFlag;
OMX_U8 nFrame1SelfContainedFlag;
OMX_U8 nFrame0GridPositionX;
OMX_U8 nFrame0GridPositionY;
OMX_U8 nFrame1GridPositionX;
OMX_U8 nFrame1GridPositionY;
OMX_U8 nFramePackingArrangementReservedByte;
OMX_U8 nFramePackingArrangementExtensionFlag;
} OMX_TI_FRAMEPACKINGDECINFO;
/* ============================================================================= */
/*!
@brief OMX_TI_VIDEO_RANGEMAPPING : Structure to access luma and chroma range
mapping generated by decoders as
metatadata on its output port.
@param nRangeMappingLuma Luma scale factor for range mapping.
@param nRangeMappingChroma Chroma scale factor for range mapping.
*/
/* ============================================================================= */
typedef struct OMX_TI_VIDEO_RANGEMAPPING {
OMX_U32 nRangeMappingLuma;
OMX_U32 nRangeMappingChroma;
} OMX_TI_VIDEO_RANGEMAPPING;
/* ============================================================================= */
/*!
@brief OMX_TI_VIDEO_RESCALINGMATRIX : Structure to access rescaled
width/height generated by decoders
as metatadata on its output port.
@param nScaledHeight Scaled image width for post processing for decoder.
@param nScaledWidth Scaled image height for post processing for decoder.
*/
/* ============================================================================= */
typedef struct OMX_TI_VIDEO_RESCALINGMATRIX {
OMX_U32 nScaledHeight;
OMX_U32 nScaledWidth;
} OMX_TI_VIDEO_RESCALINGMATRIX;
/*==========================================================================*/
/*!
@brief OMX_TI_PARAM_PAYLOADHEADERFLAG : To specify the payload headerflag
for VP6/VP7 decoder.
@param bPayloadHeaderFlag Flag - TRUE indicates that frame length and
timestamp(for IVF format) will be part of
frame input buffer.
Flag - FALSE indecates that frame length and
timestamp(for IVF format) will not be part of
the input buffer.
*/
/*==========================================================================*/
typedef struct OMX_TI_PARAM_PAYLOADHEADERFLAG {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_BOOL bPayloadHeaderFlag;
} OMX_TI_PARAM_PAYLOADHEADERFLAG;
/*==========================================================================*/
/*!
@brief OMX_TI_PARAM_IVFFLAG : Suport added to handle IVF header Decoding Mode
@param bIvfFlag TRUE enables IVF decoding mode.
FALSE indicates bitstream format is non-IVF.
*/
/*==========================================================================*/
typedef struct OMX_TI_PARAM_IVFFLAG {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_BOOL bIvfFlag;
} OMX_TI_PARAM_IVFFLAG;
// A pointer to this struct is passed to OMX_SetParameter() when the extension
// index "OMX.google.android.index.storeMetaDataInBuffers"
// is given.
//
// When meta data is stored in the video buffers passed between OMX clients
// and OMX components, interpretation of the buffer data is up to the
// buffer receiver, and the data may or may not be the actual video data, but
// some information helpful for the receiver to locate the actual data.
// The buffer receiver thus needs to know how to interpret what is stored
// in these buffers, with mechanisms pre-determined externally. How to
// interpret the meta data is outside of the scope of this method.
//
// Currently, this is specifically used to pass meta data from video source
// (camera component, for instance) to video encoder to avoid memcpying of
// input video frame data. To do this, bStoreMetaDta is set to OMX_TRUE.
// If bStoreMetaData is set to false, real YUV frame data will be stored
// in the buffers. In addition, if no OMX_SetParameter() call is made
// with the corresponding extension index, real YUV data is stored
// in the buffers.
typedef struct OMX_VIDEO_STOREMETADATAINBUFFERSPARAMS {
OMX_U32 nSize;
OMX_VERSIONTYPE nVersion;
OMX_U32 nPortIndex;
OMX_BOOL bStoreMetaData;
} OMX_VIDEO_STOREMETADATAINBUFFERSPARAMS;
#endif /* OMX_TI_VIDEO_H */