OMX_VideoExt.h revision 203f89a75a28222b1d9940227d266a3bdd7f99b9
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/** Enum for standard video codingtype extensions */
62203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef enum OMX_VIDEO_CODINGEXTTYPE {
63203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_VIDEO_ExtCodingUnused = OMX_VIDEO_CodingKhronosExtensions,
64203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_VIDEO_CodingVP8,        /**< VP8/WebM */
65203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_VIDEO_CODINGEXTTYPE;
66203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
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
117203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
118203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#ifdef __cplusplus
119203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin}
120203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#endif /* __cplusplus */
121203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
122203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#endif /* OMX_VideoExt_h */
123203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/* File EOF */
124