omxil/omxilapi/shai/OMX_Symbian_VideoExt.h
branchOpenMAX-IL_SHAI
changeset 16 eedf2dcd43c6
equal deleted inserted replaced
15:c1e808730d6c 16:eedf2dcd43c6
       
     1 /*
       
     2   OMX_Symbian_VideoExt.h
       
     3   
       
     4   Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
       
     5   All rights reserved.
       
     6 
       
     7   This program and the accompanying materials are made available 
       
     8   under the terms of the Eclipse Public License v1.0 which accompanies 
       
     9   this distribution, and is available at 
       
    10   http://www.eclipse.org/legal/epl-v10.html
       
    11 
       
    12   Initial Contributors:
       
    13   Nokia Corporation - initial contribution.
       
    14 */
       
    15 
       
    16 /** @file
       
    17 @brief Symbian OpenMAX IL Extension Data Structures in the Video Domain.
       
    18 
       
    19 This file contains the extension structures for the Symbian IL extensions that
       
    20 pertain to video components.
       
    21 
       
    22 @publishedDeviceAbstraction
       
    23 */
       
    24 
       
    25 #ifndef OMX_Symbian_VideoExt_h
       
    26 #define OMX_Symbian_VideoExt_h
       
    27 
       
    28 #ifdef __cplusplus
       
    29 extern "C" {
       
    30 #endif /* __cplusplus */
       
    31 
       
    32 /* Each OMX header must include all required header files to allow the
       
    33  * header to compile without errors.  The includes below are required
       
    34  * for this header file to compile successfully 
       
    35  */
       
    36 #include <OMX_Types.h>
       
    37 #include <OMX_Video.h>
       
    38 
       
    39 
       
    40 /** Video format extensions. */
       
    41 typedef enum OMX_SYMBIAN_VIDEO_CODINGTYPE {
       
    42     OMX_SYMBIAN_VIDEO_CodingVC1 = OMX_VIDEO_CodingVendorStartUnused + 0x1,
       
    43     OMX_SYMBIAN_VIDEO_CodingVP6,
       
    44     OMX_SYMBIAN_VIDEO_CodingMax = 0x7FFFFFFF
       
    45 } OMX_SYMBIAN_VIDEO_CODINGTYPE;
       
    46 
       
    47 /** Sequence Headers.
       
    48 
       
    49 The index specified for this structure is retrieved using 
       
    50 OMX_GetExtensionIndex() with the extension string 
       
    51 "OMX.Symbian.Index.Param.Video.SequenceHeader".
       
    52  */
       
    53 typedef struct OMX_SYMBIAN_VIDEO_PARAM_SEQUENCEHEADERTYPE
       
    54 { 
       
    55     OMX_U32 nSize;                  /**< Size of the structure in bytes */
       
    56     OMX_VERSIONTYPE nVersion;       /**< OMX specification version information */
       
    57     OMX_U32 nPortIndex;             /**< Port that this structure applies to */
       
    58     OMX_U32 nSequenceHeaderSize;    /**< Size of the sequence header in bytes */
       
    59     OMX_U8 SequenceHeader[1];       /**< Sequence header. VOS, VO and VOL for MPEG-4. SPS and PPS for AVC */
       
    60 } OMX_SYMBIAN_VIDEO_PARAM_SEQUENCEHEADERTYPE;
       
    61 
       
    62 
       
    63 typedef enum OMX_SYMBIAN_VIDEO_AVCSEITYPE {
       
    64     OMX_SYMBIAN_VIDEO_AvcSeiBufferinPeriod = 0x01,
       
    65     OMX_SYMBIAN_VIDEO_AvcSeiPictureTiming = 0x02,
       
    66     OMX_SYMBIAN_VIDEO_AvcSeiPanScanRectangle = 0x04,
       
    67     OMX_SYMBIAN_VIDEO_AvcSeiFillerPayload = 0x08,
       
    68     OMX_SYMBIAN_VIDEO_AvcSeiUserDataRegisteredByITUT35 = 0x10,
       
    69     OMX_SYMBIAN_VIDEO_AvcSeiUserDataUnregistered = 0x20,
       
    70     OMX_SYMBIAN_VIDEO_AvcSeiRecoveryPoint = 0x40,
       
    71     OMX_SYMBIAN_VIDEO_AvcSeiDecReferencePictureMarkingRepetition = 0x80,
       
    72     OMX_SYMBIAN_VIDEO_AvcSeiSparePicture = 0x100,
       
    73     OMX_SYMBIAN_VIDEO_AvcSeiSceneInformation = 0x200,
       
    74     OMX_SYMBIAN_VIDEO_AvcSeiSubSequenceInformation = 0x400,
       
    75     OMX_SYMBIAN_VIDEO_AvcSeiSubSequenceLayerCharacteristics = 0x800,
       
    76     OMX_SYMBIAN_VIDEO_AvcSeiSubSequenceCharacteristics = 0x1000,
       
    77     OMX_SYMBIAN_VIDEO_AvcSeiFullFrameFreeze = 0x2000,
       
    78     OMX_SYMBIAN_VIDEO_AvcSeiFullFrameFreezeRelease = 0x4000,
       
    79     OMX_SYMBIAN_VIDEO_AvcSeiFullFrameSnaphot = 0x8000,
       
    80     OMX_SYMBIAN_VIDEO_AvcSeiProgressiveRefinementSegmentStart = 0x10000,
       
    81     OMX_SYMBIAN_VIDEO_AvcSeiProgressiveRefinementSegmentEnd = 0x20000,
       
    82     OMX_SYMBIAN_VIDEO_AvcSeiMotionContstrainedSliceGroup = 0x40000,
       
    83     OMX_SYMBIAN_VIDEO_AvcSeiFilmGrainCharacteristics = 0x80000,
       
    84     OMX_SYMBIAN_VIDEO_AvcSeiDeblockingFilterDispPreference = 0x100000,
       
    85     OMX_SYMBIAN_VIDEO_AvcSeiStereoVideoInformation = 0x200000,
       
    86     OMX_SYMBIAN_VIDEO_AvcSeiMax = 0x7FFFFFFF
       
    87 } OMX_SYMBIAN_VIDEO_AVCSEITYPE;
       
    88 
       
    89 /** SEI messages.
       
    90 
       
    91 The index specified for this structure is retrieved using 
       
    92 OMX_GetExtensionIndex() with the extension string 
       
    93 "OMX.Symbian.Index.Param.Video.AVCSei".
       
    94 */
       
    95 typedef struct OMX_SYMBIAN_VIDEO_PARAM_AVCSEITYPE
       
    96 {
       
    97     OMX_U32 nSize;              /**< Size of the structure in bytes */
       
    98     OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
       
    99     OMX_U32 nPortIndex;         /**< Port that this structure applies to */
       
   100     OMX_BOOL bEnableSEI;        /**< Enable SEI messages */
       
   101     OMX_SYMBIAN_VIDEO_AVCSEITYPE eSEI;  /**< Requested SEI messages. Several messages can be requested. */
       
   102 } OMX_SYMBIAN_VIDEO_PARAM_AVCSEITYPE;
       
   103 
       
   104 /** AVC output order.
       
   105 
       
   106 The index specified for this structure is retrieved using 
       
   107 OMX_GetExtensionIndex() with the extension string 
       
   108 "OMX.Symbian.Index.Param.Video.AVCOutputOrder".
       
   109 */
       
   110 typedef struct OMX_SYMBIAN_VIDEO_PARAM_AVCOUTPUTORDERTYPE {
       
   111     OMX_U32 nSize;
       
   112     OMX_VERSIONTYPE nVersion;
       
   113     OMX_U32 nPortIndex;
       
   114     OMX_BOOL bOutputInDisplayOrder;
       
   115 } OMX_SYMBIAN_VIDEO_PARAM_AVCOUTPUTORDERTYPE;
       
   116 
       
   117 
       
   118 /** Refresh mode.
       
   119 
       
   120 The index specified for this structure is retrieved using 
       
   121 OMX_GetExtensionIndex() with the extension string 
       
   122 "OMX.Symbian.Index.Config.Video.RefreshMode".
       
   123 */
       
   124 typedef struct OMX_SYMBIAN_VIDEO_CONFIG_REFRESHMODETYPE {
       
   125     OMX_U32 nSize;
       
   126     OMX_VERSIONTYPE nVersion;
       
   127     OMX_U32 nPortIndex;
       
   128     OMX_BOOL bRefreshLatestOutputFrame;
       
   129 } OMX_SYMBIAN_VIDEO_CONFIG_REFRESHMODETYPE;
       
   130 
       
   131 /** VC1 profile enum. */
       
   132 typedef enum OMX_SYMBIAN_VIDEO_VC1PROFILETYPE {
       
   133     OMX_SYMBIAN_VIDEO_VC1ProfileSimple,
       
   134     OMX_SYMBIAN_VIDEO_VC1ProfileMain,
       
   135     OMX_SYMBIAN_VIDEO_VC1ProfileAdvanced,
       
   136     OMX_SYMBIAN_VIDEO_VC1ProfileMax = 0x7FFFFFFF
       
   137 } OMX_SYMBIAN_VIDEO_VC1PROFILETYPE;
       
   138 
       
   139 /** VC1 level enum. */
       
   140 typedef enum OMX_SYMBIAN_VIDEO_VC1LEVELTYPE {
       
   141     OMX_SYMBIAN_VIDEO_VC1LevelLow,
       
   142     OMX_SYMBIAN_VIDEO_VC1LevelMedium,
       
   143     OMX_SYMBIAN_VIDEO_VC1LevelHigh,
       
   144     OMX_SYMBIAN_VIDEO_VC1LevelL0,
       
   145     OMX_SYMBIAN_VIDEO_VC1LevelL1,
       
   146     OMX_SYMBIAN_VIDEO_VC1LevelL2,
       
   147     OMX_SYMBIAN_VIDEO_VC1LevelL3,
       
   148     OMX_SYMBIAN_VIDEO_VC1LevelL4,
       
   149     OMX_SYMBIAN_VIDEO_VC1LevelMax = 0x7FFFFFFF
       
   150 } OMX_SYMBIAN_VIDEO_VC1LEVELTYPE;
       
   151 
       
   152 /** VC1 parameters for simple and main profiles. */
       
   153 typedef struct OMX_SYMBIAN_VIDEO_VC1SIMPLEMAINPROFILETYPE {
       
   154     OMX_U32 nHRDBufferSize;
       
   155     OMX_U32 nHRDBufferRate;
       
   156     OMX_BOOL bEnableLoopFilter;
       
   157     OMX_BOOL bEnableMultiRes;
       
   158     OMX_BOOL bEnableFastUVMC;
       
   159     OMX_BOOL bEnableExtendedMV;
       
   160     OMX_U32 bDQuant;
       
   161     OMX_BOOL bEnableVSTransform;
       
   162     OMX_BOOL bEnableOverlap;
       
   163     OMX_BOOL bEnableSyncMarker;
       
   164     OMX_BOOL bEnableRangeRed;
       
   165     OMX_U32 nMaxBFrames;
       
   166     OMX_U32 bQuantizer;
       
   167 } OMX_SYMBIAN_VIDEO_VC1SIMPLEMAINPROFILETYPE;
       
   168 
       
   169 /** VC1 parameters for the advaanced profile. */
       
   170 typedef struct OMX_SYMBIAN_VIDEO_VC1ADVANCEDPROFILETYPE {
       
   171     OMX_U32 nColorDifferenceFormat;
       
   172     OMX_BOOL bPostProcFlag;
       
   173     OMX_U32 nMaxCodedWidth;
       
   174     OMX_U32 nMaxCodedHeight;
       
   175     OMX_BOOL bPullDown;
       
   176     OMX_BOOL bInterlace;
       
   177     OMX_BOOL bTFCounterFlag;
       
   178     OMX_BOOL bProgressiveSegmentedFrame;
       
   179     OMX_BOOL bDisplayExtensionFlag;
       
   180     OMX_U32 nDisplayHorizontalSize;
       
   181     OMX_U32 nDisplayVerticalSize;
       
   182     OMX_BOOL bAspectRatioFlag;
       
   183     OMX_U32 nAspectRatio;
       
   184     OMX_U32 nAspectHorizontalSize;
       
   185     OMX_U32 nAspectVerticalSize;
       
   186     OMX_BOOL bFrameRateFlag;
       
   187     OMX_BOOL bFrameRateIndicator;
       
   188     OMX_U32 nFrameRateNumerator;
       
   189     OMX_U32 nFrameRateDenominator;
       
   190     OMX_U32 nFrameRateExplicit;
       
   191     OMX_BOOL bColorFormatFlag;
       
   192     OMX_U32 nColorPrimaries;
       
   193     OMX_U32 nTransferCharacteristics;
       
   194     OMX_U32 nMatrixCoefficients;
       
   195     OMX_BOOL bHRDIndicatorFlag;
       
   196     OMX_U32 nHRDNumberOfLeakyBuckets;
       
   197     OMX_U32 nHRDRateExponent;
       
   198     OMX_U32 nHRDBufferExponent;
       
   199 } OMX_SYMBIAN_VIDEO_VC1ADVANCEDPROFILETYPE;
       
   200 
       
   201 /** VC1 settings.
       
   202 
       
   203 The index specified for this structure is retrieved using 
       
   204 OMX_GetExtensionIndex() with the extension string 
       
   205 "OMX.Symbian.Index.Config.Video.Vc1".
       
   206 */
       
   207 typedef struct OMX_SYMBIAN_VIDEO_PARAM_VC1TYPE {
       
   208     OMX_U32 nSize;
       
   209     OMX_VERSIONTYPE nVersion;
       
   210     OMX_U32 nPortIndex;
       
   211     OMX_SYMBIAN_VIDEO_VC1PROFILETYPE eProfile;
       
   212     OMX_SYMBIAN_VIDEO_VC1LEVELTYPE eLevel;
       
   213     OMX_U32 bFrmRtQPostProc;
       
   214     OMX_U32 bBitRtQPostProc;
       
   215     OMX_BOOL bEnableFInterpFlag;
       
   216     union {
       
   217         OMX_SYMBIAN_VIDEO_VC1SIMPLEMAINPROFILETYPE simple;
       
   218         OMX_SYMBIAN_VIDEO_VC1ADVANCEDPROFILETYPE advanced;
       
   219     } profile;
       
   220 } OMX_SYMBIAN_VIDEO_PARAM_VC1TYPE;
       
   221 
       
   222 /** VP6 profile enum. */
       
   223 typedef enum OMX_SYMBIAN_VIDEO_VP6PROFILETYPE {
       
   224     OMX_SYMBIAN_VIDEO_VP6ProfileSimple,
       
   225     OMX_SYMBIAN_VIDEO_VP6ProfileAdvanced,
       
   226     OMX_SYMBIAN_VIDEO_VP6ProfileHeightenedSharpness,
       
   227     OMX_SYMBIAN_VIDEO_VP6ProfileMax = 0x7FFFFFFF
       
   228 } OMX_SYMBIAN_VIDEO_VP6PROFILETYPE;
       
   229 
       
   230 /** VP6 level enum. */
       
   231 typedef enum OMX_SYMBIAN_VIDEO_VP6LEVELTYPE {
       
   232     OMX_SYMBIAN_VIDEO_VP6LevelMax = 0x7FFFFFFF
       
   233 } OMX_SYMBIAN_VIDEO_VP6LEVELTYPE;
       
   234 
       
   235 /** VP6 settings.
       
   236 
       
   237 The index specified for this structure is retrieved using 
       
   238 OMX_GetExtensionIndex() with the extension string 
       
   239 "OMX.Symbian.Index.Config.Video.Vc6".
       
   240 */
       
   241 typedef struct OMX_SYMBIAN_VIDEO_PARAM_VP6TYPE {
       
   242     OMX_U32 nSize;
       
   243     OMX_VERSIONTYPE nVersion;
       
   244     OMX_U32 nPortIndex;
       
   245     OMX_SYMBIAN_VIDEO_VP6PROFILETYPE eProfile;
       
   246     OMX_SYMBIAN_VIDEO_VP6LEVELTYPE eLevel;
       
   247 } OMX_SYMBIAN_VIDEO_PARAM_VP6TYPE;
       
   248 
       
   249 #ifdef __cplusplus
       
   250 }
       
   251 #endif /* __cplusplus */
       
   252 
       
   253 #endif /* OMX_Symbian_VideoExt_h */