1b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 3b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/ 4b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 5b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This library is free software; you can redistribute it and/or 6b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public 7b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * License as published by the Free Software Foundation; either 8b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version. 9b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 10b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 11b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This library is distributed in the hope that it will be useful, 12b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of 13b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Lesser General Public License for more details. 15b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 16b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 17b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public 18b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * License along with this library; if not, write to the Free Software 19b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 21b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ============================================================================= 22b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* Texas Instruments OMAP (TM) Platform Software 23b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 24b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 25b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* Use of this software is controlled by the terms and conditions found 26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* in the license agreement under which this software has been supplied. 27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* =========================================================================== */ 28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @file OMX_G726Encoder.c 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* This file implements OpenMAX (TM) 1.0 Specific APIs and its functionality 32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* that is fully compliant with the Khronos OpenMAX (TM) 1.0 Specification 33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @path $(CSLPATH)\OMAPSW_MPU\linux\audio\src\openmax_il\g726_enc\src 35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @rev 1.0 37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*/ 38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ---------------------------------------------------------------------------- 39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! 40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! Revision History 41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! =================================== 42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! Gyancarlo Garcia: Initial Verision 43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! 05-Oct-2007 44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* =========================================================================== */ 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ------compilation control switches -------------------------*/ 47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* INCLUDE FILES 49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin****************************************************************/ 50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----- system and platform files ----------------------------*/ 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <windows.h> 53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <oaf_osal.h> 54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <omx_core.h> 55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h> 57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/time.h> 58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/types.h> 59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/ioctl.h> 60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h> 61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <errno.h> 62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h> 63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h> 66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h> 67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h> 68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h> 69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <dbapi.h> 70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------program files ----------------------------------------*/ 72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h> 73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_G726Enc_Utils.h" 75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* EXTERNAL REFERENCES NOTE : only use if not found in header file 78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin****************************************************************/ 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------data declarations -----------------------------------*/ 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* PUBLIC DECLARATIONS Defined here, used elsewhere 85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin****************************************************************/ 86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------data declarations --------------------------------*/ 87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* PRIVATE DECLARATIONS Defined here, used only here 92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin****************************************************************/ 93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------data declarations -----------------------------------*/ 94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef G726ENC_DEBUGMEM 97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinextern void * DebugMalloc(int line, char *s, int size); 98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinextern int DebugFree(void *dp, int line, char *s); 99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SafeMalloc(x) DebugMalloc(__LINE__,__FILE__,x) 101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SafeFree(z) DebugFree(z,__LINE__,__FILE__) 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SafeMalloc(x) calloc(1,x) 104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SafeFree(z) free(z) 105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetCallbacks (OMX_HANDLETYPE hComp, 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CALLBACKTYPE* pCallBacks, OMX_PTR pAppData); 110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetComponentVersion (OMX_HANDLETYPE hComp, 111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STRING pComponentName, 112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pComponentVersion, 113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pSpecVersion, 114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_UUIDTYPE* pComponentUUID); 115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SendCommand (OMX_HANDLETYPE hComp, OMX_COMMANDTYPE nCommand, 116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nParam,OMX_PTR pCmdData); 117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetParameter(OMX_HANDLETYPE hComp, OMX_INDEXTYPE nParamIndex, 118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR ComponentParamStruct); 119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetParameter (OMX_HANDLETYPE hComp, 120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR ComponentParamStruct); 122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetConfig (OMX_HANDLETYPE hComp, 123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pComponentConfigStructure); 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetConfig (OMX_HANDLETYPE hComp, 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pComponentConfigStructure); 128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE EmptyThisBuffer (OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE* pBuffer); 130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE FillThisBuffer (OMX_HANDLETYPE hComp, OMX_BUFFERHEADERTYPE* pBuffer); 132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetState (OMX_HANDLETYPE hComp, OMX_STATETYPE* pState); 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentTunnelRequest (OMX_HANDLETYPE hComp, 134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nPort, OMX_HANDLETYPE hTunneledComp, 135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nTunneledPort, 136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_TUNNELSETUPTYPE* pTunnelSetup); 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentDeInit(OMX_HANDLETYPE pHandle); 138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE AllocateBuffer (OMX_IN OMX_HANDLETYPE hComponent, 139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer, 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes); 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE FreeBuffer( 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE UseBuffer ( 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes, 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U8* pBuffer); 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetExtensionIndex( 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_STRING cParameterName, 160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_INDEXTYPE* pIndexType); 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentRoleEnum( 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_U8 *cRole, 165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nIndex); 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* interface with audio manager*/ 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO1 "/dev/fifo.1" 169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO2 "/dev/fifo.2" 170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define PERMS 0666 171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ComponentInit() Set the all the function pointers of component 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will update the component function pointer to the handle 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorInsufficientResources If the malloc fails 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp) 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef_ip = NULL, *pPortDef_op = NULL; 187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_G726TYPE *G726_op = NULL; 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_G726TYPE *G726_ip = NULL; 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE*) hComp; 192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_PORT_TYPE *pCompPort = NULL; 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_PORTFORMATTYPE *pPortFormat = NULL; 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int i = 0; 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering OMX_ComponentInit\n", __LINE__); 197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Set the all component function pointer to the handle */ 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->SetCallbacks = SetCallbacks; 199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->GetComponentVersion = GetComponentVersion; 200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->SendCommand = SendCommand; 201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->GetParameter = GetParameter; 202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->SetParameter = SetParameter; 203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->GetConfig = GetConfig; 204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->SetConfig = SetConfig; 205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->GetState = GetState; 206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->EmptyThisBuffer = EmptyThisBuffer; 207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->FillThisBuffer = FillThisBuffer; 208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->ComponentTunnelRequest = ComponentTunnelRequest; 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->ComponentDeInit = ComponentDeInit; 210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->AllocateBuffer = AllocateBuffer; 211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->FreeBuffer = FreeBuffer; 212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->UseBuffer = UseBuffer; 213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->GetExtensionIndex = GetExtensionIndex; 214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->ComponentRoleEnum = ComponentRoleEnum; 215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Allocate the memory for Component private data area */ 217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pHandle->pComponentPrivate, G726ENC_COMPONENT_PRIVATE); 218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset(pHandle->pComponentPrivate, 0x0, sizeof(G726ENC_COMPONENT_PRIVATE)); 219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((G726ENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate)->pHandle = pHandle; 221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = pHandle->pComponentPrivate; 222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pCompPort, G726ENC_PORT_TYPE); 224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pCompPort[G726ENC_INPUT_PORT] = pCompPort; 225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pCompPort, G726ENC_PORT_TYPE); 227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pCompPort[G726ENC_OUTPUT_PORT] = pCompPort; 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pComponentPrivate->sPortParam, OMX_PORT_PARAM_TYPE); 230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBCONF_INIT_STRUCT(pComponentPrivate->sPortParam, OMX_PORT_PARAM_TYPE); 231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Initialize sPortParam data structures to default values */ 233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sPortParam->nPorts = 0x2; 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sPortParam->nStartPortNumber = 0x0; 235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Malloc and Set pPriorityMgmt defaults */ 237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pComponentPrivate->sPriorityMgmt, OMX_PRIORITYMGMTTYPE); 238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBCONF_INIT_STRUCT(pComponentPrivate->sPriorityMgmt, OMX_PRIORITYMGMTTYPE); 239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Initialize sPriorityMgmt data structures to default values */ 241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sPriorityMgmt->nGroupPriority = -1; 242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sPriorityMgmt->nGroupID = -1; 243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(G726_op, OMX_AUDIO_PARAM_G726TYPE); 245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBCONF_INIT_STRUCT(G726_op, OMX_AUDIO_PARAM_G726TYPE); 246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->G726Params[G726ENC_OUTPUT_PORT] = G726_op; 247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726_op->nPortIndex = G726ENC_OUTPUT_PORT; 248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(G726_ip, OMX_AUDIO_PARAM_G726TYPE); 250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBCONF_INIT_STRUCT(G726_ip, OMX_AUDIO_PARAM_G726TYPE); 251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->G726Params[G726ENC_INPUT_PORT] = G726_ip; 252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726_ip->nPortIndex = G726ENC_INPUT_PORT; 253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* malloc and initialize number of input buffers */ 255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pComponentPrivate->pInputBufferList, G726ENC_BUFFERLIST); 256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->numBuffers = 0; 257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* malloc and initialize number of output buffers */ 259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pComponentPrivate->pOutputBufferList, G726ENC_BUFFERLIST); 260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->numBuffers = 0; 261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < G726ENC_MAX_NUM_OF_BUFS; i++) { 263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[i] = NULL; 264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[i] = NULL; 265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->arrTickCount[i] = 0; 266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->arrTimestamp[i] = 0; 267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->IpBufindex = 0; 269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->OpBufindex = 0; 270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set input port defaults */ 272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pPortDef_ip, OMX_PARAM_PORTDEFINITIONTYPE); 273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBCONF_INIT_STRUCT(pPortDef_ip, OMX_PARAM_PORTDEFINITIONTYPE); 274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_INPUT_PORT] = pPortDef_ip; 275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->nPortIndex = G726ENC_INPUT_PORT; 277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->eDir = OMX_DirInput; 278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->nBufferCountActual = G726ENC_NUM_INPUT_BUFFERS; 279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->nBufferCountMin = G726ENC_NUM_INPUT_BUFFERS; 280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->nBufferSize = G726ENC_INPUT_BUFFER_SIZE_DASF; 281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->bEnabled = OMX_TRUE; 282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->bPopulated = OMX_FALSE; 283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->eDomain = OMX_PortDomainAudio; 284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->format.audio.eEncoding = OMX_AUDIO_CodingPCM; 285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->format.audio.pNativeRender = NULL; 286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_ip->format.audio.bFlagErrorConcealment = OMX_FALSE; 287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set output port defaults */ 289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pPortDef_op, OMX_PARAM_PORTDEFINITIONTYPE); 290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBCONF_INIT_STRUCT(pPortDef_op, OMX_PARAM_PORTDEFINITIONTYPE); 291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT] = pPortDef_op; 292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->nPortIndex = G726ENC_OUTPUT_PORT; 294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->eDir = OMX_DirOutput; 295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->nBufferCountMin = G726ENC_NUM_OUTPUT_BUFFERS; 296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->nBufferCountActual = G726ENC_NUM_OUTPUT_BUFFERS; 297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->nBufferSize = G726ENC_OUTPUT_BUFFER_SIZE; 298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->bEnabled = OMX_TRUE; 299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->bPopulated = OMX_FALSE; 300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->eDomain = OMX_PortDomainAudio; 301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->format.audio.eEncoding = OMX_AUDIO_CodingG726; 302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->format.audio.pNativeRender = NULL; 303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef_op->format.audio.bFlagErrorConcealment = OMX_FALSE; 304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pComponentPrivate->pCompPort[G726ENC_INPUT_PORT]->pPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBCONF_INIT_STRUCT(pComponentPrivate->pCompPort[G726ENC_INPUT_PORT]->pPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set input port format defaults */ 308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortFormat = pComponentPrivate->pCompPort[G726ENC_INPUT_PORT]->pPortFormat; 309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBCONF_INIT_STRUCT(pPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortFormat->nPortIndex = G726ENC_INPUT_PORT; 311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortFormat->nIndex = OMX_IndexParamAudioPcm; 312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortFormat->eEncoding = OMX_AUDIO_CodingPCM; 313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pComponentPrivate->pCompPort[G726ENC_OUTPUT_PORT]->pPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBCONF_INIT_STRUCT(pComponentPrivate->pCompPort[G726ENC_OUTPUT_PORT]->pPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set output port format defaults */ 317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortFormat = pComponentPrivate->pCompPort[G726ENC_OUTPUT_PORT]->pPortFormat; 318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBCONF_INIT_STRUCT(pPortFormat, OMX_AUDIO_PARAM_PORTFORMATTYPE); 319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortFormat->nPortIndex = G726ENC_OUTPUT_PORT; 320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortFormat->nIndex = OMX_IndexParamAudioPcm; 321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortFormat->eEncoding = OMX_AUDIO_CodingG726; 322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Setting dasf & acdn and MultiFrame modes to 0\n",__LINE__); 324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->dasfMode = 0; 325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->acdnMode = 0; 326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->rtpMode = 0; 327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPortDefsAllocated = 0; 328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bCompThreadStarted = 0; 329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pParams = NULL; 330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bInitParamsInitialized = 0; 332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pMarkBuf = NULL; 333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pMarkData = NULL; 334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nEmptyBufferDoneCount = 0; 335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nEmptyThisBufferCount = 0; 336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nFillBufferDoneCount = 0; 337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nFillThisBufferCount = 0; 338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->strmAttr = NULL; 339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandParam = 0; 340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < G726ENC_MAX_NUM_OF_BUFS; i++) { 343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i] = NULL; 344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[i] = NULL; 345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nNumInputBufPending = 0; 348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nNumOutputBufPending = 0; 349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 0; 350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bNoIdleOnStop= OMX_FALSE; 351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nOutStandingFillDones = 0; 352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDspStoppedWhileExecuting = OMX_FALSE; 353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->G726FrameSize[0] = 24; 355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->G726FrameSize[1] = 20; 356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->G726FrameSize[2] = 4; 357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->G726FrameSize[3] = 1; 358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lastOutBufArrived = NULL; 359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->LastBufSent = 0; 360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPreempted = OMX_FALSE; 361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy((char*)pComponentPrivate->componentRole.cRole, "audio_encoder.g726"); 363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sDeviceString = SafeMalloc(100*sizeof(OMX_STRING)); 364b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (pComponentPrivate->sDeviceString == NULL) { 365b65f253fdc60f6208a54911bee793d225f23cdf8James Dong G726ENC_DPRINT("%d :: OMX_ErrorInsufficientResources", __LINE__); 366b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorInsufficientResources; 367b65f253fdc60f6208a54911bee793d225f23cdf8James Dong goto EXIT; 368b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Initialize device string to the default value */ 370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy((char*)pComponentPrivate->sDeviceString,":srcul/codec\0"); 371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_init(&pComponentPrivate->AlloBuf_mutex, NULL); 374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_init (&pComponentPrivate->AlloBuf_threshold, NULL); 375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 0; 376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_init(&pComponentPrivate->InLoaded_mutex, NULL); 378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_init (&pComponentPrivate->InLoaded_threshold, NULL); 379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 0; 380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_init(&pComponentPrivate->InIdle_mutex, NULL); 382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_init (&pComponentPrivate->InIdle_threshold, NULL); 383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded = 0; 384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G726ENC_StartComponentThread(pHandle); 387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ComponentInit\n", __LINE__); 388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Error returned from the Component\n",__LINE__); 390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = RMProxy_NewInitalize(); 395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ComponentInit\n", __LINE__); 396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Error returned from loading ResourceManagerProxy thread\n",__LINE__); 398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting OMX_ComponentInit\n", __LINE__); 404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SetCallbacks() Sets application callbacks to the component 411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will update application callbacks 413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * to the component. So that component can make use of those call back 414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * while sending buffers to the application. And also it will copy the 415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * application private data to component memory 416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pAppData Application private data 420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetCallbacks (OMX_HANDLETYPE pComponent, 427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CALLBACKTYPE* pCallBacks, 428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pAppData) 429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE*)pComponent; 433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = 435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G726ENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering SetCallbacks\n", __LINE__); 437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pCallBacks == NULL) { 438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Received the empty callbacks from the application\n",__LINE__); 440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Copy the callbacks of the application to the component private*/ 444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy (&(pComponentPrivate->cbInfo), pCallBacks, sizeof(OMX_CALLBACKTYPE)); 445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*copy the application private data to component memory */ 447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate = pAppData; 448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateLoaded; 450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting SetCallbacks\n", __LINE__); 453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetComponentVersion() This will return the component version 460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will retrun the component version 462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompnentName Name of the component 465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompnentVersion handle for this instance of the component 466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pSpecVersion application callbacks 467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompnentUUID 468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetComponentVersion (OMX_HANDLETYPE hComp, 475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STRING pComponentName, 476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pComponentVersion, 477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE* pSpecVersion, 478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_UUIDTYPE* pComponentUUID) 479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE*) hComp; 483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = (G726ENC_COMPONENT_PRIVATE *) pHandle->pComponentPrivate; 484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering GetComponentVersion\n", __LINE__); 485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Copy component version structure */ 486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentVersion != NULL && pComponentName != NULL) { 487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy(pComponentName, pComponentPrivate->cComponentName); 488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentVersion, &(pComponentPrivate->ComponentVersion.s), sizeof(pComponentPrivate->ComponentVersion.s)); 489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadParameter from GetComponentVersion",__LINE__); 492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting GetComponentVersion\n", __LINE__); 496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SendCommand() used to send the commands to the component 502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will be used by the application. 504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param phandle handle for this instance of the component 506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param Cmd Command to be sent to the component 507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nParam indicates commmad is sent using this method 508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SendCommand (OMX_HANDLETYPE phandle, 515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMMANDTYPE Cmd, 516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nParam, 517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pCmdData) 518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)phandle; 521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pCompPrivate = 522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G726ENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nRet = 0; 524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering SendCommand()\n", __LINE__); 525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompPrivate->curState == OMX_StateInvalid) { 526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInvalidState; 527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Error OMX_ErrorInvalidState Sent to App\n",__LINE__); 528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(Cmd) { 532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandStateSet: 533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_CommandStateSet SendCommand\n",__LINE__); 534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompPrivate->curState == OMX_StateLoaded) { 535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((nParam == OMX_StateExecuting) || (nParam == OMX_StatePause)) { 536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( pHandle, 537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorIncorrectStateTransition, 540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nParam == OMX_StateInvalid) { 546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_CommandStateSet SendCommand\n",__LINE__); 547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->curState = OMX_StateInvalid; 548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( pHandle, 549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorInvalidState, 552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandFlush: 559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_CommandFlush SendCommand\n",__LINE__); 560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nParam > 1 && nParam != -1) { 561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadPortIndex from SendCommand",__LINE__); 563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandPortDisable: 567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_CommandPortDisable SendCommand\n",__LINE__); 568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandPortEnable: 570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_CommandPortEnable SendCommand\n",__LINE__); 571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_CommandMarkBuffer: 573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_CommandMarkBuffer SendCommand\n",__LINE__); 574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nParam > 0) { 575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadPortIndex from SendCommand",__LINE__); 577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Command Received Default eError\n",__LINE__); 582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivate->cbInfo.EventHandler ( pHandle, 583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorUndefined, 586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Invalid Command"); 588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRet = write (pCompPrivate->cmdPipe[1], &Cmd, sizeof(Cmd)); 593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nRet == -1) { 594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorInsufficientResources from SendCommand",__LINE__); 596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (Cmd == OMX_CommandMarkBuffer) { 600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRet = write(pCompPrivate->cmdDataPipe[1], &pCmdData, 601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_PTR)); 602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRet = write(pCompPrivate->cmdDataPipe[1], &nParam, 604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(OMX_U32)); 605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nRet == -1) { 607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorInsufficientResources from SendCommand",__LINE__); 608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting SendCommand()\n", __LINE__); 614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetParameter() Gets the current configurations of the component 620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nParamIndex 623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ComponentParameterStructure 624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetParameter (OMX_HANDLETYPE hComp, 631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR ComponentParameterStructure) 633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pParameterStructure = NULL; 637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G726ENC_COMPONENT_PRIVATE *)(((OMX_COMPONENTTYPE*)hComp)->pComponentPrivate); 639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pParameterStructure = (OMX_PARAM_PORTDEFINITIONTYPE*)ComponentParameterStructure; 640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering the GetParameter\n",__LINE__); 641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pParameterStructure == NULL) { 642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadPortIndex from GetParameter",__LINE__); 644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->curState == OMX_StateInvalid) { 648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorIncorrectStateOperation from GetParameter",__LINE__); 650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(nParamIndex){ 654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioInit: 655b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (pComponentPrivate->sPortParam == NULL) { 656b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 657b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 658b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: GetParameter OMX_IndexParamAudioInit \n",__LINE__); 660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->sPortParam, sizeof(OMX_PORT_PARAM_TYPE)); 661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPortDefinition: 664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: GetParameter OMX_IndexParamPortDefinition \n",__LINE__); 665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_PARAM_PORTDEFINITIONTYPE *)(ComponentParameterStructure))->nPortIndex == 666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_INPUT_PORT]->nPortIndex) { 667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pPortDef[G726ENC_INPUT_PORT], sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(((OMX_PARAM_PORTDEFINITIONTYPE *)(ComponentParameterStructure))->nPortIndex == 670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->nPortIndex) { 671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT], sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadPortIndex from GetParameter \n",__LINE__); 675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioPortFormat: 680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: GetParameter OMX_IndexParamAudioPortFormat \n",__LINE__); 681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex == 682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_INPUT_PORT]->nPortIndex) { 683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nIndex > 684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pCompPort[G726ENC_INPUT_PORT]->pPortFormat->nPortIndex) { 685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNoMore; 686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pCompPort[G726ENC_INPUT_PORT]->pPortFormat, sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nPortIndex == 692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->nPortIndex){ 693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PORTFORMATTYPE *)(ComponentParameterStructure))->nIndex > 694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pCompPort[G726ENC_OUTPUT_PORT]->pPortFormat->nPortIndex) { 695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNoMore; 696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->pCompPort[G726ENC_OUTPUT_PORT]->pPortFormat, sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadPortIndex from GetParameter \n",__LINE__); 703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioPcm: 708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: GetParameter OMX_IndexParamAudioG726 \n",__LINE__); 709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_AUDIO_PARAM_PCMMODETYPE *)(ComponentParameterStructure))->nPortIndex == 710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->G726Params[G726ENC_OUTPUT_PORT]->nPortIndex) { 711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->G726Params[G726ENC_OUTPUT_PORT], sizeof(OMX_AUDIO_PARAM_PCMMODETYPE)); 712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadPortIndex from GetParameter \n",__LINE__); 716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPriorityMgmt: 721b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (pComponentPrivate->sPriorityMgmt == NULL) { 722b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 723b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 724b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: GetParameter OMX_IndexParamPriorityMgmt \n",__LINE__); 726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentParameterStructure, pComponentPrivate->sPriorityMgmt, sizeof(OMX_PRIORITYMGMTTYPE)); 727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamVideoInit: 730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamImageInit: 733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamOtherInit: 736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorUnsupportedIndex GetParameter \n",__LINE__); 740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting GetParameter\n",__LINE__); 745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SetParameter() Sets configuration paramets to the component 751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nParamIndex 754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompParam 755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetParameter (OMX_HANDLETYPE hComp, 762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nParamIndex, 763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pCompParam) 764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle= (OMX_COMPONENTTYPE*)hComp; 767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_PORTFORMATTYPE* pComponentParam = NULL; 769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pComponentParamPort = NULL; 770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_G726TYPE *pCompG726Param = NULL; 771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G726ENC_COMPONENT_PRIVATE *)(((OMX_COMPONENTTYPE*)hComp)->pComponentPrivate); 773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering the SetParameter\n",__LINE__); 776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pCompParam == NULL) { 777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadParameter from SetParameter",__LINE__); 779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState != OMX_StateLoaded) { 782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorIncorrectStateOperation from SetParameter",__LINE__); 784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(nParamIndex) { 788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioPortFormat: 789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: SetParameter OMX_IndexParamAudioPortFormat \n",__LINE__); 790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentParam = (OMX_AUDIO_PARAM_PORTFORMATTYPE *)pCompParam; 791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( pComponentParam->nPortIndex == pComponentPrivate->pCompPort[G726ENC_INPUT_PORT]->pPortFormat->nPortIndex ) { 792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pCompPort[G726ENC_INPUT_PORT]->pPortFormat, pComponentParam, sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if ( pComponentParam->nPortIndex == pComponentPrivate->pCompPort[G726ENC_OUTPUT_PORT]->pPortFormat->nPortIndex ) { 794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pCompPort[G726ENC_OUTPUT_PORT]->pPortFormat, pComponentParam, sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)); 795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadPortIndex from SetParameter",__LINE__); 797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioG726: 801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: SetParameter OMX_IndexParamAudioG726 \n",__LINE__); 802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompG726Param = (OMX_AUDIO_PARAM_G726TYPE *)pCompParam; 803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pCompG726Param->nPortIndex == OMX_DirOutput) { 804b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (((G726ENC_COMPONENT_PRIVATE *) 805b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pComponentPrivate)->G726Params[G726ENC_OUTPUT_PORT] == NULL) { 806b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 807b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 808b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(((G726ENC_COMPONENT_PRIVATE *) 810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate)->G726Params[G726ENC_OUTPUT_PORT], pCompG726Param, sizeof(OMX_AUDIO_PARAM_G726TYPE)); 811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (pCompG726Param->nPortIndex == OMX_DirInput) { 813b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (((G726ENC_COMPONENT_PRIVATE *) 814b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pHandle->pComponentPrivate)->G726Params[G726ENC_INPUT_PORT] == NULL) { 815b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 816b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 817b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(((G726ENC_COMPONENT_PRIVATE *) 819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate)->G726Params[G726ENC_INPUT_PORT], pCompG726Param, sizeof(OMX_AUDIO_PARAM_G726TYPE)); 820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadPortIndex from SetParameter",__LINE__); 823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPortDefinition: 827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentParamPort = (OMX_PARAM_PORTDEFINITIONTYPE *)pCompParam; 829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: SetParameter OMX_IndexParamPortDefinition \n",__LINE__); 830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((OMX_PARAM_PORTDEFINITIONTYPE *)(pCompParam))->nPortIndex == pComponentPrivate->pPortDef[G726ENC_INPUT_PORT]->nPortIndex) { 831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: SetParameter OMX_IndexParamPortDefinition \n",__LINE__); 832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pPortDef[G726ENC_INPUT_PORT], pCompParam, sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(((OMX_PARAM_PORTDEFINITIONTYPE *)(pCompParam))->nPortIndex == pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->nPortIndex) { 835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: SetParameter OMX_IndexParamPortDefinition \n",__LINE__); 836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT], pCompParam, sizeof(OMX_PARAM_PORTDEFINITIONTYPE)); 837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadPortIndex from SetParameter",__LINE__); 840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamPriorityMgmt: 844b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (pComponentPrivate->sPriorityMgmt == NULL) { 845b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 846b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 847b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: SetParameter OMX_IndexParamPriorityMgmt \n",__LINE__); 849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->sPriorityMgmt, (OMX_PRIORITYMGMTTYPE*)pCompParam, sizeof(OMX_PRIORITYMGMTTYPE)); 850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexParamAudioInit: 853b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (pComponentPrivate->sPortParam == NULL) { 854b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 855b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 856b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: SetParameter OMX_IndexParamAudioInit \n",__LINE__); 858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pComponentPrivate->sPortParam, (OMX_PORT_PARAM_TYPE*)pCompParam, sizeof(OMX_PORT_PARAM_TYPE)); 859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: SetParameter OMX_ErrorUnsupportedIndex \n",__LINE__); 862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting SetParameter\n",__LINE__); 867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetConfig() Gets the current configuration of to the component 874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nConfigIndex 877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ComponentConfigStructure 878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetConfig (OMX_HANDLETYPE hComp, 885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR ComponentConfigStructure) 887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_STREAM_INFO *streamInfo = NULL; 890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = (OMX_COMPONENTTYPE*)hComp; 891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = 892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G726ENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nConfigIndex == OMX_IndexCustomG726ENCStreamIDConfig){ 895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(streamInfo, TI_OMX_STREAM_INFO); 896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(streamInfo == NULL){ 897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin streamInfo->streamId = pComponentPrivate->streamID; 901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(ComponentConfigStructure,streamInfo,sizeof(TI_OMX_STREAM_INFO)); 902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMEMFREE_STRUCT(streamInfo); 903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering GetConfig\n", __LINE__); 906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting GetConfig\n", __LINE__); 907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * SetConfig() Sets the configraiton to the component 913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComp handle for this instance of the component 915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nConfigIndex 916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ComponentConfigStructure 917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE SetConfig (OMX_HANDLETYPE hComp, 924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nConfigIndex, 925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR ComponentConfigStructure) 926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 928b65f253fdc60f6208a54911bee793d225f23cdf8James Dong G726ENC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle = (OMX_COMPONENTTYPE*)hComp; 930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_DSP_DEFINITION *pTiDspDefinition = NULL; 931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_DATAPATH dataPath; 932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S16 *customFlag = NULL; 933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_CONFIG_VOLUMETYPE *pGainStructure = NULL; 934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 fdwrite = 0; 935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin AM_COMMANDDATATYPE cmd_data; 938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering SetConfig\n", __LINE__); 940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pHandle == NULL) { 941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT ("%d :: Invalid HANDLE OMX_ErrorBadParameter \n",__LINE__); 942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 946b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pComponentPrivate = (G726ENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch (nConfigIndex) { 948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexCustomG726ENCModeConfig: 950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTiDspDefinition = (TI_OMX_DSP_DEFINITION*)ComponentConfigStructure; 951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pTiDspDefinition == NULL) { 952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadParameter from SetConfig\n",__LINE__); 954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->dasfMode = pTiDspDefinition->dasfMode; 957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->acdnMode = pTiDspDefinition->acousticMode; 958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->rtpMode = pTiDspDefinition->rtpMode; 959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->streamID = pTiDspDefinition->streamId; 960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexCustomG726ENCDataPath: 962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin customFlag = (OMX_S16*)ComponentConfigStructure; 963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dataPath = *customFlag; 964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(dataPath) { 965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case DATAPATH_APPLICATION: 966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("------>Stream ID on SetConfig %d\n", (int)pComponentPrivate->streamID); 967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_MMMIXER_DATAPATH(pComponentPrivate->sDeviceString, RENDERTYPE_ENCODER, pComponentPrivate->streamID); 968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case DATAPATH_APPLICATION_RTMIXER: 971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy((char*)pComponentPrivate->sDeviceString,(char*)RTM_STRING_ENCODER); 972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case DATAPATH_ACDN: 975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy((char*)pComponentPrivate->sDeviceString,(char*)ACDN_STRING_ENCODER); 976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_IndexConfigAudioVolume: 983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((fdwrite=open(FIFO1,O_WRONLY))<0) { 985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: [NBAMRE Encoder Component] - failure to open WRITE pipe\n",__LINE__); 986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pGainStructure = (OMX_AUDIO_CONFIG_VOLUMETYPE *)ComponentConfigStructure; 989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.hComponent = hComp; 990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.AM_Cmd = AM_CommandSWGain; 991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.param1 = pGainStructure->sVolume.nValue; 992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.param2 = 0; 993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.streamID = pComponentPrivate->streamID; 994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((write(fdwrite, &cmd_data, sizeof(cmd_data)))<0) 996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("[G726 encoder] - fail to send command to audio manager\n"); 998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("[G726 encoder] - ok to send command to audio manager\n"); 1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(fdwrite); 1004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 1007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUnsupportedIndex; 1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting SetConfig\n", __LINE__); 1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 1013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * GetState() Gets the current state of the component 1019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCompomponent handle for this instance of the component 1021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pState 1022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetState (OMX_HANDLETYPE pComponent, OMX_STATETYPE* pState) 1029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorUndefined; 1031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 1032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering GetState\n", __LINE__); 1033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!pState) { 1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: OMX_ErrorBadParameter from GetState\n",__LINE__); 1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pHandle && pHandle->pComponentPrivate) { 1040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pState = ((G726ENC_COMPONENT_PRIVATE*) 1041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate)->curState; 1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pState = OMX_StateLoaded; 1044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNone; 1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting GetState\n", __LINE__); 1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * EmptyThisBuffer() This callback is used to send the input buffer to 1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * component 1057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 1059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nPortIndex input port index 1060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pBuffer buffer to be sent to codec 1061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE EmptyThisBuffer (OMX_HANDLETYPE pComponent, 1068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer) 1069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret = 0; 1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = NULL; 1074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 1076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = 1077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G726ENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 1078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef = ((G726ENC_COMPONENT_PRIVATE*)pComponentPrivate)->pPortDef[G726ENC_INPUT_PORT]; 1079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering EmptyThisBuffer\n", __LINE__); 1081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer == NULL) { 1082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: About to return OMX_ErrorBadParameter\n",__LINE__); 1084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nSize != sizeof(OMX_BUFFERHEADERTYPE)) { 1088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: About to return OMX_ErrorBadParameter\n",__LINE__); 1090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!pPortDef->bEnabled) { 1094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: About to return OMX_ErrorIncorrectStateOperation\n",__LINE__); 1096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nVersion.nVersion != pComponentPrivate->nVersion) { 1100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorVersionMismatch; 1101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: About to return OMX_ErrorVersionMismatch\n",__LINE__); 1102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nInputPortIndex != G726ENC_INPUT_PORT) { 1106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: About to return OMX_ErrorBadPortIndex\n",__LINE__); 1108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState != OMX_StateExecuting && pComponentPrivate->curState != OMX_StatePause) { 1112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError= OMX_ErrorIncorrectStateOperation; 1113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: About to return OMX_ErrorIncorrectStateOperation\n",__LINE__); 1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("----------------------------------------------------------------\n"); 1119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Comp Sending Filled ip buff = %p to CompThread\n",__LINE__,pBuffer); 1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("----------------------------------------------------------------\n"); 1121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pMarkData = pBuffer->pMarkData; 1125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->hMarkTargetComponent = pBuffer->hMarkTargetComponent; 1126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = write (pComponentPrivate->dataPipe[1], &pBuffer, sizeof(OMX_BUFFERHEADERTYPE*)); 1128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (ret == -1) { 1129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Error in Writing to the Data pipe\n", __LINE__); 1130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nEmptyThisBufferCount++; 1134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting EmptyThisBuffer\n", __LINE__); 1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * FillThisBuffer() This callback is used to send the output buffer to 1142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * the component 1143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 1145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nPortIndex output port number 1146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pBuffer buffer to be sent to codec 1147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE FillThisBuffer (OMX_HANDLETYPE pComponent, 1154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer) 1155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret = 0; 1158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = NULL; 1159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 1160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = 1161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G726ENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 1162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef = ((G726ENC_COMPONENT_PRIVATE*)pComponentPrivate)->pPortDef[G726ENC_OUTPUT_PORT]; 1163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering FillThisBuffer\n", __LINE__); 1164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("------------------------------------------------------------------\n"); 1165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Comp Sending Emptied op buff = %p to CompThread\n",__LINE__,pBuffer); 1166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("------------------------------------------------------------------\n"); 1167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer == NULL) { 1168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT(" %d :: About to return OMX_ErrorBadParameter\n",__LINE__); 1170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nSize != sizeof(OMX_BUFFERHEADERTYPE)) { 1174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT(" %d :: About to return OMX_ErrorBadParameter\n",__LINE__); 1176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!pPortDef->bEnabled) { 1180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: About to return OMX_ErrorIncorrectStateOperation\n",__LINE__); 1182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nVersion.nVersion != pComponentPrivate->nVersion) { 1186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorVersionMismatch; 1187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT(" %d :: About to return OMX_ErrorVersionMismatch\n",__LINE__); 1188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer->nOutputPortIndex != G726ENC_OUTPUT_PORT) { 1192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT(" %d :: About to return OMX_ErrorBadPortIndex\n",__LINE__); 1194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->curState != OMX_StateExecuting && pComponentPrivate->curState != OMX_StatePause) { 1198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: About to return OMX_ErrorIncorrectStateOperation\n",__LINE__); 1200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = 0; 1204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Filling the Output buffer with zero */ 1205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset(pBuffer->pBuffer, 0, pBuffer->nAllocLen); 1206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->pMarkBuf != NULL){ 1209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->hMarkTargetComponent = pComponentPrivate->pMarkBuf->hMarkTargetComponent; 1210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->pMarkData = pComponentPrivate->pMarkBuf->pMarkData; 1211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pMarkBuf = NULL; 1212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pMarkData != NULL) { 1215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->hMarkTargetComponent = pComponentPrivate->hMarkTargetComponent; 1216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->pMarkData = pComponentPrivate->pMarkData; 1217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pMarkData = NULL; 1218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = write (pComponentPrivate->dataPipe[1], &pBuffer, sizeof (OMX_BUFFERHEADERTYPE*)); 1220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (ret == -1) { 1221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Error in Writing to the Data pipe\n", __LINE__); 1222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nFillThisBufferCount++; 1226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting FillThisBuffer\n", __LINE__); 1228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 1229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ComponentDeinit() this methold will de init the component 1234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComp handle for this instance of the component 1236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentDeInit(OMX_HANDLETYPE pHandle) 1243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle; 1247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = 1248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G726ENC_COMPONENT_PRIVATE *)pComponent->pComponentPrivate; 1249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering ComponentDeInit\n", __LINE__); 1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = RMProxy_NewSendCommand(pHandle, RMProxy_FreeResource, OMX_G726_Encoder_COMPONENT, 0, 3456,NULL); 1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT ("%d ::OMX_G726_Encoder.c :: Error returned from destroy ResourceManagerProxy thread\n", 1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__); 1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = RMProxy_Deinitalize(); 1258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Error from RMProxy_Deinitalize\n",__LINE__); 1260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsStopping = 1; 1265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G726ENC_StopComponentThread(pHandle); 1266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Error from G726ENC_StopComponentThread\n",__LINE__); 1268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Wait for thread to exit so we can get the status into "eError" */ 1271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* close the pipe handles */ 1272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G726ENC_FreeCompResources(pHandle); 1273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Error from G726ENC_FreeCompResources\n",__LINE__); 1275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->InLoaded_mutex); 1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->InLoaded_threshold); 1281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->InIdle_mutex); 1283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->InIdle_threshold); 1284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->AlloBuf_mutex); 1286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->AlloBuf_threshold); 1287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->sDeviceString != NULL) { 1289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SafeFree(pComponentPrivate->sDeviceString); 1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMEMFREE_STRUCT(pComponentPrivate); 1292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting ComponentDeInit\n", __LINE__); 1294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 1295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ComponentTunnelRequest() this method is not implemented in 1.5 1301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will update application callbacks 1303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * the application. 1304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComp handle for this instance of the component 1306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 1307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ptr 1308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentTunnelRequest (OMX_HANDLETYPE hComp, 1315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nPort, OMX_HANDLETYPE hTunneledComp, 1316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nTunneledPort, 1317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_TUNNELSETUPTYPE* pTunnelSetup) 1318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNotImplemented; 1321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering ComponentTunnelRequest\n", __LINE__); 1322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting ComponentTunnelRequest\n", __LINE__); 1323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * AllocateBuffer() 1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComp handle for this instance of the component 1332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 1333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ptr 1334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE AllocateBuffer (OMX_IN OMX_HANDLETYPE hComponent, 1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer, 1342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 1343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 1344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes) 1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = NULL; 1348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 1349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufferHeader = NULL; 1351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G726ENC_COMPONENT_PRIVATE *) 1353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 1354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef = ((G726ENC_COMPONENT_PRIVATE*)pComponentPrivate)->pPortDef[nPortIndex]; 1356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering AllocateBuffer\n", __LINE__); 1357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: pPortDef = %p\n", __LINE__,pPortDef); 1358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: pPortDef->bEnabled = %d\n", __LINE__,pPortDef->bEnabled); 1359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!pPortDef->bEnabled) { 1361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 1; 1362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->AlloBuf_mutex); 1364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_wait(&pComponentPrivate->AlloBuf_threshold, &pComponentPrivate->AlloBuf_mutex); 1365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->AlloBuf_mutex); 1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pBufferHeader, OMX_BUFFERHEADERTYPE); 1370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset(pBufferHeader, 0x0, sizeof(OMX_BUFFERHEADERTYPE)); 1371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pBuffer = (OMX_U8 *)SafeMalloc(nSizeBytes + 256); 1373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_MEMPRINT("%d :: ALLOCATING MEMORY = %p\n",__LINE__,pBufferHeader->pBuffer); 1374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBufferHeader->pBuffer == NULL) { 1375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Free previously allocated memory before bailing */ 1376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBufferHeader) { 1377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SafeFree(pBufferHeader); 1378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader = NULL; 1379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 1381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pBuffer += 128; 1384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nPortIndex == G726ENC_INPUT_PORT) { 1386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nInputPortIndex = nPortIndex; 1387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nOutputPortIndex = -1; 1388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[pComponentPrivate->pInputBufferList->numBuffers] = pBufferHeader; 1389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->bBufferPending[pComponentPrivate->pInputBufferList->numBuffers] = 0; 1390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->bufferOwner[pComponentPrivate->pInputBufferList->numBuffers++] = 1; 1391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers == pPortDef->nBufferCountActual) { 1392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 1393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: pPortDef->bPopulated = %d\n", __LINE__, pPortDef->bPopulated); 1394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (nPortIndex == G726ENC_OUTPUT_PORT) { 1397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nInputPortIndex = -1; 1398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nOutputPortIndex = nPortIndex; 1399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[pComponentPrivate->pOutputBufferList->numBuffers] = pBufferHeader; 1400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bBufferPending[pComponentPrivate->pOutputBufferList->numBuffers] = 0; 1401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bufferOwner[pComponentPrivate->pOutputBufferList->numBuffers++] = 1; 1402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->numBuffers == pPortDef->nBufferCountActual) { 1403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 1404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: pPortDef->bPopulated = %d\n", __LINE__, pPortDef->bPopulated); 1405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadPortIndex; 1409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT(" %d :: About to return OMX_ErrorBadPortIndex\n",__LINE__); 1410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ((!pComponentPrivate->dasfMode && /*File Mode*/ 1413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->bPopulated && 1414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->bEnabled && 1415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_INPUT_PORT]->bPopulated && 1416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_INPUT_PORT]->bEnabled && 1417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle) 1418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin || 1419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->dasfMode && /*Dasf Mode*/ 1420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->bPopulated && 1421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->bEnabled && 1422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle)){ 1423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 0; 1424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InLoaded_mutex); 1426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->InLoaded_threshold); 1427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InLoaded_mutex); 1428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->InLoaded_event)); 1430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pAppPrivate = pAppPrivate; 1433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pPlatformPrivate = pComponentPrivate; 1434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nAllocLen = nSizeBytes; 1435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMajor = G726ENC_MAJOR_VER; 1436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMinor = G726ENC_MINOR_VER; 1437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nVersion = pBufferHeader->nVersion.nVersion; 1438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nSize = sizeof(OMX_BUFFERHEADERTYPE); 1439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pBuffer = pBufferHeader; 1440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting AllocateBuffer\n",__LINE__); 1442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 1443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * FreeBuffer() 1449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComponent handle for this instance of the component 1451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 1452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ptr 1453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE FreeBuffer( 1460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 1461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 1462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) 1463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE * pComponentPrivate = NULL; 1466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* buff = NULL; 1467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* tempBuff = NULL; 1468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int i = 0; 1469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int inputIndex = -1; 1470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int outputIndex = -1; 1471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = NULL; 1472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G726ENC_COMPONENT_PRIVATE *) 1474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 1475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle = (OMX_COMPONENTTYPE *) pComponentPrivate->pHandle; 1477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering FreeBuffer\n", __LINE__); 1479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < G726ENC_MAX_NUM_OF_BUFS; i++) { 1480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin buff = pComponentPrivate->pInputBufferList->pBufHdr[i]; 1481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (buff == pBuffer) { 1482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Found matching input buffer\n",__LINE__); 1483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: buff = %p\n",__LINE__,buff); 1484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: pBuffer = %p\n",__LINE__,pBuffer); 1485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin inputIndex = i; 1486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: This is not a match\n",__LINE__); 1490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: buff = %p\n",__LINE__,buff); 1491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: pBuffer = %p\n",__LINE__,pBuffer); 1492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < G726ENC_MAX_NUM_OF_BUFS; i++) { 1496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin buff = pComponentPrivate->pOutputBufferList->pBufHdr[i]; 1497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (buff == pBuffer) { 1498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Found matching output buffer\n",__LINE__); 1499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: buff = %p\n",__LINE__,buff); 1500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: pBuffer = %p\n",__LINE__,pBuffer); 1501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin outputIndex = i; 1502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: This is not a match\n",__LINE__); 1506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: buff = %p\n",__LINE__,buff); 1507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: pBuffer = %p\n",__LINE__,pBuffer); 1508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (inputIndex != -1) { 1513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->bufferOwner[inputIndex] == 1) { 1514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tempBuff = pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]->pBuffer; 1515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tempBuff -= 128; 1516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMEMFREE_STRUCT(tempBuff); 1517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMEMFREE_STRUCT(pComponentPrivate->pInputBufferList->pBufHdr[inputIndex]); 1520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->numBuffers--; 1522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers < 1523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_INPUT_PORT]->nBufferCountMin) { 1524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_INPUT_PORT]->bPopulated = OMX_FALSE; 1526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->pPortDef[G726ENC_INPUT_PORT]->bEnabled && 1528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->curState == OMX_StateIdle || 1529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StateExecuting || 1530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StatePause)) { 1531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 1532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 1533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 1534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorPortUnpopulated, 1535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nPortIndex, 1536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 1537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (outputIndex != -1) { 1540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->bufferOwner[outputIndex] == 1) { 1541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tempBuff = pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]->pBuffer; 1542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tempBuff -= 128; 1543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMEMFREE_STRUCT(tempBuff); 1544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMEMFREE_STRUCT(pComponentPrivate->pOutputBufferList->pBufHdr[outputIndex]); 1546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->numBuffers--; 1548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->numBuffers < 1549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->nBufferCountMin) { 1550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->bPopulated = OMX_FALSE; 1551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->bEnabled && 1553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->curState == OMX_StateIdle || 1554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StateExecuting || 1555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StatePause)) { 1556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( pHandle, 1557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 1558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 1559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorPortUnpopulated, 1560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nPortIndex, 1561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 1562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning OMX_ErrorBadParameter\n",__LINE__); 1566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ((!pComponentPrivate->pInputBufferList->numBuffers && 1569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin !pComponentPrivate->pOutputBufferList->numBuffers) && 1570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded) 1571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded = 0; 1573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InIdle_mutex); 1575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->InIdle_threshold); 1576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InIdle_mutex); 1577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bDisableCommandPending) { 1580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SendCommand (pComponentPrivate->pHandle,OMX_CommandPortDisable,pComponentPrivate->bDisableCommandParam,NULL); 1581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting FreeBuffer\n", __LINE__); 1583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 1584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * UseBuffer() 1590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComp handle for this instance of the component 1592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCallBacks application callbacks 1593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ptr 1594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE UseBuffer ( 1600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 1601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, 1602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nPortIndex, 1603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_PTR pAppPrivate, 1604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nSizeBytes, 1605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U8* pBuffer) 1606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE *pPortDef = NULL; 1608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 1609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufferHeader = NULL; 1611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G726ENC_COMPONENT_PRIVATE *) 1613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 1614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef = ((G726ENC_COMPONENT_PRIVATE*)pComponentPrivate)->pPortDef[nPortIndex]; 1616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Entering UseBuffer\n", __LINE__); 1617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: pPortDef->bPopulated = %d \n",__LINE__,pPortDef->bPopulated); 1618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!pPortDef->bEnabled) { 1620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: About to return OMX_ErrorIncorrectStateOperation\n",__LINE__); 1621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorIncorrectStateOperation; 1622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nSizeBytes != pPortDef->nBufferSize || pPortDef->bPopulated) { 1626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: About to return OMX_ErrorBadParameter\n",__LINE__); 1627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBMALLOC_STRUCT(pBufferHeader, OMX_BUFFERHEADERTYPE); 1632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset((pBufferHeader), 0x0, sizeof(OMX_BUFFERHEADERTYPE)); 1633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nPortIndex == G726ENC_OUTPUT_PORT) { 1635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nInputPortIndex = -1; 1636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nOutputPortIndex = nPortIndex; 1637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[pComponentPrivate->pOutputBufferList->numBuffers] = pBufferHeader; 1638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bBufferPending[pComponentPrivate->pOutputBufferList->numBuffers] = 0; 1639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bufferOwner[pComponentPrivate->pOutputBufferList->numBuffers++] = 0; 1640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->numBuffers == pPortDef->nBufferCountActual) { 1641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 1642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nInputPortIndex = nPortIndex; 1646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nOutputPortIndex = -1; 1647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[pComponentPrivate->pInputBufferList->numBuffers] = pBufferHeader; 1648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->bBufferPending[pComponentPrivate->pInputBufferList->numBuffers] = 0; 1649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->bufferOwner[pComponentPrivate->pInputBufferList->numBuffers++] = 0; 1650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers == pPortDef->nBufferCountActual) { 1651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pPortDef->bPopulated = OMX_TRUE; 1652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinif ((!pComponentPrivate->dasfMode && /*File Mode*/ 1656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->bPopulated && 1657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->bEnabled && 1658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_INPUT_PORT]->bPopulated && 1659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_INPUT_PORT]->bEnabled && 1660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle) 1661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin || 1662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->dasfMode && /*Dasf Mode*/ 1663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->bPopulated && 1664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G726ENC_OUTPUT_PORT]->bEnabled && 1665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle)){ 1666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 0; 1667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InLoaded_mutex); 1669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->InLoaded_threshold); 1670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InLoaded_mutex); 1671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->InLoaded_event)); 1673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pAppPrivate = pAppPrivate; 1676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pPlatformPrivate = pComponentPrivate; 1677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nAllocLen = nSizeBytes; 1678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMajor = G726ENC_MAJOR_VER; 1679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nVersion.s.nVersionMinor = G726ENC_MINOR_VER; 1680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nVersion = pBufferHeader->nVersion.nVersion; 1681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->pBuffer = pBuffer; 1682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufferHeader->nSize = sizeof(OMX_BUFFERHEADERTYPE); 1683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *ppBufferHdr = pBufferHeader; 1684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Exiting UseBuffer\n", __LINE__); 1686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("%d :: Returning = 0x%x\n",__LINE__,eError); 1687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 1691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @fn GetExtensionIndex() description for GetExtensionIndex 1693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinGetExtensionIndex(). 1694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinReturns index for vendor specific settings. 1695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 1696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @see OMX_Core.h 1697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*/ 1698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 1699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE GetExtensionIndex( 1700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 1701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_STRING cParameterName, 1702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_INDEXTYPE* pIndexType) 1703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("GetExtensionIndex\n"); 1707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!(strcmp(cParameterName,"OMX.TI.index.config.tispecific"))) { 1708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pIndexType = OMX_IndexCustomG726ENCModeConfig; 1709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("OMX.TI.index.config.tispecific\n"); 1710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (!(strcmp(cParameterName,"OMX.TI.index.config.G726.streamIDinfo"))) { 1712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pIndexType = OMX_IndexCustomG726ENCStreamIDConfig; 1713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("OMX.TI.index.config.G726.streamIDinfo\n"); 1714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (!(strcmp(cParameterName,"OMX.TI.index.config.G726.datapath"))) { 1716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *pIndexType = OMX_IndexCustomG726ENCDataPath; 1717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("OMX.TI.index.config.G726.datapath\n"); 1718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_DPRINT("Exiting GetExtensionIndex\n"); 1724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 1728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @fn ComponentRoleEnum() description for ComponentRoleEnum() 1730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinReturns the role at the given index 1732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 1733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @see OMX_Core.h 1734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*/ 1735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 1736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE ComponentRoleEnum( 1737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_HANDLETYPE hComponent, 1738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_OUT OMX_U8 *cRole, 1739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IN OMX_U32 nIndex) 1740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G726ENC_COMPONENT_PRIVATE *pComponentPrivate = NULL; 1742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate = (G726ENC_COMPONENT_PRIVATE *)(((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); 1745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nIndex == 0){ 1747b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if (cRole == NULL) { 1748b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorBadParameter; 1749b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 1750b65f253fdc60f6208a54911bee793d225f23cdf8James Dong else { 1751b65f253fdc60f6208a54911bee793d225f23cdf8James Dong memcpy(cRole, &pComponentPrivate->componentRole.cRole, sizeof(OMX_U8) * OMX_MAX_STRINGNAME_SIZE); 1752b65f253fdc60f6208a54911bee793d225f23cdf8James Dong G726ENC_DPRINT("::::In ComponenetRoleEnum: cRole is set to %s\n",cRole); 1753b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 1754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNoMore; 1757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1760