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;
898767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_init %p\n", 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;
1158767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_get_version %p, %s , %p\n", hComp, componentName, 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;
1318767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_send_command %p, %d , %d\n", 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;
1478767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_get_parameter %p, %p , %d\n", hComp, 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;
1638767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_set_parameter %p, %p , %d\n", hComp, 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;
1798767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_get_config %p\n", 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;
1978767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_set_config %p\n", 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;
2288767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_get_state %p\n", 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{
2448767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  (void) hComp, (void) port, (void) peerComponent, (void) peerPort, (void) tunnelSetup;
245826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  DEBUG_PRINT("Error: qc_omx_component_tunnel_request Not Implemented\n");
246826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return OMX_ErrorNotImplemented;
247826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
248826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
249826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
250826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_use_buffer(OMX_IN OMX_HANDLETYPE                hComp,
251826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
252826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_IN OMX_U32                        port,
253826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_IN OMX_PTR                     appData,
254826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_IN OMX_U32                       bytes,
255826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev          OMX_IN OMX_U8*                      buffer)
256826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
257826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
258826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
2598767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_use_buffer %p\n", hComp);
260826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
261826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
262826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
263826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev     eRet = pThis->use_buffer(hComp,
264826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              bufferHdr,
265826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              port,
266826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              appData,
267826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              bytes,
268826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                              buffer);
269826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
270826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
271826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
272826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
273826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
274826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev// qc_omx_component_allocate_buffer  -- API Call
275826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
276826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_allocate_buffer(OMX_IN OMX_HANDLETYPE                hComp,
277826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev               OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
278826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev               OMX_IN OMX_U32                        port,
279826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev               OMX_IN OMX_PTR                     appData,
280826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev               OMX_IN OMX_U32                       bytes)
281826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
282826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
283826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
284826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
2858767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_allocate_buffer %p, %p , %d\n",hComp, bufferHdr,(unsigned)port);
286826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
287826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
288826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
289826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->allocate_buffer(hComp,bufferHdr,port,appData,bytes);
290826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
291826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
292826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
293826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
294826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
295826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_free_buffer(OMX_IN OMX_HANDLETYPE         hComp,
296826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev           OMX_IN OMX_U32                 port,
297826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev           OMX_IN OMX_BUFFERHEADERTYPE* buffer)
298826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
299826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
300826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
301826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
3028767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_free_buffer[%d] %p, %p\n", (unsigned)port, hComp, buffer);
303826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
304826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
305826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
306826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->free_buffer(hComp,port,buffer);
307826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
308826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
309826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
310826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
311826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
312826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_empty_this_buffer(OMX_IN OMX_HANDLETYPE         hComp,
313826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                OMX_IN OMX_BUFFERHEADERTYPE* buffer)
314826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
315826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
316826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
3178767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_empty_this_buffer %p, %p\n",hComp, buffer);
318826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
319826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
320826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
321826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->empty_this_buffer(hComp,buffer);
322826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
323826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
324826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
325826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
326826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
327826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_fill_this_buffer(OMX_IN OMX_HANDLETYPE         hComp,
328826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev               OMX_IN OMX_BUFFERHEADERTYPE* buffer)
329826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
330826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
331826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
3328767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_fill_this_buffer %p, %p\n", hComp, buffer);
333826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
334826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
335826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->fill_this_buffer(hComp,buffer);
336826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
337826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
338826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
339826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
340826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
341826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_set_callbacks(OMX_IN OMX_HANDLETYPE        hComp,
342826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev             OMX_IN OMX_CALLBACKTYPE* callbacks,
343826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev             OMX_IN OMX_PTR             appData)
344826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
345826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
346826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
3478767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_set_callbacks %p, %p , %p\n", hComp, callbacks, appData);
348826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
349826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
350826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
351826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->set_callbacks(hComp,callbacks,appData);
352826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
353826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
354826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
355826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
356826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
357826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_deinit(OMX_IN OMX_HANDLETYPE hComp)
358826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
359826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
360826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
3618767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_deinit %p\n", hComp);
362826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
363826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
364826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
365826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    // call the deinit fuction first
366826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    OMX_STATETYPE state;
367826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    pThis->get_state(hComp,&state);
368826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    DEBUG_PRINT("Calling FreeHandle in state %d \n", state);
369826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->component_deinit(hComp);
370826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    // destroy the component.
371826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    delete pThis;
372826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
373826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
374826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
375826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
376826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
377826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_use_EGL_image(OMX_IN OMX_HANDLETYPE                hComp,
378826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev            OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
379826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev            OMX_IN OMX_U32                        port,
380826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev            OMX_IN OMX_PTR                     appData,
381826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev            OMX_IN void*                      eglImage)
382826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
383826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
384826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
3858767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_use_EGL_image %p, %p , %d\n", hComp, bufferHdr,(unsigned)port);
386826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
387826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
388826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->use_EGL_image(hComp,bufferHdr,port,appData,eglImage);
389826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
390826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
391826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
392826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
393826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev OMX_ERRORTYPE
394826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevqc_omx_component_role_enum(OMX_IN OMX_HANDLETYPE hComp,
395826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                  OMX_OUT OMX_U8*        role,
396826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev                  OMX_IN OMX_U32        index)
397826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
398826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
399826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
4008767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan  DEBUG_PRINT("OMXCORE: qc_omx_component_role_enum %p, %p , %d\n", hComp, role,(unsigned)index);
401826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
402826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  if(pThis)
403826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  {
404826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    eRet = pThis->component_role_enum(hComp,role,index);
405826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  }
406826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev  return eRet;
407826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev}
408