111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/*--------------------------------------------------------------------------
211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelCopyright (c) 2009, The Linux Foundation. All rights reserved.
311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelRedistribution and use in source and binary forms, with or without
511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelmodification, are permitted provided that the following conditions are met:
611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    * Redistributions of source code must retain the above copyright
711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      notice, this list of conditions and the following disclaimer.
811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    * Redistributions in binary form must reproduce the above copyright
911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      notice, this list of conditions and the following disclaimer in the
1011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      documentation and/or other materials provided with the distribution.
1111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    * Neither the name of The Linux Foundation nor
1211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      the names of its contributors may be used to endorse or promote
1311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      products derived from this software without specific prior written
1411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      permission.
1511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
1611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
1711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelNON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
2011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
2111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
2211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
2311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
2511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
2611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel--------------------------------------------------------------------------*/
2811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/*============================================================================
2911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                            O p e n M A X   w r a p p e r s
3011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                             O p e n  M A X   C o r e
3111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
3211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel This module contains the implementation of the OpenMAX core Macros which
3311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel operate directly on the component.
3411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
3511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel*//*========================================================================*/
3611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
3711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel//////////////////////////////////////////////////////////////////////////////
3811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel//                             Include Files
3911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel//////////////////////////////////////////////////////////////////////////////
4011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#include "qc_omx_common.h"
4111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#include "omx_core_cmp.h"
4211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#include "qc_omx_component.h"
4311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel#include <string.h>
4411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
4511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
4611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelvoid * qc_omx_create_component_wrapper(OMX_PTR obj_ptr)
4711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
4811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    qc_omx_component *pThis        = (qc_omx_component *)obj_ptr;
4911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_COMPONENTTYPE* component   = &(pThis->m_cmp);
5011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    memset(&pThis->m_cmp,0,sizeof(OMX_COMPONENTTYPE));
5111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
5211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->nSize               = sizeof(OMX_COMPONENTTYPE);
5311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->nVersion.nVersion   = OMX_SPEC_VERSION;
5411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->pApplicationPrivate = 0;
5511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->pComponentPrivate   = obj_ptr;
5611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
5711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->AllocateBuffer      = &qc_omx_component_allocate_buffer;
5811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->FreeBuffer          = &qc_omx_component_free_buffer;
5911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->GetParameter        = &qc_omx_component_get_parameter;
6011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->SetParameter        = &qc_omx_component_set_parameter;
6111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->SendCommand         = &qc_omx_component_send_command;
6211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->FillThisBuffer      = &qc_omx_component_fill_this_buffer;
6311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->EmptyThisBuffer     = &qc_omx_component_empty_this_buffer;
6411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->GetState            = &qc_omx_component_get_state;
6511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->GetComponentVersion = &qc_omx_component_get_version;
6611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->GetConfig           = &qc_omx_component_get_config;
6711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->SetConfig           = &qc_omx_component_set_config;
6811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->GetExtensionIndex   = &qc_omx_component_get_extension_index;
6911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->ComponentTunnelRequest = &qc_omx_component_tunnel_request;
7011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->UseBuffer           = &qc_omx_component_use_buffer;
7111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->SetCallbacks        = &qc_omx_component_set_callbacks;
7211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->UseEGLImage         = &qc_omx_component_use_EGL_image;
7311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->ComponentRoleEnum   = &qc_omx_component_role_enum;
7411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    component->ComponentDeInit     = &qc_omx_component_deinit;
7511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    return (void *)component;
7611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
7711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
7811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
7911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
8011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/************************************************************************/
8111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/*               COMPONENT INTERFACE                                    */
8211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel/************************************************************************/
8311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
8411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_ERRORTYPE
8511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_init(OMX_IN OMX_HANDLETYPE hComp, OMX_IN OMX_STRING componentName)
8611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
8711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
8811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
8911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_init %p\n", hComp);
9011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
9111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
9211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
9311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    // call the init fuction
9411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->component_init(componentName);
9511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
9611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    if(eRet != OMX_ErrorNone)
9711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    {
9811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel      //  in case of error, please destruct the component created
9911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel       delete pThis;
10011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    }
10111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
10211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
10311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
10411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
10511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
10611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_ERRORTYPE
10711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_get_version(OMX_IN OMX_HANDLETYPE               hComp,
10811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                    OMX_OUT OMX_STRING          componentName,
10911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                    OMX_OUT OMX_VERSIONTYPE* componentVersion,
11011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                    OMX_OUT OMX_VERSIONTYPE*      specVersion,
11111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                    OMX_OUT OMX_UUIDTYPE*       componentUUID)
11211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
11311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
11411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
11511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_get_version %p, %s , %p\n", hComp, componentName, componentVersion);
11611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
11711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
11811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->get_component_version(hComp,componentName,componentVersion,specVersion,componentUUID);
11911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
12011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
12111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
12211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
12311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_ERRORTYPE
12411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_send_command(OMX_IN OMX_HANDLETYPE hComp,
12511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            OMX_IN OMX_COMMANDTYPE  cmd,
12611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            OMX_IN OMX_U32       param1,
12711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            OMX_IN OMX_PTR      cmdData)
12811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
12911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
13011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
13111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_send_command %p, %d , %d\n", hComp,(unsigned)cmd,(unsigned)param1);
13211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
13311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
13411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
13511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->send_command(hComp,cmd,param1,cmdData);
13611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
13711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
13811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
13911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
14011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_ERRORTYPE
14111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_get_parameter(OMX_IN OMX_HANDLETYPE     hComp,
14211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel             OMX_IN OMX_INDEXTYPE paramIndex,
14311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel             OMX_INOUT OMX_PTR     paramData)
14411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
14511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
14611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
14711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_get_parameter %p, %p , %d\n", hComp, paramData, paramIndex);
14811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
14911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
15011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
15111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->get_parameter(hComp,paramIndex,paramData);
15211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
15311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
15411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
15511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
15611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry StrudelOMX_ERRORTYPE
15711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_set_parameter(OMX_IN OMX_HANDLETYPE     hComp,
15811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel             OMX_IN OMX_INDEXTYPE paramIndex,
15911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel             OMX_IN OMX_PTR        paramData)
16011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
16111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
16211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
16311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_set_parameter %p, %p , %d\n", hComp, paramData, paramIndex);
16411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
16511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
16611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
16711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->set_parameter(hComp,paramIndex,paramData);
16811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
16911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
17011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
17111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
17211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
17311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_get_config(OMX_IN OMX_HANDLETYPE      hComp,
17411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel          OMX_IN OMX_INDEXTYPE configIndex,
17511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel          OMX_INOUT OMX_PTR     configData)
17611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
17711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
17811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
17911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_get_config %p\n", hComp);
18011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
18111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
18211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
18311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     eRet = pThis->get_config(hComp,
18411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                              configIndex,
18511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                              configData);
18611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
18711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
18811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
18911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
19011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
19111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_set_config(OMX_IN OMX_HANDLETYPE      hComp,
19211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel          OMX_IN OMX_INDEXTYPE configIndex,
19311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel          OMX_IN OMX_PTR        configData)
19411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
19511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
19611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
19711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_set_config %p\n", hComp);
19811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
19911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
20011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
20111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     eRet = pThis->set_config(hComp,
20211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                              configIndex,
20311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                              configData);
20411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
20511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
20611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
20711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
20811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
20911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_get_extension_index(OMX_IN OMX_HANDLETYPE      hComp,
21011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                  OMX_IN OMX_STRING      paramName,
21111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                  OMX_OUT OMX_INDEXTYPE* indexType)
21211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
21311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
21411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
21511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
21611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
21711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->get_extension_index(hComp,paramName,indexType);
21811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
21911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
22011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
22111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
22211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
22311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_get_state(OMX_IN OMX_HANDLETYPE  hComp,
22411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel         OMX_OUT OMX_STATETYPE* state)
22511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
22611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
22711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
22811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_get_state %p\n", hComp);
22911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
23011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
23111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
23211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->get_state(hComp,state);
23311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
23411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
23511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
23611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
23711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
23811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_tunnel_request(OMX_IN OMX_HANDLETYPE                hComp,
23911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                       OMX_IN OMX_U32                        port,
24011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                       OMX_IN OMX_HANDLETYPE        peerComponent,
24111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                       OMX_IN OMX_U32                    peerPort,
24211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                       OMX_INOUT OMX_TUNNELSETUPTYPE* tunnelSetup)
24311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
24411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  (void) hComp, (void) port, (void) peerComponent, (void) peerPort, (void) tunnelSetup;
24511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("Error: qc_omx_component_tunnel_request Not Implemented\n");
24611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return OMX_ErrorNotImplemented;
24711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
24811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
24911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
25011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_use_buffer(OMX_IN OMX_HANDLETYPE                hComp,
25111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel          OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
25211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel          OMX_IN OMX_U32                        port,
25311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel          OMX_IN OMX_PTR                     appData,
25411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel          OMX_IN OMX_U32                       bytes,
25511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel          OMX_IN OMX_U8*                      buffer)
25611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
25711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
25811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
25911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_use_buffer %p\n", hComp);
26011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
26111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
26211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
26311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel     eRet = pThis->use_buffer(hComp,
26411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                              bufferHdr,
26511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                              port,
26611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                              appData,
26711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                              bytes,
26811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                              buffer);
26911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
27011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
27111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
27211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
27311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
27411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel// qc_omx_component_allocate_buffer  -- API Call
27511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
27611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_allocate_buffer(OMX_IN OMX_HANDLETYPE                hComp,
27711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel               OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
27811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel               OMX_IN OMX_U32                        port,
27911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel               OMX_IN OMX_PTR                     appData,
28011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel               OMX_IN OMX_U32                       bytes)
28111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
28211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
28311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
28411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
28511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_allocate_buffer %p, %p , %d\n",hComp, bufferHdr,(unsigned)port);
28611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
28711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
28811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
28911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->allocate_buffer(hComp,bufferHdr,port,appData,bytes);
29011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
29111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
29211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
29311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
29411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
29511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_free_buffer(OMX_IN OMX_HANDLETYPE         hComp,
29611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel           OMX_IN OMX_U32                 port,
29711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel           OMX_IN OMX_BUFFERHEADERTYPE* buffer)
29811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
29911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
30011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
30111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
30211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_free_buffer[%d] %p, %p\n", (unsigned)port, hComp, buffer);
30311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
30411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
30511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
30611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->free_buffer(hComp,port,buffer);
30711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
30811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
30911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
31011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
31111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
31211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_empty_this_buffer(OMX_IN OMX_HANDLETYPE         hComp,
31311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                OMX_IN OMX_BUFFERHEADERTYPE* buffer)
31411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
31511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
31611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
31711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_empty_this_buffer %p, %p\n",hComp, buffer);
31811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
31911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
32011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
32111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->empty_this_buffer(hComp,buffer);
32211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
32311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
32411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
32511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
32611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
32711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_fill_this_buffer(OMX_IN OMX_HANDLETYPE         hComp,
32811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel               OMX_IN OMX_BUFFERHEADERTYPE* buffer)
32911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
33011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
33111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
33211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_fill_this_buffer %p, %p\n", hComp, buffer);
33311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
33411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
33511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->fill_this_buffer(hComp,buffer);
33611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
33711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
33811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
33911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
34011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
34111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_set_callbacks(OMX_IN OMX_HANDLETYPE        hComp,
34211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel             OMX_IN OMX_CALLBACKTYPE* callbacks,
34311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel             OMX_IN OMX_PTR             appData)
34411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
34511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
34611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
34711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_set_callbacks %p, %p , %p\n", hComp, callbacks, appData);
34811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
34911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
35011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
35111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->set_callbacks(hComp,callbacks,appData);
35211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
35311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
35411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
35511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
35611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
35711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_deinit(OMX_IN OMX_HANDLETYPE hComp)
35811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
35911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
36011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
36111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_deinit %p\n", hComp);
36211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
36311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
36411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
36511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    // call the deinit fuction first
36611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    OMX_STATETYPE state;
36711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    pThis->get_state(hComp,&state);
36811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    DEBUG_PRINT("Calling FreeHandle in state %d \n", state);
36911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->component_deinit(hComp);
37011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    // destroy the component.
37111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    delete pThis;
37211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
37311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
37411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
37511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
37611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
37711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_use_EGL_image(OMX_IN OMX_HANDLETYPE                hComp,
37811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            OMX_INOUT OMX_BUFFERHEADERTYPE** bufferHdr,
37911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            OMX_IN OMX_U32                        port,
38011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            OMX_IN OMX_PTR                     appData,
38111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel            OMX_IN void*                      eglImage)
38211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
38311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
38411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
38511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_use_EGL_image %p, %p , %d\n", hComp, bufferHdr,(unsigned)port);
38611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
38711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
38811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->use_EGL_image(hComp,bufferHdr,port,appData,eglImage);
38911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
39011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
39111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
39211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
39311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel OMX_ERRORTYPE
39411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudelqc_omx_component_role_enum(OMX_IN OMX_HANDLETYPE hComp,
39511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                  OMX_OUT OMX_U8*        role,
39611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel                  OMX_IN OMX_U32        index)
39711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel{
39811e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  OMX_ERRORTYPE eRet = OMX_ErrorBadParameter;
39911e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  qc_omx_component *pThis = (hComp)? (qc_omx_component *)(((OMX_COMPONENTTYPE *)hComp)->pComponentPrivate):NULL;
40011e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  DEBUG_PRINT("OMXCORE: qc_omx_component_role_enum %p, %p , %d\n", hComp, role,(unsigned)index);
40111e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel
40211e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  if(pThis)
40311e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  {
40411e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel    eRet = pThis->component_role_enum(hComp,role,index);
40511e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  }
40611e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel  return eRet;
40711e4d07ddf6a35f55d6ad06edb850b015218c7acThierry Strudel}
408