1e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/* ------------------------------------------------------------------
2e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Copyright (C) 1998-2009 PacketVideo
3e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
4e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Licensed under the Apache License, Version 2.0 (the "License");
5e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * you may not use this file except in compliance with the License.
6e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * You may obtain a copy of the License at
7e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
8e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *      http://www.apache.org/licenses/LICENSE-2.0
9e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
10e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Unless required by applicable law or agreed to in writing, software
11e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * distributed under the License is distributed on an "AS IS" BASIS,
12e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * express or implied.
14e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * See the License for the specific language governing permissions
15e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * and limitations under the License.
16e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * -------------------------------------------------------------------
17e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen */
18c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
19e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Copyright (c) 2008 The Khronos Group Inc.
20e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
21c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Permission is hereby granted, free of charge, to any person obtaining
22c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * a copy of this software and associated documentation files (the
23c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * "Software"), to deal in the Software without restriction, including
24c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * without limitation the rights to use, copy, modify, merge, publish,
25c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * distribute, sublicense, and/or sell copies of the Software, and to
26c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * permit persons to whom the Software is furnished to do so, subject
27e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * to the following conditions:
28c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * The above copyright notice and this permission notice shall be included
29e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * in all copies or substantial portions of the Software.
30e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
31c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
32c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
33c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
34c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
37e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
41e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  @file OMX_Video.h - OpenMax IL version 1.1.2
43e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  The structures is needed by Video components to exchange parameters
44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  and configuration data with OMX components.
45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifndef OMX_Video_h
47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_Video_h
48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @defgroup video OpenMAX IL Video Domain
50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup iv
51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Structures for OpenMAX IL Video domain
52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @{
53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus
56c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevextern "C" {
57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif /* __cplusplus */
58c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Each OMX header must include all required header files to allow the
62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * header to compile without errors.  The includes below are required
63e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * for this header file to compile successfully
64c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_IVCommon.h>
67c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
68c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
69c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
70e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Enumeration used to define the possible video compression codings.
71e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * NOTE:  This essentially refers to file extensions. If the coding is
72e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *        being used to specify the ENCODE type, then additional work
73e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *        must be done to configure the exact flavor of the compression
74e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *        to be used.  For decode cases where the user application can
75e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *        not differentiate between MPEG-4 and H.264 bit streams, it is
76c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *        up to the codec to handle this.
77c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_CODINGTYPE {
79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CodingUnused,     /**< Value when coding is N/A */
80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CodingAutoDetect, /**< Autodetection of coding type */
81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CodingMPEG2,      /**< AKA: H.262 */
82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CodingH263,       /**< H.263 */
83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CodingMPEG4,      /**< MPEG-4 */
84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CodingWMV,        /**< all versions of Windows Media Video */
85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CodingRV,         /**< all versions of Real Video */
86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CodingAVC,        /**< H.264/AVC */
87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CodingMJPEG,      /**< Motion JPEG */
88e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_CodingVPX,        /**< Google VPX, formerly known as On2 VP8 */
89e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
91c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CodingMax = 0x7FFFFFFF
92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_CODINGTYPE;
93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
96e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Data structure used to define a video path.  The number of Video paths for
97e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * input and output will vary by type of the Video component.
98e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    Input (aka Source) : zero Inputs, one Output,
100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    Splitter           : one Input, 2 or more Outputs,
101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    Processing Element : one Input, one output,
102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    Mixer              : 2 or more inputs, one output,
103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *    Output (aka Sink)  : one Input, zero outputs.
104e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
105e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * The PortDefinition structure is used to define all of the parameters
106e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * necessary for the compliant component to setup an input or an output video
107e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * path.  If additional vendor specific data is required, it should be
108e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * transmitted to the component using the CustomCommand function.  Compliant
109e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * components will prepopulate this structure with optimal values during the
110c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * GetDefaultInitParams command.
111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  cMIMEType             : MIME type of data for the port
114e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  pNativeRender         : Platform specific reference for a display if a
115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          sync, otherwise this field is 0
116e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nFrameWidth           : Width of frame to be used on channel if
117c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          uncompressed format is used.  Use 0 for unknown,
118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          don't care or variable
119e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nFrameHeight          : Height of frame to be used on channel if
120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          uncompressed format is used. Use 0 for unknown,
121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          don't care or variable
122e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nStride               : Number of bytes per span of an image
123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          (i.e. indicates the number of bytes to get
124c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          from span N to span N+1, where negative stride
125c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          indicates the image is bottom up
126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSliceHeight          : Height used when encoding in slices
127e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nBitrate              : Bit rate of frame to be used on channel if
128e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                          compressed format is used. Use 0 for unknown,
129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          don't care or variable
130e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  xFramerate            : Frame rate to be used on channel if uncompressed
131e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                          format is used. Use 0 for unknown, don't care or
132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          variable.  Units are Q16 frames per second.
133e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bFlagErrorConcealment : Turns on error concealment if it is supported by
134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          the OMX component
135e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  eCompressionFormat    : Compression format used in this instance of the
136e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                          component. When OMX_VIDEO_CodingUnused is
137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                          specified, eColorFormat is used
138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eColorFormat : Decompressed format used by this component
139e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  pNativeWindow : Platform specific reference for a window object if a
140e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                          display sink , otherwise this field is 0x0.
141c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
142c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PORTDEFINITIONTYPE {
143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_STRING cMIMEType;
144c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_NATIVE_DEVICETYPE pNativeRender;
145c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nFrameWidth;
146c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nFrameHeight;
147c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_S32 nStride;
148c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSliceHeight;
149c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitrate;
150c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 xFramerate;
151c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bFlagErrorConcealment;
152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_CODINGTYPE eCompressionFormat;
153c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_COLOR_FORMATTYPE eColorFormat;
154c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_NATIVE_WINDOWTYPE pNativeWindow;
155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PORTDEFINITIONTYPE;
156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
157e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
158e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Port format parameter.  This structure is used to enumerate the various
159c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * data input/output format supported by the port.
160e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize              : Size of the structure in bytes
163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion           : OMX specification version information
164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex         : Indicates which port to set
165e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nIndex             : Indicates the enumeration index for the format from
166c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                       0x0 to N-1
167e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  eCompressionFormat : Compression format used in this instance of the
168e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                       component. When OMX_VIDEO_CodingUnused is specified,
169e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                       eColorFormat is used
170c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eColorFormat       : Decompressed format used by this component
171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  xFrameRate         : Indicates the video frame rate in Q16 format
172c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_PORTFORMATTYPE {
174c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
175c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
176c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
177c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nIndex;
178e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_CODINGTYPE eCompressionFormat;
179c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_COLOR_FORMATTYPE eColorFormat;
180c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 xFramerate;
181c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_PORTFORMATTYPE;
182c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
183c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
184c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
185e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * This is a structure for configuring video compression quantization
186c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * parameter values.  Codecs may support different QP values for different
187c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * frame types.
188c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
189c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize      : Size of the structure in bytes
191c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion   : OMX specification version info
192c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex : Port that this structure applies to
193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nQpI       : QP value to use for index frames
194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nQpP       : QP value to use for P frames
195e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nQpB       : QP values to use for bidirectional frames
196c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_QUANTIZATIONTYPE {
198e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
199c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
201c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nQpI;
202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nQpP;
203c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nQpB;
204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_QUANTIZATIONTYPE;
205c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
206c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
207e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
208e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Structure for configuration of video fast update parameters.
209e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
210c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
211c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize      : Size of the structure in bytes
212e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nVersion   : OMX specification version info
213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex : Port that this structure applies to
214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bEnableVFU : Enable/Disable video fast update
215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nFirstGOB  : Specifies the number of the first macroblock row
216c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nFirstMB   : specifies the first MB relative to the specified first GOB
217e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nNumMBs    : Specifies the number of MBs to be refreshed from nFirstGOB
218c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *               and nFirstMB
219c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE {
221e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
222e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VERSIONTYPE nVersion;
223e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nPortIndex;
224e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bEnableVFU;
225e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nFirstGOB;
226e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nFirstMB;
227e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nNumMBs;
228c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE;
229c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
230c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
231e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
232e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Enumeration of possible bitrate control types
233c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
234c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_CONTROLRATETYPE {
235c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_ControlRateDisable,
236c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_ControlRateVariable,
237c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_ControlRateConstant,
238c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_ControlRateVariableSkipFrames,
239c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_ControlRateConstantSkipFrames,
240e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_Video_ControlRateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
241c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_ControlRateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
242c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_ControlRateMax = 0x7FFFFFFF
243c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_CONTROLRATETYPE;
244c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
245c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
246e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
247e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Structure for configuring bitrate mode of a codec.
248c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
249c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
250c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize          : Size of the struct in bytes
251c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion       : OMX spec version info
252c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex     : Port that this struct applies to
253c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eControlRate   : Control rate type enum
254c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nTargetBitrate : Target bitrate to encode with
255c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
256c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_BITRATETYPE {
257e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
258e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VERSIONTYPE nVersion;
259e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nPortIndex;
260e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_CONTROLRATETYPE eControlRate;
261e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nTargetBitrate;
262c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_BITRATETYPE;
263c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
264c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
265e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
266e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Enumeration of possible motion vector (MV) types
267c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
268c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_MOTIONVECTORTYPE {
269c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_MotionVectorPixel,
270c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_MotionVectorHalfPel,
271c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_MotionVectorQuarterPel,
272c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_MotionVectorEighthPel,
273e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_Video_MotionVectorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
274c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_MotionVectorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
275c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_Video_MotionVectorMax = 0x7FFFFFFF
276c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_MOTIONVECTORTYPE;
277c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
278c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
279c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
280c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Structure for configuring the number of motion vectors used as well
281c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * as their accuracy.
282e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
283c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
284c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize            : Size of the struct in bytes
285c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion         : OMX spec version info
286c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex       : port that this structure applies to
287c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eAccuracy        : Enumerated MV accuracy
288c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bUnrestrictedMVs : Allow unrestricted MVs
289c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bFourMV          : Allow use of 4 MVs
290c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  sXSearchRange    : Search range in horizontal direction for MVs
291c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  sYSearchRange    : Search range in vertical direction for MVs
292c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
293c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_MOTIONVECTORTYPE {
294c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
295c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
296c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
297c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MOTIONVECTORTYPE eAccuracy;
298c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bUnrestrictedMVs;
299c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bFourMV;
300c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_S32 sXSearchRange;
301c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_S32 sYSearchRange;
302c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_MOTIONVECTORTYPE;
303c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
304c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
305e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
306e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Enumeration of possible methods to use for Intra Refresh
307c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
308c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_INTRAREFRESHTYPE {
309c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_IntraRefreshCyclic,
310c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_IntraRefreshAdaptive,
311c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_IntraRefreshBoth,
312e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_IntraRefreshKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
313c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_IntraRefreshVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
314c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_IntraRefreshMax = 0x7FFFFFFF
315c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_INTRAREFRESHTYPE;
316c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
317c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
318c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
319e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Structure for configuring intra refresh mode
320e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
321c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
322c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize        : Size of the structure in bytes
323c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion     : OMX specification version information
324c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex   : Port that this structure applies to
325c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eRefreshMode : Cyclic, Adaptive, or Both
326e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nAirMBs      : Number of intra macroblocks to refresh in a frame when
327c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                 AIR is enabled
328e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nAirRef      : Number of times a motion marked macroblock has to be
329c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                 intra coded
330e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nCirMBs      : Number of consecutive macroblocks to be coded as "intra"
331c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                 when CIR is enabled
332c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
333c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_INTRAREFRESHTYPE {
334c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
335c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
336c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
337c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_INTRAREFRESHTYPE eRefreshMode;
338c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nAirMBs;
339c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nAirRef;
340c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nCirMBs;
341c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_INTRAREFRESHTYPE;
342c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
343c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
344c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
345e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Structure for enabling various error correction methods for video
346c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * compression.
347c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
348c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
349c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize                   : Size of the structure in bytes
350e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nVersion                : OMX specification version information
351e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nPortIndex              : Port that this structure applies to
352c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bEnableHEC              : Enable/disable header extension codes (HEC)
353c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bEnableResync           : Enable/disable resynchronization markers
354e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nResynchMarkerSpacing   : Resynch markers interval (in bits) to be
355e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                            applied in the stream
356e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bEnableDataPartitioning : Enable/disable data partitioning
357e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bEnableRVLC             : Enable/disable reversible variable length
358c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                            coding
359c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
360c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE {
361c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
362c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
363c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
364c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnableHEC;
365c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnableResync;
366c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32  nResynchMarkerSpacing;
367c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnableDataPartitioning;
368c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnableRVLC;
369c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE;
370c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
371c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
372e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
373e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Configuration of variable block-size motion compensation (VBSMC)
374e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
375c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
376c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize      : Size of the structure in bytes
377e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nVersion   : OMX specification version information
378c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex : Port that this structure applies to
379c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  b16x16     : Enable inter block search 16x16
380c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  b16x8      : Enable inter block search 16x8
381c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  b8x16      : Enable inter block search 8x16
382c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  b8x8       : Enable inter block search 8x8
383c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  b8x4       : Enable inter block search 8x4
384c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  b4x8       : Enable inter block search 4x8
385c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  b4x4       : Enable inter block search 4x4
386c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
387c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_VBSMCTYPE {
388e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
389e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VERSIONTYPE nVersion;
390e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nPortIndex;
391e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL b16x16;
392e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL b16x8;
393c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL b8x16;
394c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL b8x8;
395c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL b8x4;
396c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL b4x8;
397c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL b4x4;
398c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_VBSMCTYPE;
399c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
400c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
401e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
402e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * H.263 profile types, each profile indicates support for various
403c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * performance bounds and different annexes.
404c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
405c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * ENUMS:
406e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  Baseline           : Baseline Profile: H.263 (V1), no optional modes
407e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  H320 Coding        : H.320 Coding Efficiency Backward Compatibility
408c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                       Profile: H.263+ (V2), includes annexes I, J, L.4
409c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                       and T
410e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  BackwardCompatible : Backward Compatibility Profile: H.263 (V1),
411e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                       includes annex F
412e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  ISWV2              : Interactive Streaming Wireless Profile: H.263+
413e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                       (V2), includes annexes I, J, K and T
414e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  ISWV3              : Interactive Streaming Wireless Profile: H.263++
415e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                       (V3), includes profile 3 and annexes V and W.6.3.8
416e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  HighCompression    : Conversational High Compression Profile: H.263++
417e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                       (V3), includes profiles 1 & 2 and annexes D and U
418e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  Internet           : Conversational Internet Profile: H.263++ (V3),
419e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                       includes profile 5 and annex K
420e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  Interlace          : Conversational Interlace Profile: H.263++ (V3),
421e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                       includes profile 5 and annex W.6.3.11
422e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  HighLatency        : High Latency Profile: H.263++ (V3), includes
423e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                       profile 6 and annexes O.1 and P.5
424c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
425c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_H263PROFILETYPE {
426e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263ProfileBaseline            = 0x01,
427e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263ProfileH320Coding          = 0x02,
428e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263ProfileBackwardCompatible  = 0x04,
429e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263ProfileISWV2               = 0x08,
430e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263ProfileISWV3               = 0x10,
431e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263ProfileHighCompression     = 0x20,
432e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263ProfileInternet            = 0x40,
433e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263ProfileInterlace           = 0x80,
434e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263ProfileHighLatency         = 0x100,
435e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
436c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_H263ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
437e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263ProfileMax                 = 0x7FFFFFFF
438c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_H263PROFILETYPE;
439c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
440c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
441e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
442e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * H.263 level types, each level indicates support for various frame sizes,
443c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * bit rates, decoder frame rates.
444c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
445c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_H263LEVELTYPE {
446e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263Level10  = 0x01,
447e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263Level20  = 0x02,
448e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263Level30  = 0x04,
449e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263Level40  = 0x08,
450e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263Level45  = 0x10,
451e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263Level50  = 0x20,
452e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263Level60  = 0x40,
453e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263Level70  = 0x80,
454e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
455c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_H263LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
456e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_H263LevelMax = 0x7FFFFFFF
457c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_H263LEVELTYPE;
458c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
459c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
460e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
461e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Specifies the picture type. These values should be OR'd to signal all
462c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * pictures types which are allowed.
463c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
464c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * ENUMS:
465c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  Generic Picture Types:          I, P and B
466c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  H.263 Specific Picture Types:   SI and SP
467c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  H.264 Specific Picture Types:   EI and EP
468c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  MPEG-4 Specific Picture Types:  S
469c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
470c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_PICTURETYPE {
471c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_PictureTypeI   = 0x01,
472c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_PictureTypeP   = 0x02,
473c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_PictureTypeB   = 0x04,
474c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_PictureTypeSI  = 0x08,
475c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_PictureTypeSP  = 0x10,
476c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_PictureTypeEI  = 0x11,
477c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_PictureTypeEP  = 0x12,
478c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_PictureTypeS   = 0x14,
479e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_PictureTypeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
480c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_PictureTypeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
481c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_PictureTypeMax = 0x7FFFFFFF
482c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PICTURETYPE;
483c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
484c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
485e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
486e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * H.263 Params
487c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
488c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
489c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize                    : Size of the structure in bytes
490e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nVersion                 : OMX specification version information
491c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex               : Port that this structure applies to
492c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPFrames                 : Number of P frames between each I frame
493c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nBFrames                 : Number of B frames between each I frame
494c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eProfile                 : H.263 profile(s) to use
495c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eLevel                   : H.263 level(s) to use
496e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bPLUSPTYPEAllowed        : Indicating that it is allowed to use PLUSPTYPE
497e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                             (specified in the 1998 version of H.263) to
498e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                             indicate custom picture sizes or clock
499e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                             frequencies
500e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nAllowedPictureTypes     : Specifies the picture types allowed in the
501c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                             bitstream
502e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bForceRoundingTypeToZero : value of the RTYPE bit (bit 6 of MPPTYPE) is
503e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                             not constrained. It is recommended to change
504e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                             the value of the RTYPE bit for each reference
505c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                             picture in error-free communication
506e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nPictureHeaderRepetition : Specifies the frequency of picture header
507c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                             repetition
508e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nGOBHeaderInterval       : Specifies the interval of non-empty GOB
509c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                             headers in units of GOBs
510c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
511c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_H263TYPE {
512c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
513c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
514c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
515c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPFrames;
516c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBFrames;
517c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_H263PROFILETYPE eProfile;
518c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_VIDEO_H263LEVELTYPE eLevel;
519c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bPLUSPTYPEAllowed;
520c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nAllowedPictureTypes;
521c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bForceRoundingTypeToZero;
522c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPictureHeaderRepetition;
523c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nGOBHeaderInterval;
524c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_H263TYPE;
525c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
526c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
527e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
528e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * MPEG-2 profile types, each profile indicates support for various
529c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * performance bounds and different annexes.
530c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
531c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_MPEG2PROFILETYPE {
532c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG2ProfileSimple = 0,  /**< Simple Profile */
533c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG2ProfileMain,        /**< Main Profile */
534c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG2Profile422,         /**< 4:2:2 Profile */
535c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG2ProfileSNR,         /**< SNR Profile */
536c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG2ProfileSpatial,     /**< Spatial Profile */
537c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG2ProfileHigh,        /**< High Profile */
538e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG2ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
539c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG2ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
540e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG2ProfileMax = 0x7FFFFFFF
541c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_MPEG2PROFILETYPE;
542c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
543c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
544e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
545e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * MPEG-2 level types, each level indicates support for various frame
546e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * sizes, bit rates, decoder frame rates.  No need
547c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
548c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_MPEG2LEVELTYPE {
549e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG2LevelLL = 0,  /**< Low Level */
550e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG2LevelML,      /**< Main Level */
551e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG2LevelH14,     /**< High 1440 */
552e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG2LevelHL,      /**< High Level */
553e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG2LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
554c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG2LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
555e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG2LevelMax = 0x7FFFFFFF
556c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_MPEG2LEVELTYPE;
557c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
558c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
559e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
560e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * MPEG-2 params
561c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
562c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
563c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize      : Size of the structure in bytes
564c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion   : OMX specification version information
565c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex : Port that this structure applies to
566c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPFrames   : Number of P frames between each I frame
567c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nBFrames   : Number of B frames between each I frame
568c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eProfile   : MPEG-2 profile(s) to use
569c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eLevel     : MPEG-2 levels(s) to use
570c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
571c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_MPEG2TYPE {
572e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
573c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
574e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nPortIndex;
575e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nPFrames;
576e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nBFrames;
577c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG2PROFILETYPE eProfile;
578e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen	OMX_VIDEO_MPEG2LEVELTYPE eLevel;
579c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_MPEG2TYPE;
580c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
581c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
582e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
583e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * MPEG-4 profile types, each profile indicates support for various
584c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * performance bounds and different annexes.
585e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *
586c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * ENUMS:
587c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Simple Profile, Levels 1-3
588c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Simple Scalable Profile, Levels 1-2
589c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Core Profile, Levels 1-2
590c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Main Profile, Levels 2-4
591c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - N-bit Profile, Level 2
592c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Scalable Texture Profile, Level 1
593c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Simple Face Animation Profile, Levels 1-2
594c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Simple Face and Body Animation (FBA) Profile, Levels 1-2
595c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Basic Animated Texture Profile, Levels 1-2
596c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Hybrid Profile, Levels 1-2
597c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Advanced Real Time Simple Profiles, Levels 1-4
598c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Core Scalable Profile, Levels 1-3
599c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Advanced Coding Efficiency Profile, Levels 1-4
600c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Advanced Core Profile, Levels 1-2
601c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  - Advanced Scalable Texture, Levels 2-3
602c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
603c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_MPEG4PROFILETYPE {
604e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileSimple           = 0x01,
605e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileSimpleScalable   = 0x02,
606e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileCore             = 0x04,
607e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileMain             = 0x08,
608e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileNbit             = 0x10,
609e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileScalableTexture  = 0x20,
610e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileSimpleFace       = 0x40,
611e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileSimpleFBA        = 0x80,
612e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileBasicAnimated    = 0x100,
613e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileHybrid           = 0x200,
614e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileAdvancedRealTime = 0x400,
615e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileCoreScalable     = 0x800,
616e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileAdvancedCoding   = 0x1000,
617e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileAdvancedCore     = 0x2000,
618c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG4ProfileAdvancedScalable = 0x4000,
619c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG4ProfileAdvancedSimple   = 0x8000,
620e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
621c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG4ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
622e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4ProfileMax              = 0x7FFFFFFF
623c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_MPEG4PROFILETYPE;
624c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
625c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
626e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
627e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * MPEG-4 level types, each level indicates support for various frame
628e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * sizes, bit rates, decoder frame rates.  No need
629c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
630c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_MPEG4LEVELTYPE {
631e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4Level0  = 0x01,   /**< Level 0 */
632e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4Level0b = 0x02,   /**< Level 0b */
633e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4Level1  = 0x04,   /**< Level 1 */
634e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4Level2  = 0x08,   /**< Level 2 */
635e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4Level3  = 0x10,   /**< Level 3 */
636e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4Level4  = 0x20,   /**< Level 4 */
637e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4Level4a = 0x40,   /**< Level 4a */
638e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4Level5  = 0x80,   /**< Level 5 */
639e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
640c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG4LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
641e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_MPEG4LevelMax = 0x7FFFFFFF
642c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_MPEG4LEVELTYPE;
643c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
644c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
645e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
646c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * MPEG-4 configuration.  This structure handles configuration options
647c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * which are specific to MPEG4 algorithms
648c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
649c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
650c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize                : Size of the structure in bytes
651c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion             : OMX specification version information
652c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex           : Port that this structure applies to
653e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nSliceHeaderSpacing  : Number of macroblocks between slice header (H263+
654c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                         Annex K). Put zero if not used
655c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bSVH                 : Enable Short Video Header mode
656c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bGov                 : Flag to enable GOV
657e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nPFrames             : Number of P frames between each I frame (also called
658c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                         GOV period)
659c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nBFrames             : Number of B frames between each I frame
660c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nIDCVLCThreshold     : Value of intra DC VLC threshold
661c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bACPred              : Flag to use ac prediction
662c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nMaxPacketSize       : Maximum size of packet in bytes.
663e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nTimeIncRes          : Used to pass VOP time increment resolution for MPEG4.
664c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                         Interpreted as described in MPEG4 standard.
665c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eProfile             : MPEG-4 profile(s) to use.
666c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eLevel               : MPEG-4 level(s) to use.
667c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nAllowedPictureTypes : Specifies the picture types allowed in the bitstream
668c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nHeaderExtension     : Specifies the number of consecutive video packet
669c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                         headers within a VOP
670e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bReversibleVLC       : Specifies whether reversible variable length coding
671c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                         is in use
672c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
673c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_MPEG4TYPE {
674c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
675c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
676c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
677c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSliceHeaderSpacing;
678c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bSVH;
679c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bGov;
680c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPFrames;
681c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBFrames;
682c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nIDCVLCThreshold;
683c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bACPred;
684c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMaxPacketSize;
685c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nTimeIncRes;
686c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG4PROFILETYPE eProfile;
687c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_MPEG4LEVELTYPE eLevel;
688c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nAllowedPictureTypes;
689c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nHeaderExtension;
690c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bReversibleVLC;
691c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_MPEG4TYPE;
692c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
693c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
694e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
695e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * WMV Versions
696c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
697c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_WMVFORMATTYPE {
698c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_WMVFormatUnused = 0x01,   /**< Format unused or unknown */
699c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_WMVFormat7      = 0x02,   /**< Windows Media Video format 7 */
700c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_WMVFormat8      = 0x04,   /**< Windows Media Video format 8 */
701c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_WMVFormat9      = 0x08,   /**< Windows Media Video format 9 */
702e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_WMFFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
703c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_WMFFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
704c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_WMVFormatMax    = 0x7FFFFFFF
705c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_WMVFORMATTYPE;
706c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
707c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
708e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
709e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * WMV Params
710c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
711c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
712c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize      : Size of the structure in bytes
713c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion   : OMX specification version information
714c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex : Port that this structure applies to
715c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eFormat    : Version of WMV stream / data
716c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
717c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_WMVTYPE {
718e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
719c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
720c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
721c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_WMVFORMATTYPE eFormat;
722c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_WMVTYPE;
723c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
724c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
725e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
726e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Real Video Version
727c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
728c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_RVFORMATTYPE {
729c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_RVFormatUnused = 0, /**< Format unused or unknown */
730c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_RVFormat8,          /**< Real Video format 8 */
731c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_RVFormat9,          /**< Real Video format 9 */
732c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_RVFormatG2,         /**< Real Video Format G2 */
733e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_RVFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
734c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_RVFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
735c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_RVFormatMax = 0x7FFFFFFF
736c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_RVFORMATTYPE;
737c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
738c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
739e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
740e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Real Video Params
741c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
742c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STUCT MEMBERS:
743c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize              : Size of the structure in bytes
744e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nVersion           : OMX specification version information
745c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex         : Port that this structure applies to
746c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eFormat            : Version of RV stream / data
747c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nBitsPerPixel      : Bits per pixel coded in the frame
748c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPaddedWidth       : Padded width in pixel of a video frame
749c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPaddedHeight      : Padded Height in pixels of a video frame
750c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nFrameRate         : Rate of video in frames per second
751c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nBitstreamFlags    : Flags which internal information about the bitstream
752c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nBitstreamVersion  : Bitstream version
753c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nMaxEncodeFrameSize: Max encoded frame size
754c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bEnablePostFilter  : Turn on/off post filter
755c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bEnableTemporalInterpolation : Turn on/off temporal interpolation
756e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bEnableLatencyMode : When enabled, the decoder does not display a decoded
757e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                       frame until it has detected that no enhancement layer
758e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  					 frames or dependent B frames will be coming. This
759e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  					 detection usually occurs when a subsequent non-B
760e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  					 frame is encountered
761c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
762c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_RVTYPE {
763c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
764c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
765c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
766c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_RVFORMATTYPE eFormat;
767c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nBitsPerPixel;
768c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nPaddedWidth;
769c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nPaddedHeight;
770c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nFrameRate;
771c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitstreamFlags;
772c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitstreamVersion;
773c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMaxEncodeFrameSize;
774c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnablePostFilter;
775c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnableTemporalInterpolation;
776c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnableLatencyMode;
777c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_RVTYPE;
778c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
779c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
780e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
781e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * AVC profile types, each profile indicates support for various
782c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * performance bounds and different annexes.
783c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
784c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_AVCPROFILETYPE {
785c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCProfileBaseline = 0x01,   /**< Baseline profile */
786c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCProfileMain     = 0x02,   /**< Main profile */
787c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCProfileExtended = 0x04,   /**< Extended profile */
788c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCProfileHigh     = 0x08,   /**< High profile */
789c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCProfileHigh10   = 0x10,   /**< High 10 profile */
790c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCProfileHigh422  = 0x20,   /**< High 4:2:2 profile */
791c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCProfileHigh444  = 0x40,   /**< High 4:4:4 profile */
792e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_AVCProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
793c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
794e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_AVCProfileMax      = 0x7FFFFFFF
795c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_AVCPROFILETYPE;
796c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
797c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
798e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
799e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * AVC level types, each level indicates support for various frame sizes,
800e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * bit rates, decoder frame rates.  No need
801c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
802c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_AVCLEVELTYPE {
803c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel1   = 0x01,     /**< Level 1 */
804c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel1b  = 0x02,     /**< Level 1b */
805c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel11  = 0x04,     /**< Level 1.1 */
806c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel12  = 0x08,     /**< Level 1.2 */
807c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel13  = 0x10,     /**< Level 1.3 */
808c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel2   = 0x20,     /**< Level 2 */
809c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel21  = 0x40,     /**< Level 2.1 */
810c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel22  = 0x80,     /**< Level 2.2 */
811c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel3   = 0x100,    /**< Level 3 */
812c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel31  = 0x200,    /**< Level 3.1 */
813c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel32  = 0x400,    /**< Level 3.2 */
814c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel4   = 0x800,    /**< Level 4 */
815c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel41  = 0x1000,   /**< Level 4.1 */
816c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel42  = 0x2000,   /**< Level 4.2 */
817c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel5   = 0x4000,   /**< Level 5 */
818c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevel51  = 0x8000,   /**< Level 5.1 */
819e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_AVCLevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
820c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
821e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_AVCLevelMax = 0x7FFFFFFF
822c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_AVCLEVELTYPE;
823c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
824c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
825e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
826e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * AVC loop filter modes
827c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
828c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OMX_VIDEO_AVCLoopFilterEnable               : Enable
829c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OMX_VIDEO_AVCLoopFilterDisable              : Disable
830c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OMX_VIDEO_AVCLoopFilterDisableSliceBoundary : Disabled on slice boundaries
831c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
832c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_AVCLOOPFILTERTYPE {
833c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLoopFilterEnable = 0,
834c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLoopFilterDisable,
835c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLoopFilterDisableSliceBoundary,
836e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_AVCLoopFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
837c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLoopFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
838c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCLoopFilterMax = 0x7FFFFFFF
839c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_AVCLOOPFILTERTYPE;
840c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
841c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
842e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
843e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * AVC params
844c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
845c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
846c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize                     : Size of the structure in bytes
847c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion                  : OMX specification version information
848c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex                : Port that this structure applies to
849e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nSliceHeaderSpacing       : Number of macroblocks between slice header, put
850c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              zero if not used
851c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPFrames                  : Number of P frames between each I frame
852c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nBFrames                  : Number of B frames between each I frame
853c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bUseHadamard              : Enable/disable Hadamard transform
854c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nRefFrames                : Max number of reference frames to use for inter
855c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              motion search (1-16)
856c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nRefIdxTrailing           : Pic param set ref frame index (index into ref
857c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              frame buffer of trailing frames list), B frame
858c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              support
859c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nRefIdxForward            : Pic param set ref frame index (index into ref
860c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              frame buffer of forward frames list), B frame
861c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              support
862e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bEnableUEP                : Enable/disable unequal error protection. This
863c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              is only valid of data partitioning is enabled.
864c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bEnableFMO                : Enable/disable flexible macroblock ordering
865c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bEnableASO                : Enable/disable arbitrary slice ordering
866c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bEnableRS                 : Enable/disable sending of redundant slices
867c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eProfile                  : AVC profile(s) to use
868c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eLevel                    : AVC level(s) to use
869e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nAllowedPictureTypes      : Specifies the picture types allowed in the
870c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              bitstream
871e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bFrameMBsOnly             : specifies that every coded picture of the
872e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                              coded video sequence is a coded frame
873c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              containing only frame macroblocks
874e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bMBAFF                    : Enable/disable switching between frame and
875c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              field macroblocks within a picture
876e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bEntropyCodingCABAC       : Entropy decoding method to be applied for the
877e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                              syntax elements for which two descriptors appear
878c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              in the syntax tables
879e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bWeightedPPrediction      : Enable/disable weighted prediction shall not
880c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              be applied to P and SP slices
881e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nWeightedBipredicitonMode : Default weighted prediction is applied to B
882e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                              slices
883c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bconstIpred               : Enable/disable intra prediction
884e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  bDirect8x8Inference       : Specifies the method used in the derivation
885e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                              process for luma motion vectors for B_Skip,
886e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                              B_Direct_16x16 and B_Direct_8x8 as specified
887e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                              in subclause 8.4.1.2 of the AVC spec
888c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  bDirectSpatialTemporal    : Flag indicating spatial or temporal direct
889e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                              mode used in B slice coding (related to
890e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *                              bDirect8x8Inference) . Spatial direct mode is
891c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *                              more common and should be the default.
892c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nCabacInitIdx             : Index used to init CABAC contexts
893c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eLoopFilterMode           : Enable/disable loop filter
894c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
895c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_AVCTYPE {
896e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
897e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VERSIONTYPE nVersion;
898e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nPortIndex;
899e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSliceHeaderSpacing;
900e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nPFrames;
901e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nBFrames;
902c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bUseHadamard;
903e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nRefFrames;
904c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_U32 nRefIdx10ActiveMinus1;
905c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_U32 nRefIdx11ActiveMinus1;
906e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bEnableUEP;
907e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bEnableFMO;
908e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bEnableASO;
909e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bEnableRS;
910c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCPROFILETYPE eProfile;
911e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen	OMX_VIDEO_AVCLEVELTYPE eLevel;
912e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nAllowedPictureTypes;
913e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen	OMX_BOOL bFrameMBsOnly;
914e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bMBAFF;
915e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bEntropyCodingCABAC;
916e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bWeightedPPrediction;
917e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nWeightedBipredicitonMode;
918c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bconstIpred ;
919e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_BOOL bDirect8x8Inference;
920c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_BOOL bDirectSpatialTemporal;
921c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_U32 nCabacInitIdc;
922c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_VIDEO_AVCLOOPFILTERTYPE eLoopFilterMode;
923c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_AVCTYPE;
924c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
925c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_PROFILELEVELTYPE {
926e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen   OMX_U32 nSize;
927e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen   OMX_VERSIONTYPE nVersion;
928e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen   OMX_U32 nPortIndex;
929e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen   OMX_U32 eProfile;      /**< type is OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE,
930c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                 or OMX_VIDEO_MPEG4PROFILETYPE depending on context */
931e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen   OMX_U32 eLevel;        /**< type is OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE,
932c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                 or OMX_VIDEO_MPEG4PROFILETYPE depending on context */
933c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_U32 nProfileIndex; /**< Used to query for individual profile support information,
934e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen                               This parameter is valid only for
935c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                               OMX_IndexParamVideoProfileLevelQuerySupported index,
936c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                               For all other indices this parameter is to be ignored. */
937c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_PROFILELEVELTYPE;
938c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
939e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
940e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * Structure for dynamically configuring bitrate mode of a codec.
941c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
942c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
943c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize          : Size of the struct in bytes
944c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion       : OMX spec version info
945c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex     : Port that this struct applies to
946c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nEncodeBitrate : Target average bitrate to be generated in bps
947c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
948c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_CONFIG_BITRATETYPE {
949e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
950e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VERSIONTYPE nVersion;
951e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nPortIndex;
952e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nEncodeBitrate;
953c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_CONFIG_BITRATETYPE;
954c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
955e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
956c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Defines Encoder Frame Rate setting
957c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
958c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
959c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize            : Size of the structure in bytes
960e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen *  nVersion         : OMX specification version information
961c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex       : Port that this structure applies to
962c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  xEncodeFramerate : Encoding framerate represented in Q16 format
963c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
964c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_FRAMERATETYPE {
965c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
966c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
967c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
968c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 xEncodeFramerate; /* Q16 format */
969c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_FRAMERATETYPE;
970c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
971c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_INTRAREFRESHVOPTYPE {
972c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
973c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
974c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
975c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL IntraRefreshVOP;
976c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_INTRAREFRESHVOPTYPE;
977c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
978c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_MACROBLOCKERRORMAPTYPE {
979c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
980c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
981c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
982c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nErrMapSize;           /* Size of the Error Map in bytes */
983c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U8  ErrMap[1];             /* Error map hint */
984c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_MACROBLOCKERRORMAPTYPE;
985c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
986c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_CONFIG_MBERRORREPORTINGTYPE {
987c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
988c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
989c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
990c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnabled;
991c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_CONFIG_MBERRORREPORTINGTYPE;
992c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
993c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_PARAM_MACROBLOCKSTYPE {
994c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;
995c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
996c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
997c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMacroblocks;
998c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_PARAM_MACROBLOCKSTYPE;
999c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1000e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
1001e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * AVC Slice Mode modes
1002c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
1003c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OMX_VIDEO_SLICEMODE_AVCDefault   : Normal frame encoding, one slice per frame
1004c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OMX_VIDEO_SLICEMODE_AVCMBSlice   : NAL mode, number of MBs per frame
1005c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OMX_VIDEO_SLICEMODE_AVCByteSlice : NAL mode, number of bytes per frame
1006c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1007c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_VIDEO_AVCSLICEMODETYPE {
1008c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_SLICEMODE_AVCDefault = 0,
1009c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_SLICEMODE_AVCMBSlice,
1010c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_SLICEMODE_AVCByteSlice,
1011e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_VIDEO_SLICEMODE_AVCKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
1012c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_SLICEMODE_AVCVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
1013c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_SLICEMODE_AVCLevelMax = 0x7FFFFFFF
1014c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_AVCSLICEMODETYPE;
1015c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1016e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
1017e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen * AVC FMO Slice Mode Params
1018c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
1019c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
1020c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize      : Size of the structure in bytes
1021c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion   : OMX specification version information
1022c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex : Port that this structure applies to
1023c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nNumSliceGroups : Specifies the number of slice groups
1024c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSliceGroupMapType : Specifies the type of slice groups
1025c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  eSliceMode : Specifies the type of slice
1026c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1027c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_PARAM_AVCSLICEFMO {
1028e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
1029c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
1030c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
1031c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U8 nNumSliceGroups;
1032c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U8 nSliceGroupMapType;
1033c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_AVCSLICEMODETYPE eSliceMode;
1034c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_PARAM_AVCSLICEFMO;
1035c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1036e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
1037c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * AVC IDR Period Configs
1038c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
1039c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
1040c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize      : Size of the structure in bytes
1041c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion   : OMX specification version information
1042c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex : Port that this structure applies to
1043c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nIDRPeriod : Specifies periodicity of IDR frames
1044c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPFrames : Specifies internal of coding Intra frames
1045c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1046c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_CONFIG_AVCINTRAPERIOD {
1047e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
1048c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
1049c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
1050c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nIDRPeriod;
1051c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPFrames;
1052c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_CONFIG_AVCINTRAPERIOD;
1053c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1054e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen/**
1055c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * AVC NAL Size Configs
1056c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
1057c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * STRUCT MEMBERS:
1058c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nSize      : Size of the structure in bytes
1059c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nVersion   : OMX specification version information
1060c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nPortIndex : Port that this structure applies to
1061c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  nNaluBytes : Specifies the NAL unit size
1062c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1063c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_VIDEO_CONFIG_NALSIZE {
1064e4b5eb97c1ebb41905d9acb8cf1c0992688152e9Mike J. Chen    OMX_U32 nSize;
1065c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;
1066c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;
1067c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nNaluBytes;
1068c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_VIDEO_CONFIG_NALSIZE;
1069c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1070c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @} */
1071c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1072c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus
1073c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
1074c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif /* __cplusplus */
1075c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1076c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif
1077c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* File EOF */
1078c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1079