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