1dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#ifndef QOMX_STREAMINGEXTENSIONS_H_
2dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define QOMX_STREAMINGEXTENSIONS_H_
3dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/*--------------------------------------------------------------------------
461a2c6a19dbd06a317a419623020e02056661876Praveen ChavanCopyright (c) 2012, The Linux Foundation. All rights reserved.
5dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
6dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandRedistribution and use in source and binary forms, with or without
7dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandmodification, are permitted provided that the following conditions are met:
8dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    * Redistributions of source code must retain the above copyright
9dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      notice, this list of conditions and the following disclaimer.
10dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    * Redistributions in binary form must reproduce the above copyright
11dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      notice, this list of conditions and the following disclaimer in the
12dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      documentation and/or other materials provided with the distribution.
1361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    * Neither the name of The Linux Foundation nor
14dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      the names of its contributors may be used to endorse or promote
15dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      products derived from this software without specific prior written
16dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      permission.
17dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
18dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandNON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
22dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand--------------------------------------------------------------------------*/
30dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/*========================================================================
31dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
32dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand*//** @file QOMX_StreamingExtensions.h
33dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
34dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand@par FILE SERVICES:
35dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      Qualcomm extensions API for OpenMax IL Streaming Components.
36dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
37dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      This file contains the description of the Qualcomm OpenMax IL
38dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      streaming extention interface, through which the IL client and OpenMax
39dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      components can access additional streaming capabilities.
40dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
41dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand*//*====================================================================== */
42dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
43dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/*========================================================================
44dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                             Edit History
45dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
46dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand$Header: //source/qcom/qct/multimedia2/api/OpenMax/QCOM/main/latest/QOMX_StreamingExtensions.h#7 $
47dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand$DateTime: 2011/03/02 12:27:27 $
48dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand$Change: 1638323 $
49dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
50dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand========================================================================== */
51dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
52dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/* =======================================================================
53dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand**               Includes and Public Data Declarations
54dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand** ======================================================================= */
55dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
56dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/* =======================================================================
57dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
58dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                     INCLUDE FILES FOR MODULE
59dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
60dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand========================================================================== */
61dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
62dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#include <OMX_Types.h>
63dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#include <OMX_Component.h>
64dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
65dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#if defined( __cplusplus )
66dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandextern "C"
67dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
68dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#endif /* end of macro __cplusplus */
69dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
70dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/* =======================================================================
71dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
72dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                        DATA DECLARATIONS
73dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
74dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand========================================================================== */
75dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/* -----------------------------------------------------------------------
76dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand** Type Declarations
77dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand** ----------------------------------------------------------------------- */
78dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
79dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Qualcomm vendor streaming extension strings.
80dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
81dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QUALCOMM_INDEX_CONFIG_WATERMARK                       "OMX.Qualcomm.index.config.Watermark"
82dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QUALCOMM_INDEX_CONFIG_WATERMARKSTATUS                 "OMX.Qualcomm.index.config.WatermarkStatus"
83dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QUALCOMM_INDEX_CONFIG_BUFFERMARKING                   "OMX.Qualcomm.index.config.BufferMarking"
84dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QUALCOMM_INDEX_PARAM_STREAMING_NETWORKINTERFACE       "OMX.Qualcomm.index.param.streaming.NetworkInterface"
85dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QUALCOMM_INDEX_PARAM_STREAMING_NETWORKPROFILE         "OMX.Qualcomm.index.param.streaming.NetworkProfile"
86dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QUALCOMM_INDEX_PARAM_STREAMING_PROXYSERVER            "OMX.Qualcomm.index.param.streaming.ProxyServer"
87dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QUALCOMM_INDEX_PARAM_STREAMING_SOURCEPORTS            "OMX.Qualcomm.index.param.streaming.SourcePorts"
88dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QUALCOMM_INDEX_CONFIG_STREAMING_PROTOCOLHEADER        "OMX.Qualcomm.index.param.streaming.ProtocolHeader"
89dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QUALCOMM_INDEX_CONFIG_STREAMING_PROTOCOLEVENT         "OMX.Qualcomm.index.config.streaming.ProtocolEvent"
90dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QUALCOMM_INDEX_CONFIG_STREAMING_DYNAMIC_SWITCH_CAPABILITY "OMX.Qualcomm.index.config.streaming.DynamicSessionSwitchCapability"
91dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QUALCOMM_INDEX_CONFIG_STREAMING_PROTOCOLHEADERSEVENT  "OMX.QCOM.index.config.streaming.ProtocolHeadersEvent"
92dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_USERPAUSETIMEOUT          "OMX.QCOM.index.config.streaming.UserPauseTimeout"
93dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_NOTIFYERRORONOPTIONSTIMEOUT   "OMX.QCOM.index.config.streaming.NotifyErrorOnOptionsTimeout"
94dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_USEINTERLEAVEDTCP         "OMX.QCOM.index.config.streaming.UseInterleavedTCP"
95dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_DATAINACTIVITYTIMEOUT     "OMX.QCOM.index.config.streaming.DataInactivityTimeout"
96dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_RTSPOPTIONSKEEPALIVEINTERVAL   "OMX.QCOM.index.config.streaming.RTSPOptionsKeepaliveInterval"
97dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_RTCPRRINTERVAL            "OMX.QCOM.index.config.streaming.RTCPRRInterval"
98dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_RECONFIGUREPORT           "OMX.QCOM.index.config.streaming.ReconfigurePort"
99dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_DEFAULTRTSPMESSAGETIMEOUT "OMX.QCOM.index.config.streaming.DefaultRTSPMessageTimeout"
100dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_ENABLEFIREWALLPROBES      "OMX.QCOM.index.config.streaming.EnableFirewallProbes"
101dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_RTSPOPTIONSBEFORESETUP    "OMX.QCOM.index.config.streaming.RTSPOptionsBeforeSetup"
102dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_RTSPPIPELINEDFASTSTARTUP  "OMX.QCOM.index.config.streaming.RTSPPipelinedFastStartup"
103dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_WMFASTSTARTSPEED          "OMX.QCOM.index.config.streaming.WMFastStartSpeed"
104dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_ENABLEFASTRECONNECT       "OMX.QCOM.index.config.streaming.EnableFastReconnect"
105dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_FASTRECONNECTMAXATTEMPTS  "OMX.QCOM.index.config.streaming.FastReconnectMaxAttempts"
106dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QCOM_INDEX_CONFIG_STREAMING_DOWNLOADPROGRESSUNITSTYPE "OMX.QCOM.index.config.streaming.DownloadProgressUnitsType"
107dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#define OMX_QOMX_INDEX_CONFIG_STREAMING_DOWNLOADPROGRESS          "OMX.QCOM.index.config.streaming.DownloadProgress"
108dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
109dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Enumeration of the buffering watermark types
110dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
111dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum QOMX_WATERMARKTYPE
112dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
113dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_WATERMARK_UNDERRUN, /**< buffer has reached or is operating in an underrun condition */
114dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_WATERMARK_NORMAL /**< has reached or is operating in a normal (optimal) condition */
115dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}QOMX_WATERMARKTYPE;
116dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
117dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
118dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Enumeration of type of buffering level tracking
119dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
120dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum QOMX_WATERMARKUNITSTYPE
121dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
122dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_WATERMARKUNITSTYPE_Time, /**< use a media time based reference */
123dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_WATERMARKUNITSTYPE_Data /**< use a data fullness based reference */
124dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}QOMX_WATERMARKUNITSTYPE;
125dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
126dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
127dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Buffering watermark levels.
128dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
129dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  STRUCT MEMBERS:
130dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize        : Size of the structure in bytes
131dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion     : OMX specification version information
132dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nPortIndex   : Port that this structure applies to
133dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eWaterMark   : eWaterMark specifies the type of buffering watermark being
134dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                 configured
135dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                 QOMX_WATERMARK_UNDERRUN Indicates the condition when the
136dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   buffer has reached or is operating in an underrun condition
137dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   - not enough data
138dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                  QOMX_WATERMARK_NORMAL Indicates the condition when the buffer
139dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   has reached or is operating in a normal (optimal) condition
140dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                    - sufficient data within the buffer.
141dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
142dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nLevel       : specifies the buffering level associated with the watermark.
143dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                 The units associated with the watermark level is dependent
144dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                 on the eUnitsType being selected.
145dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   QOMX_WATERMARKUNITSTYPE_Time nLevel in units of microseconds.
146dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                   QOMX_WATERMARKUNITSTYPE_Data nLevel in units of bytes.
147dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
148dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nUnitsType  : specifies the type of buffering level tracking to be used.
149dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                  QOMX_WATERMARKUNITSTYPE_Time the buffer watermark level
150dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                    shall use a media time based reference.
151dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                  QOMX_WATERMARKUNITSTYPE_Data the buffer watermark level
152dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                    shall use a data fullness based reference.
153dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * bEnable      : specifies if the watermark type is being enabled or disabled
154dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
155dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_BUFFERINGWATERMARKTYPE {
156dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;
157dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;
158dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;
159dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_WATERMARKTYPE eWaterMark;
160dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nLevel;
161dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_WATERMARKUNITSTYPE eUnitsType;
162dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_BOOL bEnable;
163dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_BUFFERINGWATERMARKTYPE;
164dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
165dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
166dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  Current buffering status of the streaming source component, for a given
167dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  media port
168dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
169dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  STRUCT MEMBERS:
170dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize        : Size of the structure in bytes
171dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion     : OMX specification version information
172dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nPortIndex   : Port that this structure applies to
173dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eCurrentWaterMark : specifies the current buffer watermark level condition
174dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      QOMX_WATERMARK_UNDERRUN Indicates the condition when the
175dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                        buffer has reached or is operating in an underrun
176dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                        condition - not enough data
177dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      QOMX_WATERMARK_NORMAL Indicates the condition when the
178dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                        buffer has reached or is operating in a normal
179dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                        (optimal) condition - sufficient data within the buffer.
180dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eUnitsType      : specifies the type of buffering level tracking to be used.
181dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                     QOMX_WATERMARKUNITSTYPE_Time the buffer watermark level
182dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       shall use a media time based reference.
183dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                     QOMX_WATERMARKUNITSTYPE_Data the buffer watermark level
184dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       shall use a data fullness based reference.
185dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nCurrentLevel    : specifies the current buffer watermark level condition
186dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                     The units associated with the watermark level is dependent
187dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                     on the eUnitsType being selected.
188dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       QOMX_WATERMARKUNITSTYPE_Time nLevel in units of microseconds.
189dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       QOMX_WATERMARKUNITSTYPE_Data nLevel in units of bytes.
190dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
191dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_BUFFERINGSTATUSTYPE {
192dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;
193dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;
194dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;
195dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_WATERMARKTYPE eCurrentWaterMark;
196dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_WATERMARKUNITSTYPE eUnitsType;
197dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nCurrentLevel;
198dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_BUFFERINGSTATUSTYPE;
199dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
200dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
201dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  marked buffer shall be emitted when the buffering level has reach an
202dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  underrun condition (QOMX_WATERMARK_UNDERRUN).
203dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
204dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  STRUCT MEMBERS:
205dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize             : Size of the structure in bytes
206dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion          : OMX specification version information
207dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nPortIndex        : Port that this structure applies to
208dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  markInfo          : identifies the target component handle that shall emit
209dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      the mark buffer event and associated
210dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  bEnable           : enables or disables the buffer marking insertion.
211dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
212dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
213dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_BUFFERMARKINGTYPE {
214dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;
215dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;
216dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nPortIndex;
217dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_MARKTYPE markInfo;
218dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_BOOL  bEnable;
219dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_BUFFERMARKINGTYPE;
220dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
221dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
222dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Source ports.
223dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
224dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  STRUCT MEMBERS:
225dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize               : Size of the structure in bytes
226dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion            : OMX specification version information
227dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nMinimumPortNumber  : Minimum port number the component may use
228dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nMaximumPortNumber  : Maximum port number the component may use
229dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
230dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_PARAM_STREAMING_SOURCE_PORTS
231dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
232dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nSize;
233dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_VERSIONTYPE nVersion;
234dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U16 nMinimumPortNumber;
235dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U16 nMaximumPortNumber;
236dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_PARAM_STREAMING_SOURCE_PORTS;
237dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
238dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
239dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Enumeration used to define to the protocol message type.
240dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
241dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum QOMX_STREAMING_PROTOCOLMESSAGETYPE
242dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
243dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_PROTOCOLMESSAGE_REQUEST,
244dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_PROTOCOLMESSAGE_RESPONSE,
245dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_PROTOCOLMESSAGE_ALL
246dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_STREAMING_PROTOCOLMESSAGETYPE;
247dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
248dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
249dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Enumeration used to define the protocol header action type.
250dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
251dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum QOMX_STREAMING_PROTOCOLHEADERACTIONTYPE
252dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
253dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_PROTOCOLHEADERACTION_NONE,
254dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_PROTOCOLHEADERACTION_ADD,
255dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_PROTOCOLHEADERACTION_REMOVE
256dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_STREAMING_PROTOCOLHEADERACTIONTYPE;
257dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
258dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
259dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Protocol message header.
260dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
261dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  STRUCT MEMBERS:
262dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize             : Size of the structure in bytes (including size of
263dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                        messageHeader parameter)
264dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion          : OMX specification version information
265dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eMessageType      : enumeration to distinguish protocol message type
266dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eActionType       : enumeration indicating protocol header action type
267dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nMessageClassSize : size of the message class string (excluding any
268dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      terminating characters)
269dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nHeaderNameSize   : size of the header name string (excluding any
270dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      terminating characters)
271dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nHeaderValueSize  : size of the header value string (excluding any
272dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      terminating characters)
273dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  messageHeader     : the NULL-terminated message header string formed by
274dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      concatenating message class, header name and value
275dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      strings, i.e. the first nMessageClassSize bytes of the
276dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      messageHeader parameter correspond to the message class
277dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      (without any terminating characters), followed by the
278dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      header name of size nHeaderNameSize bytes and then the
279dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      header value of size nHeaderValueSize bytes. The value
280dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      of message class is interpreted by what is mentioned in
281dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      eMessageType,
282dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       1) For request message
283dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          (QOMX_STREAMING_PROTOCOLMESSAGE_REQUEST) it is the
284dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          Method token (as specified in the RFC 2616 and RFC
285dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          2326).
286dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       2) For response message
287dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          (QOMX_STREAMING_PROTOCOLMESSAGE_RESPONSE) it is
288dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          either or both the Method token and a three digit
289dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          Status-Code (as specified in the RFC 2616 and
290dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          RFC 2326) or a class of the response Status-Codes
291dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          (1xx, 2xx, 3xx, 4xx, and 5xx). When both present,
292dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          the method token and status code are separated by
293dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          1 empty space.
294dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       3) For all messages
295dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          (QOMX_STREAMING_PROTOCOLMESSAGE_ALL) it will be
296dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          absent (nMessageClassSize will be zero).
297dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
298dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_CONFIG_STREAMING_PROTOCOLHEADERTYPE
299dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
300dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nSize;
301dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_VERSIONTYPE nVersion;
302dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_PROTOCOLMESSAGETYPE eMessageType;
303dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_PROTOCOLHEADERACTIONTYPE eActionType;
304dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nMessageClassSize;
305dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nHeaderNameSize;
306dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nHeaderValueSize;
307dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U8 messageHeader[1];
308dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_CONFIG_STREAMING_PROTOCOLHEADERTYPE;
309dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
310dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
311dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Protocol Event.
312dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
313dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  STRUCT MEMBERS:
314dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize             : Size of the structure in bytes (including size of
315dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                        protocolEventText parameter)
316dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion          : OMX specification version information
317dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nProtocolEvent    : 1xx, 2xx, 3xx, 4xx or 5xx codes for HTTP/RTSP protocol
318dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nReasonPhraseSize : size of the reason phrase string (excluding any
319dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      terminating characters)
320dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nEntityBodySize   : size of the entity body string (excluding any
321dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      terminating characters)
322dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nContentUriSize   : size of the url (exclusing any terminating characters)
323dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      url is used a key to identify for which operation this
324dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      event belongs to
325dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  protocolEventText : NULL-terminated protocol event text string formed by
326dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      concatenating reason phrase and entity body
327dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      and uri, i.e. the first nReasonPhraseSize bytes of the
328dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      protocolEventText parameter correspond to the reason
329dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      phrase (without any terminating characters), followed
330dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      by the entity body of size nEntityBodySize bytes,
331dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      followed by nContentUriSize bytes of URI
332dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
333dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_CONFIG_STREAMING_PROTOCOLEVENTTYPE
334dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
335dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nSize;
336dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_VERSIONTYPE nVersion;
337dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nProtocolEvent;
338dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nReasonPhraseSize;
339dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nEntityBodySize;
340dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nContentUriSize;
341dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U8 protocolEventText[1];
342dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_CONFIG_STREAMING_PROTOCOLEVENTTYPE;
343dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
344dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
345dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Protocol Headers Event
346dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
347dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * STRUCT MEMBERS:
348dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * nSize:                   Size of the structure in bytes including
349dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          messageHeaders.
350dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * nVersion:                OMX specification version information
351dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * eMessageType:            enumeration to distinguish protocol message
352dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          type
353dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * nMessageClassSize:       Size of the message class string.
354dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * nMessageAttributesSize:  Size of the message attributes
355dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                          string.
356dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
357dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * This structure can be populated in 2 modes:
358dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * (i)  Query for required sizes of message class and message
359dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *      attributes. In this mode, nMessageClassSize and
360dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *      nMessageAtributesSize both need to be set to zero.
361dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * (ii) Request to populate messageHeaders. In this mode, at
362dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *      least one of nMessageClassSize or nMessageAttributesSize
363dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *      need to be non-zero. On output, messageHeaders will be
364dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *      populated with the message class and message attributes.
365dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *      nMessageClassSize and/or nMessageAtributesSize may be
366dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *      overwritten to reflect the actual start and end of
367dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *      message class and message attributes. The max sizes of
368dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *      message class and message attributes will not exceed the
369dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *      values input by the client. The strings are not null
370dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *      terminated.
371dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
372dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_STREAMING_PROTOCOLHEADERSTYPE {
373dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nSize;
374dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_VERSIONTYPE nVersion;
375dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    QOMX_STREAMING_PROTOCOLMESSAGETYPE eMessageType;
376dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nMessageClassSize;
377dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U32 nMessageAtributesSize;
378dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_U8 messageHeaders[1];
379dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_STREAMING_PROTOCOLHEADERSTYPE;
380dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
381dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
382dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Enumeration of possible streaming network interfaces.
383dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
384dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum QOMX_STREAMING_NETWORKINTERFACETYPE
385dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
386dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_ANY_IFACE,
387dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_CDMA_SN_IFACE,
388dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_CDMA_AN_IFACE,
389dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_UMTS_IFACE,
390dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_SIO_IFACE,
391dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_CDMA_BCAST_IFACE,
392dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_WLAN_IFACE,
393dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_DUN_IFACE,
394dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_FLO_IFACE,
395dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_DVBH_IFACE,
396dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_STA_IFACE,
397dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_IPSEC_IFACE,
398dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_LO_IFACE,
399dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_MBMS_IFACE,
400dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_IWLAN_3GPP_IFACE,
401dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_IWLAN_3GPP2_IFACE,
402dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_MIP6_IFACE,
403dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_UW_FMC_IFACE,
404dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACE_CMMB_IFACE
405dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_STREAMING_NETWORKINTERFACETYPE;
406dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
407dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/*
408dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Network interface.
409dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
410dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  STRUCT MEMBERS:
411dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize             : Size of the structure in bytes (including size of
412dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                        protocolErrorText parameter)
413dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion          : OMX specification version information
414dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eNetworkInterface : Network interface the component may use
415dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
416dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_PARAM_STREAMING_NETWORKINTERFACE
417dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
418dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nSize;
419dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_VERSIONTYPE nVersion;
420dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_STREAMING_NETWORKINTERFACETYPE eNetworkInterface;
421dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_PARAM_STREAMING_NETWORKINTERFACE;
422dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
423dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
424dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Enumeration of UnitType for DownloadProgress
425dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
426dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef enum QOMX_DOWNLOADPROGRESSUNITSTYPE
427dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
428dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_DOWNLOADPROGRESSUNITSTYPE_TIME,
429dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_DOWNLOADPROGRESSUNITSTYPE_DATA
430dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_DOWNLOADPROGRESSUNITSTYPE;
431dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
432dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
433dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
434dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * DownloadProgress units
435dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
436dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * STRUCT MEMBERS:
437dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize             : Size of the structure in bytes (including size of
438dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                        protocolEventText parameter)
439dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion          : OMX specification version information
440dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nPortIndex        : Port that this structure applies to
441dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  eUnitsType        : Specifies the type of units type in
442dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      which download prgoress should be
443dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      reported
444dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
445dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_CONFIG_STREAMING_DOWNLOADPROGRESSUNITS
446dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
447dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nSize;
448dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_VERSIONTYPE nVersion;
449dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nPortIndex;
450dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  QOMX_DOWNLOADPROGRESSUNITSTYPE eUnitsType;
451dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_CONFIG_STREAMING_DOWNLOADPROGRESSUNITS;
452dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
453dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
454dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/**
455dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * Download Progress
456dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *
457dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand * STRUCT MEMBERS:
458dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nSize             : Size of the structure in bytes (including size of
459dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                        protocolEventText parameter)
460dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nVersion          : OMX specification version information
461dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nPortIndex        : Port that this structure applies to
462dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nDataDownloaded   : specifies the amount of data downloaded
463dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      in time or data scale (based on
464dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      eUnitsType) from the media position
465dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      specified by nStartOffset below. It
466dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      starts at zero and progressively
467dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                      increases as more data is downloaded
468dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *  nCurrentStartOffset: specifies is the current download start
469dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       position in time or data scale (based
470dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand *                       on eUnitsType)
471dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand */
472dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandtypedef struct QOMX_CONFIG_STREAMING_DOWNLOADPROGRESSTYPE
473dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
474dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nSize;
475dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_VERSIONTYPE nVersion;
476dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nPortIndex;
477dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nDataDownloaded;
478dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_U32 nCurrentStartOffset;
479dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand} QOMX_CONFIG_STREAMING_DOWNLOADPROGRESSTYPE;
480dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
481dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#if defined( __cplusplus )
482dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
483dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#endif /* end of macro __cplusplus */
484dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
485dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#endif /* QOMX_STREAMINGEXTENSIONS_H_ */
486dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
487