111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/*--------------------------------------------------------------------------
22e1e93b75bc282dafdff24eb3b473af177e3e35bThierry StrudelCopyright (c) 2009-2017, The Linux Foundation. All rights reserved.
311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelRedistribution and use in source and binary forms, with or without
511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelmodification, are permitted provided that the following conditions are met:
611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    * Redistributions of source code must retain the above copyright
711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      notice, this list of conditions and the following disclaimer.
811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    * Redistributions in binary form must reproduce the above copyright
911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      notice, this list of conditions and the following disclaimer in the
1011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      documentation and/or other materials provided with the distribution.
1111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    * Neither the name of The Linux Foundation nor
1211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      the names of its contributors may be used to endorse or promote
1311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      products derived from this software without specific prior written
1411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      permission.
1511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
1611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
1711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelNON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
2011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
2111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
2211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
2311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
2511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
2611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel--------------------------------------------------------------------------*/
2811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#ifndef __OMX_QCOM_EXTENSIONS_H__
2911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define __OMX_QCOM_EXTENSIONS_H__
3011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
3111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#ifdef __cplusplus
3211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelextern "C" {
3311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#endif /* __cplusplus */
3411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
3511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/*============================================================================
3611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*//** @file OMX_QCOMExtns.h
3711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  This header contains constants and type definitions that specify the
3811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  extensions added to the OpenMAX Vendor specific APIs.
3911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
4011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*//*========================================================================*/
4111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
4211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
4311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel///////////////////////////////////////////////////////////////////////////////
4411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel//                             Include Files
4511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel///////////////////////////////////////////////////////////////////////////////
4611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#include "OMX_Core.h"
4711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#include "OMX_Video.h"
4811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
4911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_VIDEO_MAX_HP_LAYERS 6
502601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
512601808ee2992a94c325d05e4065aba60b01840bThierry Strudel/**
522601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * These MACROS used by Camera and Video to decide buffer count.
532601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * This is to avoid mismatch of buffer count between Camera and Video.
542601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * In Meta mode, read this count as buffer count in Camera and Header
552601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * count in Video.
562601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * 1) Number of buffers in Non-DCVS mode.
572601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * 2) DCVS resolution.
582601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * 3) Buffer count when Current resolution is greater than DCVS resolution
592601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * defined in 2)
602601808ee2992a94c325d05e4065aba60b01840bThierry Strudel */
612601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
622601808ee2992a94c325d05e4065aba60b01840bThierry Strudel#define OMX_VIDEO_MIN_CAMERA_BUFFERS 9
632601808ee2992a94c325d05e4065aba60b01840bThierry Strudel#define OMX_VIDEO_ENC_DCVS_RESOLUTION 3840 * 2160
642601808ee2992a94c325d05e4065aba60b01840bThierry Strudel#define OMX_VIDEO_MIN_CAMERA_BUFFERS_DCVS 11
652601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
662601808ee2992a94c325d05e4065aba60b01840bThierry Strudel/**
672601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * This count indicates the number of Ints in the legacy Camera payload
682601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * used for HAL1
692601808ee2992a94c325d05e4065aba60b01840bThierry Strudel */
702601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
712601808ee2992a94c325d05e4065aba60b01840bThierry Strudel#define VIDEO_METADATA_NUM_COMMON_INTS 1
722601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
7311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
7411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This extension is used to register mapping of a virtual
7511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * address to a physical address. This extension is a parameter
7611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * which can be set using the OMX_SetParameter macro. The data
7711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * pointer corresponding to this extension is
7811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_QCOM_MemMapEntry. This parameter is a 'write only'
7911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * parameter (Current value cannot be queried using
8011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_GetParameter macro).
8111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
8211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_EXTN_REGISTER_MMAP     "OMX.QCOM.index.param.register_mmap"
8311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
8411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
8511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the data pointer corresponding to
8611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * the OMX_QCOM_MMAP_REGISTER_EXTN extension. This parameter
8711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * must be set only 'after' populating a port with a buffer
8811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * using OMX_UseBuffer, wherein the data pointer of the buffer
8911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * corresponds to the virtual address as specified in this
9011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * structure.
9111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
9211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelstruct OMX_QCOM_PARAM_MEMMAPENTRYTYPE
9311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
9411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;              /** Size of the structure in bytes */
9511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
9611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;         /**< Port number the structure applies to */
9711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
9811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /**
9911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     * The virtual address of memory block
10011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     */
10111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U64 nVirtualAddress;
10211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
10311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /**
10411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     * The physical address corresponding to the virtual address. The physical
10511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     * address is contiguous for the entire valid range of the virtual
10611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     * address.
10711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     */
10811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U64 nPhysicalAddress;
10911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel};
11011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
11111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define QOMX_VIDEO_IntraRefreshRandom (OMX_VIDEO_IntraRefreshVendorStartUnused + 0)
11211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
11311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* This error event is used for H.264 long-term reference (LTR) encoding.
11411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * When IL client specifies an LTR frame with its identifier via
11511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_QCOM_INDEX_CONFIG_VIDEO_LTRUSE to the encoder, if the specified
11611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * LTR frame can not be located by the encoder in its LTR list, the encoder
11711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * issues this error event to IL client to notify the failure of LTRUse config.
11811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
11911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define QOMX_ErrorLTRUseFailed        (OMX_ErrorVendorStartUnused + 1)
12011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
1212601808ee2992a94c325d05e4065aba60b01840bThierry Strudel/*
1222601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * This rate control will be used for low bitrate applications to get better
1232601808ee2992a94c325d05e4065aba60b01840bThierry Strudel * video quality for a given bitrate.
1242601808ee2992a94c325d05e4065aba60b01840bThierry Strudel */
1252601808ee2992a94c325d05e4065aba60b01840bThierry Strudel#define QOMX_Video_ControlRateMaxBitrate (OMX_Video_ControlRateVendorStartUnused + 1)
1262601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
1272601808ee2992a94c325d05e4065aba60b01840bThierry Strudel#define QOMX_Video_ControlRateMaxBitrateSkipFrames (OMX_Video_ControlRateVendorStartUnused + 2)
1282601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
12911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define QOMX_VIDEO_BUFFERFLAG_BFRAME 0x00100000
13011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
13111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define QOMX_VIDEO_BUFFERFLAG_EOSEQ  0x00200000
13211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
13311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define QOMX_VIDEO_BUFFERFLAG_MBAFF  0x00400000
13411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
13511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define QOMX_VIDEO_BUFFERFLAG_CANCEL 0x00800000
13611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
13711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_PORTDEFN_EXTN   "OMX.QCOM.index.param.portdefn"
13811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* Allowed APIs on the above Index: OMX_GetParameter() and OMX_SetParameter() */
13911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
14011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_QCOMMemoryRegion
14111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
14211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_MemRegionInvalid,
14311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_MemRegionEBI1,
14411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_MemRegionSMI,
14511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_MemRegionMax = 0X7FFFFFFF
14611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOMMemoryRegion;
14711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
14811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_QCOMCacheAttr
14911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
15011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_CacheAttrNone,
15111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_CacheAttrWriteBack,
15211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_CacheAttrWriteThrough,
15311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_CacheAttrMAX = 0X7FFFFFFF
15411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOMCacheAttr;
15511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
15611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOMRectangle
15711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
15811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_S32 x;
15911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_S32 y;
16011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_S32 dx;
16111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_S32 dy;
16211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOMRectangle;
16311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
16411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** OMX_QCOMFramePackingFormat
16511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  * Input or output buffer format
16611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  */
16711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_QCOMFramePackingFormat
16811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
16911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  /* 0 - unspecified
17011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   */
17111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_QCOM_FramePacking_Unspecified,
17211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
17311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  /*  1 - Partial frames may be present OMX IL 1.1.1 Figure 2-10:
17411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   *  Case 1??Each Buffer Filled In Whole or In Part
17511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   */
17611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_QCOM_FramePacking_Arbitrary,
17711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
17811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  /*  2 - Multiple complete frames per buffer (integer number)
17911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   *  OMX IL 1.1.1 Figure 2-11: Case 2�Each Buffer Filled with
18011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   *  Only Complete Frames of Data
18111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   */
18211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_QCOM_FramePacking_CompleteFrames,
18311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
18411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  /*  3 - Only one complete frame per buffer, no partial frame
18511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   *  OMX IL 1.1.1 Figure 2-12: Case 3�Each Buffer Filled with
18611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   *  Only One Frame of Compressed Data. Usually at least one
18711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   *  complete unit of data will be delivered in a buffer for
18811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   *  uncompressed data formats.
18911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   */
19011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_QCOM_FramePacking_OnlyOneCompleteFrame,
19111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
19211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  /*  4 - Only one complete subframe per buffer, no partial subframe
19311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   *  Example: In H264, one complete NAL per buffer, where one frame
19411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   *  can contatin multiple NAL
19511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   */
19611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_QCOM_FramePacking_OnlyOneCompleteSubFrame,
19711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
19811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_QCOM_FramePacking_MAX = 0X7FFFFFFF
19911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOMFramePackingFormat;
20011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
20111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_PARAM_PORTDEFINITIONTYPE {
20211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nSize;           /** Size of the structure in bytes */
20311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_VERSIONTYPE nVersion;/** OMX specification version information */
20411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nPortIndex;    /** Portindex which is extended by this structure */
20511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
20611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** Platform specific memory region EBI1, SMI, etc.,*/
20711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_QCOMMemoryRegion nMemRegion;
20811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
20911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_QCOMCacheAttr nCacheAttr; /** Cache attributes */
21011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
21111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel /** Input or output buffer format */
21211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_U32 nFramePackingFormat;
21311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
21411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_PARAM_PORTDEFINITIONTYPE;
21511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
21611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_VIDEO_PARAM_QPRANGETYPE {
21711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
21811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
21911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
22011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 minQP;
22111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 maxQP;
22211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VIDEO_PARAM_QPRANGETYPE;
22311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
2242601808ee2992a94c325d05e4065aba60b01840bThierry Strudeltypedef struct OMX_QCOM_VIDEO_PARAM_IPB_QPRANGETYPE {
2252601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 nSize;
2262601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_VERSIONTYPE nVersion;
2272601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 nPortIndex;
2282601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 minIQP;
2292601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 maxIQP;
2302601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 minPQP;
2312601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 maxPQP;
2322601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 minBQP;
2332601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 maxBQP;
2342601808ee2992a94c325d05e4065aba60b01840bThierry Strudel} OMX_QCOM_VIDEO_PARAM_IPB_QPRANGETYPE;
2352601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
23611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_PLATFORMPVT_EXTN   "OMX.QCOM.index.param.platformprivate"
23711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** Allowed APIs on the above Index: OMX_SetParameter() */
23811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
23911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE
24011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
24111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /** Enum for PMEM information */
24211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_PLATFORM_PRIVATE_PMEM = 0x1
24311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE;
24411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
24511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** IL client will set the following structure. A failure
24611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  code will be returned if component does not support the
24711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  value provided for 'type'.
24811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
24911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelstruct OMX_QCOM_PLATFORMPRIVATE_EXTN
25011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
25111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;        /** Size of the structure in bytes */
25211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion; /** OMX spec version information */
25311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;  /** Port number on which usebuffer extn is applied */
25411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
25511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /** Type of extensions should match an entry from
25611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE
25711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    */
25811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE type;
25911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel};
26011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
26111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO
26211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
26311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /** pmem file descriptor */
26411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    unsigned long pmem_fd;
26511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /** Offset from pmem device base address */
26611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 offset;
26711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 size;
26811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 mapped_size;
26911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_PTR buffer;
27011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO;
27111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
27211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_PLATFORM_PRIVATE_ENTRY
27311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
27411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /** Entry type */
27511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_PLATFORM_PRIVATE_ENTRY_TYPE type;
27611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
27711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /** Pointer to platform specific entry */
27811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_PTR entry;
27911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}OMX_QCOM_PLATFORM_PRIVATE_ENTRY;
28011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
28111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_PLATFORM_PRIVATE_LIST
28211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
28311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /** Number of entries */
28411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nEntries;
28511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
28611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /** Pointer to array of platform specific entries *
28711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     * Contiguous block of OMX_QCOM_PLATFORM_PRIVATE_ENTRY element
28811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    */
28911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_PLATFORM_PRIVATE_ENTRY* entryList;
29011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}OMX_QCOM_PLATFORM_PRIVATE_LIST;
29111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
29211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_FRAME_PACKING_FORMAT   "OMX.QCOM.index.param.framepackfmt"
29311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* Allowed API call: OMX_GetParameter() */
29411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* IL client can use this index to rerieve the list of frame formats *
29511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * supported by the component */
29611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
29711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_FRAME_PACKINGFORMAT_TYPE {
29811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
29911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
30011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
30111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nIndex;
30211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOMFramePackingFormat eframePackingFormat;
30311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_FRAME_PACKINGFORMAT_TYPE;
30411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
30511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
30611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
30711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Following is the enum for color formats supported on Qualcomm
30811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * MSMs YVU420SemiPlanar color format is not defined in OpenMAX
30911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * 1.1.1 and prior versions of OpenMAX specification.
31011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
31111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
31211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelenum OMX_QCOM_COLOR_FORMATTYPE
31311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
31411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
31511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** YVU420SemiPlanar: YVU planar format, organized with a first
31611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  plane containing Y pixels, and a second plane containing
31711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  interleaved V and U pixels. V and U pixels are sub-sampled
31811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  by a factor of two both horizontally and vertically.
31911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
32011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00,
32111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_COLOR_FormatYVU420PackedSemiPlanar32m4ka,
32211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_COLOR_FormatYUV420PackedSemiPlanar16m2ka,
32311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka,
32411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_COLOR_FORMATYUV420PackedSemiPlanar32m,
32511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_COLOR_FORMATYUV420PackedSemiPlanar32mMultiView,
32611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_COLOR_FORMATYUV420PackedSemiPlanar32mCompressed,
32711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_COLOR_Format32bitRGBA8888,
32811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_COLOR_Format32bitRGBA8888Compressed,
329b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    QOMX_COLOR_FORMATYUV420PackedSemiPlanar32m10bitCompressed,
33011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_COLOR_FormatAndroidOpaque = (OMX_COLOR_FORMATTYPE) OMX_COLOR_FormatVendorStartUnused  + 0x789,
33111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel};
33211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
33311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelenum OMX_QCOM_VIDEO_CODINGTYPE
33411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
33511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/** Codecs support by qualcomm which are not listed in OMX 1.1.x
33611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  spec
33711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *   */
33811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_VIDEO_CodingVC1  = 0x7FA30C00 ,
33911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_VIDEO_CodingWMV9 = 0x7FA30C01,
34011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_CodingDivx = 0x7FA30C02,     /**< Value when coding is Divx */
34111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_CodingSpark = 0x7FA30C03,     /**< Value when coding is Sorenson Spark */
34211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_CodingVp = 0x7FA30C04,
34311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_CodingVp8 = OMX_VIDEO_CodingVP8,   /**< keeping old enum for backwards compatibility*/
34411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_CodingHevc = OMX_VIDEO_CodingHEVC, /**< keeping old enum for backwards compatibility*/
34511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_CodingMVC = 0x7FA30C07,
34611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_CodingVp9 = OMX_VIDEO_CodingVP9,   /**< keeping old enum for backwards compatibility*/
34711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel};
34811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
34911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelenum OMX_QCOM_EXTN_INDEXTYPE
35011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
35111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /** Qcom proprietary extension index list */
35211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
35311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.param.register_mmap" */
35411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexRegmmap = 0x7F000000,
35511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
35611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.param.platformprivate" */
35711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexPlatformPvt = 0x7F000001,
35811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
35911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.param.portdefn" */
36011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexPortDefn = 0x7F000002,
36111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
36211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.param.framepackingformat" */
36311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexPortFramePackFmt = 0x7F000003,
36411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
36511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.Interlaced */
36611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamInterlaced = 0x7F000004,
36711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
36811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.config.interlaceformat */
36911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigInterlaced = 0x7F000005,
37011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
37111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.syntaxhdr" */
37211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexParamVideoSyntaxHdr = 0x7F000006,
37311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
37411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.config.intraperiod" */
37511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexConfigVideoIntraperiod = 0x7F000007,
37611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
37711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.config.randomIntrarefresh" */
37811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexConfigVideoIntraRefresh = 0x7F000008,
37911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
38011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.config.video.TemporalSpatialTradeOff" */
38111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexConfigVideoTemporalSpatialTradeOff = 0x7F000009,
38211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
38311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.video.EncoderMode" */
38411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexParamVideoEncoderMode = 0x7F00000A,
38511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
38611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.Divxtype */
38711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoDivx = 0x7F00000B,
38811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
38911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.Sparktype */
39011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoSpark = 0x7F00000C,
39111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
39211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.Vptype */
39311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoVp = 0x7F00000D,
39411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
39511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexQueryNumberOfVideoDecInstance = 0x7F00000E,
39611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
39711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoSyncFrameDecodingMode = 0x7F00000F,
39811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
39911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoDecoderPictureOrder = 0x7F000010,
40011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
40111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.config.video.FramePackingInfo" */
40211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigVideoFramePackingArrangement = 0x7F000011,
40311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
40411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamConcealMBMapExtraData = 0x7F000012,
40511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
40611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamFrameInfoExtraData = 0x7F000013,
40711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
40811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamInterlaceExtraData = 0x7F000014,
40911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
41011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamH264TimeInfo = 0x7F000015,
41111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
41211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamIndexExtraDataType = 0x7F000016,
41311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
41411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_GoogleAndroidIndexEnableAndroidNativeBuffers = 0x7F000017,
41511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
41611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_GoogleAndroidIndexUseAndroidNativeBuffer = 0x7F000018,
41711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
41811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_GoogleAndroidIndexGetAndroidNativeBufferUsage = 0x7F000019,
41911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
42011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.config.video.QPRange" */
42111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigVideoQPRange = 0x7F00001A,
42211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
42311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.EnableTimeStampReoder"*/
42411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamEnableTimeStampReorder = 0x7F00001B,
42511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
42611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.google.android.index.storeMetaDataInBuffers"*/
42711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoMetaBufferMode = 0x7F00001C,
42811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
42911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.google.android.index.useAndroidNativeBuffer2"*/
43011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_GoogleAndroidIndexUseAndroidNativeBuffer2 = 0x7F00001D,
43111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
43211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.VideoMaxAllowedBitrateCheck"*/
43311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoMaxAllowedBitrateCheck = 0x7F00001E,
43411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
43511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexEnableSliceDeliveryMode = 0x7F00001F,
43611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
43711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.param.video.ExtnUserExtraData" */
43811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexEnableExtnUserData = 0x7F000020,
43911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
44011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.video.EnableSmoothStreaming"*/
44111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamEnableSmoothStreaming = 0x7F000021,
44211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
44311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.video.QPRange" */
44411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoQPRange = 0x7F000022,
44511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
44611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexEnableH263PlusPType = 0x7F000023,
44711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
44811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.video.LTRCountRangeSupported"*/
44911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexParamVideoLTRCountRangeSupported = 0x7F000024,
45011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
45111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.video.LTRMode"*/
45211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexParamVideoLTRMode = 0x7F000025,
45311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
45411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.video.LTRCount"*/
45511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexParamVideoLTRCount = 0x7F000026,
45611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
45711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.config.video.LTRPeriod"*/
45811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexConfigVideoLTRPeriod = 0x7F000027,
45911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
46011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.config.video.LTRUse"*/
46111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexConfigVideoLTRUse = 0x7F000028,
46211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
46311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.config.video.LTRMark"*/
46411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexConfigVideoLTRMark = 0x7F000029,
46511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
46611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* OMX.google.android.index.prependSPSPPSToIDRFrames */
46711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamSequenceHeaderWithIDR = 0x7F00002A,
46811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
46911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamH264AUDelimiter = 0x7F00002B,
47011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
47111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoDownScalar = 0x7F00002C,
47211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
47311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.param.video.FramePackingExtradata" */
47411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoFramePackingExtradata = 0x7F00002D,
47511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
47611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.config.activeregiondetection" */
47711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigActiveRegionDetection = 0x7F00002E,
47811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
47911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.config.activeregiondetectionstatus" */
48011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigActiveRegionDetectionStatus = 0x7F00002F,
48111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
48211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.config.scalingmode" */
48311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigScalingMode = 0x7F000030,
48411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
48511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.config.noisereduction" */
48611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigNoiseReduction = 0x7F000031,
48711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
48811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.config.imageenhancement" */
48911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigImageEnhancement = 0x7F000032,
49011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
49111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* google smooth-streaming support */
49211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoAdaptivePlaybackMode = 0x7F000033,
49311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
49411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* H.264 MVC codec index */
49511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexParamVideoMvc = 0x7F000034,
49611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
49711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.param.video.QPExtradata" */
49811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoQPExtraData = 0x7F000035,
49911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
50011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.param.video.InputBitsInfoExtradata" */
50111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoInputBitsInfoExtraData = 0x7F000036,
50211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
50311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* VP8 Hierarchical P support */
50411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexHierarchicalStructure = 0x7F000037,
50511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
50611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamPerfLevel = 0x7F000038,
50711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
50811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamH264VUITimingInfo = 0x7F000039,
50911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
51011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamPeakBitrate = 0x7F00003A,
51111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
51211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Enable InitialQP index */
51311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_IndexParamVideoInitialQp = 0x7F00003B,
51411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
51511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamSetMVSearchrange = 0x7F00003C,
51611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
51711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigPerfLevel = 0x7F00003D,
51811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
51911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.video.LTRCount"*/
52011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoLTRCount = QOMX_IndexParamVideoLTRCount,
52111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
52211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.config.video.LTRUse"*/
52311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigVideoLTRUse = QOMX_IndexConfigVideoLTRUse,
52411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
52511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.config.video.LTRMark"*/
52611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigVideoLTRMark = QOMX_IndexConfigVideoLTRMark,
52711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
52811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /*"OMX.QCOM.index.param.video.CustomBufferSize"*/
52911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoCustomBufferSize = 0x7F00003E,
53011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
53111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Max Hierarchical P layers */
53211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexMaxHierarchicallayers = 0x7F000041,
53311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
53411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Set Encoder Performance Index */
53511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigVideoVencPerfMode = 0x7F000042,
53611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
53711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Set Hybrid Hier-p layers */
53811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVideoHybridHierpMode = 0x7F000043,
53911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
54011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexFlexibleYUVDescription = 0x7F000044,
54111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
54211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Vpp Hqv Control Type */
54311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVppHqvControl = 0x7F000045,
54411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
54511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Enable VPP */
54611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamEnableVpp = 0x7F000046,
54711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
54811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* MBI statistics mode */
54911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamMBIStatisticsMode = 0x7F000047,
55011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
55111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Set PictureTypeDecode */
55211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigPictureTypeDecode = 0x7F000048,
55311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
55411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigH264EntropyCodingCabac = 0x7F000049,
55511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
55611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QCOM.index.param.video.InputBatch" */
55711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamBatchSize = 0x7F00004A,
55811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
55911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigNumHierPLayers = 0x7F00004B,
56011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
56111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigRectType = 0x7F00004C,
56211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
56311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigBaseLayerId = 0x7F00004E,
56411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
56511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamDriverVersion = 0x7F00004F,
56611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
56711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigQp = 0x7F000050,
56811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
56911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexParamVencAspectRatio = 0x7F000051,
57011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
57111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTIIndexParamVQZipSEIExtraData = 0x7F000052,
57211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
57311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Enable VQZIP SEI NAL type */
57411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTIIndexParamVQZIPSEIType = 0x7F000053,
57511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
57611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTIIndexParamPassInputBufferFd = 0x7F000054,
57711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
57811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Set Prefer-adaptive playback*/
57911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* "OMX.QTI.index.param.video.PreferAdaptivePlayback" */
58011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTIIndexParamVideoPreferAdaptivePlayback = 0x7F000055,
58111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
58211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Set time params */
58311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTIIndexConfigSetTimeData = 0x7F000056,
58411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Force Compressed format for DPB when resolution <=1080p
58511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     * and OPB is cpu_access */
58611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* OMX.QTI.index.param.video.ForceCompressedForDPB */
58711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTIIndexParamForceCompressedForDPB = 0x7F000057,
58811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
58911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Enable ROI info */
59011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTIIndexParamVideoEnableRoiInfo = 0x7F000058,
59111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
59211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Configure ROI info */
59311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTIIndexConfigVideoRoiInfo = 0x7F000059,
59411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
59511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Encoder Low Latency mode */
59611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QcomIndexConfigVideoVencLowLatencyMode = 0x7F00005A,
59711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
59811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Set Low Latency Mode */
59911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTIIndexParamLowLatencyMode = 0x7F00005B,
60011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
60111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Force OPB to UnCompressed mode */
60211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTIIndexParamForceUnCompressedForOPB = 0x7F00005C,
60311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
60411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* OMX.google.android.index.allocateNativeHandle */
60511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_GoogleAndroidIndexAllocateNativeHandle = 0x7F00005D,
60611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
60711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* Configure BLUR resolution for encode */
60811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTIIndexConfigVideoBlurResolution = 0x7F00005E,
6092601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
6102601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    /* QP range for I frame B frame P frame */
6112601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_QcomIndexParamVideoIPBQPRange = 0x7F00005F,
6122601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
6132601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    /* Enable client extradata */
6142601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_QTIIndexParamVideoClientExtradata = 0x7F000060,
6152601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
6162601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    /* H264 transform 8x8 mode */
6172601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_QcomIndexConfigH264Transform8x8 = 0x7F000061,
618fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel
619fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel    /*"OMX.google.android.index.describeColorAspects"*/
620fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel    OMX_QTIIndexConfigDescribeColorAspects = 0x7F000062,
621fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel
622fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel    OMX_QTIIndexParamVUIExtraDataExtraData = 0x7F000063,
623fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel
624fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel    OMX_QTIIndexParamMPEG2SeqDispExtraData = 0x7F000064,
625fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel
626fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel    OMX_QTIIndexParamVC1SeqDispExtraData = 0x7F000065,
627fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel
628fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel    OMX_QTIIndexParamVPXColorSpaceExtraData = 0x7F000066,
629fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel
630fa202b9b18f17f7835fd602db5fff530e61112b4Thierry Strudel    /*"OMX.google.android.index.describeHDRStaticInfo"*/
631fa202b9b18f17f7835fd602db5fff530e61112b4Thierry Strudel    OMX_QTIIndexConfigDescribeHDRColorInfo = 0x7F000067,
632fa202b9b18f17f7835fd602db5fff530e61112b4Thierry Strudel
633fa202b9b18f17f7835fd602db5fff530e61112b4Thierry Strudel    /* Configure to disable PQ*/
634fa202b9b18f17f7835fd602db5fff530e61112b4Thierry Strudel    OMX_QTIIndexParamDisablePQ = 0x7F000068,
635af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel
636af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel    /* Dither control for 10bit */
637af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel    OMX_QTIIndexParamDitherControl = 0x7F000069,
638af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel
639a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel    /* Suggest how big Iframe sizes should be */
640a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel    OMX_QTIIndexParamIframeSizeType = 0x7F000070,
64111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel};
64211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
64311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
64411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* This is custom extension to configure Low Latency Mode.
64511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*
64611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* STRUCT MEMBERS
64711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*
64811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nSize         : Size of Structure in bytes
64911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nVersion      : OpenMAX IL specification version information
65011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* bLowLatencyMode   : Enable/Disable Low Latency mode
65111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*/
65211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
65311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_EXTNINDEX_VIDEO_VENC_LOW_LATENCY_MODE
65411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
65511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;
65611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;
65711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_BOOL bLowLatencyMode;
65811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_EXTNINDEX_VIDEO_VENC_LOW_LATENCY_MODE;
65911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
66011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
66111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* This is custom extension to configure Encoder Aspect Ratio.
66211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*
66311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* STRUCT MEMBERS
66411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*
66511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nSize         : Size of Structure in bytes
66611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nVersion      : OpenMAX IL specification version information
66711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nSARWidth     : Horizontal aspect size
66811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nSARHeight    : Vertical aspect size
66911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*/
67011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
67111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_EXTNINDEX_VIDEO_VENC_SAR
67211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
67311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;
67411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;
67511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSARWidth;
67611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSARHeight;
67711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_EXTNINDEX_VIDEO_VENC_SAR;
67811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
67911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
68011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* This is custom extension to configure Hier-p layers.
68111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* This mode configures Hier-p layers dynamically.
68211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*
68311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* STRUCT MEMBERS
68411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*
68511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nSize         : Size of Structure in bytes
68611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nVersion      : OpenMAX IL specification version information
68711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nNumHierLayers: Set the number of Hier-p layers for the session
68811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*                  - This should be less than the MAX Hier-P
68911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*                    layers set for the session.
69011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*/
69111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
69211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_EXTNINDEX_VIDEO_HIER_P_LAYERS {
69311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;
69411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;
69511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nNumHierLayers;
69611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_EXTNINDEX_VIDEO_HIER_P_LAYERS;
69711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
69811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
69911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
70011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* This is custom extension to configure Hybrid Hier-p settings.
70111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* This mode is different from enabling Hier-p mode. This
70211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* property enables Hier-p encoding with LTR referencing in each
70311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* sub-GOP.
70411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*
70511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* STRUCT MEMBERS
70611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*
70711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nSize         : Size of Structure in bytes
70811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nVersion      : OpenMAX IL specification version information
70911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nKeyFrameInterval : Indicates the I frame interval
71011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nHpLayers     : Set the number of Hier-p layers for the session
71111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*                  - This should be <= 6. (1 Base layer +
71211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*                    5 Enhancement layers)
71311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nTemporalLayerBitrateRatio[OMX_VIDEO_MAX_HP_LAYERS] : Bitrate to
71411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*                    be set for each enhancement layer
71511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nMinQuantizer  : minimum session QP
71611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel* nMaxQuantizer  : Maximun session QP
71711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*/
71811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
71911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE {
72011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;
72111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;
72211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nKeyFrameInterval;
72311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nTemporalLayerBitrateRatio[OMX_VIDEO_MAX_HP_LAYERS];
72411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nMinQuantizer;
72511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nMaxQuantizer;
72611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nHpLayers;
72711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE;
72811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
72911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
73011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Encoder Performance Mode.  This structure is used to set
73111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * performance mode or power save mode when encoding. The search
73211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * range is modified to save power or improve quality.
73311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
73411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STRUCT MEMBERS:
73511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_U32 nPerfMode  : Performance mode:
73611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                                      1: MAX_QUALITY
73711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                                      2: POWER_SAVE
73811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
73911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
74011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_EXTNINDEX_VIDEO_PERFMODE {
74111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
74211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
74311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPerfMode;
74411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_EXTNINDEX_VIDEO_PERFMODE;
74511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
74611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
74711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Initial QP parameter.  This structure is used to enable
74811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * vendor specific extension to let client enable setting
74911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * initial QP values to I P B Frames
75011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
75111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STRUCT MEMBERS:
75211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize              : Size of Structure in bytes
75311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion           : OpenMAX IL specification version information
75411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex         : Index of the port to which this structure applies
75511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  OMX_U32 nQpI       : First Iframe QP
75611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  OMX_U32 nQpP       : First Pframe QP
75711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  OMX_U32 nQpB       : First Bframe QP
75811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  OMX_U32 bEnableInitQp : Bit field indicating which frame type(s) shall
75911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                             use the specified initial QP.
76011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                          Bit 0: Enable initial QP for I/IDR
76111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                                 and use value specified in nInitQpI
76211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                          Bit 1: Enable initial QP for P
76311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                                 and use value specified in nInitQpP
76411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                          Bit 2: Enable initial QP for B
76511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                                 and use value specified in nInitQpB
76611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
76711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
76811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_EXTNINDEX_VIDEO_INITIALQP {
76911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
77011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
77111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
77211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nQpI;
77311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nQpP;
77411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nQpB;
77511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 bEnableInitQp;
77611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_EXTNINDEX_VIDEO_INITIALQP;
77711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
77811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
77911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Extension index parameter.  This structure is used to enable
78011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * vendor specific extension on input/output port and
78111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to pass the required flags and data, if any.
78211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * The format of flags and data being passed is known to
78311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * the client and component apriori.
78411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
78511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STRUCT MEMBERS:
78611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize              : Size of Structure plus pData size
78711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion           : OMX specification version information
78811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex         : Indicates which port to set
78911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  bEnable            : Extension index enable (1) or disable (0)
79011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nFlags             : Extension index flags, if any
79111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nDataSize          : Size of the extension index data to follow
79211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  pData              : Extension index data, if present.
79311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
79411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_EXTNINDEX_PARAMTYPE {
79511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
79611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
79711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
79811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bEnable;
79911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nFlags;
80011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nDataSize;
80111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_PTR pData;
80211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_EXTNINDEX_PARAMTYPE;
80311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
80411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
80511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Range index parameter.  This structure is used to enable
80611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * vendor specific extension on input/output port and
80711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to pass the required minimum and maximum values
80811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
80911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STRUCT MEMBERS:
81011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize              : Size of Structure in bytes
81111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion           : OpenMAX IL specification version information
81211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex         : Index of the port to which this structure applies
81311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nMin               : Minimum value
81411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nMax               : Maximum value
81511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSteSize           : Step size
81611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
81711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_EXTNINDEX_RANGETYPE {
81811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
81911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
82011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
82111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32 nMin;
82211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32 nMax;
82311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32 nStepSize;
82411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_EXTNINDEX_RANGETYPE;
82511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
82611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
82711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *   Specifies LTR mode types.
82811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
82911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_LTRMODETYPE
83011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
83111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_LTRMode_Disable    = 0x0, /**< LTR encoding is disabled */
83211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_LTRMode_Manual     = 0x1, /**< In this mode, IL client configures
83311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                           **  the encoder the LTR count and manually
83411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                           **  controls the marking and use of LTR
83511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                           **  frames during video encoding.
83611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                           */
83711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_LTRMode_Auto       = 0x2, /**< In this mode, IL client configures
83811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                           **  the encoder the LTR count and LTR
83911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                           **  period. The encoder marks LTR frames
84011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                           **  automatically based on the LTR period
84111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                           **  during video encoding. IL client controls
84211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                           **  the use of LTR frames.
84311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                           */
84411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_LTRMode_MAX    = 0x7FFFFFFF /** Maximum LTR Mode type */
84511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_LTRMODETYPE;
84611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
84711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
84811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * LTR mode index parameter.  This structure is used
84911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to enable vendor specific extension on output port
85011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to pass the LTR mode information.
85111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
85211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STRUCT MEMBERS:
85311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize              : Size of Structure in bytes
85411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion           : OpenMAX IL specification version information
85511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex         : Index of the port to which this structure applies
85611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  eLTRMode           : Specifies the LTR mode used in encoder
85711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
85811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_PARAM_LTRMODE_TYPE {
85911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
86011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
86111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
86211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_LTRMODETYPE eLTRMode;
86311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_PARAM_LTRMODE_TYPE;
86411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
86511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
86611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * LTR count index parameter.  This structure is used
86711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to enable vendor specific extension on output port
86811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to pass the LTR count information.
86911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
87011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STRUCT MEMBERS:
87111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize              : Size of Structure in bytes
87211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion           : OpenMAX IL specification version information
87311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex         : Index of the port to which this structure applies
87411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nCount             : Specifies the number of LTR frames stored in the
87511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                       encoder component
87611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
87711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_PARAM_LTRCOUNT_TYPE {
87811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
87911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
88011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
88111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nCount;
88211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_PARAM_LTRCOUNT_TYPE;
88311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
88411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
88511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
88611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This should be used with OMX_QcomIndexParamVideoLTRCount extension.
88711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
88811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef QOMX_VIDEO_PARAM_LTRCOUNT_TYPE OMX_QCOM_VIDEO_PARAM_LTRCOUNT_TYPE;
88911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
89011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
89111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * LTR period index parameter.  This structure is used
89211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to enable vendor specific extension on output port
89311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to pass the LTR period information.
89411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
89511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STRUCT MEMBERS:
89611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize              : Size of Structure in bytes
89711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion           : OpenMAX IL specification version information
89811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex         : Index of the port to which this structure applies
89911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nFrames            : Specifies the number of frames between two consecutive
90011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                       LTR frames.
90111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
90211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE {
90311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
90411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
90511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
90611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nFrames;
90711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE;
90811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
90911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
91011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Marks the next encoded frame as an LTR frame.
91111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STRUCT MEMBERS:
91211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize              : Size of Structure in bytes
91311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion           : OpenMAX IL specification version information
91411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex         : Index of the port to which this structure applies
91511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nID                : Specifies the identifier of the LTR frame to be marked
91611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                       as reference frame for encoding subsequent frames.
91711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
91811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_CONFIG_LTRMARK_TYPE {
91911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
92011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
92111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
92211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nID;
92311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_CONFIG_LTRMARK_TYPE;
92411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
92511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
92611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This should be used with OMX_QcomIndexConfigVideoLTRMark extension.
92711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
92811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef QOMX_VIDEO_CONFIG_LTRMARK_TYPE OMX_QCOM_VIDEO_CONFIG_LTRMARK_TYPE;
92911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
93011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
93111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Specifies an LTR frame to encode subsequent frames.
93211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STRUCT MEMBERS:
93311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize              : Size of Structure in bytes
93411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion           : OpenMAX IL specification version information
93511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex         : Index of the port to which this structure applies
93611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nID                : Specifies the identifier of the LTR frame to be used
93711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                         as reference frame for encoding subsequent frames.
93811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nFrames            : Specifies the number of subsequent frames to be
93911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                         encoded using the LTR frame with its identifier
94011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                         nID as reference frame. Short-term reference frames
94111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                         will be used thereafter. The value of 0xFFFFFFFF
94211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                         indicates that all subsequent frames will be
94311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                         encodedusing this LTR frame as reference frame.
94411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
94511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_CONFIG_LTRUSE_TYPE {
94611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
94711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
94811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
94911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nID;
95011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nFrames;
95111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_CONFIG_LTRUSE_TYPE;
95211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
95311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
95411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This should be used with OMX_QcomIndexConfigVideoLTRUse extension.
95511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
95611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef QOMX_VIDEO_CONFIG_LTRUSE_TYPE OMX_QCOM_VIDEO_CONFIG_LTRUSE_TYPE;
95711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
95811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
95911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Enumeration used to define the video encoder modes
96011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
96111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * ENUMS:
96211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  EncoderModeDefault : Default video recording mode.
96311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                       All encoder settings made through
96411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                       OMX_SetParameter/OMX_SetConfig are applied. No
96511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                       parameter is overridden.
96611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  EncoderModeMMS : Video recording mode for MMS (Multimedia Messaging
96711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                   Service). This mode is similar to EncoderModeDefault
96811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                   except that here the Rate control mode is overridden
96911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                   internally and set as a variant of variable bitrate with
97011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                   variable frame rate. After this mode is set if the IL
97111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                   client tries to set OMX_VIDEO_CONTROLRATETYPE via
97211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                   OMX_IndexParamVideoBitrate that would be rejected. For
97311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                   this, client should set mode back to EncoderModeDefault
97411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *                   first and then change OMX_VIDEO_CONTROLRATETYPE.
97511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
97611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_ENCODERMODETYPE
97711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
97811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_EncoderModeDefault        = 0x00,
97911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_EncoderModeMMS            = 0x01,
98011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_EncoderModeMax            = 0x7FFFFFFF
98111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_ENCODERMODETYPE;
98211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
98311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
98411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure is used to set the video encoder mode.
98511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
98611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STRUCT MEMBERS:
98711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize      : Size of the structure in bytes
98811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion   : OMX specification version info
98911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex : Port that this structure applies to
99011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nMode : defines the video encoder mode
99111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
99211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_PARAM_ENCODERMODETYPE {
99311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
99411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
99511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
99611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_ENCODERMODETYPE nMode;
99711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_PARAM_ENCODERMODETYPE;
99811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
99911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
100011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding to the
100111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * QOMX_VIDEO_SYNTAXHDRTYPE extension. This parameter can be queried
100211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * during the loaded state.
100311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
100411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
100511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_SYNTAXHDRTYPE
100611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
100711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;           /** Size of the structure in bytes */
100811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
100911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
101011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nBytes;          /** The number of bytes filled in to the buffer */
101111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U8 data[1];          /** Buffer to store the header information */
101211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_SYNTAXHDRTYPE;
101311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
101411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
101511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding to the
101611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * QOMX_VIDEO_TEMPORALSPATIALTYPE extension. This parameter can be set
101711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * dynamically during any state except the state invalid.  This is primarily
101811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * used for setting MaxQP from the application.  This is set on the out port.
101911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
102011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
102111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_TEMPORALSPATIALTYPE
102211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
102311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;           /** Size of the structure in bytes */
102411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
102511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
102611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nTSFactor;       /** Temoral spatial tradeoff factor value in 0-100 */
102711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_TEMPORALSPATIALTYPE;
102811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
102911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
103011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding to the
103111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_QCOM_VIDEO_CONFIG_INTRAPERIODTYPE extension. This parameter can be set
103211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * dynamically during any state except the state invalid.  This is set on the out port.
103311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
103411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
103511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_INTRAPERIODTYPE
103611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
103711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;           /** Size of the structure in bytes */
103811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
103911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
104011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nIDRPeriod;      /** This specifies coding a frame as IDR after every nPFrames
104111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                of intra frames. If this parameter is set to 0, only the
104211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                first frame of the encode session is an IDR frame. This
104311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                field is ignored for non-AVC codecs and is used only for
104411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                                codecs that support IDR Period */
104511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nPFrames;         /** The number of "P" frames between two "I" frames */
104611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nBFrames;         /** The number of "B" frames between two "I" frames */
104711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_INTRAPERIODTYPE;
104811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
104911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
105011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding to the
105111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE extension. This parameter can be set
105211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * dynamically during any state except the state invalid. This is used for the buffer negotiation
105311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * with other clients.  This is set on the out port.
105411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
105511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE
105611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
105711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;            /** Size of the structure in bytes */
105811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion; /** OMX specification version information */
105911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nPortIndex;       /** Portindex which is extended by this structure */
106011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nBufferOccupancy; /** The number of bytes to be set for the buffer occupancy */
106111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VIDEO_CONFIG_ULBUFFEROCCUPANCYTYPE;
106211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
106311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
106411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding to the
106511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE extension. This parameter can be set
106611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * dynamically during any state except the state invalid. This is primarily used for the dynamic/random
106711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * intrarefresh.  This is set on the out port.
106811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
106911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE
107011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
107111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;           /** Size of the structure in bytes */
107211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
107311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
107411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nRirMBs;         /** The number of MBs to be set for intrarefresh */
107511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VIDEO_CONFIG_RANDOMINTRAREFRESHTYPE;
107611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
107711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
107811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
107911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding to the
108011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_QCOM_VIDEO_CONFIG_QPRANGE extension. This parameter can be set
108111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * dynamically during any state except the state invalid. This is primarily
108211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * used for the min/max QP to be set from the application.  This
108311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * is set on the out port.
108411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
108511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_VIDEO_CONFIG_QPRANGE
108611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
108711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;           /** Size of the structure in bytes */
108811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
108911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
109011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nMinQP;          /** The number for minimum quantization parameter */
109111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nMaxQP;          /** The number for maximum quantization parameter */
109211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VIDEO_CONFIG_QPRANGE;
109311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
109411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
109511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters for the
109611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_QcomIndexParamH264AUDelimiter extension.  It enables/disables
109711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * the AU delimiters in the H264 stream, which is used by WFD.
109811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
109911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_VIDEO_CONFIG_H264_AUD
110011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
110111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;           /** Size of the structure in bytes */
110211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
110311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_BOOL bEnable;        /** Enable/disable the setting */
110411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VIDEO_CONFIG_H264_AUD;
110511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
110611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_PERF_LEVEL
110711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
110811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_PerfLevelNominal,
110911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_PerfLevelTurbo
111011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_PERF_LEVEL;
111111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
111211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
111311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding
111411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to OMX_QcomIndexParamPerfLevel extension. It will set
111511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * the performance mode specified as QOMX_VIDEO_PERF_LEVEL.
111611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
111711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_VIDEO_PARAM_PERF_LEVEL {
111811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;                      /** Size of the structure in bytes */
111911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;           /** OMX specification version information */
112011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_PERF_LEVEL ePerfLevel;   /** Performance level */
112111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VIDEO_PARAM_PERF_LEVEL;
112211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
112311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
112411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding
112511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to OMX_QcomIndexConfigPerfLevel extension. It will set
112611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * the performance mode specified as QOMX_VIDEO_PERF_LEVEL.
112711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
112811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL {
112911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;                      /** Size of the structure in bytes */
113011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;           /** OMX specification version information */
113111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_PERF_LEVEL ePerfLevel;   /** Performance level */
113211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL;
113311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
113411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_PICTURE_TYPE_DECODE
113511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
113611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_PictypeDecode_IPB,
113711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_PictypeDecode_I
113811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_PICTURE_TYPE_DECODE;
113911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
114011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
114111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding
114211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to OMX_QcomIndexConfigPictureTypeDecode extension. It
114311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * will set the picture type decode specified by eDecodeType.
114411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
114511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_VIDEO_CONFIG_PICTURE_TYPE_DECODE {
114611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;                      /** Size of the structure in bytes */
114711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;           /** OMX specification version information */
114811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_PICTURE_TYPE_DECODE eDecodeType;   /** Decode type */
114911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VIDEO_CONFIG_PICTURE_TYPE_DECODE;
115011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
115111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
115211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding
115311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to OMX_QcomIndexParamH264VUITimingInfo extension. It
115411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * will enable/disable the VUI timing info.
115511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
115611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO {
115711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;              /** Size of the structure in bytes */
115811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;   /** OMX specification version information */
115911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bEnable;           /** Enable/disable the setting */
116011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO;
116111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
116211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
116311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding
116411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to OMX_QcomIndexParamVQZIPSEIType extension. It
116511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * will enable/disable the VQZIP SEI info.
116611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
116711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QTI_VIDEO_PARAM_VQZIP_SEI_TYPE {
116811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;              /** Size of the structure in bytes */
116911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;   /** OMX specification version information */
117011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bEnable;           /** Enable/disable the setting */
117111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QTI_VIDEO_PARAM_VQZIP_SEI_TYPE;
117211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
117311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
117411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding
117511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to OMX_QcomIndexParamPeakBitrate extension. It will
117611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * set the peak bitrate specified by nPeakBitrate.
117711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
117811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE {
117911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;              /** Size of the structure in bytes */
118011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;   /** OMX specification version information */
118111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPeakBitrate;       /** Peak bitrate value */
118211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE;
118311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
118411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
118511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding
118611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to OMX_QTIIndexParamForceCompressedForDPB extension. Enabling
118711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * this extension will force the split mode DPB(compressed)/OPB(Linear)
118811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * for all resolutions.On some chipsets preferred mode would be combined
118911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Linear for both DPB/OPB to save memory. For example on 8996 preferred mode
119011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * would be combined linear for resolutions <= 1080p .
119111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Enabling this might save power but with the cost
119211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * of increased memory i.e almost double the number on output YUV buffers.
119311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
119411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QTI_VIDEO_PARAM_FORCE_COMPRESSED_FOR_DPB_TYPE {
119511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;              /** Size of the structure in bytes */
119611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;   /** OMX specification version information */
119711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bEnable;           /** Enable/disable the setting */
119811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QTI_VIDEO_PARAM_FORCE_COMPRESSED_FOR_DPB_TYPE;
119911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
120011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
120111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding
120211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * to OMX_QTIIndexParamForceUnCompressedForOPB extension. Enabling this
120311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * extension will force the OPB to be linear for the current video session.
120411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * If this property is not set, then the OPB will be set to linear or compressed
120511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * based on resolution selected and/or if cpu access is requested on the
120611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OPB buffer.
120711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
120811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QTI_VIDEO_PARAM_FORCE_UNCOMPRESSED_FOR_OPB_TYPE {
120911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;              /** Sizeo f the structure in bytes */
121011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;   /** OMX specification version information */
121111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bEnable;           /** Enable/disable the setting */
121211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QTI_VIDEO_PARAM_FORCE_UNCOMPRESSED_FOR_OPB_TYPE;
121311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
121411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_VENDOR_EXTRADATATYPE  {
121511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
121611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nDataSize;
121711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U8  *pData;     // cdata (codec_data/extradata)
121811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_VENDOR_EXTRADATATYPE;
121911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
122011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
122111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure describes the parameters corresponding to the
122211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_VENDOR_VIDEOFRAMERATE extension. This parameter can be set
122311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * dynamically during any state except the state invalid. This is
122411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * used for frame rate to be set from the application. This
122511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * is set on the in port.
122611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
122711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_VENDOR_VIDEOFRAMERATE  {
122811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;           /** Size of the structure in bytes */
122911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;/** OMX specification version information */
123011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nPortIndex;      /** Portindex which is extended by this structure */
123111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nFps;            /** Frame rate value */
123211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_BOOL bEnabled;       /** Flag to enable or disable client's frame rate value */
123311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_VENDOR_VIDEOFRAMERATE;
123411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
123511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_INDEXVENDORTYPE {
123611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_IndexVendorFileReadInputFilename = 0xFF000001,
123711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_IndexVendorParser3gpInputFilename = 0xFF000002,
123811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_IndexVendorVideoExtraData = 0xFF000003,
123911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_IndexVendorAudioExtraData = 0xFF000004,
124011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_IndexVendorVideoFrameRate = 0xFF000005,
124111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_INDEXVENDORTYPE;
124211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
124311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_QCOM_VC1RESOLUTIONTYPE
124411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
124511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOM_VC1_PICTURE_RES_1x1,
124611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOM_VC1_PICTURE_RES_2x1,
124711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOM_VC1_PICTURE_RES_1x2,
124811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOM_VC1_PICTURE_RES_2x2
124911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VC1RESOLUTIONTYPE;
125011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
125111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_QCOM_INTERLACETYPE
125211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
125311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_InterlaceFrameProgressive,
125411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_InterlaceInterleaveFrameTopFieldFirst,
125511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_InterlaceInterleaveFrameBottomFieldFirst,
125611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_InterlaceFrameTopFieldFirst,
125711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_InterlaceFrameBottomFieldFirst,
125811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_InterlaceFieldTop,
125911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_InterlaceFieldBottom
126011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}OMX_QCOM_INTERLACETYPE;
126111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
126211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_PARAM_VIDEO_INTERLACETYPE
126311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
126411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;           /** Size of the structure in bytes */
126511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;/** OMX specification version information */
126611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;    /** Portindex which is extended by this structure */
126711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bInterlace;  /** Interlace content **/
126811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}OMX_QCOM_PARAM_VIDEO_INTERLACETYPE;
126911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
127011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_CONFIG_INTERLACETYPE
127111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
127211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
127311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
127411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
127511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nIndex;
127611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QCOM_INTERLACETYPE eInterlaceType;
127711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}OMX_QCOM_CONFIG_INTERLACETYPE;
127811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
127911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define MAX_PAN_SCAN_WINDOWS 4
128011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
128111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_PANSCAN
128211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
128311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 numWindows;
128411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOMRectangle window[MAX_PAN_SCAN_WINDOWS];
128511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_PANSCAN;
128611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
128711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_ASPECT_RATIO
128811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
128911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 aspectRatioX;
129011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 aspectRatioY;
129111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_ASPECT_RATIO;
129211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
129311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_DISPLAY_ASPECT_RATIO
129411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
129511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 displayVerticalSize;
129611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 displayHorizontalSize;
129711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_DISPLAY_ASPECT_RATIO;
129811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
129911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_FRAME_PACK_ARRANGEMENT
130011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
130111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 nSize;
130211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_VERSIONTYPE nVersion;
130311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 nPortIndex;
130411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 id;
130511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 cancel_flag;
130611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 type;
130711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 quincunx_sampling_flag;
130811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 content_interpretation_type;
130911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 spatial_flipping_flag;
131011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 frame0_flipped_flag;
131111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 field_views_flag;
131211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 current_frame_is_frame0_flag;
131311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 frame0_self_contained_flag;
131411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 frame1_self_contained_flag;
131511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 frame0_grid_position_x;
131611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 frame0_grid_position_y;
131711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 frame1_grid_position_x;
131811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 frame1_grid_position_y;
131911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 reserved_byte;
132011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 repetition_period;
132111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_U32 extension_flag;
132211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_FRAME_PACK_ARRANGEMENT;
132311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
132411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_EXTRADATA_QP
132511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
132611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32        nQP;
132711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_EXTRADATA_QP;
132811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
132911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_EXTRADATA_BITS_INFO
133011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
133111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 header_bits;
133211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 frame_bits;
133311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_EXTRADATA_BITS_INFO;
133411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
133511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_EXTRADATA_USERDATA {
133611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 type;
133711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 data[1];
133811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_EXTRADATA_USERDATA;
133911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
134011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_EXTRADATA_FRAMEINFO
134111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
134211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   // common frame meta data. interlace related info removed
134311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VIDEO_PICTURETYPE  ePicType;
134411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOM_INTERLACETYPE interlaceType;
134511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOM_PANSCAN       panScan;
134611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOM_ASPECT_RATIO  aspectRatio;
134711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOM_DISPLAY_ASPECT_RATIO displayAspectRatio;
134811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32                nConcealedMacroblocks;
1349a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel   OMX_U32                nRecoverySeiFlag;
135011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32                nFrameRate;
135111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_TICKS              nTimeStamp;
135211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_EXTRADATA_FRAMEINFO;
135311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
135411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_EXTRADATA_FRAMEDIMENSION
135511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
135611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   /** Frame Dimensions added to each YUV buffer */
135711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32   nDecWidth;  /** Width  rounded to multiple of 16 */
135811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32   nDecHeight; /** Height rounded to multiple of 16 */
135911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32   nActualWidth; /** Actual Frame Width */
136011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32   nActualHeight; /** Actual Frame Height */
136111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
136211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_EXTRADATA_FRAMEDIMENSION;
136311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
136411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_H264EXTRADATA
136511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
136611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U64 seiTimeStamp;
136711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_H264EXTRADATA;
136811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
136911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_VC1EXTRADATA
137011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
137111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32                     nVC1RangeY;
137211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32                     nVC1RangeUV;
137311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOM_VC1RESOLUTIONTYPE eVC1PicResolution;
137411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_VC1EXTRADATA;
137511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
137611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef union OMX_QCOM_EXTRADATA_CODEC_DATA
137711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
137811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOM_H264EXTRADATA h264ExtraData;
137911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_QCOM_VC1EXTRADATA vc1ExtraData;
138011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_EXTRADATA_CODEC_DATA;
138111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
138211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_EXTRADATA_MBINFO
138311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
138411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nFormat;
138511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nDataSize;
138611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U8  data[0];
138711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_EXTRADATA_MBINFO;
138811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
138911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QCOM_EXTRADATA_VQZIPSEI {
139011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
139111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U8 data[0];
139211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_EXTRADATA_VQZIPSEI;
139311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
139411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QTI_VIDEO_PARAM_ENABLE_ROIINFO {
139511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32         nSize;
139611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
139711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32         nPortIndex;
139811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL        bEnableRoiInfo;
139911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QTI_VIDEO_PARAM_ENABLE_ROIINFO;
140011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
140111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QTI_VIDEO_CONFIG_ROIINFO {
140211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32         nSize;
140311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
140411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32         nPortIndex;
140511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32         nUpperQpOffset;
140611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32         nLowerQpOffset;
140711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL        bUseRoiInfo;
140811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32         nRoiMBInfoSize;
140911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_PTR         pRoiMBInfo;
141011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QTI_VIDEO_CONFIG_ROIINFO;
141111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
141211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_QTI_VIDEO_BLUR_RESOLUTION {
141311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    BLUR_RESOL_DISABLED = 0,
141411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    BLUR_RESOL_240      = 1,
141511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    BLUR_RESOL_480      = 2,
141611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    BLUR_RESOL_720      = 3,
141711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    BLUR_RESOL_1080     = 4,
141811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QTI_VIDEO_BLUR_RESOLUTION;
141911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
142011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QTI_VIDEO_CONFIG_BLURINFO {
142111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32         nSize;
142211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
142311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32         nPortIndex;
142411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QTI_VIDEO_BLUR_RESOLUTION eTargetResol;
142511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QTI_VIDEO_CONFIG_BLURINFO;
142611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
142711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_QCOM_EXTRADATATYPE
142811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
142911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataFrameInfo =               0x7F000001,
143011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataH264 =                    0x7F000002,
143111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataVC1 =                     0x7F000003,
143211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataFrameDimension =          0x7F000004,
143311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataVideoEncoderSliceInfo =   0x7F000005,
143411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataConcealMB =               0x7F000006,
143511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataInterlaceFormat =         0x7F000007,
143611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataPortDef =                 0x7F000008,
143711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataMP2ExtnData =             0x7F000009,
143811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataMP2UserData =             0x7F00000a,
143911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataVideoLTRInfo =            0x7F00000b,
144011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataFramePackingArrangement = 0x7F00000c,
144111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataQP =                      0x7F00000d,
144211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataInputBitsInfo =           0x7F00000e,
144311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataVideoEncoderMBInfo =      0x7F00000f,
144411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_ExtraDataVQZipSEI  =               0x7F000010,
1445fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel    OMX_ExtraDataDisplayColourSEI =        0x7F000011,
1446fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel    OMX_ExtraDataLightLevelSEI =           0x7F000012,
1447fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel    OMX_ExtraDataEncoderOverrideQPInfo =   0x7F000013,
144811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QCOM_EXTRADATATYPE;
144911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
145011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct  OMX_STREAMINTERLACEFORMATTYPE {
145111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
145211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
145311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
145411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bInterlaceFormat;
145511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nInterlaceFormats;
145611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_STREAMINTERLACEFORMAT;
145711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
145811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_INTERLACETYPE
145911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
146011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_InterlaceFrameProgressive,
146111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_InterlaceInterleaveFrameTopFieldFirst,
146211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_InterlaceInterleaveFrameBottomFieldFirst,
146311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_InterlaceFrameTopFieldFirst,
146411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_InterlaceFrameBottomFieldFirst
146511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_INTERLACES;
146611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
1467a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudeltypedef enum QOMX_VIDEO_RECOVERYSEITYPE {
1468a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel/*
1469a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel * 0: Frame reconstruction is incorrect
1470a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel *   a) Open Gop, frames before recovery point SEI
1471a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel * 1: Frame reconstruction is correct.
1472a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel *   a) Closed Gop, When decoding starts from the top of closed GOP at IDR
1473a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel *   b) Open Gop, Output at and subsequent to recovery point SEI with
1474a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel *      exact_match_flag = true
1475a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel * 2: Frame reconstruction is approximately correct:
1476a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel *   a) Closed Gop, When decoding starts from a P/B/I frames wihtout
1477a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel *      any recovery point SEI information
1478a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel *   b) Open Gop, Output at and subsequent to recovery point SEI with
1479a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel *      exact_match_flag = false
1480a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel * In case flag is set to 0 or 2, DATACORRUPT shall be enabled
1481a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel * for buffer (nFlags) in FILL_BUFFER_DONE
1482a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel */
1483a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel    OMX_FRAME_RECONSTRUCTION_INCORRECT = 0,
1484a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel    OMX_FRAME_RECONSTRUCTION_CORRECT = 1,
1485a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel    OMX_FRAME_RECONSTRUCTION_APPROXIMATELY_CORRECT = 2
1486a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel} QOMX_VIDEO_RECOVERYSEI;
148711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
148811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_EXTRADATA_HEADER_SIZE 20
148911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
149011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
149111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * AVC profile types, each profile indicates support for various
149211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * performance bounds and different annexes.
149311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
149411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_AVCPROFILETYPE {
149511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_AVCProfileBaseline      = OMX_VIDEO_AVCProfileBaseline,
149611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_AVCProfileMain          = OMX_VIDEO_AVCProfileMain,
149711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_AVCProfileExtended      = OMX_VIDEO_AVCProfileExtended,
149811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_AVCProfileHigh          = OMX_VIDEO_AVCProfileHigh,
149911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_AVCProfileHigh10        = OMX_VIDEO_AVCProfileHigh10,
150011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_AVCProfileHigh422       = OMX_VIDEO_AVCProfileHigh422,
150111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_AVCProfileHigh444       = OMX_VIDEO_AVCProfileHigh444,
150211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    /* QCom specific profile indexes */
150311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_AVCProfileConstrained           = OMX_VIDEO_AVCProfileVendorStartUnused,
150411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_AVCProfileConstrainedBaseline,
150511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_AVCProfileConstrainedHigh,
150611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_AVCPROFILETYPE;
150711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
150811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
150911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
151011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * H.264 MVC Profiles
151111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  */
151211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_MVCPROFILETYPE {
151311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCProfileStereoHigh = 0x1,
151411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCProfileMultiViewHigh = 0x2,
151511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCProfileKhronosExtensions = 0x6F000000,
151611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCProfileVendorStartUnused = 0x7F000000,
151711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCProfileMax = 0x7FFFFFFF
151811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_MVCPROFILETYPE;
151911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
152011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
152111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * H.264 MVC Levels
152211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  */
152311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_MVCLEVELTYPE {
152411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel1   = 0x01,     /**< Level 1 */
152511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel1b  = 0x02,     /**< Level 1b */
152611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel11  = 0x04,     /**< Level 1.1 */
152711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel12  = 0x08,     /**< Level 1.2 */
152811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel13  = 0x10,     /**< Level 1.3 */
152911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel2   = 0x20,     /**< Level 2 */
153011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel21  = 0x40,     /**< Level 2.1 */
153111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel22  = 0x80,     /**< Level 2.2 */
153211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel3   = 0x100,    /**< Level 3 */
153311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel31  = 0x200,    /**< Level 3.1 */
153411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel32  = 0x400,    /**< Level 3.2 */
153511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel4   = 0x800,    /**< Level 4 */
153611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel41  = 0x1000,   /**< Level 4.1 */
153711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel42  = 0x2000,   /**< Level 4.2 */
153811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel5   = 0x4000,   /**< Level 5 */
153911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevel51  = 0x8000,   /**< Level 5.1 */
154011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevelKhronosExtensions = 0x6F000000,
154111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevelVendorStartUnused = 0x7F000000,
154211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_MVCLevelMax = 0x7FFFFFFF
154311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_MVCLEVELTYPE;
154411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
154511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
154611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * DivX Versions
154711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
154811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum  QOMX_VIDEO_DIVXFORMATTYPE {
154911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXFormatUnused = 0x01, /**< Format unused or unknown */
155011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXFormat311    = 0x02, /**< DivX 3.11 */
155111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXFormat4      = 0x04, /**< DivX 4 */
155211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXFormat5      = 0x08, /**< DivX 5 */
155311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXFormat6      = 0x10, /**< DivX 6 */
155411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXFormatKhronosExtensions = 0x6F000000,
155511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXFormatVendorStartUnused = 0x7F000000,
155611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXFormatMax = 0x7FFFFFFF
155711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_DIVXFORMATTYPE;
155811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
155911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
156011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * DivX profile types, each profile indicates support for
156111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * various performance bounds.
156211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
156311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_DIVXPROFILETYPE {
156411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DivXProfileqMobile = 0x01, /**< qMobile Profile */
156511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DivXProfileMobile  = 0x02, /**< Mobile Profile */
156611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DivXProfileMT      = 0x04, /**< Mobile Theatre Profile */
156711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DivXProfileHT      = 0x08, /**< Home Theatre Profile */
156811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DivXProfileHD      = 0x10, /**< High Definition Profile */
156911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXProfileKhronosExtensions = 0x6F000000,
157011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXProfileVendorStartUnused = 0x7F000000,
157111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXProfileMax = 0x7FFFFFFF
157211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_DIVXPROFILETYPE;
157311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
157411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
157511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * DivX Video Params
157611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
157711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  STRUCT MEMBERS:
157811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize      : Size of the structure in bytes
157911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion   : OMX specification version information
158011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex : Port that this structure applies to
158111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  eFormat    : Version of DivX stream / data
158211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  eProfile   : Profile of DivX stream / data
158311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
158411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_PARAM_DIVXTYPE {
158511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
158611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
158711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
158811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXFORMATTYPE eFormat;
158911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DIVXPROFILETYPE eProfile;
159011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_PARAM_DIVXTYPE;
159111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
159211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
159311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
159411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
159511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  VP Versions
159611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
159711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_VPFORMATTYPE {
159811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPFormatUnused = 0x01, /**< Format unused or unknown */
159911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPFormat6      = 0x02, /**< VP6 Video Format */
160011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPFormat7      = 0x04, /**< VP7 Video Format */
160111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPFormat8      = 0x08, /**< VP8 Video Format */
160211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPFormat9      = 0x10, /**< VP9 Video Format */
160311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPFormatKhronosExtensions = 0x6F000000,
160411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPFormatVendorStartUnused = 0x7F000000,
160511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPFormatMax = 0x7FFFFFFF
160611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_VPFORMATTYPE;
160711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
160811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
160911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * VP profile types, each profile indicates support for various
161011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * encoding tools.
161111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
161211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_VPPROFILETYPE {
161311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPProfileSimple   = 0x01, /**< Simple Profile, applies to VP6 only */
161411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPProfileAdvanced = 0x02, /**< Advanced Profile, applies to VP6 only */
161511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPProfileVersion0 = 0x04, /**< Version 0, applies to VP7 and VP8 */
161611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPProfileVersion1 = 0x08, /**< Version 1, applies to VP7 and VP8 */
161711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPProfileVersion2 = 0x10, /**< Version 2, applies to VP8 only */
161811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPProfileVersion3 = 0x20, /**< Version 3, applies to VP8 only */
161911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPProfileKhronosExtensions = 0x6F000000,
162011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPProfileVendorStartUnused = 0x7F000000,
162111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPProfileMax = 0x7FFFFFFF
162211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_VPPROFILETYPE;
162311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
162411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
162511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * VP Video Params
162611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
162711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  STRUCT MEMBERS:
162811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize      : Size of the structure in bytes
162911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion   : OMX specification version information
163011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex : Port that this structure applies to
163111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  eFormat    : Format of VP stream / data
163211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  eProfile   : Profile or Version of VP stream / data
163311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
163411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_PARAM_VPTYPE {
163511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
163611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
163711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
163811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPFORMATTYPE eFormat;
163911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_VPPROFILETYPE eProfile;
164011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_PARAM_VPTYPE;
164111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
164211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
164311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Spark Versions
164411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
164511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_SPARKFORMATTYPE {
164611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_SparkFormatUnused = 0x01, /**< Format unused or unknown */
164711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_SparkFormat0      = 0x02, /**< Video Format Version 0 */
164811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_SparkFormat1      = 0x04, /**< Video Format Version 1 */
164911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_SparkFormatKhronosExtensions = 0x6F000000,
165011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_SparkFormatVendorStartUnused = 0x7F000000,
165111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_SparkFormatMax = 0x7FFFFFFF
165211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_SPARKFORMATTYPE;
165311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
165411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
165511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Spark Video Params
165611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
165711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  STRUCT MEMBERS:
165811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize      : Size of the structure in bytes
165911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion   : OMX specification version information
166011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex : Port that this structure applies to
166111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  eFormat    : Version of Spark stream / data
166211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
166311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_PARAM_SPARKTYPE {
166411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
166511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
166611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
166711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_SPARKFORMATTYPE eFormat;
166811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_PARAM_SPARKTYPE;
166911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
167011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
167111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_QUERY_DECODER_INSTANCES {
167211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
167311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
167411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
167511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nNumOfInstances;
167611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_QUERY_DECODER_INSTANCES;
167711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
167811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_ENABLETYPE {
167911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
168011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
168111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bEnable;
168211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_ENABLETYPE;
168311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
1684fa202b9b18f17f7835fd602db5fff530e61112b4Thierry Strudeltypedef struct QOMX_DISABLETYPE {
1685fa202b9b18f17f7835fd602db5fff530e61112b4Thierry Strudel    OMX_U32 nSize;
1686fa202b9b18f17f7835fd602db5fff530e61112b4Thierry Strudel    OMX_VERSIONTYPE nVersion;
1687fa202b9b18f17f7835fd602db5fff530e61112b4Thierry Strudel    OMX_BOOL bDisable;
1688fa202b9b18f17f7835fd602db5fff530e61112b4Thierry Strudel} QOMX_DISABLETYPE;
1689fa202b9b18f17f7835fd602db5fff530e61112b4Thierry Strudel
169011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_EVENTS {
169111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_EventIndexsettingChanged = OMX_EventVendorStartUnused
169211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_EVENTS;
169311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
169411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_PICTURE_ORDER {
169511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DISPLAY_ORDER = 0x1,
169611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_DECODE_ORDER = 0x2
169711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_PICTURE_ORDER;
169811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
169911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_DECODER_PICTURE_ORDER {
170011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
170111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
170211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
170311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_PICTURE_ORDER eOutputPictureOrder;
170411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_DECODER_PICTURE_ORDER;
170511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
170611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_INDEXEXTRADATATYPE {
170711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
170811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
170911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
171011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bEnabled;
171111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_INDEXTYPE nIndex;
171211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_INDEXEXTRADATATYPE;
171311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
171411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_INDEXTIMESTAMPREORDER {
171511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
171611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
171711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
171811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bEnable;
171911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_INDEXTIMESTAMPREORDER;
172011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
172111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_INDEXDOWNSCALAR {
172211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        OMX_U32 nSize;
172311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        OMX_VERSIONTYPE nVersion;
172411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        OMX_U32 nPortIndex;
172511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        OMX_BOOL bEnable;
172611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_INDEXDOWNSCALAR;
172711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
172811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_CUSTOM_BUFFERSIZE {
172911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        OMX_U32 nSize;
173011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        OMX_VERSIONTYPE nVersion;
173111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        OMX_U32 nPortIndex;
173211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        OMX_U32 nBufferSize;
173311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_CUSTOM_BUFFERSIZE;
173411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
173511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_SYNCFRAMEDECODINGMODE "OMX.QCOM.index.param.video.SyncFrameDecodingMode"
173611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_INDEXEXTRADATA "OMX.QCOM.index.param.IndexExtraData"
173711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_SLICEDELIVERYMODE "OMX.QCOM.index.param.SliceDeliveryMode"
173811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_FRAMEPACKING_EXTRADATA "OMX.QCOM.index.param.video.FramePackingExtradata"
173911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_QP_EXTRADATA "OMX.QCOM.index.param.video.QPExtradata"
174011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_INPUTBITSINFO_EXTRADATA "OMX.QCOM.index.param.video.InputBitsInfoExtradata"
174111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_EXTNUSER_EXTRADATA "OMX.QCOM.index.param.video.ExtnUserExtraData"
174211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_CONFIG_VIDEO_FRAMEPACKING_INFO "OMX.QCOM.index.config.video.FramePackingInfo"
174311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_MPEG2SEQDISP_EXTRADATA "OMX.QCOM.index.param.video.Mpeg2SeqDispExtraData"
174411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
174511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_HIERSTRUCTURE "OMX.QCOM.index.param.video.HierStructure"
174611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_LTRCOUNT "OMX.QCOM.index.param.video.LTRCount"
174711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_LTRPERIOD "OMX.QCOM.index.param.video.LTRPeriod"
174811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRUSE "OMX.QCOM.index.config.video.LTRUse"
174911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_CONFIG_VIDEO_LTRMARK "OMX.QCOM.index.config.video.LTRMark"
175011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_CONFIG_VIDEO_HIER_P_LAYERS "OMX.QCOM.index.config.video.hierplayers"
175111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_CONFIG_RECTANGLE_TYPE "OMX.QCOM.index.config.video.rectangle"
175211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_BASE_LAYER_ID "OMX.QCOM.index.param.video.baselayerid"
175311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_CONFIG_VIDEO_QP "OMX.QCOM.index.config.video.qp"
175411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_SAR "OMX.QCOM.index.param.video.sar"
175511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QTI_INDEX_PARAM_VIDEO_LOW_LATENCY "OMX.QTI.index.param.video.LowLatency"
175611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
175711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_VIDEO_PASSINPUTBUFFERFD "OMX.QCOM.index.param.video.PassInputBufferFd"
175811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QTI_INDEX_PARAM_VIDEO_PREFER_ADAPTIVE_PLAYBACK "OMX.QTI.index.param.video.PreferAdaptivePlayback"
175911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QTI_INDEX_CONFIG_VIDEO_SETTIMEDATA "OMX.QTI.index.config.video.settimedata"
176011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QTI_INDEX_PARAM_VIDEO_FORCE_COMPRESSED_FOR_DPB "OMX.QTI.index.param.video.ForceCompressedForDPB"
176111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QTI_INDEX_PARAM_VIDEO_ENABLE_ROIINFO "OMX.QTI.index.param.enableRoiInfo"
176211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QTI_INDEX_CONFIG_VIDEO_ROIINFO "OMX.QTI.index.config.RoiInfo"
176311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QTI_INDEX_CONFIG_VIDEO_BLURINFO "OMX.QTI.index.config.BlurInfo"
17642601808ee2992a94c325d05e4065aba60b01840bThierry Strudel#define OMX_QTI_INDEX_PARAM_VIDEO_CLIENT_EXTRADATA "OMX.QTI.index.param.client.extradata"
1765fbc0b4aac30717e1ea0293751b1ac08fcb6fd0b3Thierry Strudel#define OMX_QTI_INDEX_CONFIG_COLOR_ASPECTS "OMX.google.android.index.describeColorAspects"
176611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
176711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum {
176811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_FRAME_PACKING_CHECKERBOARD = 0,
176911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_FRAME_PACKING_COLUMN_INTERLEAVE = 1,
177011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_FRAME_PACKING_ROW_INTERLEAVE = 2,
177111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_FRAME_PACKING_SIDE_BY_SIDE = 3,
177211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_FRAME_PACKING_TOP_BOTTOM = 4,
177311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_FRAME_PACKING_TEMPORAL = 5,
177411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_FRAME_PACKING_ARRANGEMENT;
177511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
177611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum {
177711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_CONTENT_UNSPECIFIED = 0,
177811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_CONTENT_LR_VIEW = 1,
177911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_CONTENT_RL_VIEW = 2,
178011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_CONTENT_INTERPRETATION;
178111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
178211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
178311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * Specifies the extended picture types. These values should be
178411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OR'd along with the types defined in OMX_VIDEO_PICTURETYPE to
178511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * signal all pictures types which are allowed.
178611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
178711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * ENUMS:
178811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  H.264 Specific Picture Types:   IDR
178911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
179011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_PICTURETYPE {
179111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_PictureTypeIDR = OMX_VIDEO_PictureTypeVendorStartUnused + 0x1000
179211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_PICTURETYPE;
179311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
179411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_CONFIG_ACTIVE_REGION_DETECTION           "OMX.QCOM.index.config.activeregiondetection"
179511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_CONFIG_ACTIVE_REGION_DETECTION_STATUS    "OMX.QCOM.index.config.activeregiondetectionstatus"
179611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_CONFIG_SCALING_MODE                      "OMX.QCOM.index.config.scalingmode"
179711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_CONFIG_NOISEREDUCTION                    "OMX.QCOM.index.config.noisereduction"
179811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_CONFIG_IMAGEENHANCEMENT                  "OMX.QCOM.index.config.imageenhancement"
179911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_QCOM_INDEX_PARAM_HELDBUFFERCOUNT                    "OMX.QCOM.index.param.HeldBufferCount" /**< reference: QOMX_HELDBUFFERCOUNTTYPE */
180011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
180111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
180211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_RECTTYPE {
180311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
180411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
180511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32 nLeft;
180611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32 nTop;
180711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nWidth;
180811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nHeight;
180911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_RECTTYPE;
181011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
181111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_ACTIVEREGIONDETECTIONTYPE {
181211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
181311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
181411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
181511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bEnable;
181611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_RECTTYPE sROI;
181711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nNumExclusionRegions;
181811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_RECTTYPE sExclusionRegions[1];
181911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_ACTIVEREGIONDETECTIONTYPE;
182011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
182111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_ACTIVEREGIONDETECTION_STATUSTYPE {
182211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
182311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
182411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
182511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bDetected;
182611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_RECTTYPE sDetectedRegion;
182711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_ACTIVEREGIONDETECTION_STATUSTYPE;
182811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
182911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_SCALE_MODETYPE {
183011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_SCALE_MODE_Normal,
183111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_SCALE_MODE_Anamorphic,
183211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_SCALE_MODE_Max = 0x7FFFFFFF
183311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_SCALE_MODETYPE;
183411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
183511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_SCALINGMODETYPE {
183611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
183711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
183811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_SCALE_MODETYPE  eScaleMode;
183911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_SCALINGMODETYPE;
184011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
184111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_NOISEREDUCTIONTYPE {
184211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
184311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
184411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
184511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bEnable;
184611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bAutoMode;
184711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32 nNoiseReduction;
184811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_NOISEREDUCTIONTYPE;
184911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
185011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_IMAGEENHANCEMENTTYPE {
185111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
185211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
185311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
185411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bEnable;
185511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL bAutoMode;
185611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32 nImageEnhancement;
185711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_IMAGEENHANCEMENTTYPE;
185811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
185911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/*
186011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * these are part of OMX1.2 but JB MR2 branch doesn't have them defined
186111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_IndexParamInterlaceFormat
186211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * OMX_INTERLACEFORMATTYPE
186311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
186411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#ifndef OMX_IndexParamInterlaceFormat
186511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define OMX_IndexParamInterlaceFormat (0x7FF00000)
186611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_INTERLACEFORMATTYPE {
186711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
186811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
186911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
187011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nFormat;
187111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_TICKS nTimeStamp;
187211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_INTERLACEFORMATTYPE;
187311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#endif
187411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
187511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/**
187611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * This structure is used to indicate the maximum number of buffers
187711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * that a port will hold during data flow.
187811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *
187911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel * STRUCT MEMBERS:
188011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nSize              : Size of the structure in bytes
188111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nVersion           : OMX specification version info
188211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nPortIndex         : Port that this structure applies to
188311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel *  nHeldBufferCount   : Read-only, maximum number of buffers that will be held
188411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel */
188511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_HELDBUFFERCOUNTTYPE {
188611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
188711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
188811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
188911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nHeldBufferCount;
189011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_HELDBUFFERCOUNTTYPE;
189111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
189211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VIDEO_HIERARCHICALCODINGTYPE {
189311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_HIERARCHICALCODING_P = 0x01,
189411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_HIERARCHICALCODING_B = 0x02,
189511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_HIERARCHICALCODINGTYPE;
189611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
189711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_HIERARCHICALLAYERS {
189811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
189911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
190011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
190111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nNumLayers;
190211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VIDEO_HIERARCHICALCODINGTYPE eHierarchicalCodingType;
190311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_HIERARCHICALLAYERS;
190411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
190511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_H264ENTROPYCODINGTYPE {
190611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nSize;
190711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_VERSIONTYPE nVersion;
190811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_BOOL bCabac;
190911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   OMX_U32 nCabacInitIdc;
191011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_H264ENTROPYCODINGTYPE;
191111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
1912a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudeltypedef enum QOMX_VIDEO_IFRAMESIZE_TYPE {
1913a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel    QOMX_IFRAMESIZE_DEFAULT,
1914a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel    QOMX_IFRAMESIZE_MEDIUM,
1915a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel    QOMX_IFRAMESIZE_HUGE,
1916a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel    QOMX_IFRAMESIZE_UNLIMITED,
1917a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel} QOMX_VIDEO_IFRAMESIZE_TYPE;
1918a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel
1919a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudeltypedef struct QOMX_VIDEO_IFRAMESIZE {
1920a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel   OMX_U32 nSize;
1921a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel   OMX_VERSIONTYPE nVersion;
1922a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel   QOMX_VIDEO_IFRAMESIZE_TYPE eType;
1923a5bf317aa35f90b6fcc533882760f86342b79547Thierry Strudel} QOMX_VIDEO_IFRAMESIZE;
192411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
192511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* VIDEO POSTPROCESSING CTRLS AND ENUMS */
192611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* MUST KEEP SAME AS IN vpp.h */
192711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define QOMX_VPP_HQV_CUSTOMPAYLOAD_SZ 256
192811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#define VPP_HQV_CONTROL_GLOBAL_START (VPP_HQV_CONTROL_CUST + 1)
192911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
193011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VPP_HQV_MODE {
193111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_MODE_OFF,
193211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_MODE_AUTO,
193311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_MODE_MANUAL,
193411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_MODE_MAX
193511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQV_MODE;
193611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
193711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VPP_HQVCONTROLTYPE {
193811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_CONTROL_CADE = 0x1,
193911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_CONTROL_DI = 0x02,
194011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_CONTROL_CNR = 0x04,
194111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_CONTROL_AIE = 0x05,
194211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_CONTROL_FRC = 0x06,
194311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_CONTROL_CUST = 0x07,
194411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_CONTROL_GLOBAL_DEMO = VPP_HQV_CONTROL_GLOBAL_START,
194511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_CONTROL_MAX,
194611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQVCONTROLTYPE;
194711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
194811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VPP_HQV_DI_MODE {
194911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_DI_MODE_OFF,
195011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_DI_MODE_VIDEO_1F,
195111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_DI_MODE_VIDEO_3F,
195211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_DI_MODE_AUTO,
195311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_DI_MODE_MAX,
195411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQV_DI_MODE;
195511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
195611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VPP_HQV_HUE_MODE {
195711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_HUE_MODE_OFF,
195811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_HUE_MODE_ON,
195911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_HUE_MODE_MAX,
196011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQV_HUE_MODE;
196111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
196211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VPP_SPLIT_DIRECTION {
196311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_SPLIT_LEFT_TO_RIGHT,
196411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_SPLIT_RIGHT_TO_LEFT,
196511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_SPLIT_TOP_TO_BOTTOM,
196611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_SPLIT_BOTTOM_TO_TOP,
196711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    VPP_HQV_SPLIT_MAX,
196811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_SPLIT_DIRECTION;
196911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
197011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum QOMX_VPP_HQV_FRC_MODE {
197111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   VPP_HQV_FRC_MODE_OFF,
197211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   VPP_HQV_FRC_MODE_LOW,
197311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   VPP_HQV_FRC_MODE_MED,
197411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   VPP_HQV_FRC_MODE_HIGH,
197511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel   VPP_HQV_FRC_MODE_MAX,
197611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQV_FRC_MODE;
197711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
197811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
197911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VPP_HQVCTRL_CADE {
198011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VPP_HQV_MODE mode;
198111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 level;
198211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32 contrast;
198311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_S32 saturation;
198411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQVCTRL_CADE;
198511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
198611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VPP_HQVCTRL_DI {
198711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VPP_HQV_DI_MODE mode;
198811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQVCTRL_DI;
198911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
199011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VPP_HQVCTRL_CNR {
199111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VPP_HQV_MODE mode;
199211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 level;
199311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQVCTRL_CNR;
199411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
199511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VPP_HQVCTRL_AIE {
199611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VPP_HQV_MODE mode;
199711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VPP_HQV_HUE_MODE hue_mode;
199811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 cade_level;
199911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 ltm_level;
200011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQVCTRL_AIE;
200111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
200211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VPP_HQVCTRL_CUSTOM {
200311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 id;
200411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 len;
200511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U8 data[QOMX_VPP_HQV_CUSTOMPAYLOAD_SZ];
200611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQVCTRL_CUSTOM;
200711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
200811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VPP_HQVCTRL_GLOBAL_DEMO {
200911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 process_percent;
201011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VPP_SPLIT_DIRECTION process_direction;
201111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQVCTRL_GLOBAL_DEMO;
201211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
201311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VPP_HQVCTRL_FRC {
201411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VPP_HQV_FRC_MODE mode;
201511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQVCTRL_FRC;
201611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
201711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* VIDEO POSTPROCESSING OMX CTRLS */
201811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VPP_HQVCONTROL {
201911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
202011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
202111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VPP_HQV_MODE mode;
202211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_VPP_HQVCONTROLTYPE ctrl_type;
202311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    union {
202411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        QOMX_VPP_HQVCTRL_CADE cade;
202511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        QOMX_VPP_HQVCTRL_DI di;
202611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        QOMX_VPP_HQVCTRL_CNR cnr;
202711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        QOMX_VPP_HQVCTRL_AIE aie;
202811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        QOMX_VPP_HQVCTRL_CUSTOM custom;
202911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        QOMX_VPP_HQVCTRL_GLOBAL_DEMO global_demo;
203011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel        QOMX_VPP_HQVCTRL_FRC frc;
203111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    };
203211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_HQVCONTROL;
203311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
203411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/* STRUCTURE TO TURN VPP ON */
203511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VPP_ENABLE {
203611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
203711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
203811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_BOOL enable_vpp;
203911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VPP_ENABLE;
204011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
204111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef enum OMX_QOMX_VIDEO_MBISTATISTICSTYPE {
204211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_MBI_STATISTICS_MODE_DEFAULT = 0,
204311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_MBI_STATISTICS_MODE_1 = 0x01,
204411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    QOMX_MBI_STATISTICS_MODE_2 = 0x02,
204511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QOMX_VIDEO_MBISTATISTICSTYPE;
204611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
204711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct OMX_QOMX_VIDEO_MBI_STATISTICS {
204811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
204911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
205011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
205111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_QOMX_VIDEO_MBISTATISTICSTYPE eMBIStatisticsType;
205211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} OMX_QOMX_VIDEO_MBI_STATISTICS;
205311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
205411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudeltypedef struct QOMX_VIDEO_BATCHSIZETYPE {
205511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nSize;
205611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_VERSIONTYPE nVersion;
205711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nPortIndex;
205811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_U32 nBatchSize;
205911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel} QOMX_VIDEO_BATCHSIZETYPE;
206011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
20612601808ee2992a94c325d05e4065aba60b01840bThierry Strudeltypedef struct QOMX_VIDEO_CLIENT_EXTRADATA {
20622601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 nSize;
20632601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_VERSIONTYPE nVersion;
20642601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 nPortIndex;
20652601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 nFd;
20662601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 nExtradataAllocSize;
20672601808ee2992a94c325d05e4065aba60b01840bThierry Strudel    OMX_U32 nExtradataSize;
20682601808ee2992a94c325d05e4065aba60b01840bThierry Strudel} QOMX_VIDEO_CLIENT_EXTRADATATYPE;
20692601808ee2992a94c325d05e4065aba60b01840bThierry Strudel
2070b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel#if defined(__cplusplus) && defined(USE_CAMERA_METABUFFER_UTILS)
2071b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel
20722e1e93b75bc282dafdff24eb3b473af177e3e35bThierry Strudel#define CAM_META_BUFFER_EVENT_PERF 0x01
20732e1e93b75bc282dafdff24eb3b473af177e3e35bThierry Strudel
2074b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel/**
2075b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel * Camera1 meta-buffer payload create/access/modify utility
2076b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel */
2077b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudelstruct MetaBufferUtil {
2078b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel
2079b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    enum {
2080b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        INT_OFFSET      = 1,
2081b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        INT_SIZE        = 2,
2082b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        INT_USAGE       = 3,
2083b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        INT_TIMESTAMP   = 4,
2084b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        INT_COLORFORMAT = 5,
2085b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        INT_BUFINDEX    = 6,
20862e1e93b75bc282dafdff24eb3b473af177e3e35bThierry Strudel        INT_BUFEVENT    = 7,
20872e1e93b75bc282dafdff24eb3b473af177e3e35bThierry Strudel        INT_TOTAL       = INT_BUFEVENT,
2088b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    };
2089b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel
2090b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    static int getNumFdsForBatch(int batchSize) {
2091b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        return batchSize;
2092b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    }
2093b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    static int getNumIntsForBatch(int batchSize) {
2094b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        return batchSize * INT_TOTAL;
2095b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    }
2096b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    static int getBatchSize(const native_handle_t *hnd) {
2097b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        return MetaBufferUtil::isHandleSane(hnd) ? hnd->numFds : -1;
2098b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    }
2099b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel
2100b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    /* getters */
2101b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    /* return a fd at index or -1 if index is invalid */
2102b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    static int getFdAt(const native_handle_t *hnd, int index) {
2103b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        return (MetaBufferUtil::isHandleSane(hnd) && (index < hnd->numFds)) ? hnd->data[index] : -1;
2104b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    }
2105b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    /* return a int of type at index or -1 if index or type is invalid */
2106b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    static int getIntAt(const native_handle_t *hnd, int index, int type) {
2107b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        int idx = MetaBufferUtil::getIntIndex(hnd, index, type);
2108b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        return idx < 0 ? -1 : hnd->data[idx];
2109b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    }
2110b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel
2111b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    /* setters */
2112b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    /* replace the fd at index and return 0. Return -1 if index is invalid */
2113b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    static int setFdAt(native_handle_t *hnd, int index, int fd) {
2114b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        return (MetaBufferUtil::isHandleSane(hnd) && (index < hnd->numFds)) ? hnd->data[index] = fd, 0 : -1;
2115b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    }
2116b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    /* replace an int of type at index and return 0. Return -1 if index or type is invalid */
2117b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    static int setIntAt(native_handle_t *hnd, int index, int type, int value) {
2118b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        int idx = MetaBufferUtil::getIntIndex(hnd, index, type);
2119b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        return idx < 0 ? -1 : hnd->data[idx] = value, 0;
2120b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    }
2121b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel
2122b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudelprivate:
2123b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    static bool isHandleSane(const native_handle_t *hnd) {
2124b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        return hnd && hnd->version == sizeof(native_handle_t);
2125b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    }
2126b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel
2127b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    static int getIntIndex(const native_handle_t *hnd, int index, int type) {
2128b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        int idx = index + type * MetaBufferUtil::getBatchSize(hnd);
2129b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel        return (MetaBufferUtil::isHandleSane(hnd) && (idx < (hnd->numInts + hnd->numFds))) ? idx : -1;
2130b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel    }
2131b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel};
2132b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel
2133b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel#endif // __cplusplus
2134b50ee0d49e33884a5f998649944fff0a8e27cda6Thierry Strudel
2135af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudeltypedef enum QOMX_VIDEO_DITHERTYPE {
2136af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel    QOMX_DITHER_DISABLE = 0,
2137af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel    QOMX_DITHER_COLORSPACE_EXCEPT_BT2020 = 0x01,
2138af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel    QOMX_DITHER_ALL_COLORSPACE = 0x02,
2139af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel} QOMX_VIDEO_DITHERTYPE;
2140af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel
2141af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudeltypedef struct QOMX_VIDEO_DITHER_CONTROL {
2142af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel    OMX_U32 nSize;
2143af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel    OMX_VERSIONTYPE nVersion;
2144af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel    OMX_U32 nPortIndex;
2145af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel    QOMX_VIDEO_DITHERTYPE eDitherType;
2146af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel} QOMX_VIDEO_DITHER_CONTROL;
2147af7f1cd76eaafee0d9838e6c40af9c494e884e36Thierry Strudel
214811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#ifdef __cplusplus
214911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
215011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#endif /* __cplusplus */
215111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
215211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#endif /* __OMX_QCOM_EXTENSIONS_H__ */
2153