1826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/*--------------------------------------------------------------------------
26eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalCopyright (c) 2009, The Linux Foundation. All rights reserved.
3826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
4826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevRedistribution and use in source and binary forms, with or without
5826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevmodification, are permitted provided that the following conditions are met:
6826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    * Redistributions of source code must retain the above copyright
7826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      notice, this list of conditions and the following disclaimer.
8826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    * Redistributions in binary form must reproduce the above copyright
9826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      notice, this list of conditions and the following disclaimer in the
10826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      documentation and/or other materials provided with the distribution.
116eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    * Neither the name of The Linux Foundation nor
12826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      the names of its contributors may be used to endorse or promote
13826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      products derived from this software without specific prior written
14826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      permission.
15826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
16826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevNON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev--------------------------------------------------------------------------*/
28826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/*============================================================================
29826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                            O p e n M A X   w r a p p e r s
30826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                             O p e n  M A X   C o r e
31826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
32826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev This module contains the implementation of the OpenMAX core Macros which
33826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev operate directly on the component.
34826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
35826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev*//*========================================================================*/
36826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
37826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev//////////////////////////////////////////////////////////////////////////////
38826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev//                             Include Files
39826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev//////////////////////////////////////////////////////////////////////////////
40826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "qc_omx_common.h"
41826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "omx_core_cmp.h"
42826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "qc_omx_component.h"
43826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <string.h>
44826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
45826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
46826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevvoid * qc_omx_create_component_wrapper(OMX_PTR obj_ptr)
47826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
48826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    qc_omx_component *pThis        = (qc_omx_component *)obj_ptr;
49826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_COMPONENTTYPE* component   = &(pThis->m_cmp);
50826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    memset(&pThis->m_cmp,0,sizeof(OMX_COMPONENTTYPE));
51826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
52826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->nSize               = sizeof(OMX_COMPONENTTYPE);
53826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->nVersion.nVersion   = OMX_SPEC_VERSION;
54826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->pApplicationPrivate = 0;
55826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->pComponentPrivate   = obj_ptr;
56826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
57826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->AllocateBuffer      = &qc_omx_component_allocate_buffer;
58826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->FreeBuffer          = &qc_omx_component_free_buffer;
59826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->GetParameter        = &qc_omx_component_get_parameter;
60826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->SetParameter        = &qc_omx_component_set_parameter;
61826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->SendCommand         = &qc_omx_component_send_command;
62826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->FillThisBuffer      = &qc_omx_component_fill_this_buffer;
63826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->EmptyThisBuffer     = &qc_omx_component_empty_this_buffer;
64826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->GetState            = &qc_omx_component_get_state;
65826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->GetComponentVersion = &qc_omx_component_get_version;
66826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->GetConfig           = &qc_omx_component_get_config;
67826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->SetConfig           = &qc_omx_component_set_config;
68826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->GetExtensionIndex   = &qc_omx_component_get_extension_index;
69826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->ComponentTunnelRequest = &qc_omx_component_tunnel_request;
70826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->UseBuffer           = &qc_omx_component_use_buffer;
71826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->SetCallbacks        = &qc_omx_component_set_callbacks;
72826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->UseEGLImage         = &qc_omx_component_use_EGL_image;
73826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->ComponentRoleEnum   = &qc_omx_component_role_enum;
74826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    component->ComponentDeInit     = &qc_omx_component_deinit;
75826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    return (void *)component;
76826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
77826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
78826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
79826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
80826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/************************************************************************/
81826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/*               COMPONENT INTERFACE                                    */
82826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/************************************************************************/
83826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
84826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevOMX_ERRORTYPE
85826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_init(OMX_IN OMX_HANDLETYPE hComp, OMX_IN OMX_STRING componentName)
86826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
87826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
88826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
89826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_init %x\n",(unsigned)hComp);
90826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
91826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
92826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
93826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    // call the init fuction
94826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->component_init(componentName);
95826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
96826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    if(eRet != OMX_ErrorNone)
97826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    {
98826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      //  in case of error, please destruct the component created
99826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev       delete pThis;
100826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    }
101826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
102826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
103826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
104826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
105826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
106826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevOMX_ERRORTYPE
107826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_get_version(OMX_IN OMX_HANDLETYPE               hComp,
108826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                    OMX_OUT OMX_STRING          componentName,
109826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                    OMX_OUT OMX_VERSIONTYPE* componentVersion,
110826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                    OMX_OUT OMX_VERSIONTYPE*      specVersion,
111826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                    OMX_OUT OMX_UUIDTYPE*       componentUUID)
112826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
113826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
114826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
115826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_get_version %x, %s , %x\n",(unsigned)hComp,componentName,(unsigned)componentVersion);
116826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
117826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
118826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->get_component_version(hComp,componentName,componentVersion,specVersion,componentUUID);
119826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
120826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
121826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
122826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
123826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevOMX_ERRORTYPE
124826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_send_command(OMX_IN OMX_HANDLETYPE hComp,
125826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev            OMX_IN OMX_COMMANDTYPE  cmd,
126826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev            OMX_IN OMX_U32       param1,
127826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev            OMX_IN OMX_PTR      cmdData)
128826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
129826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
130826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
131826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_send_command %x, %d , %d\n",(unsigned)hComp,(unsigned)cmd,(unsigned)param1);
132826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
133826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
134826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
135826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->send_command(hComp,cmd,param1,cmdData);
136826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
137826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
138826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
139826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
140826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevOMX_ERRORTYPE
141826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_get_parameter(OMX_IN OMX_HANDLETYPE     hComp,
142826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev             OMX_IN OMX_INDEXTYPE paramIndex,
143826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev             OMX_INOUT OMX_PTR     paramData)
144826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
145826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
146826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
147826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_get_parameter %x, %x , %d\n",(unsigned)hComp,(unsigned)paramData,paramIndex);
148826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
149826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
150826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
151826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->get_parameter(hComp,paramIndex,paramData);
152826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
153826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
154826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
155826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
156826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevOMX_ERRORTYPE
157826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_set_parameter(OMX_IN OMX_HANDLETYPE     hComp,
158826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev             OMX_IN OMX_INDEXTYPE paramIndex,
159826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev             OMX_IN OMX_PTR        paramData)
160826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
161826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
162826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
163826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_set_parameter %x, %x , %d\n",(unsigned)hComp,(unsigned)paramData,paramIndex);
164826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
165826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
166826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
167826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->set_parameter(hComp,paramIndex,paramData);
168826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
169826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
170826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
171826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
172826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
173826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_get_config(OMX_IN OMX_HANDLETYPE      hComp,
174826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_IN OMX_INDEXTYPE configIndex,
175826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_INOUT OMX_PTR     configData)
176826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
177826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
178826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
179826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_get_config %x\n",(unsigned)hComp);
180826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
181826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
182826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
183826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     eRet = pThis->get_config(hComp,
184826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              configIndex,
185826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              configData);
186826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
187826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
188826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
189826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
190826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
191826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_set_config(OMX_IN OMX_HANDLETYPE      hComp,
192826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_IN OMX_INDEXTYPE configIndex,
193826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_IN OMX_PTR        configData)
194826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
195826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
196826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
197826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_set_config %x\n",(unsigned)hComp);
198826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
199826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
200826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
201826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     eRet = pThis->set_config(hComp,
202826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              configIndex,
203826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              configData);
204826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
205826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
206826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
207826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
208826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
209826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_get_extension_index(OMX_IN OMX_HANDLETYPE      hComp,
210826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                  OMX_IN OMX_STRING      paramName,
211826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                  OMX_OUT OMX_INDEXTYPE* indexType)
212826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
213826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
214826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
215826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
216826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
217826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->get_extension_index(hComp,paramName,indexType);
218826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
219826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
220826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
221826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
222826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
223826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_get_state(OMX_IN OMX_HANDLETYPE  hComp,
224826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev         OMX_OUT OMX_STATETYPE* state)
225826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
226826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
227826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
228826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_get_state %x\n",(unsigned)hComp);
229826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
230826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
231826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
232826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->get_state(hComp,state);
233826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
234826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
235826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
236826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
237826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
238826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_tunnel_request(OMX_IN OMX_HANDLETYPE                hComp,
239826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                       OMX_IN OMX_U32                        port,
240826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                       OMX_IN OMX_HANDLETYPE        peerComponent,
241826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                       OMX_IN OMX_U32                    peerPort,
242826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                       OMX_INOUT OMX_TUNNELSETUPTYPE* tunnelSetup)
243826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
244826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("Error: qc_omx_component_tunnel_request Not Implemented\n");
245826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return OMX_ErrorNotImplemented;
246826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
247826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
248826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
249826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_use_buffer(OMX_IN OMX_HANDLETYPE                hComp,
250826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
251826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_IN OMX_U32                        port,
252826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_IN OMX_PTR                     appData,
253826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_IN OMX_U32                       bytes,
254826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_IN OMX_U8*                      buffer)
255826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
256826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
257826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
258826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_use_buffer %x\n",(unsigned)hComp);
259826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
260826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
261826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
262826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     eRet = pThis->use_buffer(hComp,
263826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              bufferHdr,
264826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              port,
265826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              appData,
266826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              bytes,
267826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              buffer);
268826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
269826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
270826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
271826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
272826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
273826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev// qc_omx_component_allocate_buffer  -- API Call
274826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
275826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_allocate_buffer(OMX_IN OMX_HANDLETYPE                hComp,
276826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev               OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
277826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev               OMX_IN OMX_U32                        port,
278826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev               OMX_IN OMX_PTR                     appData,
279826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev               OMX_IN OMX_U32                       bytes)
280826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
281826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
282826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
283826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
284826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_allocate_buffer %x, %x , %d\n",(unsigned)hComp,(unsigned)bufferHdr,(unsigned)port);
285826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
286826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
287826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
288826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->allocate_buffer(hComp,bufferHdr,port,appData,bytes);
289826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
290826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
291826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
292826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
293826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
294826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_free_buffer(OMX_IN OMX_HANDLETYPE         hComp,
295826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev           OMX_IN OMX_U32                 port,
296826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev           OMX_IN OMX_BUFFERHEADERTYPE* buffer)
297826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
298826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
299826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
300826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
301826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_free_buffer[%d] %x, %x\n", (unsigned)port, (unsigned)hComp, (unsigned)buffer);
302826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
303826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
304826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
305826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->free_buffer(hComp,port,buffer);
306826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
307826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
308826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
309826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
310826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
311826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_empty_this_buffer(OMX_IN OMX_HANDLETYPE         hComp,
312826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                OMX_IN OMX_BUFFERHEADERTYPE* buffer)
313826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
314826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
315826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
316826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_empty_this_buffer %x, %x\n",(unsigned)hComp,(unsigned)buffer);
317826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
318826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
319826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
320826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->empty_this_buffer(hComp,buffer);
321826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
322826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
323826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
324826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
325826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
326826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_fill_this_buffer(OMX_IN OMX_HANDLETYPE         hComp,
327826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev               OMX_IN OMX_BUFFERHEADERTYPE* buffer)
328826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
329826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
330826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
331826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_fill_this_buffer %x, %x\n",(unsigned)hComp,(unsigned)buffer);
332826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
333826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
334826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->fill_this_buffer(hComp,buffer);
335826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
336826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
337826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
338826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
339826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
340826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_set_callbacks(OMX_IN OMX_HANDLETYPE        hComp,
341826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev             OMX_IN OMX_CALLBACKTYPE* callbacks,
342826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev             OMX_IN OMX_PTR             appData)
343826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
344826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
345826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
346826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_set_callbacks %x, %x , %x\n",(unsigned)hComp,(unsigned)callbacks,(unsigned)appData);
347826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
348826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
349826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
350826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->set_callbacks(hComp,callbacks,appData);
351826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
352826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
353826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
354826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
355826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
356826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_deinit(OMX_IN OMX_HANDLETYPE hComp)
357826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
358826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
359826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
360826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_deinit %x\n",(unsigned)hComp);
361826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
362826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
363826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
364826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    // call the deinit fuction first
365826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_STATETYPE state;
366826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    pThis->get_state(hComp,&state);
367826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    DEBUG_PRINT("Calling FreeHandle in state %d \n", state);
368826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->component_deinit(hComp);
369826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    // destroy the component.
370826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    delete pThis;
371826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
372826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
373826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
374826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
375826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
376826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_use_EGL_image(OMX_IN OMX_HANDLETYPE                hComp,
377826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev            OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
378826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev            OMX_IN OMX_U32                        port,
379826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev            OMX_IN OMX_PTR                     appData,
380826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev            OMX_IN void*                      eglImage)
381826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
382826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
383826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
384826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_use_EGL_image %x, %x , %d\n",(unsigned)hComp,(unsigned)bufferHdr,(unsigned)port);
385826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
386826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
387826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->use_EGL_image(hComp,bufferHdr,port,appData,eglImage);
388826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
389826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
390826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
391826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
392826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
393826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_role_enum(OMX_IN OMX_HANDLETYPE hComp,
394826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                  OMX_OUT OMX_U8*        role,
395826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                  OMX_IN OMX_U32        index)
396826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
397826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
398826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
399826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("OMXCORE: qc_omx_component_role_enum %x, %x , %d\n",(unsigned)hComp,(unsigned)role,(unsigned)index);
400826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
401826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
402826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
403826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->component_role_enum(hComp,role,index);
404826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
405826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
406826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
407