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 618af3b0d203193b17702bb02f939a791e4258cc65Lajos Molnar/** AVC additional profiles */ 62775a54cbac2a0b6d8df7ddb0800c355020e0e50dLajos Molnartypedef enum OMX_VIDEO_AVCPROFILEEXTTYPE { 638af3b0d203193b17702bb02f939a791e4258cc65Lajos Molnar OMX_VIDEO_AVCProfileConstrainedBaseline = 0x10000, /**< Constrained baseline profile */ 648af3b0d203193b17702bb02f939a791e4258cc65Lajos Molnar OMX_VIDEO_AVCProfileConstrainedHigh = 0x80000, /**< Constrained high profile */ 65775a54cbac2a0b6d8df7ddb0800c355020e0e50dLajos Molnar} OMX_VIDEO_AVCPROFILEEXTTYPE; 668af3b0d203193b17702bb02f939a791e4258cc65Lajos Molnar 67203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** VP8 profiles */ 68203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef enum OMX_VIDEO_VP8PROFILETYPE { 69203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8ProfileMain = 0x01, 70203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8ProfileUnknown = 0x6EFFFFFF, 71203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8ProfileMax = 0x7FFFFFFF 72203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_VIDEO_VP8PROFILETYPE; 73203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 74203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** VP8 levels */ 75203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef enum OMX_VIDEO_VP8LEVELTYPE { 76203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8Level_Version0 = 0x01, 77203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8Level_Version1 = 0x02, 78203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8Level_Version2 = 0x04, 79203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8Level_Version3 = 0x08, 80203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8LevelUnknown = 0x6EFFFFFF, 81203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8LevelMax = 0x7FFFFFFF 82203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_VIDEO_VP8LEVELTYPE; 83203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 84203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** VP8 Param */ 85203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef struct OMX_VIDEO_PARAM_VP8TYPE { 86203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nSize; 87203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VERSIONTYPE nVersion; 88203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nPortIndex; 89203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8PROFILETYPE eProfile; 90203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VIDEO_VP8LEVELTYPE eLevel; 91203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nDCTPartitions; 92203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bErrorResilientMode; 93203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_VIDEO_PARAM_VP8TYPE; 94203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 95203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** Structure for configuring VP8 reference frames */ 96203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef struct OMX_VIDEO_VP8REFERENCEFRAMETYPE { 97203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nSize; 98203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VERSIONTYPE nVersion; 99203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nPortIndex; 100203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bPreviousFrameRefresh; 101203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bGoldenFrameRefresh; 102203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bAlternateFrameRefresh; 103203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bUsePreviousFrame; 104203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bUseGoldenFrame; 105203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bUseAlternateFrame; 106203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_VIDEO_VP8REFERENCEFRAMETYPE; 107203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 108203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** Structure for querying VP8 reference frame type */ 109203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef struct OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE { 110203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nSize; 111203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_VERSIONTYPE nVersion; 112203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_U32 nPortIndex; 113203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bIsIntraFrame; 114203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin OMX_BOOL bIsGoldenOrAlternateFrame; 115203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE; 116203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 1175b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev/** Maximum number of VP8 temporal layers */ 1185b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev#define OMX_VIDEO_ANDROID_MAXVP8TEMPORALLAYERS 3 1195b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev 1205b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev/** VP8 temporal layer patterns */ 1215b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznevtypedef enum OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE { 1225b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_VIDEO_VPXTemporalLayerPatternNone = 0, 1235b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_VIDEO_VPXTemporalLayerPatternWebRTC = 1, 1245b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_VIDEO_VPXTemporalLayerPatternMax = 0x7FFFFFFF 1255b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev} OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE; 1265b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev 1275b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev/** 128c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian * Android specific VP8/VP9 encoder params 1295b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * 1305b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * STRUCT MEMBERS: 1315b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nSize : Size of the structure in bytes 1325b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nVersion : OMX specification version information 1335b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nPortIndex : Port that this structure applies to 1345b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nKeyFrameInterval : Key frame interval in frames 1355b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * eTemporalPattern : Type of temporal layer pattern 1365b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nTemporalLayerCount : Number of temporal coding layers 1375b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nTemporalLayerBitrateRatio : Bitrate ratio allocation between temporal 1385b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * streams in percentage 1395b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nMinQuantizer : Minimum (best quality) quantizer 1405b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev * nMaxQuantizer : Maximum (worst quality) quantizer 1415b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev */ 1425b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznevtypedef struct OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE { 1435b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nSize; 1445b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_VERSIONTYPE nVersion; 1455b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nPortIndex; 1460ff672d45064b38d30440d35003b875d83804c85Lajos Molnar OMX_U32 nKeyFrameInterval; // distance between consecutive key_frames (including one 1470ff672d45064b38d30440d35003b875d83804c85Lajos Molnar // of the key_frames). 0 means interval is unspecified and 1480ff672d45064b38d30440d35003b875d83804c85Lajos Molnar // can be freely chosen by the codec. 1 means a stream of 1490ff672d45064b38d30440d35003b875d83804c85Lajos Molnar // only key_frames. 1500ff672d45064b38d30440d35003b875d83804c85Lajos Molnar 1515b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE eTemporalPattern; 1525b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nTemporalLayerCount; 1535b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nTemporalLayerBitrateRatio[OMX_VIDEO_ANDROID_MAXVP8TEMPORALLAYERS]; 1545b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nMinQuantizer; 1555b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev OMX_U32 nMaxQuantizer; 15664f5ec51ad3a9aea5a849d51139e605815b42d75Lajos Molnar} OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE; 1575b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev 158c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian/** VP9 profiles */ 159c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramaniantypedef enum OMX_VIDEO_VP9PROFILETYPE { 1607788a3a38b68d9401577690389a1baf8a9e8ad57Hangyu Kuang OMX_VIDEO_VP9Profile0 = 0x1, 1617788a3a38b68d9401577690389a1baf8a9e8ad57Hangyu Kuang OMX_VIDEO_VP9Profile1 = 0x2, 1627788a3a38b68d9401577690389a1baf8a9e8ad57Hangyu Kuang OMX_VIDEO_VP9Profile2 = 0x4, 1637788a3a38b68d9401577690389a1baf8a9e8ad57Hangyu Kuang OMX_VIDEO_VP9Profile3 = 0x8, 1647788a3a38b68d9401577690389a1baf8a9e8ad57Hangyu Kuang // HDR profiles also support passing HDR metadata 1657788a3a38b68d9401577690389a1baf8a9e8ad57Hangyu Kuang OMX_VIDEO_VP9Profile2HDR = 0x1000, 1667788a3a38b68d9401577690389a1baf8a9e8ad57Hangyu Kuang OMX_VIDEO_VP9Profile3HDR = 0x2000, 167c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_VIDEO_VP9ProfileUnknown = 0x6EFFFFFF, 168c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_VIDEO_VP9ProfileMax = 0x7FFFFFFF 169c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian} OMX_VIDEO_VP9PROFILETYPE; 170c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian 171c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian/** VP9 levels */ 172c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramaniantypedef enum OMX_VIDEO_VP9LEVELTYPE { 1731d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level1 = 0x1, 1741d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level11 = 0x2, 1751d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level2 = 0x4, 1761d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level21 = 0x8, 1771d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level3 = 0x10, 1781d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level31 = 0x20, 1791d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level4 = 0x40, 1801d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level41 = 0x80, 1811d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level5 = 0x100, 1821d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level51 = 0x200, 1831d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level52 = 0x400, 1841d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level6 = 0x800, 1851d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level61 = 0x1000, 1861d9cbef56d176514ba546dff6d38dd395217b62bLajos Molnar OMX_VIDEO_VP9Level62 = 0x2000, 187c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_VIDEO_VP9LevelUnknown = 0x6EFFFFFF, 188c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_VIDEO_VP9LevelMax = 0x7FFFFFFF 189c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian} OMX_VIDEO_VP9LEVELTYPE; 190c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian 191c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian/** 192c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian* VP9 Parameters. 193c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian* Encoder specific parameters (decoders should ignore these fields): 194c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian* - bErrorResilientMode 195c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian* - nTileRows 196c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian* - nTileColumns 197c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian* - bEnableFrameParallelDecoding 198c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian*/ 199c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramaniantypedef struct OMX_VIDEO_PARAM_VP9TYPE { 200c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_U32 nSize; 201c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_VERSIONTYPE nVersion; 202c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_U32 nPortIndex; 203c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_VIDEO_VP9PROFILETYPE eProfile; 204c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_VIDEO_VP9LEVELTYPE eLevel; 205c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_BOOL bErrorResilientMode; 206c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_U32 nTileRows; 207c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_U32 nTileColumns; 208c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian OMX_BOOL bEnableFrameParallelDecoding; 209c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian} OMX_VIDEO_PARAM_VP9TYPE; 210c193aee9fcb6bbf733dfb01dcb93fcaa481ae91eVignesh Venkatasubramanian 211184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad/** HEVC Profile enum type */ 212184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachadtypedef enum OMX_VIDEO_HEVCPROFILETYPE { 2130471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu OMX_VIDEO_HEVCProfileUnknown = 0x0, 2140471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu OMX_VIDEO_HEVCProfileMain = 0x1, 2150471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu OMX_VIDEO_HEVCProfileMain10 = 0x2, 216bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang OMX_VIDEO_HEVCProfileMainStill = 0x4, 2170471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu // Main10 profile with HDR SEI support. 2180471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu OMX_VIDEO_HEVCProfileMain10HDR10 = 0x1000, 2190471d0a3cfeb83398e861ec3ccdcd40ccee3a0daRonghua Wu OMX_VIDEO_HEVCProfileMax = 0x7FFFFFFF 220184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad} OMX_VIDEO_HEVCPROFILETYPE; 221184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad 222184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad/** HEVC Level enum type */ 223184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachadtypedef enum OMX_VIDEO_HEVCLEVELTYPE { 224184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCLevelUnknown = 0x0, 225184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel1 = 0x1, 226184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel1 = 0x2, 227184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel2 = 0x4, 228184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel2 = 0x8, 229184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel21 = 0x10, 230184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel21 = 0x20, 231184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel3 = 0x40, 232184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel3 = 0x80, 233184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel31 = 0x100, 234184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel31 = 0x200, 235184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel4 = 0x400, 236184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel4 = 0x800, 237184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel41 = 0x1000, 238184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel41 = 0x2000, 239184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel5 = 0x4000, 240184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel5 = 0x8000, 241184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel51 = 0x10000, 242184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel51 = 0x20000, 243184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel52 = 0x40000, 244184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel52 = 0x80000, 245184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel6 = 0x100000, 246184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel6 = 0x200000, 247184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel61 = 0x400000, 248184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel61 = 0x800000, 249184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCMainTierLevel62 = 0x1000000, 250184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTierLevel62 = 0x2000000, 251184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCHighTiermax = 0x7FFFFFFF 252184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad} OMX_VIDEO_HEVCLEVELTYPE; 253184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad 254639f71fd8b9870f91feeb091b03a0b368e4641a3Wonsik Kim/** Structure for controlling HEVC video encoding */ 255184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachadtypedef struct OMX_VIDEO_PARAM_HEVCTYPE { 256184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_U32 nSize; 257184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VERSIONTYPE nVersion; 258184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_U32 nPortIndex; 259184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCPROFILETYPE eProfile; 260184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VIDEO_HEVCLEVELTYPE eLevel; 2610ff672d45064b38d30440d35003b875d83804c85Lajos Molnar OMX_U32 nKeyFrameInterval; // distance between consecutive I-frames (including one 2620ff672d45064b38d30440d35003b875d83804c85Lajos Molnar // of the I frames). 0 means interval is unspecified and 2630ff672d45064b38d30440d35003b875d83804c85Lajos Molnar // can be freely chosen by the codec. 1 means a stream of 2640ff672d45064b38d30440d35003b875d83804c85Lajos Molnar // only I frames. 265184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad} OMX_VIDEO_PARAM_HEVCTYPE; 266184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad 267184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad/** Structure to define if dependent slice segments should be used */ 268184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachadtypedef struct OMX_VIDEO_SLICESEGMENTSTYPE { 269184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_U32 nSize; 270184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_VERSIONTYPE nVersion; 271184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_U32 nPortIndex; 272184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_BOOL bDepedentSegments; 273184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad OMX_BOOL bEnableLoopFilterAcrossSlices; 274184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad} OMX_VIDEO_SLICESEGMENTSTYPE; 275203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 276bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar/** Structure to return timestamps of rendered output frames as well as EOS 277bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar * for tunneled components. 278bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar */ 279e21d7f500f034c61da605c80f9852bca5beb35f6Lajos Molnartypedef struct OMX_VIDEO_RENDEREVENTTYPE { 280e21d7f500f034c61da605c80f9852bca5beb35f6Lajos Molnar OMX_S64 nMediaTimeUs; // timestamp of rendered video frame 281e21d7f500f034c61da605c80f9852bca5beb35f6Lajos Molnar OMX_S64 nSystemTimeNs; // system monotonic time at the time frame was rendered 282bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar // Use INT64_MAX for nMediaTimeUs to signal that the EOS 283bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar // has been reached. In this case, nSystemTimeNs MUST be 284bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar // the system time when the last frame was rendered. 285bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar // This MUST be done in addition to returning (and 286bcaa8d5a6c059d22d2fcf32ffab1a99f3b64c756Lajos Molnar // following) the render information for the last frame. 287e21d7f500f034c61da605c80f9852bca5beb35f6Lajos Molnar} OMX_VIDEO_RENDEREVENTTYPE; 288e21d7f500f034c61da605c80f9852bca5beb35f6Lajos Molnar 289c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu/** Dolby Vision Profile enum type */ 290c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wutypedef enum OMX_VIDEO_DOLBYVISIONPROFILETYPE { 291c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionProfileUnknown = 0x0, 292991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvavPer = 0x1, 293991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvavPen = 0x2, 294991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvheDer = 0x4, 295991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvheDen = 0x8, 296991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvheDtr = 0x10, 297991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvheStn = 0x20, 298991790301f69246c1ebc787cc17aedf5eb146678Ronghua Wu OMX_VIDEO_DolbyVisionProfileDvheDth = 0x40, 2996c02314b720e31dc071df5ae2429fa04d433c0fcHangyu Kuang OMX_VIDEO_DolbyVisionProfileDvheDtb = 0x80, 300758f2d8ad33be1c386baabcc28871f4bc64bf132Previr Rangroo OMX_VIDEO_DolbyVisionProfileDvheSt = 0x100, 301758f2d8ad33be1c386baabcc28871f4bc64bf132Previr Rangroo OMX_VIDEO_DolbyVisionProfileDvavSe = 0x200, 302c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionProfileMax = 0x7FFFFFFF 303c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu} OMX_VIDEO_DOLBYVISIONPROFILETYPE; 304c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu 305c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu/** Dolby Vision Level enum type */ 306c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wutypedef enum OMX_VIDEO_DOLBYVISIONLEVELTYPE { 307c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelUnknown = 0x0, 308c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelHd24 = 0x1, 309c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelHd30 = 0x2, 310c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelFhd24 = 0x4, 311c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelFhd30 = 0x8, 312c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelFhd60 = 0x10, 313c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelUhd24 = 0x20, 314c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelUhd30 = 0x40, 315c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelUhd48 = 0x80, 316c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelUhd60 = 0x100, 317c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu OMX_VIDEO_DolbyVisionLevelmax = 0x7FFFFFFF 318c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu} OMX_VIDEO_DOLBYVISIONLEVELTYPE; 319c92c19e2b00b29913868bd1d25379b82a908ff94Ronghua Wu 320dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang/** 321dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * Structure for configuring video compression intra refresh period 322dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * 323dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * STRUCT MEMBERS: 324dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * nSize : Size of the structure in bytes 325dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * nVersion : OMX specification version information 326dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * nPortIndex : Port that this structure applies to 327dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang * nRefreshPeriod : Intra refreh period in frames. Value 0 means disable intra refresh 3283717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan */ 329dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuangtypedef struct OMX_VIDEO_CONFIG_ANDROID_INTRAREFRESHTYPE { 330dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang OMX_U32 nSize; 331dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang OMX_VERSIONTYPE nVersion; 332dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang OMX_U32 nPortIndex; 33370f744b8d4af87dfccc5bc43b5ba47357bc7dbbbHangyu Kuang OMX_U32 nRefreshPeriod; 334dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang} OMX_VIDEO_CONFIG_ANDROID_INTRAREFRESHTYPE; 335dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang 3363717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan/** Maximum number of temporal layers supported by AVC/HEVC */ 3373717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan#define OMX_VIDEO_ANDROID_MAXTEMPORALLAYERS 8 3383717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan 3393717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan/** temporal layer patterns */ 3403717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavantypedef enum OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE { 3413717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_VIDEO_AndroidTemporalLayeringPatternNone = 0, 3423717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan // pattern as defined by WebRTC 3433717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_VIDEO_AndroidTemporalLayeringPatternWebRTC = 1 << 0, 3443717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan // pattern where frames in any layer other than the base layer only depend on at most the very 3453717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan // last frame from each preceding layer (other than the base layer.) 3463717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_VIDEO_AndroidTemporalLayeringPatternAndroid = 1 << 1, 3473717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan} OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE; 3483717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan 3493717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan/** 3503717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * Android specific param for configuration of temporal layering. 3513717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * Android only supports temporal layering where successive layers each double the 3523717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * previous layer's framerate. 3533717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * NOTE: Reading this parameter at run-time SHALL return actual run-time values. 3543717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * 3553717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nSize : Size of the structure in bytes 3563717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nVersion : OMX specification version information 3573717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nPortIndex : Port that this structure applies to (output port for encoders) 3583717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * eSupportedPatterns : A bitmask of supported layering patterns 3593717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nLayerCountMax : Max number of temporal coding layers supported 3603717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * by the encoder (must be at least 1, 1 meaning temporal layering 3613717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * is NOT supported) 3623717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nBLayerCountMax : Max number of layers that can contain B frames 3633717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * (0) to (nLayerCountMax - 1) 3643717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * ePattern : Layering pattern. 3653717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nPLayerCountActual : Number of temporal layers to be coded with non-B frames, 3663717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * starting from and including the base-layer. 3673717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * (1 to nLayerCountMax - nBLayerCountActual) 3683717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * If nPLayerCountActual is 1 and nBLayerCountActual is 0, temporal 3693717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * layering is disabled. Otherwise, it is enabled. 3703717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nBLayerCountActual : Number of temporal layers to be coded with B frames, 3713717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * starting after non-B layers. 3723717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * (0 to nBLayerCountMax) 3733717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * bBitrateRatiosSpecified : Flag to indicate if layer-wise bitrate 3743717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * distribution is specified. 3753717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nBitrateRatios : Bitrate ratio (100 based) per layer (index 0 is base layer). 3763717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * Honored if bBitrateRatiosSpecified is set. 3773717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * i.e for 4 layers with desired distribution (25% 25% 25% 25%), 3783717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nBitrateRatio = {25, 50, 75, 100, ... } 3793717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * Values in indices not less than 'the actual number of layers 3803717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * minus 1' MAY be ignored and assumed to be 100. 3813717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan */ 3823717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavantypedef struct OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE { 3833717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nSize; 3843717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_VERSIONTYPE nVersion; 3853717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nPortIndex; 3863717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE eSupportedPatterns; 3873717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nLayerCountMax; 3883717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nBLayerCountMax; 3893717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE ePattern; 3903717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nPLayerCountActual; 3913717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nBLayerCountActual; 3923717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_BOOL bBitrateRatiosSpecified; 3933717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nBitrateRatios[OMX_VIDEO_ANDROID_MAXTEMPORALLAYERS]; 3943717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan} OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE; 3953717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan 3963717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan/** 3973717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * Android specific config for changing the temporal-layer count or 3983717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * bitrate-distribution at run-time. 3993717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * 4003717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nSize : Size of the structure in bytes 4013717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nVersion : OMX specification version information 4023717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nPortIndex : Port that this structure applies to (output port for encoders) 4033717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * ePattern : Layering pattern. 4043717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nPLayerCountActual : Number of temporal layers to be coded with non-B frames. 4053717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * (same OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE limits apply.) 4063717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nBLayerCountActual : Number of temporal layers to be coded with B frames. 4073717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * (same OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE limits apply.) 4083717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * bBitrateRatiosSpecified : Flag to indicate if layer-wise bitrate 4093717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * distribution is specified. 4103717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * nBitrateRatios : Bitrate ratio (100 based, Q16 values) per layer (0 is base layer). 4113717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * Honored if bBitrateRatiosSpecified is set. 4123717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan * (same OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE limits apply.) 4133717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan */ 4143717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavantypedef struct OMX_VIDEO_CONFIG_ANDROID_TEMPORALLAYERINGTYPE { 4153717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nSize; 4163717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_VERSIONTYPE nVersion; 4173717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nPortIndex; 4183717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE ePattern; 4193717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nPLayerCountActual; 4203717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nBLayerCountActual; 4213717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_BOOL bBitrateRatiosSpecified; 4223717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan OMX_U32 nBitrateRatios[OMX_VIDEO_ANDROID_MAXTEMPORALLAYERS]; 4233717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan} OMX_VIDEO_CONFIG_ANDROID_TEMPORALLAYERINGTYPE; 4243717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan 425bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang/** 426bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * Android specific param for specifying image grid layout information for image encoding 427bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * use cases, corresponding to index OMX_IndexParamVideoAndroidImageGrid. 428bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * 429bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * OMX_VIDEO_CodingImageHEIC encoders must handle this param type. When this param is set 43070f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * on the component with bEnabled set to true, nTileWidth, nTileHeight, nGridRows, 43170f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * nGridCols indicates the desired grid config by the client. The component can use this 43270f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * as a heuristic, and is free to choose any suitable grid configs. The client shall 43370f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * always get the actual from the component after the param is set. Encoder will receive 43470f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * each input image in full, and shall encode it into tiles in row-major, top-row first, 43570f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * left-to-right order, and send each encoded tile in a separate output buffer. All output 43670f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * buffers for the same input buffer shall carry the same timestamp as the input buffer. 43770f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * If the input buffer is marked EOS, the EOS should only appear on the last output buffer 43870f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * for that input buffer. 439bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * 440bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * OMX_VIDEO_CodingHEVC encoders might also receive this param when it's used for image 441bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * encoding, although in this case the param only serves as a hint. The encoder will 442bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * receive the input image tiles in row-major, top-row first, left-to-right order. 443bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * The grid config can be used for quality control, or optimizations. 444bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * 445bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * If this param is not set, the component shall assume that grid option is disabled. 446bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * 447bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * nSize : Size of the structure in bytes 448bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * nVersion : OMX specification version information 449bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * nPortIndex : Port that this structure applies to (output port for encoders) 45070f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * bEnabled : Whether grid is enabled. If true, the other parameters 45170f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * specifies the grid config; otherwise they shall be ignored. 45270f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * nTileWidth : Width of each tile. 45370f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang * nTileHeight : Height of each tile. 454bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * nGridRows : Number of rows in the grid. 455bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang * nGridCols : Number of cols in the grid. 456bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang */ 457bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhangtypedef struct OMX_VIDEO_PARAM_ANDROID_IMAGEGRIDTYPE { 458bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang OMX_U32 nSize; 459bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang OMX_VERSIONTYPE nVersion; 460bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang OMX_U32 nPortIndex; 461bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang OMX_BOOL bEnabled; 46270f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang OMX_U32 nTileWidth; 46370f999f59c092ec8bb3a0b5974bb827641d587abChong Zhang OMX_U32 nTileHeight; 464bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang OMX_U32 nGridRows; 465bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang OMX_U32 nGridCols; 466bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang} OMX_VIDEO_PARAM_ANDROID_IMAGEGRIDTYPE; 467bccb6ec418e4cb3e716aa268919f21b6f55f48a5Chong Zhang 468203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#ifdef __cplusplus 469203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} 470203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#endif /* __cplusplus */ 471203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin 472203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#endif /* OMX_VideoExt_h */ 473203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/* File EOF */ 474