1203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/* 2203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * Copyright (c) 2010 The Khronos Group Inc. 3203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * 4203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * Permission is hereby granted, free of charge, to any person obtaining 5203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * a copy of this software and associated documentation files (the 6203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * "Software"), to deal in the Software without restriction, including 7203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * without limitation the rights to use, copy, modify, merge, publish, 8203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * distribute, sublicense, and/or sell copies of the Software, and to 9203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * permit persons to whom the Software is furnished to do so, subject 10203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * to the following conditions: 11203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * The above copyright notice and this permission notice shall be included 12203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * in all copies or substantial portions of the Software. 13203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * 14203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 18203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 19203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 20203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * 22203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin */ 23203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 24203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** OMX_VideoExt.h - OpenMax IL version 1.1.2 25203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * The OMX_VideoExt header file contains extensions to the 26203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * definitions used by both the application and the component to 27203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * access video items. 28203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin */ 29203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 30203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#ifndef OMX_VideoExt_h 31203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#define OMX_VideoExt_h 32203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 33203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#ifdef __cplusplus 34203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekinextern "C" { 35203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#endif /* __cplusplus */ 36203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 37203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/* Each OMX header shall include all required header files to allow the 38203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * header to compile without errors. The includes below are required 39203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * for this header file to compile successfully 40203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin */ 41203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#include <OMX_Core.h> 42203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 43203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** NALU Formats */ 44203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef enum OMX_NALUFORMATSTYPE { 45203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_NaluFormatStartCodes = 1, 46203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_NaluFormatOneNaluPerBuffer = 2, 47203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_NaluFormatOneByteInterleaveLength = 4, 48203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_NaluFormatTwoByteInterleaveLength = 8, 49203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_NaluFormatFourByteInterleaveLength = 16, 50203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_NaluFormatCodingMax = 0x7FFFFFFF 51203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_NALUFORMATSTYPE; 52203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 53203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** NAL Stream Format */ 54203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef struct OMX_NALSTREAMFORMATTYPE{ 55203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nSize; 56203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VERSIONTYPE nVersion; 57203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nPortIndex; 58203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_NALUFORMATSTYPE eNaluFormat; 59203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_NALSTREAMFORMATTYPE; 60203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 61203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** VP8 profiles */ 62203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef enum OMX_VIDEO_VP8PROFILETYPE { 63203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8ProfileMain = 0x01, 64203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8ProfileUnknown = 0x6EFFFFFF, 65203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8ProfileMax = 0x7FFFFFFF 66203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_VIDEO_VP8PROFILETYPE; 67203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 68203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** VP8 levels */ 69203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef enum OMX_VIDEO_VP8LEVELTYPE { 70203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8Level_Version0 = 0x01, 71203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8Level_Version1 = 0x02, 72203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8Level_Version2 = 0x04, 73203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8Level_Version3 = 0x08, 74203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8LevelUnknown = 0x6EFFFFFF, 75203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8LevelMax = 0x7FFFFFFF 76203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_VIDEO_VP8LEVELTYPE; 77203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 78cc505382e9da4f21eff981aa203f66e24f46a5f9Ronghua Wu/** VP9 profiles */ 79cc505382e9da4f21eff981aa203f66e24f46a5f9Ronghua Wutypedef enum OMX_VIDEO_VP9PROFILETYPE { 80d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Profile0 = 0x1, 81d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Profile1 = 0x2, 82d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Profile2 = 0x4, 83d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Profile3 = 0x8, 8419c6a8340c45343f2171d4ed0d51cab6d9d01a15Hangyu Kuang // HDR profiles also support passing HDR metadata 85d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Profile2HDR = 0x1000, 86d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Profile3HDR = 0x2000, 87cc505382e9da4f21eff981aa203f66e24f46a5f9Ronghua Wu OMX_VIDEO_VP9ProfileUnknown = 0x6EFFFFFF, 88d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9ProfileMax = 0x7FFFFFFF 89cc505382e9da4f21eff981aa203f66e24f46a5f9Ronghua Wu} OMX_VIDEO_VP9PROFILETYPE; 90cc505382e9da4f21eff981aa203f66e24f46a5f9Ronghua Wu 91cc505382e9da4f21eff981aa203f66e24f46a5f9Ronghua Wu/** VP9 levels */ 92cc505382e9da4f21eff981aa203f66e24f46a5f9Ronghua Wutypedef enum OMX_VIDEO_VP9LEVELTYPE { 93d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level1 = 0x1, 94d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level11 = 0x2, 95d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level2 = 0x4, 96d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level21 = 0x8, 97d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level3 = 0x10, 98d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level31 = 0x20, 99d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level4 = 0x40, 100d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level41 = 0x80, 101d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level5 = 0x100, 102d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level51 = 0x200, 103d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level52 = 0x400, 104d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level6 = 0x800, 105d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level61 = 0x1000, 106d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9Level62 = 0x2000, 107cc505382e9da4f21eff981aa203f66e24f46a5f9Ronghua Wu OMX_VIDEO_VP9LevelUnknown = 0x6EFFFFFF, 108d15a35bcddc22e90b08bdd35c81827024cc2c74aHangyu Kuang OMX_VIDEO_VP9LevelMax = 0x7FFFFFFF 109cc505382e9da4f21eff981aa203f66e24f46a5f9Ronghua Wu} OMX_VIDEO_VP9LEVELTYPE; 110cc505382e9da4f21eff981aa203f66e24f46a5f9Ronghua Wu 111203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** VP8 Param */ 112203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef struct OMX_VIDEO_PARAM_VP8TYPE { 113203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nSize; 114203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VERSIONTYPE nVersion; 115203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nPortIndex; 116203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8PROFILETYPE eProfile; 117203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8LEVELTYPE eLevel; 118203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nDCTPartitions; 119203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bErrorResilientMode; 120203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_VIDEO_PARAM_VP8TYPE; 121203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 122203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** Structure for configuring VP8 reference frames */ 123203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef struct OMX_VIDEO_VP8REFERENCEFRAMETYPE { 124203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nSize; 125203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VERSIONTYPE nVersion; 126203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nPortIndex; 127203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bPreviousFrameRefresh; 128203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bGoldenFrameRefresh; 129203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bAlternateFrameRefresh; 130203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bUsePreviousFrame; 131203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bUseGoldenFrame; 132203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bUseAlternateFrame; 133203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_VIDEO_VP8REFERENCEFRAMETYPE; 134203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 135203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** Structure for querying VP8 reference frame type */ 136203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef struct OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE { 137203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nSize; 138203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VERSIONTYPE nVersion; 139203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nPortIndex; 140203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bIsIntraFrame; 141203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bIsGoldenOrAlternateFrame; 142203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE; 143203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 1445b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev/** Maximum number of VP8 temporal layers */ 1455b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev#define OMX_VIDEO_ANDROID_MAXVP8TEMPORALLAYERS 3 1465b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev 1475b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev/** VP8 temporal layer patterns */ 1485b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznevtypedef enum OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE { 1495b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_VIDEO_VPXTemporalLayerPatternNone = 0, 1505b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_VIDEO_VPXTemporalLayerPatternWebRTC = 1, 1515b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_VIDEO_VPXTemporalLayerPatternMax = 0x7FFFFFFF 1525b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev} OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE; 1535b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev 1545b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev/** 1555b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * Android specific VP8 encoder params 1565b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * 1575b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * STRUCT MEMBERS: 1585b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nSize : Size of the structure in bytes 1595b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nVersion : OMX specification version information 1605b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nPortIndex : Port that this structure applies to 1615b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nKeyFrameInterval : Key frame interval in frames 1625b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * eTemporalPattern : Type of temporal layer pattern 1635b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nTemporalLayerCount : Number of temporal coding layers 1645b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nTemporalLayerBitrateRatio : Bitrate ratio allocation between temporal 1655b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * streams in percentage 1665b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nMinQuantizer : Minimum (best quality) quantizer 1675b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nMaxQuantizer : Maximum (worst quality) quantizer 1685b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev */ 1695b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznevtypedef struct OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE { 1705b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nSize; 1715b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_VERSIONTYPE nVersion; 1725b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nPortIndex; 1735b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nKeyFrameInterval; 1745b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE eTemporalPattern; 1755b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nTemporalLayerCount; 1765b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nTemporalLayerBitrateRatio[OMX_VIDEO_ANDROID_MAXVP8TEMPORALLAYERS]; 1775b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nMinQuantizer; 1785b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nMaxQuantizer; 17964f5ec51ad3a9aea5a849d51139e605815b42d75Lajos Molnar} OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE; 1805b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev 181184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad/** HEVC Profile enum type */ 182184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachadtypedef enum OMX_VIDEO_HEVCPROFILETYPE { 1830471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu OMX_VIDEO_HEVCProfileUnknown = 0x0, 1840471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu OMX_VIDEO_HEVCProfileMain = 0x1, 1850471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu OMX_VIDEO_HEVCProfileMain10 = 0x2, 1860471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu // Main10 profile with HDR SEI support. 1870471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu OMX_VIDEO_HEVCProfileMain10HDR10 = 0x1000, 1880471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu OMX_VIDEO_HEVCProfileMax = 0x7FFFFFFF 189184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad} OMX_VIDEO_HEVCPROFILETYPE; 190184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad 191184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad/** HEVC Level enum type */ 192184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachadtypedef enum OMX_VIDEO_HEVCLEVELTYPE { 193184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCLevelUnknown = 0x0, 194184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel1 = 0x1, 195184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel1 = 0x2, 196184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel2 = 0x4, 197184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel2 = 0x8, 198184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel21 = 0x10, 199184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel21 = 0x20, 200184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel3 = 0x40, 201184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel3 = 0x80, 202184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel31 = 0x100, 203184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel31 = 0x200, 204184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel4 = 0x400, 205184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel4 = 0x800, 206184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel41 = 0x1000, 207184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel41 = 0x2000, 208184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel5 = 0x4000, 209184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel5 = 0x8000, 210184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel51 = 0x10000, 211184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel51 = 0x20000, 212184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel52 = 0x40000, 213184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel52 = 0x80000, 214184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel6 = 0x100000, 215184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel6 = 0x200000, 216184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel61 = 0x400000, 217184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel61 = 0x800000, 218184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel62 = 0x1000000, 219184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel62 = 0x2000000, 220184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTiermax = 0x7FFFFFFF 221184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad} OMX_VIDEO_HEVCLEVELTYPE; 222184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad 223639f71fd8b9870f91feeb091b03a0b368e4641a3Wonsik Kim/** Structure for controlling HEVC video encoding */ 224184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachadtypedef struct OMX_VIDEO_PARAM_HEVCTYPE { 225184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_U32 nSize; 226184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VERSIONTYPE nVersion; 227184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_U32 nPortIndex; 228184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCPROFILETYPE eProfile; 229184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCLEVELTYPE eLevel; 230639f71fd8b9870f91feeb091b03a0b368e4641a3Wonsik Kim OMX_U32 nKeyFrameInterval; 231184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad} OMX_VIDEO_PARAM_HEVCTYPE; 232184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad 233184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad/** Structure to define if dependent slice segments should be used */ 234184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachadtypedef struct OMX_VIDEO_SLICESEGMENTSTYPE { 235184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_U32 nSize; 236184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VERSIONTYPE nVersion; 237184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_U32 nPortIndex; 238184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_BOOL bDepedentSegments; 239184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_BOOL bEnableLoopFilterAcrossSlices; 240184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad} OMX_VIDEO_SLICESEGMENTSTYPE; 241203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 242bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar/** Structure to return timestamps of rendered output frames as well as EOS 243bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar * for tunneled components. 244bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar */ 245e21d7f500f034c61da605c80f9852bca5beb35f6Lajos Molnartypedef struct OMX_VIDEO_RENDEREVENTTYPE { 246e21d7f500f034c61da605c80f9852bca5beb35f6Lajos Molnar OMX_S64 nMediaTimeUs; // timestamp of rendered video frame 247e21d7f500f034c61da605c80f9852bca5beb35f6Lajos Molnar OMX_S64 nSystemTimeNs; // system monotonic time at the time frame was rendered 248bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar // Use INT64_MAX for nMediaTimeUs to signal that the EOS 249bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar // has been reached. In this case, nSystemTimeNs MUST be 250bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar // the system time when the last frame was rendered. 251bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar // This MUST be done in addition to returning (and 252bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar // following) the render information for the last frame. 253e21d7f500f034c61da605c80f9852bca5beb35f6Lajos Molnar} OMX_VIDEO_RENDEREVENTTYPE; 254e21d7f500f034c61da605c80f9852bca5beb35f6Lajos Molnar 255c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu/** Dolby Vision Profile enum type */ 256c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wutypedef enum OMX_VIDEO_DOLBYVISIONPROFILETYPE { 257c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionProfileUnknown = 0x0, 258991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvavPer = 0x1, 259991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvavPen = 0x2, 260991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvheDer = 0x4, 261991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvheDen = 0x8, 262991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvheDtr = 0x10, 263991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvheStn = 0x20, 264991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvheDth = 0x40, 2656c02314b720e31dc071df5ae2429fa04d433c0fcHangyu Kuang OMX_VIDEO_DolbyVisionProfileDvheDtb = 0x80, 266c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionProfileMax = 0x7FFFFFFF 267c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu} OMX_VIDEO_DOLBYVISIONPROFILETYPE; 268c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu 269c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu/** Dolby Vision Level enum type */ 270c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wutypedef enum OMX_VIDEO_DOLBYVISIONLEVELTYPE { 271c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelUnknown = 0x0, 272c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelHd24 = 0x1, 273c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelHd30 = 0x2, 274c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelFhd24 = 0x4, 275c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelFhd30 = 0x8, 276c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelFhd60 = 0x10, 277c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelUhd24 = 0x20, 278c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelUhd30 = 0x40, 279c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelUhd48 = 0x80, 280c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelUhd60 = 0x100, 281c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelmax = 0x7FFFFFFF 282c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu} OMX_VIDEO_DOLBYVISIONLEVELTYPE; 283c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu 284dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang/** 285dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * Structure for configuring video compression intra refresh period 286dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * 287dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * STRUCT MEMBERS: 288dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * nSize : Size of the structure in bytes 289dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * nVersion : OMX specification version information 290dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * nPortIndex : Port that this structure applies to 291dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * nRefreshPeriod : Intra refreh period in frames. Value 0 means disable intra refresh 292dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang*/ 293dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuangtypedef struct OMX_VIDEO_CONFIG_ANDROID_INTRAREFRESHTYPE { 294dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang OMX_U32 nSize; 295dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang OMX_VERSIONTYPE nVersion; 296dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang OMX_U32 nPortIndex; 29770f744b8d4af87dfccc5bc43b5ba47357bc7dbbbHangyu Kuang OMX_U32 nRefreshPeriod; 298dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang} OMX_VIDEO_CONFIG_ANDROID_INTRAREFRESHTYPE; 299dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang 300203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#ifdef __cplusplus 301203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} 302203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#endif /* __cplusplus */ 303203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 304203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#endif /* OMX_VideoExt_h */ 305203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/* File EOF */ 306