1203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/*
2203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * Copyright (c) 2010 The Khronos Group Inc.
3203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin *
4203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * Permission is hereby granted, free of charge, to any person obtaining
5203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * a copy of this software and associated documentation files (the
6203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * "Software"), to deal in the Software without restriction, including
7203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * without limitation the rights to use, copy, modify, merge, publish,
8203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * distribute, sublicense, and/or sell copies of the Software, and to
9203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * permit persons to whom the Software is furnished to do so, subject
10203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * to the following conditions:
11203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * The above copyright notice and this permission notice shall be included
12203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * in all copies or substantial portions of the Software.
13203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin *
14203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin *
22203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin */
23203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
24203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** @file OMX_IndexExt.h - OpenMax IL version 1.1.2
25203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * The OMX_IndexExt header file contains extensions to the definitions
26203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * for both applications and components .
27203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin */
28203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
29203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#ifndef OMX_IndexExt_h
30203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#define OMX_IndexExt_h
31203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
32203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#ifdef __cplusplus
33203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekinextern "C" {
34203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#endif /* __cplusplus */
35203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
36203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/* Each OMX header shall include all required header files to allow the
37203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * header to compile without errors.  The includes below are required
38203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin * for this header file to compile successfully
39203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin */
40203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#include <OMX_Index.h>
41203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
42203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
43203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/** Khronos standard extension indices.
44203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
45203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter GultekinThis enum lists the current Khronos extension indices to OpenMAX IL.
46203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin*/
47203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekintypedef enum OMX_INDEXEXTTYPE {
48203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
49203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    /* Component parameters and configurations */
50203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexExtComponentStartUnused = OMX_IndexKhronosExtensions + 0x00100000,
51203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexConfigCallbackRequest,                 /**< reference: OMX_CONFIG_CALLBACKREQUESTTYPE */
52203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexConfigCommitMode,                      /**< reference: OMX_CONFIG_COMMITMODETYPE */
53203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexConfigCommit,                          /**< reference: OMX_CONFIG_COMMITTYPE */
541aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_IndexConfigAndroidVendorExtension,          /**< reference: OMX_CONFIG_VENDOR_EXTENSIONTYPE */
55203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
56203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    /* Port parameters and configurations */
57203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexExtPortStartUnused = OMX_IndexKhronosExtensions + 0x00200000,
58203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
59203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    /* Audio parameters and configurations */
60203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexExtAudioStartUnused = OMX_IndexKhronosExtensions + 0x00400000,
61c9a8a34e40b4e5ba76ace8879e479ebf5fbca3c5Changwan Ryu    OMX_IndexParamAudioAndroidAc3,                  /**< reference: OMX_AUDIO_PARAM_ANDROID_AC3TYPE */
621a8b0ed985b3767fdd795fb5216014e05b30791bVignesh Venkatasubramanian    OMX_IndexParamAudioAndroidOpus,                 /**< reference: OMX_AUDIO_PARAM_ANDROID_OPUSTYPE */
63e91cd213d439c076051b1fb02c8bc40c11791dbbJean-Michel Trivi    OMX_IndexParamAudioAndroidAacPresentation,      /**< reference: OMX_AUDIO_PARAM_ANDROID_AACPRESENTATIONTYPE */
64806f23de71be2494cfabbe08d11c09606966a5d5Rachad    OMX_IndexParamAudioAndroidEac3,                 /**< reference: OMX_AUDIO_PARAM_ANDROID_EAC3TYPE */
655761a9abdb560b15379501ecf52d5bb01e7cc708Wonsik Kim    OMX_IndexParamAudioProfileQuerySupported,       /**< reference: OMX_AUDIO_PARAM_ANDROID_PROFILETYPE */
6669eaed3663318ca4b7f881c2fa85b59958160ca0Chong Zhang    OMX_IndexExtAudioEndUnused,
67203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
68203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    /* Image parameters and configurations */
69203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexExtImageStartUnused = OMX_IndexKhronosExtensions + 0x00500000,
70203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
71203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    /* Video parameters and configurations */
72203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexExtVideoStartUnused = OMX_IndexKhronosExtensions + 0x00600000,
73203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexParamNalStreamFormatSupported,         /**< reference: OMX_NALSTREAMFORMATTYPE */
74203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexParamNalStreamFormat,                  /**< reference: OMX_NALSTREAMFORMATTYPE */
75203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexParamNalStreamFormatSelect,            /**< reference: OMX_NALSTREAMFORMATTYPE */
76203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexParamVideoVp8,                         /**< reference: OMX_VIDEO_PARAM_VP8TYPE */
77203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexConfigVideoVp8ReferenceFrame,          /**< reference: OMX_VIDEO_VP8REFERENCEFRAMETYPE */
78203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexConfigVideoVp8ReferenceFrameType,      /**< reference: OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE */
795b155b84a24e0c7018e68a70c25de6c806c7ed4dAlex Glaznev    OMX_IndexParamVideoAndroidVp8Encoder,           /**< reference: OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE */
80184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad    OMX_IndexParamVideoHevc,                        /**< reference: OMX_VIDEO_PARAM_HEVCTYPE */
81184077dee460d235c2f9ed3e6ecf9a6df06ae80cRachad    OMX_IndexParamSliceSegments,                    /**< reference: OMX_VIDEO_SLICESEGMENTSTYPE */
82dbadc8459b225acfca672b4301347d805a532fe0Hangyu Kuang    OMX_IndexConfigAndroidIntraRefresh,             /**< reference: OMX_VIDEO_CONFIG_ANDROID_INTRAREFRESHTYPE */
833717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan    OMX_IndexParamAndroidVideoTemporalLayering,     /**< reference: OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE */
843717b164fad9308483fd75eff85fdefb21a9bd12Praveen Chavan    OMX_IndexConfigAndroidVideoTemporalLayering,    /**< reference: OMX_VIDEO_CONFIG_ANDROID_TEMPORALLAYERINGTYPE */
8569eaed3663318ca4b7f881c2fa85b59958160ca0Chong Zhang    OMX_IndexParamMaxFrameDurationForBitrateControl,/**< reference: OMX_PARAM_U32TYPE */
8679d98e22071ec705cbeb32a5ba6872dfdc74cce7Vignesh Venkatasubramanian    OMX_IndexParamVideoVp9,                         /**< reference: OMX_VIDEO_PARAM_VP9TYPE */
8779d98e22071ec705cbeb32a5ba6872dfdc74cce7Vignesh Venkatasubramanian    OMX_IndexParamVideoAndroidVp9Encoder,           /**< reference: OMX_VIDEO_PARAM_ANDROID_VP9ENCODERTYPE */
8869eaed3663318ca4b7f881c2fa85b59958160ca0Chong Zhang    OMX_IndexExtVideoEndUnused,
89203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
90203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    /* Image & Video common configurations */
91203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexExtCommonStartUnused = OMX_IndexKhronosExtensions + 0x00700000,
92203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
93203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    /* Other configurations */
94203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexExtOtherStartUnused = OMX_IndexKhronosExtensions + 0x00800000,
9576d4c5cf733bbc15026611d555eb1497e5ab25d4Lajos Molnar    OMX_IndexConfigAutoFramerateConversion,         /**< reference: OMX_CONFIG_BOOLEANTYPE */
9649bf8f78a8979de8c76265c1c3c3a1f8637e713cRonghua Wu    OMX_IndexConfigPriority,                        /**< reference: OMX_PARAM_U32TYPE */
97a39c205f87c6feebefc4a73043c3b1278373dbd3Ronghua Wu    OMX_IndexConfigOperatingRate,                   /**< reference: OMX_PARAM_U32TYPE in Q16 format for video and in Hz for audio */
981017a1eaa7e47e15b4f834e7d7b91e9cd2d09f35Lajos Molnar    OMX_IndexParamConsumerUsageBits,                /**< reference: OMX_PARAM_U32TYPE */
990c77369428af1e6baaf98a069aa2873bc4d3df1dHangyu Kuang    OMX_IndexConfigLatency,                         /**< reference: OMX_PARAM_U32TYPE */
10069eaed3663318ca4b7f881c2fa85b59958160ca0Chong Zhang    OMX_IndexExtOtherEndUnused,
101203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
102203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    /* Time configurations */
103203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexExtTimeStartUnused = OMX_IndexKhronosExtensions + 0x00900000,
104203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
105203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin    OMX_IndexExtMax = 0x7FFFFFFF
106203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin} OMX_INDEXEXTTYPE;
107203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
1081aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar#define OMX_MAX_STRINGVALUE_SIZE OMX_MAX_STRINGNAME_SIZE
1091aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar#define OMX_MAX_ANDROID_VENDOR_PARAMCOUNT 32
1101aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar
1111aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnartypedef enum OMX_ANDROID_VENDOR_VALUETYPE {
1121aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_AndroidVendorValueInt32 = 0,   /*<< int32_t value */
1131aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_AndroidVendorValueInt64,       /*<< int64_t value */
1141aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_AndroidVendorValueString,      /*<< string value */
1151aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_AndroidVendorValueEndUnused,
1161aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar} OMX_ANDROID_VENDOR_VALUETYPE;
1171aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar
1181aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar/**
1191aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * Structure describing a single value of an Android vendor extension.
1201aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *
1211aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * STRUCTURE MEMBERS:
1221aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *  cKey        : parameter value name.
1231aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *  eValueType  : parameter value type
1241aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *  bSet        : if false, the parameter is not set (for OMX_GetConfig) or is unset (OMX_SetConfig)
1251aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *                if true, the parameter is set to the corresponding value below
1261aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *  nInt64      : int64 value
1271aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *  cString     : string value
1281aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar */
1291aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnartypedef struct OMX_CONFIG_ANDROID_VENDOR_PARAMTYPE {
1301aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_U8 cKey[OMX_MAX_STRINGNAME_SIZE];
1311aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_ANDROID_VENDOR_VALUETYPE eValueType;
1321aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_BOOL bSet;
1331aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    union {
1341aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar        OMX_S32 nInt32;
1351aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar        OMX_S64 nInt64;
1361aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar        OMX_U8 cString[OMX_MAX_STRINGVALUE_SIZE];
1371aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    };
1381aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar} OMX_CONFIG_ANDROID_VENDOR_PARAMTYPE;
1391aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar
1401aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar/**
1411aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * OMX_CONFIG_ANDROID_VENDOR_EXTENSIONTYPE is the structure for an Android vendor extension
1421aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * supported by the component. This structure enumerates the various extension parameters and their
1431aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * values.
1441aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *
1451aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * Android vendor extensions have a name and one or more parameter values - each with a string key -
1461aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * that are set together. The values are exposed to Android applications via a string key that is
1471aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * the concatenation of 'vendor', the extension name and the parameter key, each separated by dot
1481aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * (.), with any trailing '.value' suffix(es) removed (though optionally allowed).
1491aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *
1501aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * Extension names and parameter keys are subject to the following rules:
1511aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   - Each SHALL contain a set of lowercase alphanumeric (underscore allowed) tags separated by
1521aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *     dot (.) or dash (-).
1531aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   - The first character of the first tag, and any tag following a dot SHALL not start with a
1541aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *     digit.
1551aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   - Tags 'value', 'vendor', 'omx' and 'android' (even if trailed and/or followed by any number
1561aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *     of underscores) are prohibited in the extension name.
1571aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   - Tags 'vendor', 'omx' and 'android' (even if trailed and/or followed by any number
1581aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *     of underscores) are prohibited in parameter keys.
1591aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   - The tag 'value' (even if trailed and/or followed by any number
1601aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *     of underscores) is prohibited in parameter keys with the following exception:
1611aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *     the parameter key may be exactly 'value'
1621aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   - The parameter key for extensions with a single parameter value SHALL be 'value'
1631aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   - No two extensions SHALL have the same name
1641aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   - No extension's name SHALL start with another extension's NAME followed by a dot (.)
1651aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   - No two parameters of an extension SHALL have the same key
1661aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *
1671aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * This config can be used with both OMX_GetConfig and OMX_SetConfig. In the OMX_GetConfig
1681aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * case, the caller specifies nIndex and nParamSizeUsed. The component fills in cName,
1691aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * eDir and nParamCount. Additionally, if nParamSizeUsed is not less than nParamCount, the
1701aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * component fills out the parameter values (nParam) with the current values for each parameter
1711aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * of the vendor extension.
1721aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *
1731aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * The value of nIndex goes from 0 to N-1, where N is the number of Android vendor extensions
1741aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * supported by the component. The component does not need to report N as the caller can determine
1751aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * N by enumerating all extensions supported by the component. The component may not support any
1761aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * extensions. If there are no more extensions, OMX_GetParameter returns OMX_ErrorNoMore. The
1771aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * component supplies extensions in the order it wants clients to set them.
1781aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *
1791aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * The component SHALL return OMX_ErrorNone for all cases where nIndex is less than N (specifically
1801aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * even in the case of where nParamCount is greater than nParamSizeUsed).
1811aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *
1821aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * In the OMX_SetConfig case the field nIndex is ignored. If the component supports an Android
1831aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * vendor extension with the name in cName, it SHALL configure the parameter values for that
1841aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * extension according to the parameters in nParam. nParamCount is the number of valid parameters
1851aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * in the nParam array, and nParamSizeUsed is the size of the nParam array. (nParamSizeUsed
1861aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * SHALL be at least nParamCount) Parameters that are part of a vendor extension but are not
1871aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * in the nParam array are assumed to be unset (this is different from not changed).
1881aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * All parameter values SHALL have distinct keys in nParam (the component can assume that this
1891aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * is the case. Otherwise, the actual value for the parameters that are multiply defined can
1901aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * be any of the set values.)
1911aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *
1921aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * Return values in case of OMX_SetConfig:
1931aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   OMX_ErrorUnsupportedIndex: the component does not support the extension specified by cName
1941aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   OMX_ErrorUnsupportedSetting: the component does not support some or any of the parameters
1951aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *       (names) specified in nParam
1961aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *   OMX_ErrorBadParameter: the parameter is invalid (e.g. nParamCount is greater than
1971aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *       nParamSizeUsed, or some parameter value has invalid type)
1981aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *
1991aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar * STRUCTURE MEMBERS:
2001aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *  nSize       : size of the structure in bytes
2011aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *  nVersion    : OMX specification version information
2021aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *  cName       : name of vendor extension
2031aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *  nParamCount : the number of parameter values that are part of this vendor extension
2041aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *  nParamSizeUsed : the size of nParam
2051aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *                (must be at least 1 and at most OMX_MAX_ANDROID_VENDOR_PARAMCOUNT)
2061aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar *  param       : the parameter values
2071aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar */
2081aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnartypedef struct OMX_CONFIG_ANDROID_VENDOR_EXTENSIONTYPE {
2091aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_U32 nSize;
2101aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_VERSIONTYPE nVersion;
2111aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_U32 nIndex;
2121aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_U8  cName[OMX_MAX_STRINGNAME_SIZE];
2131aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_DIRTYPE eDir;
2141aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_U32 nParamCount;
2151aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_U32 nParamSizeUsed;
2161aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar    OMX_CONFIG_ANDROID_VENDOR_PARAMTYPE param[1];
2171aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar} OMX_CONFIG_ANDROID_VENDOR_EXTENSIONTYPE;
2181aeef218c90557b42763f8bf78c1a6bd8c0717d8Lajos Molnar
219203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#ifdef __cplusplus
220203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin}
221203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#endif /* __cplusplus */
222203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin
223203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin#endif /* OMX_IndexExt_h */
224203f89a75a28222b1d9940227d266a3bdd7f99b9Kunter Gultekin/* File EOF */
225