1dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/*--------------------------------------------------------------------------
26eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalCopyright (c) 2009, The The Linux Foundation. All rights reserved.
3dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
4dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandRedistribution and use in source and binary forms, with or without
5dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandmodification, are permitted provided that the following conditions are met:
6dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    * Redistributions of source code must retain the above copyright
7dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      notice, this list of conditions and the following disclaimer.
8dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    * Redistributions in binary form must reproduce the above copyright
9dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      notice, this list of conditions and the following disclaimer in the
10dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      documentation and/or other materials provided with the distribution.
116eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    * Neither the name of The Linux Foundation nor
12dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      the names of its contributors may be used to endorse or promote
13dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      products derived from this software without specific prior written
14dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      permission.
15dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
16dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandNON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand--------------------------------------------------------------------------*/
28dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/*============================================================================
29dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                            O p e n M A X   w r a p p e r s
30dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                             O p e n  M A X   C o r e
31dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
32dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand This module contains the implementation of the OpenMAX core Macros which
33dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand operate directly on the component.
34dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
35dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand*//*========================================================================*/
36dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
37dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand//////////////////////////////////////////////////////////////////////////////
38dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand//                             Include Files
39dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand//////////////////////////////////////////////////////////////////////////////
40dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#include "qc_omx_common.h"
41dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#include "omx_core_cmp.h"
42dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#include "qc_omx_component.h"
43dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand#include <string.h>
44dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
45dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
46dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandvoid * qc_omx_create_component_wrapper(OMX_PTR obj_ptr)
47dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
48dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    qc_omx_component *pThis        = (qc_omx_component *)obj_ptr;
49dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_COMPONENTTYPE* component   = &(pThis->m_cmp);
50dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    memset(&pThis->m_cmp,0,sizeof(OMX_COMPONENTTYPE));
51dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
52dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->nSize               = sizeof(OMX_COMPONENTTYPE);
53dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->nVersion.nVersion   = OMX_SPEC_VERSION;
54dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->pApplicationPrivate = 0;
55dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->pComponentPrivate   = obj_ptr;
56dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
57dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->AllocateBuffer      = &qc_omx_component_allocate_buffer;
58dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->FreeBuffer          = &qc_omx_component_free_buffer;
59dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->GetParameter        = &qc_omx_component_get_parameter;
60dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->SetParameter        = &qc_omx_component_set_parameter;
61dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->SendCommand         = &qc_omx_component_send_command;
62dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->FillThisBuffer      = &qc_omx_component_fill_this_buffer;
63dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->EmptyThisBuffer     = &qc_omx_component_empty_this_buffer;
64dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->GetState            = &qc_omx_component_get_state;
65dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->GetComponentVersion = &qc_omx_component_get_version;
66dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->GetConfig           = &qc_omx_component_get_config;
67dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->SetConfig           = &qc_omx_component_set_config;
68dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->GetExtensionIndex   = &qc_omx_component_get_extension_index;
69dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->ComponentTunnelRequest = &qc_omx_component_tunnel_request;
70dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->UseBuffer           = &qc_omx_component_use_buffer;
71dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->SetCallbacks        = &qc_omx_component_set_callbacks;
72dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->UseEGLImage         = &qc_omx_component_use_EGL_image;
73dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->ComponentRoleEnum   = &qc_omx_component_role_enum;
74dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    component->ComponentDeInit     = &qc_omx_component_deinit;
75dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    return (void *)component;
76dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
77dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
78dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
79dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
80dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/************************************************************************/
81dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/*               COMPONENT INTERFACE                                    */
82dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand/************************************************************************/
83dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
84dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandOMX_ERRORTYPE
85dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_init(OMX_IN OMX_HANDLETYPE hComp, OMX_IN OMX_STRING componentName)
86dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
87dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
88dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
89dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_init %x\n",(unsigned)hComp);
90dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
91dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
92dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
93dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    // call the init fuction
94dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->component_init(componentName);
95dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
96dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    if(eRet != OMX_ErrorNone)
97dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    {
98dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand      //  in case of error, please destruct the component created
99dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand       delete pThis;
100dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    }
101dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
102dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
103dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
104dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
105dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
106dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandOMX_ERRORTYPE
107dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_get_version(OMX_IN OMX_HANDLETYPE               hComp,
108dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                    OMX_OUT OMX_STRING          componentName,
109dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                    OMX_OUT OMX_VERSIONTYPE* componentVersion,
110dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                    OMX_OUT OMX_VERSIONTYPE*      specVersion,
111dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                    OMX_OUT OMX_UUIDTYPE*       componentUUID)
112dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
113dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
114dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
115dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_get_version %x, %s , %x\n",(unsigned)hComp,componentName,(unsigned)componentVersion);
116dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
117dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
118dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->get_component_version(hComp,componentName,componentVersion,specVersion,componentUUID);
119dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
120dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
121dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
122dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
123dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandOMX_ERRORTYPE
124dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_send_command(OMX_IN OMX_HANDLETYPE hComp,
125dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand            OMX_IN OMX_COMMANDTYPE  cmd,
126dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand            OMX_IN OMX_U32       param1,
127dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand            OMX_IN OMX_PTR      cmdData)
128dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
129dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
130dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
131dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_send_command %x, %d , %d\n",(unsigned)hComp,(unsigned)cmd,(unsigned)param1);
132dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
133dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
134dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
135dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->send_command(hComp,cmd,param1,cmdData);
136dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
137dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
138dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
139dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
140dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandOMX_ERRORTYPE
141dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_get_parameter(OMX_IN OMX_HANDLETYPE     hComp,
142dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand             OMX_IN OMX_INDEXTYPE paramIndex,
143dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand             OMX_INOUT OMX_PTR     paramData)
144dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
145dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
146dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
147dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_get_parameter %x, %x , %d\n",(unsigned)hComp,(unsigned)paramData,paramIndex);
148dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
149dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
150dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
151dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->get_parameter(hComp,paramIndex,paramData);
152dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
153dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
154dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
155dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
156dd5743ee305c8db17facba3e0176a3d07adc7499Rom LemarchandOMX_ERRORTYPE
157dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_set_parameter(OMX_IN OMX_HANDLETYPE     hComp,
158dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand             OMX_IN OMX_INDEXTYPE paramIndex,
159dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand             OMX_IN OMX_PTR        paramData)
160dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
161dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
162dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
163dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_set_parameter %x, %x , %d\n",(unsigned)hComp,(unsigned)paramData,paramIndex);
164dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
165dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
166dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
167dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->set_parameter(hComp,paramIndex,paramData);
168dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
169dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
170dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
171dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
172dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
173dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_get_config(OMX_IN OMX_HANDLETYPE      hComp,
174dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand          OMX_IN OMX_INDEXTYPE configIndex,
175dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand          OMX_INOUT OMX_PTR     configData)
176dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
177dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
178dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
179dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_get_config %x\n",(unsigned)hComp);
180dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
181dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
182dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
183dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand     eRet = pThis->get_config(hComp,
184dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                              configIndex,
185dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                              configData);
186dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
187dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
188dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
189dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
190dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
191dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_set_config(OMX_IN OMX_HANDLETYPE      hComp,
192dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand          OMX_IN OMX_INDEXTYPE configIndex,
193dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand          OMX_IN OMX_PTR        configData)
194dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
195dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
196dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
197dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_set_config %x\n",(unsigned)hComp);
198dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
199dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
200dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
201dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand     eRet = pThis->set_config(hComp,
202dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                              configIndex,
203dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                              configData);
204dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
205dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
206dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
207dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
208dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
209dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_get_extension_index(OMX_IN OMX_HANDLETYPE      hComp,
210dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                  OMX_IN OMX_STRING      paramName,
211dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                  OMX_OUT OMX_INDEXTYPE* indexType)
212dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
213dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
214dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
215dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
216dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
217dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->get_extension_index(hComp,paramName,indexType);
218dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
219dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
220dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
221dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
222dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
223dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_get_state(OMX_IN OMX_HANDLETYPE  hComp,
224dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand         OMX_OUT OMX_STATETYPE* state)
225dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
226dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
227dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
228dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_get_state %x\n",(unsigned)hComp);
229dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
230dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
231dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
232dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->get_state(hComp,state);
233dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
234dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
235dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
236dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
237dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
238dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_tunnel_request(OMX_IN OMX_HANDLETYPE                hComp,
239dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                       OMX_IN OMX_U32                        port,
240dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                       OMX_IN OMX_HANDLETYPE        peerComponent,
241dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                       OMX_IN OMX_U32                    peerPort,
242dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                       OMX_INOUT OMX_TUNNELSETUPTYPE* tunnelSetup)
243dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
244dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("Error: qc_omx_component_tunnel_request Not Implemented\n");
245dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return OMX_ErrorNotImplemented;
246dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
247dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
248dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
249dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_use_buffer(OMX_IN OMX_HANDLETYPE                hComp,
250dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand          OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
251dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand          OMX_IN OMX_U32                        port,
252dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand          OMX_IN OMX_PTR                     appData,
253dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand          OMX_IN OMX_U32                       bytes,
254dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand          OMX_IN OMX_U8*                      buffer)
255dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
256dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
257dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
258dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_use_buffer %x\n",(unsigned)hComp);
259dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
260dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
261dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
262dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand     eRet = pThis->use_buffer(hComp,
263dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                              bufferHdr,
264dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                              port,
265dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                              appData,
266dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                              bytes,
267dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                              buffer);
268dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
269dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
270dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
271dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
272dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
273dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand// qc_omx_component_allocate_buffer  -- API Call
274dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
275dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_allocate_buffer(OMX_IN OMX_HANDLETYPE                hComp,
276dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand               OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
277dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand               OMX_IN OMX_U32                        port,
278dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand               OMX_IN OMX_PTR                     appData,
279dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand               OMX_IN OMX_U32                       bytes)
280dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
281dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
282dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
283dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
284dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_allocate_buffer %x, %x , %d\n",(unsigned)hComp,(unsigned)bufferHdr,(unsigned)port);
285dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
286dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
287dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
288dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->allocate_buffer(hComp,bufferHdr,port,appData,bytes);
289dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
290dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
291dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
292dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
293dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
294dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_free_buffer(OMX_IN OMX_HANDLETYPE         hComp,
295dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand           OMX_IN OMX_U32                 port,
296dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand           OMX_IN OMX_BUFFERHEADERTYPE* buffer)
297dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
298dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
299dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
300dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
301dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_free_buffer[%d] %x, %x\n", (unsigned)port, (unsigned)hComp, (unsigned)buffer);
302dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
303dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
304dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
305dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->free_buffer(hComp,port,buffer);
306dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
307dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
308dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
309dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
310dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
311dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_empty_this_buffer(OMX_IN OMX_HANDLETYPE         hComp,
312dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                OMX_IN OMX_BUFFERHEADERTYPE* buffer)
313dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
314dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
315dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
316dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_empty_this_buffer %x, %x\n",(unsigned)hComp,(unsigned)buffer);
317dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
318dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
319dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
320dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->empty_this_buffer(hComp,buffer);
321dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
322dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
323dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
324dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
325dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
326dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_fill_this_buffer(OMX_IN OMX_HANDLETYPE         hComp,
327dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand               OMX_IN OMX_BUFFERHEADERTYPE* buffer)
328dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
329dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
330dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
331dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_fill_this_buffer %x, %x\n",(unsigned)hComp,(unsigned)buffer);
332dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
333dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
334dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->fill_this_buffer(hComp,buffer);
335dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
336dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
337dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
338dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
339dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
340dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_set_callbacks(OMX_IN OMX_HANDLETYPE        hComp,
341dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand             OMX_IN OMX_CALLBACKTYPE* callbacks,
342dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand             OMX_IN OMX_PTR             appData)
343dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
344dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
345dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
346dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_set_callbacks %x, %x , %x\n",(unsigned)hComp,(unsigned)callbacks,(unsigned)appData);
347dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
348dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
349dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
350dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->set_callbacks(hComp,callbacks,appData);
351dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
352dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
353dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
354dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
355dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
356dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_deinit(OMX_IN OMX_HANDLETYPE hComp)
357dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
358dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
359dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
360dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_deinit %x\n",(unsigned)hComp);
361dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
362dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
363dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
364dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    // call the deinit fuction first
365dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    OMX_STATETYPE state;
366dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    pThis->get_state(hComp,&state);
367dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    DEBUG_PRINT("Calling FreeHandle in state %d \n", state);
368dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->component_deinit(hComp);
369dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    // destroy the component.
370dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    delete pThis;
371dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    ((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate = NULL;
372dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
373dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
374dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
375dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
376dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
377dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_use_EGL_image(OMX_IN OMX_HANDLETYPE                hComp,
378dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand            OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
379dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand            OMX_IN OMX_U32                        port,
380dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand            OMX_IN OMX_PTR                     appData,
381dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand            OMX_IN void*                      eglImage)
382dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
383dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
384dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
385dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_use_EGL_image %x, %x , %d\n",(unsigned)hComp,(unsigned)bufferHdr,(unsigned)port);
386dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
387dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
388dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->use_EGL_image(hComp,bufferHdr,port,appData,eglImage);
389dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
390dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
391dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
392dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
393dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand OMX_ERRORTYPE
394dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchandqc_omx_component_role_enum(OMX_IN OMX_HANDLETYPE hComp,
395dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                  OMX_OUT OMX_U8*        role,
396dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand                  OMX_IN OMX_U32        index)
397dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand{
398dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
399dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
400dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  DEBUG_PRINT("OMXCORE: qc_omx_component_role_enum %x, %x , %d\n",(unsigned)hComp,(unsigned)role,(unsigned)index);
401dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand
402dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  if(pThis)
403dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  {
404dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand    eRet = pThis->component_role_enum(hComp,role,index);
405dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  }
406dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand  return eRet;
407dd5743ee305c8db17facba3e0176a3d07adc7499Rom Lemarchand}
408