1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* 3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/ 4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is free software; you can redistribute it and/or 6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public 7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License as published by the Free Software Foundation; either 8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version. 9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is distributed in the hope that it will be useful, 12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of 13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Lesser General Public License for more details. 15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public 18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License along with this library; if not, write to the Free Software 19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ============================================================================== 23b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Texas Instruments OMAP (TM) Platform Software 24b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 25b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Use of this software is controlled by the terms and conditions found 27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * in the license agreement under which this software has been supplied. 28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ============================================================================ */ 29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @file OMX_WmaDecoder.c 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This file implements OMX Component for WMA decoder that 33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * is fully compliant with the OMX Audio specification 1.5. 34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @path $(CSLPATH)\ 36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @rev 0.1 38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ---------------------------------------------------------------------------- 40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Revision History 42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! =================================== 43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 12-Sept-2005 mf: Initial Version. Change required per OMAPSWxxxxxxxxx 44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! to provide _________________. 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ============================================================================= */ 47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ------compilation control switches -------------------------*/ 50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**************************************************************** 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * INCLUDE FILES 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ----- system and platform files ----------------------------*/ 54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE 55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <windows.h> 56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <oaf_osal.h> 57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <omx_core.h> 58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <unistd.h> 60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/time.h> 61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/types.h> 62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/ioctl.h> 63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/select.h> 64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <errno.h> 65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <pthread.h> 66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <string.h> 68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <fcntl.h> 69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdlib.h> 70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdio.h> 71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <dbapi.h> 72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------program files ----------------------------------------*/ 74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_WmaDec_Utils.h" 75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* interface with audio manager */ 76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define FIFO1 "/dev/fifo.1" 77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define FIFO2 "/dev/fifo.2" 78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinAM_COMMANDDATATYPE cmd_data; 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint fdwrite, fdread; 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint errno; 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 streamID; 84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define WMA_DEC_ROLE "audio_decoder.wma" 86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**************************************************************** 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * EXTERNAL REFERENCES NOTE : only use if not found in header file 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------data declarations -----------------------------------*/ 91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**************************************************************** 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * PUBLIC DECLARATIONS Defined here, used elsewhere 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------data declarations -----------------------------------*/ 98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**************************************************************** 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * PRIVATE DECLARATIONS Defined here, used only here 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------data declarations -----------------------------------*/ 105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE SetCallbacks (OMX_HANDLETYPE hComp, 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CALLBACKTYPE* pCallBacks, OMX_PTR pAppData); 110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE GetComponentVersion (OMX_HANDLETYPE hComp, 111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STRING pComponentName, 112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE* pComponentVersion, 113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE* pSpecVersion, 114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_UUIDTYPE* pComponentUUID); 115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE SendCommand (OMX_HANDLETYPE hComp, OMX_COMMANDTYPE nCommand, 117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nParam, OMX_PTR pCmdData); 118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE GetParameter(OMX_HANDLETYPE hComp, OMX_INDEXTYPE nParamIndex, 120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR ComponentParamStruct); 121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE SetParameter (OMX_HANDLETYPE hComp, 122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR ComponentParamStruct); 124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE GetConfig (OMX_HANDLETYPE hComp, 125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pComponentConfigStructure); 127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE SetConfig (OMX_HANDLETYPE hComp, 128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pComponentConfigStructure); 130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE EmptyThisBuffer (OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE* pBuffer); 132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE FillThisBuffer (OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE* pBuffer); 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE GetState (OMX_HANDLETYPE hComp, OMX_STATETYPE* pState); 135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentTunnelRequest (OMX_HANDLETYPE hComp, 136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPort, OMX_HANDLETYPE hTunneledComp, 137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nTunneledPort, 138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TUNNELSETUPTYPE* pTunnelSetup); 139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentDeInit(OMX_HANDLETYPE pHandle); 141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE AllocateBuffer (OMX_IN OMX_HANDLETYPE hComponent, 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer, 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes); 146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE FreeBuffer( 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE UseBuffer ( 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes, 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U8* pBuffer); 159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE GetExtensionIndex( 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_STRING cParameterName, 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_INDEXTYPE* pIndexType); 164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentRoleEnum( 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_U8 *cRole, 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nIndex); 169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ComponentInit() Set the all the function pointers of component 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will update the component function pointer to the handle 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorInsufficientResources If the malloc fails 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp) 183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef_ip = NULL, *pPortDef_op = NULL; 186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_AUDIO_PARAM_WMATYPE *wma_ip = NULL; 188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_AUDIO_PARAM_PCMMODETYPE *wma_op = NULL; 189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin RCA_HEADER *rcaheader=NULL; 190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE*) hComp; 193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int i; 194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMXDBG_PRINT(stderr, PRINT, 1, 0, "%d ::OMX_ComponentInit\n", __LINE__); 196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Set the all component function pointer to the handle */ 198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->SetCallbacks = SetCallbacks; 199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->GetComponentVersion = GetComponentVersion; 200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->SendCommand = SendCommand; 201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->GetParameter = GetParameter; 202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->SetParameter = SetParameter; 203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->GetConfig = GetConfig; 204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->GetState = GetState; 205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->EmptyThisBuffer = EmptyThisBuffer; 206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->FillThisBuffer = FillThisBuffer; 207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->ComponentTunnelRequest = ComponentTunnelRequest; 208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->ComponentDeInit = ComponentDeInit; 209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->AllocateBuffer = AllocateBuffer; 210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->FreeBuffer = FreeBuffer; 211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->UseBuffer = UseBuffer; 212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->SetConfig = SetConfig; 213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->GetExtensionIndex = GetExtensionIndex; 214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->ComponentRoleEnum = ComponentRoleEnum; 215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Allocate the memory for Component private data area */ 219b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(pHandle->pComponentPrivate, WMADEC_COMPONENT_PRIVATE); 220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate)->pHandle = pHandle; 221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Initialize component data structures to default values */ 223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate)->sPortParam.nPorts = 0x2; 224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate)->sPortParam.nStartPortNumber = 0x0; 225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNone; 227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 228b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(wma_ip, OMX_AUDIO_PARAM_WMATYPE); 229b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(wma_op, OMX_AUDIO_PARAM_PCMMODETYPE); 230b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(rcaheader, RCA_HEADER); 231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate)->wma_op=wma_op; 233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate)->rcaheader=rcaheader; 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate)->wmaParams[INPUT_PORT] = wma_ip; 236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate)->wmaParams[OUTPUT_PORT] = (OMX_AUDIO_PARAM_WMATYPE*)wma_op; 237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = pHandle->pComponentPrivate; 240b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(pComponentPrivate->pInputBufferList, BUFFERLIST); 241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DBG_INIT(pComponentPrivate->dbg, "OMX_DBG_WMADEC"); 242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "PERF %d :: OMX_WmaDecoder.c\n", __LINE__); 245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pPERF = PERF_Create(PERF_FOURCC('W','M','A','_'), 246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleLLMM | 247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleAudioDecode); 248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef ANDROID 251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->iPVCapabilityFlags.iIsOMXComponentMultiThreaded = OMX_TRUE; 252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->iPVCapabilityFlags.iOMXComponentNeedsNALStartCode = OMX_FALSE; 253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->iPVCapabilityFlags.iOMXComponentSupportsExternalOutputBufferAlloc = OMX_FALSE; 254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->iPVCapabilityFlags.iOMXComponentSupportsExternalInputBufferAlloc = OMX_FALSE; 255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->iPVCapabilityFlags.iOMXComponentSupportsMovableInputBuffers = OMX_FALSE; 256b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->iPVCapabilityFlags.iOMXComponentSupportsPartialFrames = OMX_FALSE; 257b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate->iPVCapabilityFlags.iOMXComponentCanHandleIncompleteFrames = OMX_FALSE; 258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->numBuffers = 0; /* initialize number of buffers */ 261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDspStoppedWhileExecuting = OMX_FALSE; 262b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(pComponentPrivate->pOutputBufferList, BUFFERLIST); 263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->numBuffers = 0; /* initialize number of buffers */ 265b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(pComponentPrivate->pHeaderInfo, WMA_HeadInfo); 266b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(pComponentPrivate->pDspDefinition, TI_OMX_DSP_DEFINITION); 267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Temporarily treat these as default values for Khronos tests */ 269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iPackets.dwLo = 178 ; 270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iPlayDuration.dwHi = 0 ; 271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iPlayDuration.dwLo = 917760000 ; 272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iMaxPacketSize = 349 ; 273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamType.Data1 = -127295936 ; 274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamType.Data2 = 23373 ; 275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamType.Data3 = 4559 ; 276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamType.Data4[0] = 168 ; 277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamType.Data4[1] = 253 ; 278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamType.Data4[2] = 0 ; 279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamType.Data4[3] = 128 ; 280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamType.Data4[4] = 95 ; 281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamType.Data4[5] = 92 ; 282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamType.Data4[6] = 68 ; 283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamType.Data4[7] = 43 ; 284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iTypeSpecific = 28 ; 285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iStreamNum = 1 ; 286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iFormatTag = 353 ; 287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iBlockAlign = 40 ; 288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iSamplePerSec = 8000; 289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iAvgBytesPerSec = 625 ; 290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iChannel = 1 ; 291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iValidBitsPerSample = 16 ; 292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iSizeWaveHeader = 10 ; 293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iEncodeOptV = 0 ; 294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iValidBitsPerSample = 16 ; 295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iChannelMask = 0 ; 296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pHeaderInfo->iSamplePerBlock = 8704; 297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bConfigData = 0; /* assume the first buffer received will contain only config data, need to use bufferFlag instead */ 300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->reconfigInputPort = 0; 301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->reconfigOutputPort = 0; 302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) { 304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[i] = NULL; 305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[i] = NULL; 306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->dasfmode = 0; 308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bPortDefsAllocated = 0; 309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bCompThreadStarted = 0; 310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bInitParamsInitialized = 0; 311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pMarkBuf = NULL; 312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pMarkData = NULL; 313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nEmptyBufferDoneCount = 0; 314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nEmptyThisBufferCount = 0; 315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->strmAttr = NULL; 316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDisableCommandParam = 0; 317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bEnableCommandParam = 0; 318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nUnhandledFillThisBuffers=0; 320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nUnhandledEmptyThisBuffers = 0; 321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->SendAfterEOS = 0; 322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bFlushOutputPortCommandPending = OMX_FALSE; 324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bFlushInputPortCommandPending = OMX_FALSE; 325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) { 329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i] = NULL; 330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[i] = NULL; 331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nInvalidFrameCount = 0; 333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nNumInputBufPending = 0; 334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nNumOutputBufPending = 0; 335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 0; 336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bEnableCommandPending = 0; 337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bBypassDSP = OMX_FALSE; 338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bNoIdleOnStop= OMX_FALSE; 339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bIdleCommandPending = OMX_FALSE; 340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nOutStandingFillDones = 0; 341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->sInPortFormat.eEncoding = OMX_AUDIO_CodingWMA; 343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->sInPortFormat.nIndex = 0; 344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->sInPortFormat.nPortIndex = INPUT_PORT; 345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bPreempted = OMX_FALSE; 346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->sOutPortFormat.eEncoding = OMX_AUDIO_CodingPCM; /*chrisk*/ 348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->sOutPortFormat.nIndex = 1; 349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->sOutPortFormat.nPortIndex = OUTPUT_PORT; 350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 351b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE(pComponentPrivate->sDeviceString, 100*sizeof(OMX_STRING), OMX_STRING); 352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* PCM format defaults */ 355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wma_op->nPortIndex = 1; 356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wma_op->nChannels = 2; 357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wma_op->eNumData= OMX_NumericalDataSigned; 358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wma_op->nBitPerSample = 16; 359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wma_op->nSamplingRate = 44100; 360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wma_op->ePCMMode = OMX_AUDIO_PCMModeLinear; 361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* WMA format defaults */ 364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wma_ip->nPortIndex = 0; 365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wma_ip->nChannels = 2; 366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wma_ip->nBitRate = 32000; 367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin wma_ip->nSamplingRate = 44100; 368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* initialize role name */ 370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char *) pComponentPrivate->componentRole.cRole, WMA_DEC_ROLE); 371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Initialize device string to the default value */ 372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy((char*)pComponentPrivate->sDeviceString,"/eteedn:i0:o0/codec\0"); 373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Removing sleep() calls. Initialization.*/ 375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_init(&pComponentPrivate->AlloBuf_mutex, NULL); 377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_init (&pComponentPrivate->AlloBuf_threshold, NULL); 378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 0; 379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_init(&pComponentPrivate->InLoaded_mutex, NULL); 381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_init (&pComponentPrivate->InLoaded_threshold, NULL); 382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 0; 383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_init(&pComponentPrivate->InIdle_mutex, NULL); 385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_init (&pComponentPrivate->InIdle_threshold, NULL); 386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded = 0; 387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_init(&pComponentPrivate->codecStop_mutex, NULL); 389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_init (&pComponentPrivate->codecStop_threshold, NULL); 390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->codecStop_waitingsignal = 0; 391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_init(&pComponentPrivate->codecFlush_mutex, NULL); 393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_init (&pComponentPrivate->codecFlush_threshold, NULL); 394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->codecFlush_waitingsignal = 0; 395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CreateEvent(&(pComponentPrivate->AlloBuf_event)); 397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 0; 398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CreateEvent(&(pComponentPrivate->InLoaded_event)); 400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 0; 401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CreateEvent(&(pComponentPrivate->InIdle_event)); 403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded = 0; 404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Removing sleep() calls. Initialization.*/ 406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 407b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(pPortDef_ip, OMX_PARAM_PORTDEFINITIONTYPE); 408b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(pPortDef_op,OMX_PARAM_PORTDEFINITIONTYPE ); 409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d ::pPortDef_ip = %p\n", __LINE__,pPortDef_ip); 411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d ::pPortDef_op = %p\n", __LINE__,pPortDef_op); 412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((WMADEC_COMPONENT_PRIVATE*) pHandle->pComponentPrivate)->pPortDef[INPUT_PORT] 414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin = pPortDef_ip; 415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((WMADEC_COMPONENT_PRIVATE*) pHandle->pComponentPrivate)->pPortDef[OUTPUT_PORT] 417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin = pPortDef_op; 418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_ip->nPortIndex = 0x0; 420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_ip->nBufferCountActual = NUM_WMADEC_INPUT_BUFFERS; 421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_ip->nBufferCountMin = NUM_WMADEC_INPUT_BUFFERS; 422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_ip->eDir = OMX_DirInput; 423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_ip->bEnabled = OMX_TRUE; 424b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pPortDef_ip->nBufferAlignment = DSP_CACHE_ALIGNMENT; 425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_ip->nBufferSize = INPUT_WMADEC_BUFFER_SIZE; 426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_ip->bPopulated = 0; 427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_ip->eDomain = OMX_PortDomainAudio; 428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_ip->format.audio.eEncoding = OMX_AUDIO_CodingWMA; 429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_op->nPortIndex = 0x1; 431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_op->nBufferCountActual = NUM_WMADEC_OUTPUT_BUFFERS; 432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_op->nBufferCountMin = NUM_WMADEC_OUTPUT_BUFFERS; 433b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pPortDef_op->nBufferAlignment = DSP_CACHE_ALIGNMENT; 434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_op->eDir = OMX_DirOutput; 435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_op->bEnabled = OMX_TRUE; 436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pPortDef[OUTPUT_PORT]->nBufferSize == 0) 437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_op->nBufferSize = OUTPUT_WMADEC_BUFFER_SIZE; 439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_op->nBufferSize = pComponentPrivate->pPortDef[OUTPUT_PORT]->nBufferSize; 443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_op->bPopulated = 0; 445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_op->eDomain = OMX_PortDomainAudio; 446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bIsInvalidState = OMX_FALSE; 447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* sPortFormat->eEncoding = OMX_AUDIO_CodingPCM; */ /*chrisk*/ 448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef_op->format.audio.eEncoding = OMX_AUDIO_CodingPCM; /*chrisk*/ 449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: Initialize RM Proxy... \n", __LINE__); 452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = RMProxy_NewInitalize(); 453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "%d ::OMX_ComponentInit\n", __LINE__); 454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d ::Error returned from loading ResourceManagerProxy thread\n", 456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__); 457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d ::Start Component Thread \n", __LINE__); 461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = WMADEC_StartComponentThread(pHandle); 462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*OMX_PRINT1(pComponentPrivate->dbg, "%d ::OMX_ComponentInit\n", __LINE__);*/ 463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d ::Error returned from the Component\n", 465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__); 466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d ::OMX_ComponentInit\n", __LINE__); 469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON 474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d ::OMX_ComponentInit\n", __LINE__); 475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((fdwrite=open(FIFO1,O_WRONLY))<0) { 476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "[WMA Dec Component] - failure to open WRITE pipe\n"); 477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorHardware; 478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d ::OMX_ComponentInit\n", __LINE__); 481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((fdread=open(FIFO2,O_RDONLY))<0) { 482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "[WMA Dec Component] - failure to open READ pipe\n"); 483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorHardware; 484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d ::OMX_ComponentInit\n", __LINE__); 486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "PERF %d :: OMX_WmaDecoder.c\n",__LINE__); 490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ThreadCreated(pComponentPrivate->pPERF, pComponentPrivate->ComponentThread, 491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_FOURCC('W','M','A','T')); 492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "%d ::OMX_ComponentInit - returning %d\n", __LINE__,eError); 498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError == OMX_ErrorInsufficientResources) 499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 500b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pPortDef_op); 501b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pPortDef_ip); 502b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->sDeviceString); 503b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->pDspDefinition); 504b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->pHeaderInfo); 505b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->pOutputBufferList); 506b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->pInputBufferList); 507b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(wma_op); 508b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(wma_ip); 509b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pHandle->pComponentPrivate); 510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SetCallbacks() Sets application callbacks to the component 518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will update application callbacks 520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * to the component. So that component can make use of those call back 521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * while sending buffers to the application. And also it will copy the 522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * application private data to component memory 523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pAppData Application private data 527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE SetCallbacks (OMX_HANDLETYPE pComponent, 534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CALLBACKTYPE* pCallBacks, 535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pAppData) 536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE*)pComponent; 541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate = 543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCallBacks == NULL) { 546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "About to return OMX_ErrorBadParameter on line %d\n",__LINE__); 547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Received the empty callbacks from the \ 549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin application\n",__LINE__); 550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Copy the callbacks of the application to the component private */ 554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy (&(pComponentPrivate->cbInfo), pCallBacks, sizeof(OMX_CALLBACKTYPE)); 555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*copy the application private data to component memory */ 557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle->pApplicationPrivate = pAppData; 558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->curState = OMX_StateLoaded; 560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "PERF %d :: OMX_WmaDecoder.c\n",__LINE__); 562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* PERF_Boundary(pComponentPrivate->pPERFcomp,PERF_BoundaryComplete | PERF_BoundaryCleanup);*/ 563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetComponentVersion() This will return the component version 571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will retrun the component version 573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompnentName Name of the component 576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompnentVersion handle for this instance of the component 577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pSpecVersion application callbacks 578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompnentUUID 579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE GetComponentVersion (OMX_HANDLETYPE hComp, 586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STRING pComponentName, 587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE* pComponentVersion, 588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE* pSpecVersion, 589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_UUIDTYPE* pComponentUUID) 590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE*) hComp; 594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate = (WMADEC_COMPONENT_PRIVATE *) pHandle->pComponentPrivate; 595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNotImplemented; 596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateInvalid){ 598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Inside the GetComponentVersion\n"); 605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SendCommand() used to send the commands to the component 613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will be used by the application. 615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param phandle handle for this instance of the component 617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param Cmd Command to be sent to the component 618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nParam indicates commmad is sent using this method 619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE SendCommand (OMX_HANDLETYPE phandle, 626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMMANDTYPE Cmd, 627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nParam,OMX_PTR pCmdData) 628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int nRet; 632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)phandle; 633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pCompPrivate = 634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompPrivate->curState == OMX_StateInvalid){ 638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pCompPrivate->dbg, "%d:::Inside SendCommand\n",__LINE__); 643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pCompPrivate->curState == OMX_StateInvalid){ 644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pCompPrivate->dbg, "%d :: WMADEC: Error Notofication Sent to App\n",__LINE__); 646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( 647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorInvalidState,0, 649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Invalid State"); 650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pCompPrivate->dbg, "PERF %d :: OMX_WmaDecoder.c\n",__LINE__); 657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingCommand(pCompPrivate->pPERF, 658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Cmd, 659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (Cmd == OMX_CommandMarkBuffer) ? ((OMX_U32) pCmdData) : nParam, 660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleComponent); 661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch(Cmd) { 664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandStateSet: 665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pCompPrivate->dbg, "%d:::Inside SendCommand\n",__LINE__); 666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE2(pCompPrivate->dbg, "%d:::pCompPrivate->curState = %d\n",__LINE__,pCompPrivate->curState); 667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nParam == OMX_StateLoaded) { 668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->bLoadedCommandPending = OMX_TRUE; 669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompPrivate->curState == OMX_StateLoaded) { 671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((nParam == OMX_StateExecuting) || (nParam == OMX_StatePause)) { 672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( 673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, 674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorIncorrectStateTransition, 677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nParam == OMX_StateInvalid) { 683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pCompPrivate->dbg, "%d:::Inside SendCommand\n",__LINE__); 684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->curState = OMX_StateInvalid; 685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( 686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, 687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorInvalidState, 690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandFlush: 697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nParam > 1 && nParam != -1) { 698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandPortDisable: 704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandPortEnable: 706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandMarkBuffer: 708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nParam > 0) { 709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pCompPrivate->dbg, "%d :: WMADEC: Command Received Default \ 715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error\n",__LINE__); 716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( 717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorUndefined,0, 720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Invalid Command"); 721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pCompPrivate->dbg, "%d:::Inside SendCommand\n",__LINE__); 726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write (pCompPrivate->cmdPipe[1], &Cmd, sizeof(Cmd)); 727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pCompPrivate->dbg, "%d:::Inside SendCommand\n",__LINE__); 729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (Cmd == OMX_CommandMarkBuffer) { 734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pCompPrivate->cmdDataPipe[1],&pCmdData,sizeof(OMX_PTR)); 735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write(pCompPrivate->cmdDataPipe[1], &nParam, 738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_U32)); 739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pCompPrivate->dbg, "%d:::Inside SendCommand\n",__LINE__); 742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pCompPrivate->dbg, "%d:::nRet = %d\n",__LINE__,nRet); 743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pCompPrivate->dbg, "%d:::Inside SendCommand\n",__LINE__); 745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetParameter() Gets the current configurations of the component 754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nParamIndex 757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ComponentParameterStructure 758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE GetParameter (OMX_HANDLETYPE hComp, 764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR ComponentParameterStructure) 766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate; 770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pParameterStructure; 771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*OMX_PARAM_BUFFERSUPPLIERTYPE *pBufferSupplier;*/ 772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (WMADEC_COMPONENT_PRIVATE *)(((OMX_COMPONENTTYPE*)hComp)->pComponentPrivate); 774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pParameterStructure = (OMX_PARAM_PORTDEFINITIONTYPE*)ComponentParameterStructure; 775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pParameterStructure == NULL) { 777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "pParameterStructure = %p\n",pParameterStructure); 782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateInvalid){ 784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->curState == OMX_StateInvalid) { 789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin hComp, 791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((OMX_COMPONENTTYPE *)hComp)->pApplicationPrivate, 792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorIncorrectStateOperation, 794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch(nParamIndex){ 800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioInit: 801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "OMX_IndexParamAudioInit\n"); 803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, &pComponentPrivate->sPortParam, sizeof(OMX_PORT_PARAM_TYPE)); 804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPortDefinition: 806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_PARAM_PORTDEFINITIONTYPE *)(ComponentParameterStructure))->nPortIndex == 807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[INPUT_PORT]->nPortIndex) { 808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, 811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[INPUT_PORT], 812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_PARAM_PORTDEFINITIONTYPE) 813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(((OMX_PARAM_PORTDEFINITIONTYPE *)(ComponentParameterStructure))->nPortIndex == 816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[OUTPUT_PORT]->nPortIndex) { 817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, 820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[OUTPUT_PORT], 821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_PARAM_PORTDEFINITIONTYPE) 822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioPortFormat: 831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex == 832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[INPUT_PORT]->nPortIndex) { 833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nIndex > 835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sInPortFormat.nIndex) { 836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNoMore; 838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, &pComponentPrivate->sInPortFormat, 841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex == 845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[OUTPUT_PORT]->nPortIndex){ 846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nIndex > 849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sOutPortFormat.nIndex) { 850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNoMore; 852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentParameterStructure, &pComponentPrivate->sOutPortFormat, 856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPriorityMgmt: 866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioWma: 868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "%d :: GetParameter OMX_IndexParamAudioWma \n",__LINE__); 869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: GetParameter nPortIndex %ld\n",__LINE__, ((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex); 870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: GetParameter wmaParams->nPortIndex %ld\n",__LINE__, pComponentPrivate->wmaParams[INPUT_PORT]->nPortIndex); 871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex == 872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->wmaParams[INPUT_PORT]->nPortIndex) 873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->wmaParams[INPUT_PORT], sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(((OMX_AUDIO_PARAM_PORTFORMATTYPE*)(ComponentParameterStructure))->nPortIndex == 877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->wmaParams[OUTPUT_PORT]->nPortIndex) 878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->wmaParams[OUTPUT_PORT], sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioPcm: 889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, 890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_AUDIO_PARAM_PCMMODETYPE*)pComponentPrivate->wma_op, 891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_AUDIO_PARAM_PCMMODETYPE) 892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamCompBufferSupplier: 896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_PARAM_BUFFERSUPPLIERTYPE *)(ComponentParameterStructure))->nPortIndex == OMX_DirInput) { 897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, ":: GetParameter OMX_IndexParamCompBufferSupplier \n"); 898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* memcpy(ComponentParameterStructure, pBufferSupplier, sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE)); */ 899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(((OMX_PARAM_BUFFERSUPPLIERTYPE *)(ComponentParameterStructure))->nPortIndex == OMX_DirOutput) { 902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, ":: GetParameter OMX_IndexParamCompBufferSupplier \n"); 903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*memcpy(ComponentParameterStructure, pBufferSupplier, sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE)); */ 904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR2(pComponentPrivate->dbg, ":: OMX_ErrorBadPortIndex from GetParameter"); 907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamVideoInit: 912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamImageInit: 915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamOtherInit: 918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*#ifdef ANDROID 919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Entering OMX_IndexParamVideoInit\n", __LINE__); 920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Entering OMX_IndexParamImageInit/OtherInit\n", __LINE__); 921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure,pComponentPrivate->sPortParam, sizeof(OMX_PORT_PARAM_TYPE)); 922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNone; 925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #else 926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif*/ 928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID 931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case (OMX_INDEXTYPE) PV_OMX_COMPONENT_CAPABILITY_TYPE_INDEX: 932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "Entering PV_OMX_COMPONENT_CAPABILITY_TYPE_INDEX::%d\n", __LINE__); 934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PV_OMXComponentCapabilityFlagsType* pCap_flags = (PV_OMXComponentCapabilityFlagsType *) ComponentParameterStructure; 935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (NULL == pCap_flags) 936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: ERROR PV_OMX_COMPONENT_CAPABILITY_TYPE_INDEX\n", __LINE__); 938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR2(pComponentPrivate->dbg, "%d :: Copying PV_OMX_COMPONENT_CAPABILITY_TYPE_INDEX\n", __LINE__); 942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pCap_flags, &(pComponentPrivate->iPVCapabilityFlags), sizeof(PV_OMXComponentCapabilityFlagsType)); 943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNone; 944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting GetParameter:: %x\n",__LINE__,nParamIndex); 953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SetParameter() Sets configuration paramets to the component 959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nParamIndex 962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompParam 963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE SetParameter (OMX_HANDLETYPE hComp, 970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pCompParam) 972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle= (OMX_COMPONENTTYPE*)hComp; 977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate; 978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pComponentParam = NULL; 979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_COMPONENTROLETYPE *pRole; 980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_AUDIO_PARAM_PCMMODETYPE *wma_op; 981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_BUFFERSUPPLIERTYPE sBufferSupplier; 982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (WMADEC_COMPONENT_PRIVATE *)(((OMX_COMPONENTTYPE*)hComp)->pComponentPrivate); 983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompParam == NULL) { 987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateInvalid){ 993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch(nParamIndex) { 999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioPortFormat: 1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentParam = (OMX_PARAM_PORTDEFINITIONTYPE *)pCompParam; 1001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* 0 means Input port */ 1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentParam->nPortIndex == 0) { 1004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentParam->eDir != OMX_DirInput) { 1005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER4(pComponentPrivate->dbg, "%d :: Invalid input buffer Direction\n",__LINE__); 1006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "About to return OMX_ErrorBadParameter on line %d\n",__LINE__); 1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (pComponentParam->nPortIndex == 1) { 1013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* 1 means Output port */ 1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentParam->eDir != OMX_DirOutput) { 1016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "About to return OMX_ErrorBadParameter on line %d\n",__LINE__); 1018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[OUTPUT_PORT]->nBufferSize = pComponentParam->nBufferSize; 1021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* 1022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentParam->nBufferSize != OUTPUT_WMADEC_BUFFER_SIZE) { 1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "About to return OMX_ErrorBadParameter on line %d\n",__LINE__); 1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentParam->format.audio.eEncoding != OMX_AUDIO_CodingPCM) { 1029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } */ 1032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioWma: 1039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_WMATYPE *pCompWmaParam = 1041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_AUDIO_PARAM_WMATYPE *)pCompParam; 1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* 0 means Input port */ 1044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompWmaParam->nPortIndex == 0) { 1045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "pCompWmaParam->nPortIndex == 0\n"); 1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(((WMADEC_COMPONENT_PRIVATE*) 1047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate)->wmaParams[INPUT_PORT], 1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompWmaParam, sizeof(OMX_AUDIO_PARAM_WMATYPE)); 1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if (pCompWmaParam->nPortIndex == 1) { 1051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->wmaParams[OUTPUT_PORT]->nSize = pCompWmaParam->nSize; 1052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->wmaParams[OUTPUT_PORT]->nPortIndex = pCompWmaParam->nPortIndex; 1053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->wmaParams[OUTPUT_PORT]->nBitRate = pCompWmaParam->nBitRate; 1054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->wmaParams[OUTPUT_PORT]->eFormat = pCompWmaParam->eFormat; 1055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPortDefinition: 1062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_PARAM_PORTDEFINITIONTYPE *)(pCompParam))->nPortIndex == 1063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[INPUT_PORT]->nPortIndex) { 1064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pPortDef[INPUT_PORT], 1066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompParam, 1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_PARAM_PORTDEFINITIONTYPE) 1068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 1069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(((OMX_PARAM_PORTDEFINITIONTYPE *)(pCompParam))->nPortIndex == 1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[OUTPUT_PORT]->nPortIndex) { 1073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pPortDef[OUTPUT_PORT], 1075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompParam, 1076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_PARAM_PORTDEFINITIONTYPE) 1077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 1078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPriorityMgmt: 1085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState != OMX_StateLoaded) { 1086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamStandardComponentRole: 1090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompParam) { 1091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pRole = (OMX_PARAM_COMPONENTROLETYPE *)pCompParam; 1092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(&(pComponentPrivate->componentRole), (void *)pRole, sizeof(OMX_PARAM_COMPONENTROLETYPE)); 1093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } else { 1094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioPcm: 1099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pCompParam){ 1100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin wma_op = (OMX_AUDIO_PARAM_PCMMODETYPE *)pCompParam; 1101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->wma_op, wma_op, sizeof(OMX_AUDIO_PARAM_PCMMODETYPE)); 1102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else{ 1104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamCompBufferSupplier: 1109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_PARAM_PORTDEFINITIONTYPE *)(pCompParam))->nPortIndex == 1110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[INPUT_PORT]->nPortIndex) { 1111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, ":: SetParameter OMX_IndexParamCompBufferSupplier \n"); 1112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sBufferSupplier.eBufferSupplier = OMX_BufferSupplyInput; 1113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(&sBufferSupplier, pCompParam, sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE)); 1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(((OMX_PARAM_PORTDEFINITIONTYPE *)(pCompParam))->nPortIndex == 1116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[OUTPUT_PORT]->nPortIndex) { 1117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, ":: SetParameter OMX_IndexParamCompBufferSupplier \n"); 1118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sBufferSupplier.eBufferSupplier = OMX_BufferSupplyOutput; 1119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(&sBufferSupplier, pCompParam, sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE)); 1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR2(pComponentPrivate->dbg, ":: OMX_ErrorBadPortIndex from SetParameter"); 1123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 1127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetConfig() Gets the current configuration of to the component 1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 1138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nConfigIndex 1139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ComponentConfigStructure 1140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE GetConfig (OMX_HANDLETYPE hComp, 1147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 1148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR ComponentConfigStructure) 1149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate; 1154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TI_OMX_STREAM_INFO *streamInfo; 1155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1156b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(streamInfo, TI_OMX_STREAM_INFO); 1157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (WMADEC_COMPONENT_PRIVATE *) 1158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (((OMX_COMPONENTTYPE*)hComp)->pComponentPrivate); 1159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Inside GetConfig\n"); 1161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 1163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateInvalid){ 1164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 1165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(nConfigIndex == OMX_IndexCustomWmaDecStreamIDConfig) 1170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* copy component info */ 1172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin streamInfo->streamId = pComponentPrivate->streamID; 1173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(ComponentConfigStructure,streamInfo,sizeof(TI_OMX_STREAM_INFO)); 1174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if (nConfigIndex == OMX_IndexCustomDebug) { 1175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DBG_GETCONFIG(pComponentPrivate->dbg, ComponentConfigStructure); 1176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(streamInfo) 1180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(streamInfo); 1182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin streamInfo = NULL; 1183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Exiting GetConfig\n"); 1185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SetConfig() Sets the configraiton to the component 1190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 1192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nConfigIndex 1193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ComponentConfigStructure 1194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE SetConfig (OMX_HANDLETYPE hComp, 1201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 1202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR ComponentConfigStructure) 1203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = (OMX_COMPONENTTYPE*)hComp; 1206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate; 1207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMA_HeadInfo* headerInfo = NULL; 1208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TI_OMX_DSP_DEFINITION* pDspDefinition = (TI_OMX_DSP_DEFINITION*)ComponentConfigStructure; 1209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*int flagValue = 0;*/ 1210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S16* deviceString; 1211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TI_OMX_DATAPATH dataPath; 1212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMXDBG_PRINT(stderr, PRINT, 1, 0, "%d :: Entering SetConfig\n", __LINE__); 1213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pHandle == NULL) { 1214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMXDBG_PRINT(stderr, ERROR, 4, 0, "%d :: Invalid HANDLE OMX_ErrorBadParameter \n",__LINE__); 1215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRSTATE1(pComponentPrivate->dbg, "Set Config %d\n",__LINE__); 1220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 1222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateInvalid){ 1223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 1224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch (nConfigIndex) { 1229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexCustomWMADECHeaderInfoConfig: 1230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pDspDefinition,pDspDefinition,sizeof(TI_OMX_DSP_DEFINITION)); 1231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin headerInfo = pDspDefinition->wmaHeaderInfo; 1232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pHeaderInfo,headerInfo,sizeof(WMA_HeadInfo)); 1233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->pDspDefinition->dasfMode == 0){ 1234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->dasfmode = 0; 1235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (pComponentPrivate->pDspDefinition->dasfMode == 1) { 1237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->dasfmode = 1; 1238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(pComponentPrivate->pDspDefinition->dasfMode == 2) { 1240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->dasfmode = 1; 1241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->streamID = pDspDefinition->streamId; 1243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexCustomWmaDecDataPath: 1245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin deviceString = (OMX_S16*)ComponentConfigStructure; 1246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (deviceString == NULL) 1247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dataPath = *deviceString; 1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(dataPath) 1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case DATAPATH_APPLICATION: 1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_MMMIXER_DATAPATH(pComponentPrivate->sDeviceString, RENDERTYPE_DECODER, pComponentPrivate->streamID); 1257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case DATAPATH_APPLICATION_RTMIXER: 1260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy((char*)pComponentPrivate->sDeviceString,(char*)RTM_STRING); 1261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case DATAPATH_ACDN: 1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy((char*)pComponentPrivate->sDeviceString,(char*)ACDN_STRING); 1265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 1268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexCustomDebug: 1272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DBG_SETCONFIG(pComponentPrivate->dbg, ComponentConfigStructure); 1273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 1275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting SetConfig\n", __LINE__); 1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Returning = 0x%x\n",__LINE__,eError); 1281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetState() Gets the current state of the component 1288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompomponent handle for this instance of the component 1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pState 1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE GetState (OMX_HANDLETYPE pComponent, OMX_STATETYPE* pState) 1298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorUndefined; 1301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 1302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!pState) { 1304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 1305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMXDBG_PRINT(stderr, ERROR, 4, 0, "About to return OMX_ErrorBadParameter on line %d\n",__LINE__); 1306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pHandle && pHandle->pComponentPrivate) { 1310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *pState = ((WMADEC_COMPONENT_PRIVATE*) 1311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate)->curState; 1312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } else { 1313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *pState = OMX_StateLoaded; 1314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorNone; 1317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return error; 1320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * EmptyThisBuffer() This callback is used to send the input buffer to 1325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * component 1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 1328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nPortIndex input port index 1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pBuffer buffer to be sent to codec 1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE EmptyThisBuffer (OMX_HANDLETYPE pComponent, 1336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer) 1337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 1340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate = 1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 1342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef; 1343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int ret=0; 1344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = ((WMADEC_COMPONENT_PRIVATE*) 1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate)->pPortDef[INPUT_PORT]; 1346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 1347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateInvalid){ 1348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 1349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "PERF %d :: OMX_WmaDecoder.c\n",__LINE__); 1354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedFrame(pComponentPrivate->pPERF, 1355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->pBuffer, 1356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->nFilledLen, 1357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 1358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!pPortDef->bEnabled) { 1360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBuffer == NULL) { 1365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "About to return OMX_ErrorBadParameter on line %d\n",__LINE__); 1367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBuffer->nSize != sizeof(OMX_BUFFERHEADERTYPE)) { 1371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBuffer->nVersion.nVersion != pComponentPrivate->nVersion) { 1376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorVersionMismatch; 1377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBuffer->nInputPortIndex != INPUT_PORT) { 1381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->curState != OMX_StateExecuting && pComponentPrivate->curState != OMX_StatePause 1386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin && pComponentPrivate->curState != OMX_StateIdle) { 1387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "\n------------------------------------------\n\n"); 1392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: Component Sending Filled ip buff %p to Component Thread\n", 1393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__,pBuffer); 1394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "\n------------------------------------------\n\n"); 1395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bBypassDSP == 0) { 1397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->app_nBuf--; 1398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pMarkData = pBuffer->pMarkData; 1401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->hMarkTargetComponent = pBuffer->hMarkTargetComponent; 1402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nUnhandledEmptyThisBuffers++; 1404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = write (pComponentPrivate->dataPipe[1], &pBuffer, sizeof(OMX_BUFFERHEADERTYPE*)); 1406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (ret == -1) { 1408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_TRACE4(pComponentPrivate->dbg, "%d :: Error in Writing to the Data pipe\n", __LINE__); 1409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nEmptyThisBufferCount++; 1414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**-------------------------------------------------------------------* 1418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * FillThisBuffer() This callback is used to send the output buffer to 1419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * the component 1420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 1422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nPortIndex output port number 1423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pBuffer buffer to be sent to codec 1424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE FillThisBuffer (OMX_HANDLETYPE pComponent, 1431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer) 1432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 1436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate = 1437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (WMADEC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 1438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef; 1439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int nRet=0; 1440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "\n------------------------------------------\n\n"); 1442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "%d :: Component Sending Emptied op buff %p to Component Thread\n", 1443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__,pBuffer); 1444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "\n------------------------------------------\n\n"); 1445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = ((WMADEC_COMPONENT_PRIVATE*) 1447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate)->pPortDef[OUTPUT_PORT]; 1448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 1449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateInvalid){ 1450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 1451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "PERF %d :: OMX_WmaDecoder.c\n",__LINE__); 1456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedFrame(pComponentPrivate->pPERF, 1457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->pBuffer, 1458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 0, 1459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 1460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!pPortDef->bEnabled) { 1463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBuffer == NULL) { 1468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "About to return OMX_ErrorBadParameter on line %d\n",__LINE__); 1470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBuffer->nSize != sizeof(OMX_BUFFERHEADERTYPE)) { 1474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBuffer->nVersion.nVersion != pComponentPrivate->nVersion) { 1479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorVersionMismatch; 1480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBuffer->nOutputPortIndex != OUTPUT_PORT) { 1484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->curState != OMX_StateExecuting && pComponentPrivate->curState != OMX_StatePause) { 1489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "FillThisBuffer Line %d\n",__LINE__); 1494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->nFilledLen = 0; 1495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "FillThisBuffer Line %d\n",__LINE__); 1496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*Filling the Output buffer with zero */ 1497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memset (pBuffer->pBuffer,0,pBuffer->nAllocLen); 1499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "FillThisBuffer Line %d\n",__LINE__); 1500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate->pMarkBuf = %p\n",pComponentPrivate->pMarkBuf); 1502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate->pMarkData = %p\n",pComponentPrivate->pMarkData); 1503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pComponentPrivate->pMarkBuf){ 1504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "FillThisBuffer Line %d\n",__LINE__); 1505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->hMarkTargetComponent = pComponentPrivate->pMarkBuf->hMarkTargetComponent; 1506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->pMarkData = pComponentPrivate->pMarkBuf->pMarkData; 1507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pMarkBuf = NULL; 1508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pMarkData) { 1511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "FillThisBuffer Line %d\n",__LINE__); 1512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->hMarkTargetComponent = pComponentPrivate->hMarkTargetComponent; 1513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->pMarkData = pComponentPrivate->pMarkData; 1514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pMarkData = NULL; 1515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nUnhandledFillThisBuffers++; 1517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRet = write (pComponentPrivate->dataPipe[1], &pBuffer, 1518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof (OMX_BUFFERHEADERTYPE*)); 1519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nRet == -1) { 1520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: Error in Writing to the Data pipe\n", __LINE__); 1521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ComponentDeinit() this methold will de init the component 1531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComp handle for this instance of the component 1533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentDeInit(OMX_HANDLETYPE pHandle) 1540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* inform audio manager to remove the streamID*/ 1545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* compose the data */ 1546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle; 1547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate = 1548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (WMADEC_COMPONENT_PRIVATE *)pComponent->pComponentPrivate; 1549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct OMX_TI_Debug dbg; 1550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dbg = pComponentPrivate->dbg; 1551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(dbg, "%d ::ComponentDeInit\n",__LINE__); 1554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(dbg, "PERF %d :: OMX_WmaDecoder.c\n",__LINE__); 1557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERF, 1558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_BoundaryStart | PERF_BoundaryCleanup); 1559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON 1562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(fdwrite); 1563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(fdread); 1564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 1567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = RMProxy_NewSendCommand(pHandle, RMProxy_FreeResource, 1568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_WMA_Decoder_COMPONENT, 0, 1234, NULL); 1569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(dbg, "%d ::OMX_AmrDecoder.c :: Error returned from destroy ResourceManagerProxy thread\n", 1571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__); 1572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = RMProxy_Deinitalize(); 1574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(dbg, "%d ::Error returned from destroy ResourceManagerProxy thread\n", 1576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__); 1577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(dbg, "%d ::ComponentDeInit\n",__LINE__); 1580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bIsStopping = 1; 1581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = WMADEC_StopComponentThread(pHandle); 1582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(dbg, "%d ::ComponentDeInit\n",__LINE__); 1583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Wait for thread to exit so we can get the status into "error" */ 1584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* close the pipe handles */ 1586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_FreeCompResources(pHandle); 1587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(dbg, "%d ::After WMADEC_FreeCompResources\n",__LINE__); 1588b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->pHeaderInfo); 1589b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->pDspDefinition); 1590b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->pInputBufferList); 1591b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->pOutputBufferList); 1592b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->sDeviceString); 1593b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->rcaheader); 1594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(dbg, "PERF %d :: OMX_WmaDecoder.c\n",__LINE__); 1596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERF, 1597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_BoundaryComplete | PERF_BoundaryCleanup); 1598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Done(pComponentPrivate->pPERF); 1599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1600b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate); 1601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(dbg, "%d ::After free(pComponentPrivate)\n",__LINE__); 1602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DBG_CLOSE(dbg); 1603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ComponentTunnelRequest() this method is not implemented in 1.5 1609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will update application callbacks 1611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * the application. 1612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComp handle for this instance of the component 1614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 1615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ptr 1616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentTunnelRequest (OMX_HANDLETYPE hComp, 1623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPort, OMX_HANDLETYPE hTunneledComp, 1624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nTunneledPort, 1625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TUNNELSETUPTYPE* pTunnelSetup) 1626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMXDBG_PRINT(stderr, PRINT, 1, 0, "===========================Inside the ComponentTunnelRequest==============================\n"); 1628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMXDBG_PRINT(stderr, ERROR, 4, 0, "Inside the ComponentTunnelRequest\n"); 1630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorNotImplemented; 1631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * AllocateBuffer() 1637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComp handle for this instance of the component 1639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 1640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ptr 1641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE AllocateBuffer (OMX_IN OMX_HANDLETYPE hComponent, 1648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer, 1649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 1650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 1651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes) 1652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef; 1655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate; 1656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufferHeader; 1658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (WMADEC_COMPONENT_PRIVATE *) 1660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 1661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = ((WMADEC_COMPONENT_PRIVATE*) 1663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate)->pPortDef[nPortIndex]; 1664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 1666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateInvalid){ 1667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 1668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: pPortDef = %p\n", __LINE__,pPortDef); 1673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "%d :: pPortDef->bEnabled = %d\n", __LINE__,pPortDef->bEnabled); 1674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP2(pComponentPrivate->dbg, "pPortDef->bEnabled = %d\n", pPortDef->bEnabled); 1676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!pPortDef->bEnabled) { 1678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 1; 1679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 1680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->AlloBuf_mutex); 1681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_wait(&pComponentPrivate->AlloBuf_threshold, &pComponentPrivate->AlloBuf_mutex); 1682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->AlloBuf_mutex); 1683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_WaitForEvent(&(pComponentPrivate->AlloBuf_event)); 1685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1689b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(pBufferHeader, OMX_BUFFERHEADERTYPE); 1690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memset(pBufferHeader, 0x0, sizeof(OMX_BUFFERHEADERTYPE)); 1692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1693b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_SIZE_DSPALIGN(pBufferHeader->pBuffer, nSizeBytes, OMX_U8); 1694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(NULL == pBufferHeader->pBuffer) { 1695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d :: Malloc Failed\n",__LINE__); 1696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBufferHeader) { 1697b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pBufferHeader); 1698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == INPUT_PORT) 1703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nInputPortIndex = nPortIndex; 1705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nOutputPortIndex = -1; 1706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[pComponentPrivate->pInputBufferList->numBuffers] = pBufferHeader; 1707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->bBufferPending[pComponentPrivate->pInputBufferList->numBuffers] = 0; 1708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate->pInputBufferList->pBufHdr[%d] = %p\n",pComponentPrivate->pInputBufferList->numBuffers,pComponentPrivate->pInputBufferList->pBufHdr[pComponentPrivate->pInputBufferList->numBuffers]); 1709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->bufferOwner[pComponentPrivate->pInputBufferList->numBuffers++] = 1; 1710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "Allocate Buffer Line %d\n",__LINE__); 1711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate->pInputBufferList->numBuffers = %d\n",pComponentPrivate->pInputBufferList->numBuffers); 1712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pPortDef->nBufferCountMin = %ld\n",pPortDef->nBufferCountMin); 1713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers == pPortDef->nBufferCountActual) { 1714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 1715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nPortIndex == OUTPUT_PORT) { 1718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nInputPortIndex = -1; 1719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nOutputPortIndex = nPortIndex; 1720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[pComponentPrivate->pOutputBufferList->numBuffers] = pBufferHeader; 1721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bBufferPending[pComponentPrivate->pOutputBufferList->numBuffers] = 0; 1722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pComponentPrivate->pOutputBufferList->pBufHdr[%d] = %p\n",pComponentPrivate->pOutputBufferList->numBuffers,pComponentPrivate->pOutputBufferList->pBufHdr[pComponentPrivate->pOutputBufferList->numBuffers]); 1723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bufferOwner[pComponentPrivate->pOutputBufferList->numBuffers++] = 1; 1724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->numBuffers == pPortDef->nBufferCountActual) { 1725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 1726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated == pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled)&& 1734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated == pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled) && 1735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pComponentPrivate->InLoaded_readytoidle)) 1736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 0; 1740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 1741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InLoaded_mutex); 1742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->InLoaded_threshold); 1743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InLoaded_mutex); 1744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->InLoaded_event)); 1746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->pAppPrivate = pAppPrivate; 1751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->pPlatformPrivate = pComponentPrivate; 1752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nAllocLen = nSizeBytes; 1753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMajor = WMADEC_MAJOR_VER; 1754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMinor = WMADEC_MINOR_VER; 1755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nVersion = pBufferHeader->nVersion.nVersion; 1756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nSize = sizeof(OMX_BUFFERHEADERTYPE); 1759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT2(pComponentPrivate->dbg, "Line %d\n",__LINE__); 1760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *pBuffer = pBufferHeader; 1761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bEnableCommandPending && pPortDef->bPopulated) { 1763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin SendCommand (pComponentPrivate->pHandle, 1764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortEnable, 1765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bEnableCommandParam,NULL); 1766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "PERF %d :: OMX_WmaDecoder.c\n",__LINE__); 1770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedBuffer(pComponentPrivate->pPERF, 1771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (*pBuffer)->pBuffer, nSizeBytes, 1772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleMemory); 1773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "AllocateBuffer returning %d\n",eError); 1777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 1782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn FreeBuffer() description for FreeBuffer 1784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FreeBuffer(). 1785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Called by the OMX IL client to free a buffer. 1786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_Core.h 1788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 1789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 1790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE FreeBuffer( 1791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 1792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 1793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) 1794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE * pComponentPrivate = NULL; 1798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* buff; 1799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int i; 1800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int inputIndex = -1; 1801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int outputIndex = -1; 1802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle; 1803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (WMADEC_COMPONENT_PRIVATE *) 1805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 1806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE *) pComponentPrivate->pHandle; 1808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) { 1809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin buff = pComponentPrivate->pInputBufferList->pBufHdr[i]; 1810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (buff == pBuffer) { 1811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "Found matching input buffer\n"); 1812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "buff = %p\n",buff); 1813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "pBuffer = %p\n",pBuffer); 1814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin inputIndex = i; 1815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "This is not a match\n"); 1819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "buff = %p\n",buff); 1820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "pBuffer = %p\n",pBuffer); 1821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < MAX_NUM_OF_BUFS; i++) { 1825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin buff = pComponentPrivate->pOutputBufferList->pBufHdr[i]; 1826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (buff == pBuffer) { 1827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "Found matching output buffer\n"); 1828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "buff = %p\n",buff); 1829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "pBuffer = %p\n",pBuffer); 1830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin outputIndex = i; 1831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "This is not a match\n"); 1835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "buff = %p\n",buff); 1836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "pBuffer = %p\n",pBuffer); 1837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (inputIndex != -1) { 1842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->bufferOwner[inputIndex] == 1) { 1843b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT_DSPALIGN(pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]->pBuffer, OMX_U8); 1844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "PERF %d :: OMX_WmaDecoder.c\n",__LINE__); 1847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_SendingBuffer(pComponentPrivate->pPERF, 1848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]->pBuffer, 1849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]->nAllocLen, 1850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleMemory); 1851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d:[FREE] %p\n",__LINE__,pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]); 1853b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]); 1854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->numBuffers--; 1855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers < 1857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[INPUT_PORT]->nBufferCountMin) { 1858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated = OMX_FALSE; 1860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled && 1863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bLoadedCommandPending == OMX_FALSE && 1864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->curState == OMX_StateIdle || 1865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StateExecuting || 1866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StatePause)) { 1867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorPortUnpopulated,nPortIndex, NULL); 1870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (outputIndex != -1) { 1873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->bufferOwner[outputIndex] == 1) { 1874b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT_DSPALIGN(pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]->pBuffer, OMX_U8); 1875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "PERF %d :: OMX_WmaDecoder.c\n",__LINE__); 1879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_SendingBuffer(pComponentPrivate->pPERF, 1880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]->pBuffer, 1881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]->nAllocLen, 1882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleMemory); 1883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d:[FREE] %p\n",__LINE__,pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]); 1886b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MEMFREE_STRUCT(pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]); 1887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->numBuffers--; 1888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->numBuffers < 1890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[OUTPUT_PORT]->nBufferCountMin) { 1891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated = OMX_FALSE; 1892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled && 1894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bLoadedCommandPending == OMX_FALSE && 1895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin !pComponentPrivate->reconfigOutputPort && 1896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->curState == OMX_StateIdle || 1897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StateExecuting || 1898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StatePause)) { 1899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorPortUnpopulated,nPortIndex, NULL); 1902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR2(pComponentPrivate->dbg, "%d::Returning OMX_ErrorBadParameter\n",__LINE__); 1906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ((!pComponentPrivate->pInputBufferList->numBuffers && 1911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin !pComponentPrivate->pOutputBufferList->numBuffers) && 1912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded) 1913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded = 0; 1915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 1916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InIdle_mutex); 1917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->InIdle_threshold); 1918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InIdle_mutex); 1919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->InIdle_event)); 1921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Removing sleep() calls. There are no allocated buffers. */ 1925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#if 0 1926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bDisableCommandPending && 1927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->pInputBufferList->numBuffers + 1928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->numBuffers == 0)) { 1929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers + 1930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->numBuffers == 0) { 1931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SendCommand (pComponentPrivate->pHandle,OMX_CommandPortDisable, 1932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandParam,NULL); 1933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bDisableCommandPending && 1937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->pInputBufferList->numBuffers == 0)) { 1938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = OMX_FALSE; 1939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pComponentPrivate->pHandle, 1940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, 1942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CommandPortDisable, 1943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin INPUT_PORT, 1944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 1945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bDisableCommandPending && 1948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->pOutputBufferList->numBuffers == 0)) { 1949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = OMX_FALSE; 1950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pComponentPrivate->pHandle, 1951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, 1953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CommandPortDisable, 1954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OUTPUT_PORT, 1955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 1956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "%d :: Exiting FreeBuffer\n", __LINE__); 1962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 1963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 1967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn UseBuffer() description for UseBuffer 1969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin UseBuffer(). 1970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Called by the OMX IL client to pass a buffer to be used. 1971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_Core.h 1973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 1974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 1975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE UseBuffer ( 1976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 1977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 1978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 1979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 1980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes, 1981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U8* pBuffer) 1982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef; 1985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate; 1986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufferHeader; 1988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (WMADEC_COMPONENT_PRIVATE *) 1990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 1991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _ERROR_PROPAGATION__ 1993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateInvalid){ 1994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 1995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 2001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRDSP1(pComponentPrivate->dbg, "PERF %d :: OMX_WmaDecoder.c\n",__LINE__); 2002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedBuffer(pComponentPrivate->pPERF, 2003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer, nSizeBytes, 2004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 2005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef = ((WMADEC_COMPONENT_PRIVATE*) 2008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate)->pPortDef[nPortIndex]; 2009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!pPortDef->bEnabled){ 2010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->AlloBuf_mutex); 2011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 1; 2012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin //wait for the port to be enabled before we accept buffers 2013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_wait(&pComponentPrivate->AlloBuf_threshold, &pComponentPrivate->AlloBuf_mutex); 2014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->AlloBuf_mutex); 2015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: pPortDef = %p\n", __LINE__,pPortDef); 2017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM1(pComponentPrivate->dbg, "%d :: pPortDef->bEnabled = %d\n", __LINE__,pPortDef->bEnabled); 2018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Line %d\n",__LINE__); 2020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!pPortDef->bEnabled) { 2021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERROR4(pComponentPrivate->dbg, "%d :: In AllocateBuffer\n", __LINE__); 2022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 2023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Line %d\n",__LINE__); 2027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "pPortDef->bPopulated =%d\n",pPortDef->bPopulated); 2028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "nSizeBytes =%ld\n",nSizeBytes); 2029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pPortDef->nBufferSize =%ld\n",pPortDef->nBufferSize); 2030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 2032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pPortDef->bPopulated) { 2033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 2034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Line %d\n",__LINE__); 2039b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_GENERIC(pBufferHeader, OMX_BUFFERHEADERTYPE); 2040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER2(pComponentPrivate->dbg, "%d:[ALLOC] %p\n",__LINE__,pBufferHeader); 2041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBufferHeader == 0) { 2043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 2044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memset((pBufferHeader), 0x0, sizeof(OMX_BUFFERHEADERTYPE)); 2047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Line %d\n",__LINE__); 2049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nPortIndex == OUTPUT_PORT) { 2050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nInputPortIndex = -1; 2051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nOutputPortIndex = nPortIndex; 2052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[pComponentPrivate->pOutputBufferList->numBuffers] = pBufferHeader; 2053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bBufferPending[pComponentPrivate->pOutputBufferList->numBuffers] = 0; 2054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bufferOwner[pComponentPrivate->pOutputBufferList->numBuffers++] = 0; 2055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->numBuffers == pPortDef->nBufferCountActual) { 2056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 2057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nInputPortIndex = nPortIndex; 2061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nOutputPortIndex = -1; 2062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[pComponentPrivate->pInputBufferList->numBuffers] = pBufferHeader; 2063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->bBufferPending[pComponentPrivate->pInputBufferList->numBuffers] = 0; 2064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->pInputBufferList->bufferOwner[pComponentPrivate->pInputBufferList->numBuffers++] = 0; 2065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers == pPortDef->nBufferCountActual) { 2066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 2067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((pComponentPrivate->pPortDef[OUTPUT_PORT]->bPopulated == pComponentPrivate->pPortDef[OUTPUT_PORT]->bEnabled)&& 2071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->pPortDef[INPUT_PORT]->bPopulated == pComponentPrivate->pPortDef[INPUT_PORT]->bEnabled) && 2072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->InLoaded_readytoidle)) 2073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 0; 2075fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 2076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InLoaded_mutex); 2077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->InLoaded_threshold); 2078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InLoaded_mutex); 2079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 2080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->InLoaded_event)); 2081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Line %d\n",__LINE__); 2085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->pAppPrivate = pAppPrivate; 2086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->pPlatformPrivate = pComponentPrivate; 2087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nAllocLen = nSizeBytes; 2088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMajor = WMADEC_MAJOR_VER; 2089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMinor = WMADEC_MINOR_VER; 2090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nVersion = pBufferHeader->nVersion.nVersion; 2091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->pBuffer = pBuffer; 2092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBufferHeader->nSize = sizeof(OMX_BUFFERHEADERTYPE); 2093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "Line %d\n",__LINE__); 2094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *ppBufferHdr = pBufferHeader; 2095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRBUFFER1(pComponentPrivate->dbg, "pBufferHeader = %p\n",pBufferHeader); 2096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pComponentPrivate->bEnableCommandPending && pPortDef->bPopulated){ 2097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRCOMM2(pComponentPrivate->dbg, "Sending command before exiting usbuffer\n"); 2098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin SendCommand (pComponentPrivate->pHandle, 2099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CommandPortEnable, 2100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->bEnableCommandParam,NULL); 2101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "exiting Use buffer\n"); 2103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 2109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn GetExtensionIndex() description for GetExtensionIndex 2111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GetExtensionIndex(). 2112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Returns index for vendor specific settings. 2113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_Core.h 2115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 2117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE GetExtensionIndex( 2118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 2119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_STRING cParameterName, 2120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_INDEXTYPE* pIndexType) 2121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMXDBG_PRINT(stderr, PRINT, 1, 0, "GetExtensionIndex\n"); 2126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!(strcmp(cParameterName,"OMX.TI.index.config.wmaheaderinfo"))) { 2127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *pIndexType = OMX_IndexCustomWMADECHeaderInfoConfig; 2128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMXDBG_PRINT(stderr, DSP, 2, 0, "OMX_IndexCustomWMADECHeaderInfoConfig\n"); 2129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(!(strcmp(cParameterName,"OMX.TI.index.config.wmastreamIDinfo"))) 2131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *pIndexType = OMX_IndexCustomWmaDecStreamIDConfig; 2133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(!(strcmp(cParameterName,"OMX.TI.index.config.wmadec.datapath"))) 2136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *pIndexType = OMX_IndexCustomWmaDecDataPath; 2138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!(strcmp(cParameterName,"OMX.TI.WMA.Decode.Debug"))) 2140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 2141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pIndexType = OMX_IndexCustomDebug; 2142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; 2145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMXDBG_PRINT(stderr, PRINT, 1, 0, "Exiting GetExtensionIndex\n"); 2148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 2152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn ComponentRoleEnum() description for ComponentRoleEnum() 2154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Returns the role at the given index 2156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_Core.h 2158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 2160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentRoleEnum( 2161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 2162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_U8 *cRole, 2163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nIndex) 2164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WMADEC_COMPONENT_PRIVATE *pComponentPrivate; 2166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate = (WMADEC_COMPONENT_PRIVATE *)(((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 2169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(nIndex == 0){ 2171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(cRole, &pComponentPrivate->componentRole.cRole, sizeof(OMX_U8) * OMX_MAX_STRINGNAME_SIZE); 2172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRINT1(pComponentPrivate->dbg, "::::In ComponenetRoleEnum: cRole is set to %s\n",cRole); 2173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 2175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNoMore; 2176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}; 2179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE 2182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 2183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 2184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fns Sleep replace for WIN CE 2185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 2187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint OMX_CreateEvent(OMX_Event *event){ 2188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int ret = OMX_ErrorNone; 2190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin HANDLE createdEvent = NULL; 2191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(event == NULL){ 2192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = OMX_ErrorBadParameter; 2193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin event->event = CreateEvent(NULL, TRUE, FALSE, NULL); 2196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(event->event == NULL) 2197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = (int)GetLastError(); 2198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return ret; 2200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint OMX_SignalEvent(OMX_Event *event){ 2203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret = OMX_ErrorNone; 2205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(event == NULL){ 2206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = OMX_ErrorBadParameter; 2207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SetEvent(event->event); 2210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = (int)GetLastError(); 2211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return ret; 2213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint OMX_WaitForEvent(OMX_Event *event) { 2216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret = OMX_ErrorNone; 2218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(event == NULL){ 2219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = OMX_ErrorBadParameter; 2220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForSingleObject(event->event, INFINITE); 2223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = (int)GetLastError(); 2224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return ret; 2226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint OMX_DestroyEvent(OMX_Event *event) { 2229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret = OMX_ErrorNone; 2231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(event == NULL){ 2232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = OMX_ErrorBadParameter; 2233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin CloseHandle(event->event); 2236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return ret; 2238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2241