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_G722Enc_Utils.c 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This file implements OMX Component for G722 Encoder that 32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * is fully compliant with the OMX Audio specification . 33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @path $(OMAPSW_MPU)\linux\audio\src\openmax_il\g722_enc\src 35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @rev 0.1 37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----------------------------------------------------------------------------- 39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Revision History 41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! =================================== 42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Date Author(s) Version Description 43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! --------- ------------------- ------- --------------------------------- 44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 08-Mar-2007 A.Donjon 0.1 Code update for G722 ENCODER 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ================================================================================= */ 48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ------compilation control switches -------------------------*/ 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * INCLUDE FILES 53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----- system and platform files ----------------------------*/ 55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <windows.h> 57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <oaf_osal.h> 58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <omx_core.h> 59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h> 60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h> 62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/types.h> 63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/types.h> 64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/stat.h> 65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <dlfcn.h> 66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <malloc.h> 67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <memory.h> 68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h> 69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <errno.h> 70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <dlfcn.h> 71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/time.h> 72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h> 75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <dbapi.h> 76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h> 77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h> 78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_Component.h" 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "LCML_DspCodec.h" 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_G722Encoder.h" 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_G722Enc_Utils.h" 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "g722encsocket_ti.h" 84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <encode_common_ti.h> 85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "usn.h" 86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define HASHINGENABLE 1 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint FillBufferDoneCount = 0; 92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic int gLcmlPipeWr = 0; 93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 pValues[4] ={0}; 94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic G722ENC_COMPONENT_PRIVATE *pComponentPrivate_CC = NULL; 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn ComponentThread() Component thread 99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_ComponentThread.h 101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid* ComponentThread (void* pThreadData) 104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int status = 0; 106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct timespec tv; /*timeval tv;*/ 107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int fdmax = 0; 108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fd_set rfds; 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nRet = 0; 110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufHeader = NULL; 112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ret = 0; 113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_COMPONENT_PRIVATE* pComponentPrivate = (G722ENC_COMPONENT_PRIVATE*)pThreadData; 116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = pComponentPrivate->pHandle; 117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = pComponentPrivate->cmdPipe[0]; 119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->dataPipe[0] > fdmax) { 121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = pComponentPrivate->dataPipe[0]; 122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while (1) { 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_ZERO (&rfds); 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET (pComponentPrivate->cmdPipe[0], &rfds); 127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET (pComponentPrivate->dataPipe[0], &rfds); 128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_sec = 1; 129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_nsec = 0; /*usec = 0;*/ 130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigset_t set; 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigemptyset (&set); 134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigaddset (&set, SIGALRM); 135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = pselect (fdmax+1, &rfds, NULL, NULL, &tv, &set); 136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = select (fdmax+1, &rfds, NULL, NULL, &tv); 138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 == status) { 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d : bIsStopping = %ld\n",__LINE__, 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsStopping); 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d : app_nBuf = %ld\n",__LINE__, 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->app_nBuf); 146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bIsStopping == 1) { 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Component stopping\n",__LINE__); 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nOpBuf = 0; 151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nIpBuf = 0; 152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->app_nBuf = 0; 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsStopping = 0; 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsEOFSent = 0; 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState != OMX_StateIdle) { 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if (-1 == status) { 160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Error in Select - errno = %d\n", __LINE__,errno); 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle,pHandle->pApplicationPrivate, 165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError,OMX_ErrorInsufficientResources, 0, 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Error from COmponent Thread in select"); 167b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorInsufficientResources; 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if (FD_ISSET (pComponentPrivate->cmdPipe[0], &rfds)) { 170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: CMD pipe is set in Component Thread\n",__LINE__); 171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: pComponentPrivate = %p\n",__LINE__,pComponentPrivate); 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRet = G722ENC_HandleCommand (pComponentPrivate); 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nRet == EXIT_COMPONENT_THRD) { 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("Exiting from Component thread\n"); 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_CleanupInitParams(pHandle); 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Function G722Enc_FreeCompResources returned\ 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error\n",__LINE__); 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: ARM Side Resources Have Been Freed\n",__LINE__); 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateLoaded; 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bPreempted == 0) { 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorNone, 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState, 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d %s Component loaded (OMX_StateLoaded)\n", 192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__,__FUNCTION__); 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }else{ 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorResourcesLost, 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState, 199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPreempted = 0; 201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (FD_ISSET (pComponentPrivate->dataPipe[0], &rfds)) { 205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: DATA pipe is set in Component Thread\n",__LINE__); 207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = read(pComponentPrivate->dataPipe[0], &pBufHeader, sizeof(pBufHeader)); 208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (ret == -1) { 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Error while reading from the pipe\n",__LINE__); 210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_HandleDataBuf_FromApp (pBufHeader,pComponentPrivate); 213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Error From G722ENC_HandleDataBuf_FromApp\n",__LINE__); 215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Exiting ComponentThread \n",__LINE__); 221b65f253fdc60f6208a54911bee793d225f23cdf8James Dong return (void*)eError; 222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_Fill_LCMLInitParams() description for G722ENC_Fill_LCMLInitParams 227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_Fill_LCMLInitParams(). 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This function is used by the component thread to 229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ill the all of its initialization parameters, buffer deatils etc 230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin to LCML structure 231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param plcml_Init pointer to LCML structure to be filled 233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_Fill_LCMLInitParams(OMX_HANDLETYPE pComponent, 242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LCML_DSP *plcml_Init) 243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nIpBuf = 0,nIpBufSize = 0,nOpBuf = 0,nOpBufSize = 0; 246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 i = 0; 247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pTemp = NULL; 248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int size_lcml = 0; 250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LCML_STRMATTR *strmAttr = NULL; 251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 *arr = NULL; 252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_LCML_BUFHEADERTYPE *pTemp_lcml = NULL; 253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_COMPONENT_PRIVATE *pComponentPrivate = pHandle->pComponentPrivate; 254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pParmsTemp = NULL; 255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Entered G722ENC_Fill_LCMLInitParams",__LINE__); 257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nIpBuf = pComponentPrivate->pInputBufferList->numBuffers; 259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nIpBufSize = pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->nBufferSize; 260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nOpBufSize = pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->nBufferSize; 261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("pComponentPrivate->pOutputBufferList->numBuffers = %d\n",pComponentPrivate->pOutputBufferList->numBuffers); 262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nOpBuf = pComponentPrivate->pOutputBufferList->numBuffers; 263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->noInitInputBuf = nIpBuf; 264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->noInitOutputBuf = nOpBuf; 265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->In_BufInfo.nBuffers = nIpBuf; 266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->In_BufInfo.nSize = nIpBufSize; 267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->In_BufInfo.DataTrMethod = DMM_METHOD; 268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->Out_BufInfo.nBuffers = nOpBuf; 269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->Out_BufInfo.nSize = nOpBufSize; 270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->Out_BufInfo.DataTrMethod = DMM_METHOD; 271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->NodeInfo.nNumOfDLLs = 3; 272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[0].uuid = &G722ENCSOCKET_TI_UUID; 274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy ((char*)plcml_Init->NodeInfo.AllUUIDs[0].DllName, G722ENC_DLL_NAME); 275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[0].eDllType = DLL_NODEOBJECT; 276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[1].uuid = &G722ENCSOCKET_TI_UUID; 278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy ((char*)plcml_Init->NodeInfo.AllUUIDs[1].DllName, G722ENC_DLL_NAME); 279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[1].eDllType = DLL_DEPENDENT; 280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[2].uuid = &ENCODE_COMMON_TI_UUID; 282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy ((char*)plcml_Init->NodeInfo.AllUUIDs[2].DllName,USN_DLL_NAME); 283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->NodeInfo.AllUUIDs[2].eDllType = DLL_DEPENDENT; 284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->SegID = OMX_G722ENC_DEFAULT_SEGMENT; 286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->Timeout = OMX_G722ENC_SN_TIMEOUT; 287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->Alignment = 0; 288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->Priority = OMX_G722ENC_SN_PRIORITY; 289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->DeviceInfo.TypeofDevice = 0; 290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->ProfileID = -1; 291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->dasfmode == 1) { 293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: G722 ENCODER IS RUNNING UNDER DASF MODE \n",__LINE__); 294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pParmsTemp = (OMX_U8*)malloc(sizeof(G722ENC_AudioCodecParams) + 256); 297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[ALLOC] %p\n",__LINE__,pComponentPrivate->pParams); 299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(NULL == pParmsTemp) { 300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Malloc Failed\n",__LINE__); 301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset (pParmsTemp, 0, sizeof (G722ENC_AudioCodecParams) + 256); 305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pParams = (G722ENC_AudioCodecParams*)(pParmsTemp + 128); 306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*strmAttr = malloc(sizeof(LCML_STRMATTR)); 307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[ALLOC] %p\n",__LINE__,strmAttr);*/ 308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G722MALLOC_STRUCT (strmAttr, LCML_STRMATTR); 309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (strmAttr == NULL) { 311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("strmAttr - failed to malloc\n"); 312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->strmAttr = strmAttr; 316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[ALLOC] %p\n",__LINE__,strmAttr); 317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr->uSegid = 0; 318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr->uAlignment = 0; 319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr->uTimeout = OMX_G722ENC_SN_TIMEOUT; 320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr->uBufsize = G722ENC_OUTPUT_BUFFER_SIZE_BYTES; 321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr->uNumBufs = G722ENC_NUM_INPUT_BUFFERS + G722ENC_NUM_OUTPUT_BUFFERS; 322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr->lMode = STRMMODE_PROCCOPY; 323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->DeviceInfo.TypeofDevice = 1; 324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->DeviceInfo.TypeofRender = 1; /* set for record */ 325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* add to support Tee Device Node */ 326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->teemode == 1) { 327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->DeviceInfo.AllUUIDs[0].uuid = &TEEDN_TI_UUID; 328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->DeviceInfo.AllUUIDs[0].uuid = &DCTN_TI_UUID; 331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->DeviceInfo.DspStream = strmAttr; 333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr = malloc (10 * sizeof(OMX_U16)); 337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[ALLOC] %p\n",__LINE__,arr); 338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (arr == NULL) { 340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Free previously allocated memory before bailing */ 341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (strmAttr) { 342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,strmAttr); 343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(strmAttr); 344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr = NULL; 345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset (arr, 0, 10 * sizeof (OMX_U16)); 350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pCreatePhaseArgs = arr; 351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->dasfmode == 1){ 352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: G722 ENCODER CREATE PHASE UNDER DASF MODE \n",__LINE__); 353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[0] = G722ENC_NUM_STREAMS; 354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[1] = G722ENC_INPUT_PORT; /*Stream ID*/ 355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[2] = G722ENCSTREAMINPUT; /*DMM based input stream DMM - 0 INPUT - 1 */ 356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[3] = G722ENC_NUM_INPUT_DASF_BUFFERS; /*Number of buffers on input stream*/ 357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[4] = G722ENC_OUTPUT_PORT; /*Stream ID*/ 358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[5] = G722ENCSTREAMDMM; /*DMM based output stream DMM - 0 OUTPUT - 2*/ 359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[6] = (OMX_U16)pComponentPrivate->pOutputBufferList->numBuffers; /*Number of buffers on output stream*/ 360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: G722 ENCODER CREATE PHASE UNDER FILE MODE \n",__LINE__); 363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[0] = G722ENC_NUM_STREAMS; 364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[1] = G722ENC_INPUT_PORT; /*Stream ID*/ 365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[2] = G722ENCSTREAMDMM; /*DMM based input stream DMM - 0 INPUT - 1*/ 366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers) { 368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[3] = (OMX_U16)pComponentPrivate->pInputBufferList->numBuffers; /*Number of buffers on input stream*/ 369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[3] = 1; 372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[4] = G722ENC_OUTPUT_PORT; /*Stream ID*/ 374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[5] = G722ENCSTREAMDMM; /*DMM based output stream DMM - 0 OUTPUT - 2*/ 375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList->numBuffers) { 377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[6] = (OMX_U16)pComponentPrivate->pOutputBufferList->numBuffers; /*Number of buffers on output stream*/ 378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[6] = 1; 381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[7] = (OMX_U16)pComponentPrivate->g722Params->nSampleRate; /* Rate selection */ 384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[8] = G722ENC_INPUT_BUFFER_SIZE; 385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[9] = END_OF_CR_PHASE_ARGS; 386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin plcml_Init->pCrPhArgs = arr; 387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Allocate memory for all input buffer headers.. 388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This memory pointer will be sent to LCML */ 389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin size_lcml = nIpBuf * sizeof(G722ENC_LCML_BUFHEADERTYPE); 391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml = (G722ENC_LCML_BUFHEADERTYPE *)malloc(size_lcml); 392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[ALLOC] %p\n",__LINE__,pTemp_lcml); 393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pTemp_lcml == NULL) { 394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Free previously allocated memory before bailing */ 395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (strmAttr) { 396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,strmAttr); 397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(strmAttr); 398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr = NULL; 399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (arr) { 402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,arr); 403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(arr); 404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr = NULL; 405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset (pTemp_lcml, 0, size_lcml); 410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pLcmlBufHeader[G722ENC_INPUT_PORT] = pTemp_lcml; 411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i<nIpBuf; i++) { 413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: --------- Inside Ip Loop\n",__LINE__); 414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp = pComponentPrivate->pInputBufferList->pBufHdr[i]; 415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE); 416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nAllocLen = nIpBufSize; 417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nFilledLen = nIpBufSize; 418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nVersion.s.nVersionMajor = G722ENC_MAJOR_VER; 419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nVersion.s.nVersionMinor = G722ENC_MINOR_VER; 420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->pPlatformPrivate = pHandle->pComponentPrivate; 421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nTickCount = NOT_USED; 422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pBufHdr = pTemp; 423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->eDir = OMX_DirInput; 424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pOtherParams[i] = NULL; 425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*pTemp_lcml->pIpParam = (G722ENC_UAlgInBufParamStruct *)malloc(sizeof(G722ENC_UAlgInBufParamStruct)); 426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[ALLOC] %p\n",__LINE__,pTemp_lcml->pIpParam);*/ 428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G722MALLOC_STRUCT (pTemp_lcml->pIpParam, G722ENC_UAlgInBufParamStruct); 429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pTemp_lcml->pIpParam == NULL) { 430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Free previously allocated memory before bailing */ 431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (strmAttr) { 432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,strmAttr); 433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(strmAttr); 434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr = NULL; 435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (arr) { 438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,arr); 439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(arr); 440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr = NULL; 441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pTemp_lcml) { 444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pTemp_lcml); 445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pTemp_lcml); 446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml = NULL; 447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Malloc Failed...Exiting..\n",__LINE__); 450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pIpParam->bLastBuffer = 0; 453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nFlags = NORMAL_BUFFER; 455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((G722ENC_COMPONENT_PRIVATE *) pTemp->pPlatformPrivate)->pHandle = pHandle; 456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: InBuffHeader[%d] = %p\n", __LINE__, i, pTemp); 457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: >>>> InputBuffHeader[%d]->pBuffer = %p\n", 458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__, i, pTemp->pBuffer); 459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: Ip : pTemp_lcml[%d] = %p\n", __LINE__, i, pTemp_lcml); 460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml++; 462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp = pComponentPrivate->pBufHeader[G722ENC_OUTPUT_PORT]; 465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin size_lcml = nOpBuf * sizeof(G722ENC_LCML_BUFHEADERTYPE); 466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml = (G722ENC_LCML_BUFHEADERTYPE *)malloc(size_lcml); 467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[ALLOC] %p\n",__LINE__,pTemp_lcml); 468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pTemp_lcml == NULL) { 469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Memory Allocation Failed\n",__LINE__); 470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Free previously allocated memory before bailing */ 471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (strmAttr) { 472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,strmAttr); 473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(strmAttr); 474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr = NULL; 475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (arr) { 478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,arr); 479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(arr); 480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr = NULL; 481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset (pTemp_lcml, 0, size_lcml); 487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pLcmlBufHeader[G722ENC_OUTPUT_PORT] = pTemp_lcml; 488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("nOpBuf = %d\n",nOpBuf); 491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i<nOpBuf; i++) { 493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp = pComponentPrivate->pOutputBufferList->pBufHdr[i]; 494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE); 495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nAllocLen = nOpBufSize; 496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nFilledLen = nOpBufSize; 497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nVersion.s.nVersionMajor = G722ENC_MAJOR_VER; 498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nVersion.s.nVersionMinor = G722ENC_MINOR_VER; 499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nVersion = pTemp->nVersion.nVersion; 500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->pPlatformPrivate = pHandle->pComponentPrivate; 501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nTickCount = NOT_USED; 502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pBufHdr = pTemp; 503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->eDir = OMX_DirOutput; 504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pOtherParams[i] = NULL; 505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nFlags = NORMAL_BUFFER; 507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((G722ENC_COMPONENT_PRIVATE *)pTemp->pPlatformPrivate)->pHandle = pHandle; 508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: >>>>>>>>>>>>> OutBuffHeader[%d] = %p\n", 509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__, i, pTemp); 510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: >>>> OutBuffHeader[%d]->pBuffer = %p\n", 511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__, i, pTemp->pBuffer); 512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: Op : pTemp_lcml[%d] = %p\n", __LINE__, i, pTemp_lcml); 513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp++; 514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml++; 515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPortDefsAllocated = 1; 517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Exiting G722ENC_Fill_LCMLInitParams",__LINE__); 519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bInitParamsInitialized = 1; 521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722Enc_StartCompThread() description for G722Enc_StartCompThread 528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722Enc_StartCompThread(). 529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This function is called by the component to create 530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin the component thread, command pipe, data pipe and LCML Pipe 531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722Enc_StartCompThread(OMX_HANDLETYPE pComponent) 541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_COMPONENT_PRIVATE *pComponentPrivate = 545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (G722ENC_COMPONENT_PRIVATE *)pHandle->pComponentPrivate; 546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_attr_t attr; 548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset(&attr, 0, sizeof(attr)); 549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin attr.__inheritsched = PTHREAD_EXPLICIT_SCHED; 550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin attr.__schedparam.__sched_priority = OMX_AUDIO_ENCODER_THREAD_PRIORITY; 551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Enetering G722Enc_StartCompThread\n", __LINE__); 554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* initialize values */ 555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsStopping = 0; 556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nOpBuf = 0; 557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nIpBuf = 0; 558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->app_nBuf = 0; 559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsEOFSent = 0; 560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* create the pipe used to send buffers to the thread */ 561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pipe (pComponentPrivate->dataPipe); 562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722Enc_StartCompThread() - error = %d\n", __LINE__,eError); 563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError) { 564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* create the pipe used to send commands to the thread */ 569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pipe (pComponentPrivate->cmdPipe); 570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722Enc_StartCompThread() - error = %d\n", __LINE__,eError); 571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError) { 572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pipe (pComponentPrivate->cmdDataPipe); 577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722Dec_StartCompThread() - error = %d\n", __LINE__,eError); 578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError) { 579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* create the pipe used to send commands to the thread */ 584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pipe (pComponentPrivate->lcml_Pipe); 585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722Enc_StartCompThread() - error = %d\n", __LINE__,eError); 586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError) { 587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin gLcmlPipeWr = pComponentPrivate->lcml_Pipe[1]; 591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Create the Component Thread */ 593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pthread_create (&(pComponentPrivate->ComponentThread), &attr, 595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ComponentThread, pComponentPrivate); 596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pthread_create (&(pComponentPrivate->ComponentThread), NULL, 598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ComponentThread, pComponentPrivate); 599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722Enc_StartCompThread() - error = %d\n", __LINE__,eError); 601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError || !pComponentPrivate->ComponentThread) { 602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722Enc_StartCompThread() - error = %d\n", __LINE__,eError); 606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC = pComponentPrivate; 608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bCompThreadStarted = 1; 609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722Enc_StartCompThread() - error = %d\n", __LINE__,eError); 610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722Enc_StartCompThread() - error = %d\n", __LINE__,eError); 613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */ 618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722Enc_FreeCompResources() This function is called by the component during 620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * de-init to close component thread, Command pipe, data pipe & LCML pipe. 621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return none 629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */ 631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722Enc_FreeCompResources(OMX_HANDLETYPE pComponent) 632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_COMPONENT_PRIVATE *pComponentPrivate = (G722ENC_COMPONENT_PRIVATE *) 635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate; 636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE err = OMX_ErrorNone; 639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722Enc_FreeCompResources()\n", __LINE__); 641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pCreatePhaseArgs != NULL) { 642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->pCreatePhaseArgs); 643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* free(pComponentPrivate->pCreatePhaseArgs);*/ 644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pCreatePhaseArgs = NULL; 645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bCompThreadStarted) { 648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin err = close (pComponentPrivate->dataPipe[0]); 649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != err && OMX_ErrorNone == eError) { 650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Error while closing dataPipe\n",__LINE__); 652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin err = close (pComponentPrivate->dataPipe[1]); 654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != err && OMX_ErrorNone == eError) { 655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Error while closing dataPipe\n",__LINE__); 657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin err = close (pComponentPrivate->cmdDataPipe[0]); 660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != err && OMX_ErrorNone == eError) { 661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin err = close (pComponentPrivate->cmdDataPipe[1]); 665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != err && OMX_ErrorNone == eError) { 666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin err = close (pComponentPrivate->cmdPipe[0]); 670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != err && OMX_ErrorNone == eError) { 671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Error while closing cmdPipe\n",__LINE__); 673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin err = close (pComponentPrivate->cmdPipe[1]); 676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != err && OMX_ErrorNone == eError) { 677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Error while closing cmdPipe\n",__LINE__); 679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin err = close (pComponentPrivate->lcml_Pipe[0]); 682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != err && OMX_ErrorNone == eError) { 683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Error while closing lcml_Pipe\n",__LINE__); 685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin err = close (pComponentPrivate->lcml_Pipe[1]); 688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != err && OMX_ErrorNone == eError) { 689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Error while closing lcml_Pipe\n",__LINE__); 691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bPortDefsAllocated != 0 /*NULL*/) { 695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pPortDef[G722ENC_INPUT_PORT] != NULL) { 696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]); 697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]); 698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G722ENC_INPUT_PORT] = NULL; 699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]) { 702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]); 703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free (pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]); 704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT] = NULL; 705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pcmParams) { 708b65f253fdc60f6208a54911bee793d225f23cdf8James Dong G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->pcmParams); 709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pComponentPrivate->pcmParams); 710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pcmParams = NULL; 711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->g722Params) { 714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->g722Params); 715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free (pComponentPrivate->g722Params); 716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->g722Params = NULL; 717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufferList) { 720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->pOutputBufferList); 721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free (pComponentPrivate->pOutputBufferList); 722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList = NULL; 723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList) { 726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->pInputBufferList); 727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free (pComponentPrivate->pInputBufferList); 728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList = NULL; 729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->sDeviceString) { 732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->sDeviceString); 733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free (pComponentPrivate->sDeviceString); 734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sDeviceString = NULL; 735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutPortFormat) { 738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->pOutPortFormat); 739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free (pComponentPrivate->pOutPortFormat); 740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutPortFormat = NULL; 741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInPortFormat) { 744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->pInPortFormat); 745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free (pComponentPrivate->pInPortFormat); 746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInPortFormat = NULL; 747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->sPriorityMgmt) { 750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->sPriorityMgmt); 751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free (pComponentPrivate->sPriorityMgmt); 752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->sPriorityMgmt = NULL; 753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPortDefsAllocated = 0; 756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->InLoaded_mutex); 759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->InLoaded_threshold); 760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->InIdle_mutex); 762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->InIdle_threshold); 763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_destroy(&pComponentPrivate->AlloBuf_mutex); 765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_destroy(&pComponentPrivate->AlloBuf_threshold); 766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DestroyEvent(&(pComponentPrivate->InLoaded_event)); 768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DestroyEvent(&(pComponentPrivate->InIdle_event)); 769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DestroyEvent(&(pComponentPrivate->AlloBuf_event)); 770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*eError = G722ENC_FreeLCMLHandle();*/ 773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("Exiting Successfully G722ENC_FreeCompResources()\n"); 774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_CleanupInitParams() description for G722ENC_CleanupInitParams 780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_CleanupInitParams(). 781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This function is called by the component to cleanup initialization parameters 782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin upon component exit. 783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_CleanupInitParams(OMX_HANDLETYPE pComponent) 793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pParmsTemp = NULL; 795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_COMPONENT_PRIVATE *pComponentPrivate = (G722ENC_COMPONENT_PRIVATE *) 797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate; 798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722ENC_CleanupInitParams()\n", __LINE__); 801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: pComponentPrivate = %p\n", __LINE__,pComponentPrivate); 802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: pComponentPrivate->strmAttr = %p\n", __LINE__,pComponentPrivate->strmAttr); 803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ((pComponentPrivate->dasfmode == 1) && (pComponentPrivate->pParams)) { 805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pParmsTemp = (OMX_U8*)pComponentPrivate->pParams; 806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pParmsTemp != NULL){ 807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pParmsTemp -= 128; 808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pParams = (G722ENC_AudioCodecParams *)pParmsTemp; 810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT(":: Freeing: pComponentPrivate->pParams = %p\n",pComponentPrivate->pParams); 811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*free(pComponentPrivate->pParams); 812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pParams = NULL;*/ 813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_G722MEMFREE_STRUCT(pComponentPrivate->pParams); 814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->strmAttr) { 818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722ENC_CleanupInitParams()\n", __LINE__); 819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->strmAttr); 820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pComponentPrivate->strmAttr); 821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722ENC_CleanupInitParams()\n", __LINE__); 822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->strmAttr = NULL; 823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722ENC_CleanupInitParams()\n", __LINE__); 825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("Exiting Successfully G722ENC_CleanupInitParams()\n"); 826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */ 831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @G722ENC_StopComponentThread() This function is called by the component during 833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * de-init to close component thread. 834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return none 842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */ 844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_StopComponentThread(OMX_HANDLETYPE pComponent) 846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE threadError = OMX_ErrorNone; 849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int pthreadError = 0; 850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_COMPONENT_PRIVATE *pComponentPrivate = (G722ENC_COMPONENT_PRIVATE *) 852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pComponentPrivate; 853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsStopping = 1; 855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthreadError = pthread_join (pComponentPrivate->ComponentThread, 856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (void*)&threadError); 857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bCompThreadStarted = 0; 860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != pthreadError) 861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("OMX_ErrorHardware.\n"); 864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (OMX_ErrorNone != threadError && OMX_ErrorNone != eError) 867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("OMX_ErrorInsufficientResources.\n"); 870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("Exiting StopComponentThread - Returning = 0x%x\n", eError); 874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */ 878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @G722ENC_HandleCommand() This function is called by the component when ever it 880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * receives the command from the application 881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponentPrivate Component private data 883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return none 889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */ 891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 G722ENC_HandleCommand (G722ENC_COMPONENT_PRIVATE *pComponentPrivate) 893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 i = 0; 895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = 897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_COMPONENTTYPE *) pComponentPrivate->pHandle; 898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMMANDTYPE command; 899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE commandedState = OMX_StateInvalid; 900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 commandData = 0; 901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LCML_DSP_INTERFACE *pLcmlHandle = (LCML_DSP_INTERFACE *) 902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pLcmlHandle; 903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: >>> Entering G722ENC_HandleCommand Function3\n",__LINE__); 905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read (pComponentPrivate->cmdPipe[0], &command, sizeof (command)); 908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read (pComponentPrivate->cmdDataPipe[0], &commandData, sizeof (commandData)); 909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (command == OMX_CommandStateSet) { 911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin commandedState = (OMX_STATETYPE)commandData; 912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(commandedState) { 913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_StateIdle: 914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_CommandToIdle(pComponentPrivate); 915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_StateExecuting: 918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_CommandToExecuting(pComponentPrivate); 919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_StateLoaded: 922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_CommandToLoaded(pComponentPrivate); 923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_StatePause: 926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_CommandToPause(pComponentPrivate); 927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_StateWaitForResources: 931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_CommandToWaitForResources(pComponentPrivate); 932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_StateInvalid: 935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENC_HandleCommand: Cmd OMX_StateInvalid:\n",__LINE__); 936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == commandedState){ 937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorSameState,0, 940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Same State Given by \ 942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Application\n",__LINE__); 943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateInvalid; 947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorInvalidState,0, NULL); 950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_StateMax: 954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENC_HandleCommand: Cmd OMX_StateMax::\n",__LINE__); 955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } /* End of Switch */ 957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (command == OMX_CommandMarkBuffer) { 959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("command OMX_CommandMarkBuffer received %d\n",__LINE__); 960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!pComponentPrivate->pMarkBuf){ 961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("command OMX_CommandMarkBuffer received %d\n",__LINE__); 962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* TODO Need to handle multiple marks */ 963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pMarkBuf = (OMX_MARKTYPE *)(commandData); 964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (command == OMX_CommandPortDisable) { 967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!pComponentPrivate->bDisableCommandPending) { 968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("I'm here Line %d\n",__LINE__); 969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(commandData == 0x0 || commandData == -1){ 970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* disable port */ 971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->bEnabled = OMX_FALSE; 972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(commandData == 0x1 || commandData == -1){ 974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char *pArgs = "damedesuStr"; 976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->bEnabled = OMX_FALSE; 979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateExecuting) { 981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bNoIdleOnStop = OMX_TRUE; 982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_ControlCodec( 983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MMCodecControlStop,(void *)pArgs); 985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(commandData == 0x0) { 992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->bPopulated){ 993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* return cmdcomplete event if input unpopulated */ 994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandPortDisable,G722ENC_INPUT_PORT, NULL); 997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 0; 998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 1; 1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandParam = commandData; 1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(commandData == 0x1) { 1006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->bPopulated){ 1007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* return cmdcomplete event if output unpopulated */ 1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandPortDisable,G722ENC_OUTPUT_PORT, NULL); 1011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 0; 1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 1; 1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandParam = commandData; 1016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(commandData == -1) { 1020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->bPopulated && 1021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin !pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->bPopulated){ 1022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* return cmdcomplete event if inout & output unpopulated */ 1024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandPortDisable,G722ENC_INPUT_PORT, NULL); 1027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandPortDisable,G722ENC_OUTPUT_PORT, NULL); 1031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 0; 1032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandPending = 1; 1035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDisableCommandParam = commandData; 1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (command == OMX_CommandPortEnable) { 1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(commandData == 0x0 || commandData == -1){ 1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* enable in port */ 1044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("setting input port to enabled\n"); 1045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->bEnabled = OMX_TRUE; 1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("WAKE UP!! HandleCommand: En utils setting output port to enabled. \n"); 1047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->AlloBuf_waitingsignal) 1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 0; 1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->AlloBuf_mutex); 1052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->AlloBuf_threshold); 1053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Sending signal to Allocate Buffer Task. */ 1054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->AlloBuf_mutex); 1055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->AlloBuf_event)); 1057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->bEnabled = %d\n",pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->bEnabled); 1060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(commandData == 0x1 || commandData == -1){ 1062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* enable out port */ 1063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->AlloBuf_waitingsignal) 1064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->AlloBuf_waitingsignal = 0; 1066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->AlloBuf_mutex); 1068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&pComponentPrivate->AlloBuf_threshold); 1069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Sending signal to Allocate Buffer Task. */ 1070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->AlloBuf_mutex); 1071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SignalEvent(&(pComponentPrivate->AlloBuf_event)); 1073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateExecuting) { 1077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char *pArgs = "damedesuStr"; 1078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bDspStoppedWhileExecuting = OMX_FALSE; 1079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_ControlCodec( 1080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EMMCodecControlStart,(void *)pArgs); 1082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("setting output port to enabled\n"); 1084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->bEnabled = OMX_TRUE; 1085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->bEnabled = %d\n",pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->bEnabled); 1086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while (1) { 1089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("commandData = %d\n",commandData); 1090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("pComponentPrivate->curState = %d\n",pComponentPrivate->curState); 1091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->bPopulated = %d\n",pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->bPopulated); 1092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(commandData == 0x0 && (pComponentPrivate->curState == OMX_StateLoaded || pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->bPopulated)){ 1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandPortEnable,G722ENC_INPUT_PORT, NULL); 1097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(commandData == 0x1 && (pComponentPrivate->curState == OMX_StateLoaded || pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->bPopulated)){ 1100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandPortEnable,G722ENC_OUTPUT_PORT, NULL); 1104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(commandData == -1 && (pComponentPrivate->curState == OMX_StateLoaded || (pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->bPopulated 1107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin && pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->bPopulated))){ 1108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandPortEnable,G722ENC_INPUT_PORT, NULL); 1112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandPortEnable,G722ENC_OUTPUT_PORT, NULL); 1116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_Fill_LCMLInitParamsEx(pHandle); 1118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (command == OMX_CommandFlush) { 1123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(commandData == 0x0 || commandData == -1){ 1124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < G722ENC_MAX_NUM_OF_BUFS; i++) { 1125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i] = NULL; 1126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nNumInputBufPending=0; 1128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) { 1130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EmptyBufferDone ( 1131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle, 1132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[i] 1134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 1135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* return all input buffers */ 1139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandFlush,G722ENC_INPUT_PORT, NULL); 1142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(commandData == 0x1 || commandData == -1){ 1144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < G722ENC_MAX_NUM_OF_BUFS; i++) { 1145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[i] = NULL; 1146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nNumOutputBufPending=0; 1148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* return all output buffers */ 1150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) { 1151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[FillBufferDone] Call #%d Line %d\n",++FillBufferDoneCount,__LINE__); 1152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.FillBufferDone ( 1153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle, 1154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[i] 1156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 1157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandFlush,G722ENC_OUTPUT_PORT, NULL); 1163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Exiting NBAMRDECG722ENC_HandleCommand Function\n",__LINE__); 1166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Returning %x\n",__LINE__,eError); 1167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */ 1172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @G722ENC_HandleDataBuf_FromApp() This function is called by the component when ever it 1174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * receives the buffer from the application 1175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponentPrivate Component private data 1177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pBufHeader Buffer from the application 1178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 1180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 1182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 1184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 1185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */ 1186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_HandleDataBuf_FromApp(OMX_BUFFERHEADERTYPE* pBufHeader, 1188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_COMPONENT_PRIVATE *pComponentPrivate) 1189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DIRTYPE eDir; 1192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LCML_DSP_INTERFACE *pLcmlHandle = NULL; 1193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_LCML_BUFHEADERTYPE *pLcmlHdr = NULL; 1194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Entering G722ENC_HandleDataBuf_FromApp Function\n",__LINE__); 1197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_GetBufferDirection(pBufHeader, &eDir, pComponentPrivate); 1198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: The pBufHeader is not found in the list\n",__LINE__); 1200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eDir == OMX_DirInput) { 1204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->dasfmode == 0) { 1205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ((pBufHeader->nFilledLen > 0) || (pBufHeader->nFlags == OMX_BUFFERFLAG_EOS)) { 1206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bBypassDSP = 0; 1207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHandle = (LCML_DSP_INTERFACE *) pComponentPrivate->pLcmlHandle; 1208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d Comp:: Sending Filled Input buffer = %p, %p to LCML\n", __LINE__,pBufHeader,pBufHeader->pBuffer); 1209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_GetCorresponding_LCMLHeader(pBufHeader->pBuffer, OMX_DirInput, &pLcmlHdr); 1210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Invalid Buffer Came ...\n",__LINE__); 1212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Store time stamp information */ 1216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->arrTimestamp[pComponentPrivate->IpBufindex] = pBufHeader->nTimeStamp; 1217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Store nTickCount information */ 1218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->arrTickCount[pComponentPrivate->IpBufindex] = pBufHeader->nTickCount; 1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->IpBufindex++; 1220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->IpBufindex %= pComponentPrivate->pPortDef[OMX_DirOutput]->nBufferCountActual; 1221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pBufHeader->nFlags == OMX_BUFFERFLAG_EOS) { 1224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHdr->pIpParam->bLastBuffer = 1; 1225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 1227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHdr->pIpParam->bLastBuffer = 0; 1228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateExecuting) { 1231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!pComponentPrivate->bDspStoppedWhileExecuting) { 1232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!G722ENC_IsPending(pComponentPrivate,pBufHeader,OMX_DirInput)) { 1233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_SetPending(pComponentPrivate,pBufHeader,OMX_DirInput); 1234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_QueueBuffer( pLcmlHandle->pCodecinterfacehandle, 1235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EMMCodecInputBuffer, 1236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader->pBuffer, 1237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader->nAllocLen, 1238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader->nFilledLen, 1239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_U8 *) pLcmlHdr->pIpParam, 1240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(G722ENC_UAlgInBufParamStruct), 1241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader->pBuffer); 1242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d ::Comp: SetBuff: IP: Error Occurred\n",__LINE__); 1245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EmptyBufferDone ( 1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle, 1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader 1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nIpBuf++; 1258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("Sending Input buffer to Codec\n"); 1259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("Queueing pending input buffers\n"); 1262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[pComponentPrivate->nNumInputBufPending++] = pBufHeader; 1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bBypassDSP = 1; 1267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[FillBufferDone] Call #%d Line %d\n",++FillBufferDoneCount,__LINE__); 1268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.FillBufferDone ( 1269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle, 1270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0] 1272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 1273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("Forcing EmptyBufferDone\n"); 1277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EmptyBufferDone ( 1278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle, 1279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->pBufHdr[0] 1281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 1282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pBufHeader->nFlags == OMX_BUFFERFLAG_EOS) { 1285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Comp: EOF Flag Has Been Set Here\n",__LINE__); 1286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->dasfmode == 0) { 1287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0]->nFlags |= OMX_BUFFERFLAG_EOS; 1288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pComponentPrivate->pHandle, 1289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventBufferFlag, 1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0]->nOutputPortIndex, 1292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0]->nFlags, NULL); 1293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[FillBufferDone] Call #%d Line %d\n",++FillBufferDoneCount,__LINE__); 1294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* pBufHeader->nFlags = 0; */ 1296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pBufHeader->pMarkData){ 1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* copy mark to output buffer header */ 1299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0]->pMarkData = pBufHeader->pMarkData; 1300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->pBufHdr[0]->hMarkTargetComponent = pBufHeader->hMarkTargetComponent; 1301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* trigger event handler if we are supposed to */ 1303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pBufHeader->hMarkTargetComponent == pComponentPrivate->pHandle && pBufHeader->pMarkData){ 1304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pComponentPrivate->pHandle, 1305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pHandle->pApplicationPrivate, 1306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventMark, 1307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 1308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 1309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader->pMarkData); 1310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (eDir == OMX_DirOutput) { 1315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d Comp:: Sending Emptied Output buffer=%p to LCML\n", 1316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__,pBufHeader); 1317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d : pComponentPrivate->lcml_nOpBuf = %ld\n",__LINE__, 1318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nOpBuf); 1319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d : pComponentPrivate->lcml_nIpBuf = %ld\n",__LINE__, 1320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nIpBuf); 1321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHandle = (LCML_DSP_INTERFACE *) pComponentPrivate->pLcmlHandle; 1322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_GetCorresponding_LCMLHeader(pBufHeader->pBuffer, OMX_DirOutput, &pLcmlHdr); 1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Invalid Buffer Came ...\n",__LINE__); 1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!(pComponentPrivate->bIsStopping)) { 1331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bBypassDSP == 0) { 1332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateExecuting) { 1333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!G722ENC_IsPending(pComponentPrivate,pBufHeader,OMX_DirOutput)) { 1334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_SetPending(pComponentPrivate,pBufHeader,OMX_DirOutput); 1335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_QueueBuffer( 1336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHandle->pCodecinterfacehandle, 1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EMMCodecOuputBuffer, 1338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader->pBuffer, 1339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader->nAllocLen, 1340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL, 1342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 1343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader->pBuffer); 1344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone ) { 1347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Comp:: SetBuff OP: Error Occurred\n",__LINE__); 1348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nOpBuf++; 1352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[pComponentPrivate->nNumOutputBufPending++] = pBufHeader; 1356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateExecuting) { 1361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!G722ENC_IsPending(pComponentPrivate,pBufHeader,OMX_DirOutput)) { 1362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_SetPending(pComponentPrivate,pBufHeader,OMX_DirOutput); 1363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_QueueBuffer( 1364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHandle->pCodecinterfacehandle, 1365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EMMCodecOuputBuffer, 1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader->pBuffer, 1367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader->nAllocLen, 1368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 1369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL, 1370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 1371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHeader->pBuffer); 1372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone ) { 1375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Comp:: SetBuff: OP: Error Occurred\n",__LINE__); 1376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nOpBuf++; 1381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("Queueing output buffer\n"); 1385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[pComponentPrivate->nNumOutputBufPending++] = pBufHeader; 1386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d : BufferHeader %p, Buffer %p Unknown ..........\n", 1391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__,pBufHeader, pBufHeader->pBuffer); 1392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d : Exiting from G722ENC_HandleDataBuf_FromApp \n",__LINE__); 1396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722ENC_GetBufferDirection () This function is used by the component thread to 1402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * request a buffer from the application. Since it was called from 2 places, 1403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * it made sense to turn this into a small function. 1404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pData pointer to G722 Encoder Context Structure 1406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pCur pointer to the buffer to be requested to be filled 1407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval none 1409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_GetBufferDirection(OMX_BUFFERHEADERTYPE *pBufHeader, 1413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DIRTYPE *eDir, 1414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_COMPONENT_PRIVATE *pComponentPrivate) 1415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBuf = NULL; 1418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 flag = 1,i = 0; 1419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nBuf = 0; 1420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nBuf = pComponentPrivate->pInputBufferList->numBuffers; 1423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i<nBuf; i++) { 1424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuf = pComponentPrivate->pInputBufferList->pBufHdr[i]; 1425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pBufHeader == pBuf) { 1426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *eDir = OMX_DirInput; 1427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Buffer %p is INPUT BUFFER\n",__LINE__, pBufHeader); 1428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin flag = 0; 1429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Search this buffer in input buffers list */ 1433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nBuf = pComponentPrivate->pOutputBufferList->numBuffers; 1434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i<nBuf; i++) { 1435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuf = pComponentPrivate->pOutputBufferList->pBufHdr[i]; 1436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pBufHeader == pBuf) { 1437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *eDir = OMX_DirOutput; 1438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Buffer %p is OUTPUT BUFFER\n",__LINE__, pBufHeader); 1439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin flag = 0; 1440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (flag == 1) { 1444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Buffer %p is Not Found in the List\n",__LINE__,pBufHeader); 1445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 1446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Exiting G722ENC_GetBufferDirection Function\n",__LINE__); 1450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* -------------------------------------------------------------------*/ 1454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Callback() function will be called LCML component to write the msg 1456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param msgBuffer This buffer will be returned by the LCML 1458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------------------------------------------------------------------*/ 1463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_LCML_Callback (TUsnCodecEvent event,void * args [10]) 1465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 *pBuffer = args[1]; 1468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_LCML_BUFHEADERTYPE *pLcmlHdr = NULL; 1469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = pComponentPrivate_CC->pHandle; 1470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LCML_DSP_INTERFACE *pLcmlHandle = NULL; 1472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(event) { 1474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecDspError: 1476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecDspError\n"); 1477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecInternalError: 1480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecInternalError\n"); 1481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecInitError: 1484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecInitError\n"); 1485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecDspMessageRecieved: 1488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecDspMessageRecieved\n"); 1489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecBufferProcessed: 1492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecBufferProcessed\n"); 1493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecProcessingStarted: 1496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecProcessingStarted\n"); 1497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecProcessingPaused: 1500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecProcessingPaused\n"); 1501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecProcessingStoped: 1504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecProcessingStoped\n"); 1505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecProcessingEof: 1508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecProcessingEof\n"); 1509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecBufferNotProcessed: 1512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecBufferNotProcessed\n"); 1513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecAlgCtrlAck: 1516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecAlgCtrlAck\n"); 1517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case EMMCodecStrmCtrlAck: 1520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] EMMCodecStrmCtrlAck\n"); 1521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 1524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[LCML CALLBACK EVENT] Got event = %d\n",event); 1525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT(" %d EMMCodecInputBuffer = %p \n",__LINE__,(void *)EMMCodecInputBuffer); 1530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT(" %d EMMCodecOuputBuffer = %p \n",__LINE__,(void *)EMMCodecOuputBuffer); 1531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Entering the G722ENC_LCML_Callback() : event = %d\n",__LINE__,event); 1532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(event == EMMCodecBufferProcessed) { 1533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( args[0] == (void *)EMMCodecInputBuffer) { 1534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT (" :: Inside the G722ENC_LCML_Callback EMMCodecInputBuffer\n"); 1535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Input: pBufferr = %p\n",__LINE__, pBuffer); 1536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_GetCorresponding_LCMLHeader(pBuffer, OMX_DirInput, &pLcmlHdr); 1537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_ClearPending(pComponentPrivate_CC,pLcmlHdr->pBufHdr,OMX_DirInput); 1538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Invalid Buffer Came ...\n",__LINE__); 1541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Input: pLcmlHeader = %p\n",__LINE__, pLcmlHdr); 1544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* >>>>>>>>>>>>>>>>>>>>>>>>>>> */ 1545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate_CC->dasfmode == 0) { 1546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->lcml_nIpBuf--; 1547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: Component Sending Empty Input buffer%p to App\n",__LINE__, pLcmlHdr->pBufHdr->pBuffer); 1548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EmptyBufferDone ( 1549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, 1550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 1551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHdr->pBufHdr 1552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 1553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->app_nBuf++; 1554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* <<<<<<<<<<<<<<<<<<<<<<<<<<< */ 1557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (args[0] == (void *)EMMCodecOuputBuffer) { 1559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!G722ENC_IsValid(pComponentPrivate_CC,pBuffer,OMX_DirOutput)) { 1560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* If the buffer we get back from the DSP is not valid call FillBufferDone 1561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin on a valid buffer */ 1562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->cbInfo.FillBufferDone ( 1563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->pHandle, 1564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->pHandle->pApplicationPrivate, 1565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->pOutputBufferList->pBufHdr[pComponentPrivate_CC->nInvalidFrameCount++] 1566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 1567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->nOutStandingFillDones++; 1571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("Incrementing pComponentPrivate->nOutStandingFillDones Line %d\n",__LINE__); 1572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d::pComponentPrivate_CC->nOutStandingFillDones = %d\n",__LINE__,pComponentPrivate_CC->nOutStandingFillDones); 1573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_GetCorresponding_LCMLHeader(pBuffer, OMX_DirOutput, &pLcmlHdr); 1574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_ClearPending(pComponentPrivate_CC,pLcmlHdr->pBufHdr,OMX_DirOutput); 1575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Invalid Buffer Came ...\n",__LINE__); 1578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHdr->pBufHdr->nFilledLen = (int)args[8]; 1581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Output: pLcmlHeader = %p\n",__LINE__, pLcmlHdr); 1582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->lcml_nCntOpReceived++; 1584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* >>>>>>>>>>>>>>>>>>>>>>> */ 1585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->lcml_nOpBuf--; 1586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: Component Sending Filled Output buffer%p to App\n",__LINE__,pLcmlHdr->pBufHdr->pBuffer); 1587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[FillBufferDone] Call #%d Line %d\n",++FillBufferDoneCount,__LINE__); 1588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->cbInfo.FillBufferDone ( 1589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, 1590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 1591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHdr->pBufHdr 1592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ); 1593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->app_nBuf++; 1594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->nOutStandingFillDones--; 1595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("Decrementing pComponentPrivate->nOutStandingFillDones Line %d\n",__LINE__); 1596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d::pComponentPrivate->nOutStandingFillDones = %d\n",__LINE__,pComponentPrivate_CC->nOutStandingFillDones); 1597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* <<<<<<<<<<<<<<<<<<<<<<< */ 1598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(event == EMMCodecProcessingStoped) { 1602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!pComponentPrivate_CC->bNoIdleOnStop) { 1603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->bIdleCommandPending = OMX_TRUE; 1604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->curState = OMX_StateIdle; 1605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate_CC->bPreempted == 0) { 1607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pHandle, 1608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 1609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, 1610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CommandStateSet, 1611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->curState, 1612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 1613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pHandle, 1616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 1617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 1618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorResourcesPreempted, 1619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 1620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 1621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->bIdleCommandPending = OMX_FALSE; 1623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("setting bDspStoppedWhileExecuting\n"); 1626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->bDspStoppedWhileExecuting = OMX_TRUE; 1627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->bNoIdleOnStop= OMX_FALSE; 1629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(event == EMMCodecAlgCtrlAck) { 1631b65f253fdc60f6208a54911bee793d225f23cdf8James Dong G722ENC_DPRINT ("GOT MESSAGE USN_DSPACK_ALGCTRL \n"); 1632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (event == EMMCodecDspError) { 1634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((int)args[4] == 1) && ((int)args[5] == 0x500)) { 1635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Comp: Inside the G722ENC_LCML_Callback: USN_DSPMSG_ERROR \n", __LINE__); 1636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHandle = (LCML_DSP_INTERFACE *)pComponentPrivate_CC->pLcmlHandle; 1637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("Setting current state Idle Line %d\n",__LINE__); 1638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->curState = OMX_StateIdle; 1639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pHandle, pHandle->pApplicationPrivate, 1640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandStateSet, 1641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->curState, NULL); 1642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: G722ENC: State has been Set to Idle\n", __LINE__); 1643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((int)args[4] == 1) && ((int)args[5] == 0x0300)) { 1645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Comp: Inside the G722ENC_LCML_Callback: USN_DSPMSG_ERROR \n", __LINE__); 1646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pHandle, pHandle->pApplicationPrivate, 1647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorOverflow, 1648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->curState, NULL); 1649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(((int)args[4] == USN_ERR_WARNING) && 1653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((int)args[5] == IUALG_WARN_PLAYCOMPLETED)) { 1654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pHandle, 1655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 1656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventBufferFlag, 1657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_U32)NULL, 1658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERFLAG_EOS, 1659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 1660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (event == EMMCodecStrmCtrlAck) { 1663b65f253fdc60f6208a54911bee793d225f23cdf8James Dong G722ENC_DPRINT("%d :: GOT MESSAGE USN_DSPACK_STRMCTRL ----\n",__LINE__); 1664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->bStreamCtrlCalled = 1; 1665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (event == EMMCodecProcessingPaused) { 1668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->curState = OMX_StatePause; 1669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->cbInfo.EventHandler(pHandle, pHandle->pApplicationPrivate, 1670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandStateSet, 1671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->curState, NULL); 1672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Exiting the G722ENC_LCML_Callback() \n",__LINE__); 1676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* -------------------------------------------------------------------*/ 1679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722ENC_GetCorresponding_LCMLHeader() function will be called by G722ENC_LCML_Callback 1681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * component to write the msg 1682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pBuffer, Event which gives to details about USN status 1683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param LCML_NBAMRENC_BUFHEADERTYPE **ppLcmlHdr 1684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_NoError Success, ready to roll 1686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_Error_BadParameter The input parameter pointer is null 1687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* -------------------------------------------------------------------*/ 1689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_GetCorresponding_LCMLHeader(OMX_U8 *pBuffer, 1691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DIRTYPE eDir, 1692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_LCML_BUFHEADERTYPE **ppLcmlHdr) 1693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_LCML_BUFHEADERTYPE *pLcmlBufHeader = NULL; 1696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nIpBuf = pComponentPrivate_CC->pInputBufferList->numBuffers; 1697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nOpBuf = pComponentPrivate_CC->pOutputBufferList->numBuffers; 1698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 i = 0; 1699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Entering the G722ENC_GetCorresponding_LCMLHeader()\n",__LINE__); 1701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eDir == OMX_DirInput) { 1702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlBufHeader = pComponentPrivate_CC->pLcmlBufHeader[G722ENC_INPUT_PORT]; 1703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i<nIpBuf; i++) { 1704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pBuffer == pLcmlBufHeader->pBufHdr->pBuffer) { 1705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *ppLcmlHdr = pLcmlBufHeader; 1706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d::Corresponding LCML Header Found\n",__LINE__); 1707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlBufHeader++; 1710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (eDir == OMX_DirOutput) { 1713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlBufHeader = pComponentPrivate_CC->pLcmlBufHeader[G722ENC_OUTPUT_PORT]; 1714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i<nOpBuf; i++) { 1715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pBuffer == pLcmlBufHeader->pBufHdr->pBuffer) { 1716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *ppLcmlHdr = pLcmlBufHeader; 1717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d::Corresponding LCML Header Found\n",__LINE__); 1718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlBufHeader++; 1721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d:: Invalid Buffer Type :: exiting...\n",__LINE__); 1725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Exiting the G722ENC_GetCorresponding_LCMLHeader() \n",__LINE__); 1729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* -------------------------------------------------------------------*/ 1734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722ENC_GetLCMLHandle() 1736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @retval OMX_HANDLETYPE 1738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin -------------------------------------------------------------------*/ 1740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_HANDLETYPE G722ENC_GetLCMLHandle() 1744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin void *handle = NULL; 1746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE (*fpGetHandle)(OMX_HANDLETYPE); 1747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pHandle = NULL; 1748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char *error = NULL; 1749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin handle = dlopen("libLCML.so", RTLD_LAZY); 1751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!handle) { 1752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fputs(dlerror(), stderr); 1753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fpGetHandle = dlsym (handle, "GetHandle"); 1757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ((error = dlerror()) != NULL) { 1758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fputs(error, stderr); 1759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = (*fpGetHandle)(&pHandle); 1762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 1764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("eError != OMX_ErrorNone...\n"); 1765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle = NULL; 1766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->lcml_handle = handle; 1770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->bLcmlHandleOpened = 1; 1771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 1772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return pHandle; 1773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin//WINDOWS Explicit dll load procedure 1777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_HANDLETYPE G722ENC_GetLCMLHandle() 1779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin typedef OMX_ERRORTYPE (*LPFNDLLFUNC1)(OMX_HANDLETYPE); 1781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pHandle = NULL; 1782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin HINSTANCE hDLL; // Handle to DLL 1784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LPFNDLLFUNC1 fpGetHandle1; 1785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin hDLL = LoadLibraryEx(TEXT("OAF_BML.dll"), NULL,0); 1789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (hDLL == NULL) 1790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin //fputs(dlerror(), stderr); 1792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("BML Load Failed!!!\n"); 1793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return pHandle; 1794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fpGetHandle1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,TEXT("GetHandle")); 1797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!fpGetHandle1) 1798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin // handle the error 1800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FreeLibrary(hDLL); 1801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return pHandle; 1802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin // call the function 1805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = fpGetHandle1(&pHandle); 1806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 1808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin AMRDEC_DPRINT("eError != OMX_ErrorNone...\n"); 1809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle = NULL; 1810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return pHandle; 1811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return pHandle; 1813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_FreeLCMLHandle() 1819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int retValue = 0; 1822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate_CC->bLcmlHandleOpened) { 1824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retValue = dlclose(pComponentPrivate_CC->lcml_handle); 1825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (retValue != 0) { 1827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 1828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->bLcmlHandleOpened = 0; 1830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_FreeLCMLHandle() 1835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int retValue = 0; 1838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate_CC->bLcmlHandleOpened) { 1841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retValue = FreeLibrary(pComponentPrivate_CC->pLcmlHandle); 1843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (retValue == 0) { /* Zero Indicates failure */ 1844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 1845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate_CC->bLcmlHandleOpened = 0; 1847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 1855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_CommandToIdle() description for G722ENC_CommandToIdle 1857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_CommandToIdle(). 1858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This component is called by HandleCommand() when the component is commanded to Idle 1859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 1860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 1862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 1864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 1865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 1866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 1867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 1868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_CommandToIdle(G722ENC_COMPONENT_PRIVATE *pComponentPrivate) 1869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 1872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char *pArgs = "damedesuStr"; 1873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = 1874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_COMPONENTTYPE *) pComponentPrivate->pHandle; 1875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LCML_CALLBACKTYPE cb; 1876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LCML_DSP *pLcmlDsp = NULL; 1877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char *p = "damedesuStr"; 1878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pLcmlHandle = pComponentPrivate->pLcmlHandle; 1879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef G722ENC_DEBUG 1882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LCML_CODEC_INTERFACE *pp = NULL; 1883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENC_HandleCommand: Cmd Idle \n",__LINE__); 1888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateIdle){ 1889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 1890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorSameState,0, 1892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 1893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Same State Given by Application\n",__LINE__); 1894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (pComponentPrivate->curState == OMX_StateLoaded || 1896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState == OMX_StateWaitForResources) { 1897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->dasfmode == 1) 1898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->streamID == 0) 1900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 1902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("OMX_ErrorInsufficientResources.\n"); 1903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateInvalid; 1904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 1905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 1906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorInvalidState,0, NULL); 1907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->bEnabled == OMX_TRUE 1911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin && pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->bEnabled == OMX_TRUE) 1912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!(pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->bPopulated) 1914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin && !(pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->bPopulated)) 1915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InLoaded_readytoidle = 1; 1917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InLoaded_mutex); 1919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_wait(&pComponentPrivate->InLoaded_threshold, 1920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin &pComponentPrivate->InLoaded_mutex); 1921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InLoaded_mutex); 1922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_WaitForEvent(&(pComponentPrivate->InLoaded_event)); 1924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHandle = (OMX_HANDLETYPE) G722ENC_GetLCMLHandle(); 1929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pLcmlHandle == NULL) 1931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("LCML Handle is NULL........exiting..\n"); 1933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Got handle of dsp via phandle filling information about DSP Specific things */ 1937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlDsp = (((LCML_DSP_INTERFACE*)pLcmlHandle)->dspCodec); 1938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G722ENC_Fill_LCMLInitParams(pHandle, pLcmlDsp); 1940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) 1941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("from G722ENCFill_LCMLInitParams().\n"); 1943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pLcmlHandle = (LCML_DSP_INTERFACE *)pLcmlHandle; 1947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cb.LCML_Callback = (void *) G722ENC_LCML_Callback; 1948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_InitMMCodecEx(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin p, &pLcmlHandle, (void *)p, 1952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin &cb, (OMX_STRING)pComponentPrivate->sDeviceString); 1953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_InitMMCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 1956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin p, &pLcmlHandle, (void *)p, 1957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin &cb); 1958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) 1960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("from LCML_Init().\n"); 1962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef HASHINGENABLE 1966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Enable the Hashing Code */ 1967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_SetHashingState(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, OMX_TRUE); 1968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("Failed to set Mapping State\n"); 1970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateIdle; 1974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 1976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_Boundary(pComponentPrivate->pPERFcomp, 1977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_BoundaryComplete | PERF_BoundarySetup); 1978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 1980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 1981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, 1982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CommandStateSet, 1983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState, 1984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 1985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (pComponentPrivate->curState == OMX_StateExecuting) { 1989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef HASHINGENABLE 1990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Hashing Change*/ 1991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLcmlHandle; 1992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* clear out any mappings that might have accumulated */ 1993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_FlushHashes(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle); 1994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 1995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin prinft("Error occurred in Codec mapping flush!\n"); 1996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: In G722ENC_HandleCommand: Stopping the codec\n",__LINE__); 2001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENCUTILS::About to call LCML_ControlCodec\n",__LINE__); 2002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: Calling Codec Stop..\n"); 2003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_ControlCodec( 2004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 2005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MMCodecControlStop,(void *)pArgs); 2006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("Called Codec Stop..\n"); 2007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 2008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: Error Occurred in Codec Stop..\n",__LINE__); 2009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: The component is stopped\n",__LINE__); 2013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* pComponentPrivate->bIdleCommandPending = 1;*/ 2014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(pComponentPrivate->curState == OMX_StatePause) { 2016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef HASHINGENABLE 2017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Hashing Change*/ 2018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHandle = (LCML_DSP_INTERFACE*)pComponentPrivate->pLcmlHandle; 2019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* clear out any mappings that might have accumulated */ 2020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_FlushHashes(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle); 2021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("Error occurred in Codec mapping flush!\n"); 2023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 2026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Comp: Stop Command Received\n",__LINE__); 2028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENCUTILS::About to call LCML_ControlCodec\n",__LINE__); 2029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateIdle; 2030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: The component is stopped\n",__LINE__); 2031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, pHandle->pApplicationPrivate, 2032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandStateSet, pComponentPrivate->curState, NULL); 2033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: Comp: Sending ErrorNotification: Invalid State\n",__LINE__); 2037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 2038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, 2039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 2040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 2041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorIncorrectStateTransition, 0, 2042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Invalid State Error"); 2043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 2046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_CommandToLoaded() description for G722ENC_CommandToLoaded 2051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_CommandToLoaded(). 2052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This component is called by HandleCommand() when the component is commanded to Loaded 2053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 2054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 2056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 2058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 2060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_CommandToLoaded(G722ENC_COMPONENT_PRIVATE *pComponentPrivate) 2063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 2064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char *pArgs = "damedesuStr"; 2066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = 2067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_COMPONENTTYPE *) pComponentPrivate->pHandle; 2068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pLcmlHandle = pComponentPrivate->pLcmlHandle; 2069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_LCML_BUFHEADERTYPE *pTemp_lcml = NULL; 2070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 i = 0; 2071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENC_HandleCommand: Cmd Loaded\n",__LINE__); 2074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateLoaded){ 2075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 2076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 2077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorSameState,0, 2078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 2079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Same State Given by Application\n",__LINE__); 2080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateWaitForResources ) { 2083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateLoaded; 2084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 2085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 2086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, OMX_CommandStateSet,pComponentPrivate->curState, 2087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 2088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Transitioning from WaitFor to Loaded\n",__LINE__); 2089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState != OMX_StateIdle) { 2093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 2094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 2095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorIncorrectStateTransition, 0, 2096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Invalid State"); 2097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Invalid State Given by Application\n",__LINE__); 2098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENCUTILS::About to call LCML_ControlCodec\n",__LINE__); 2102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENCUTILS::Current State = %d\n",__LINE__,pComponentPrivate->curState); 2103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("pComponentPrivate->pInputBufferList->numBuffers = %d\n",pComponentPrivate->pInputBufferList->numBuffers); 2104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("pComponentPrivate->pOutputBufferList->numBuffers = %d\n",pComponentPrivate->pOutputBufferList->numBuffers); 2105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufferList->numBuffers || 2107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->numBuffers){ 2108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->InIdle_goingtoloaded = 1; 2109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 2110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&pComponentPrivate->InIdle_mutex); 2111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_wait(&pComponentPrivate->InIdle_threshold, &pComponentPrivate->InIdle_mutex); 2112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&pComponentPrivate->InIdle_mutex); 2113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 2114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_WaitForEvent(&(pComponentPrivate->InIdle_event)); 2115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 2116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bLoadedCommandPending = OMX_FALSE; 2117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateLoaded; 2120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("About to destroy codec\n"); 2121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_ControlCodec( 2122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 2123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EMMCodecControlDestroy,(void *)pArgs); 2124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("Finished destroying codec\n"); 2125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bStreamCtrlCalled = 0; 2127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d : Error: in Destroying the codec\n",__LINE__); 2130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pCreatePhaseArgs == NULL) { 2135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->pCreatePhaseArgs); 2136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pComponentPrivate->pCreatePhaseArgs); 2137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pCreatePhaseArgs = NULL; 2138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml = pComponentPrivate->pLcmlBufHeader[G722ENC_INPUT_PORT]; 2141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i<pComponentPrivate->noInitInputBuf; i++) { 2142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pTemp_lcml->pIpParam) { 2143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pTemp_lcml->pIpParam); 2144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pTemp_lcml->pIpParam); 2145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pIpParam = NULL; 2146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml++; 2148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: G722ENC_CleanupInitParams()\n", __LINE__); 2150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("pComponentPrivate->pLcmlBufHeader[G722ENC_INPUT_PORT] = %p\n",pComponentPrivate->pLcmlBufHeader[G722ENC_INPUT_PORT]); 2153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pLcmlBufHeader[G722ENC_INPUT_PORT]) { 2154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->pLcmlBufHeader[G722ENC_INPUT_PORT]); 2155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pComponentPrivate->pLcmlBufHeader[G722ENC_INPUT_PORT]); 2156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pLcmlBufHeader[G722ENC_INPUT_PORT] = NULL; 2157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("freeing pComponentPrivate->pLcmlBufHeader[G722ENC_OUTPUT_PORT] = 0x%x\n",pComponentPrivate->pLcmlBufHeader[G722ENC_OUTPUT_PORT]); 2160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("pComponentPrivate->pLcmlBufHeader[G722ENC_OUTPUT_PORT] = %p\n",pComponentPrivate->pLcmlBufHeader[G722ENC_OUTPUT_PORT]); 2162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pLcmlBufHeader[G722ENC_OUTPUT_PORT]) { 2164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->pLcmlBufHeader[G722ENC_OUTPUT_PORT]); 2165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pComponentPrivate->pLcmlBufHeader[G722ENC_OUTPUT_PORT]); 2166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pLcmlBufHeader[G722ENC_OUTPUT_PORT] = NULL; 2167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->strmAttr) { 2170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pComponentPrivate->strmAttr); 2171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pComponentPrivate->strmAttr); 2172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->strmAttr = NULL; 2173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = EXIT_COMPONENT_THRD; 2175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bInitParamsInitialized = 0; 2176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 2179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_CommandToExecuting() description for G722ENC_CommandToExecuting 2184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_CommandToExecuting(). 2185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This component is called by HandleCommand() when the component is commanded to Executing 2186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 2187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 2189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 2191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 2193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_CommandToExecuting(G722ENC_COMPONENT_PRIVATE *pComponentPrivate) 2196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 2197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 i = 0; 2198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char *pArgs = "damedesuStr"; 2200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufHdr = NULL; 2201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nBuf = 0; 2202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = 2203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_COMPONENTTYPE *) pComponentPrivate->pHandle; 2204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pLcmlHandle = pComponentPrivate->pLcmlHandle; 2205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_LCML_BUFHEADERTYPE *pLcmlHdr = NULL; 2206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENC_HandleCommand: Cmd Executing \n",__LINE__); 2208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bBypassDSP = 0; 2209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateExecuting){ 2210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 2211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 2212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorSameState,0, 2213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 2214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Same State Given by \ 2215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Application\n",__LINE__); 2216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (pComponentPrivate->curState == OMX_StateIdle) { 2218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->dasfmode == 1 && pComponentPrivate->bStreamCtrlCalled == 0) { 2219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: G722 ENCODER IS RUNNING UNDER DASF MODE\n",__LINE__); 2220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: ---- Comp: DASF Functionality is ON ---\n",__LINE__); 2221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pParams->iAudioFormat = (unsigned short)pComponentPrivate->g722Params->nChannels; 2223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pParams->iStrmId = pComponentPrivate->streamID; 2224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pParams->iSamplingRate = G722ENC_SAMPLE_RATE; 2225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::pComponentPrivate->pParams->iAudioFormat = %d\n",__LINE__,pComponentPrivate->pParams->iAudioFormat); 2227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::pComponentPrivate->pParams->iSamplingRate = %d\n",__LINE__,pComponentPrivate->pParams->iSamplingRate); 2228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::pComponentPrivate->pParams->iStrmId = %d\n",__LINE__,pComponentPrivate->pParams->iStrmId); 2229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pValues[0] = USN_STRMCMD_SETCODECPARAMS; 2231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pValues[1] = (OMX_U32)pComponentPrivate->pParams; 2232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pValues[2] = sizeof(G722ENC_AudioCodecParams); 2233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENCUTILS::About to call LCML_ControlCodec\n",__LINE__); 2235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 2236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EMMCodecControlStrmCtrl,(void *)pValues); 2237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 2238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: Error Occurred in Codec StreamControl..\n",__LINE__); 2239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENCUTILS::About to call LCML_ControlCodec\n",__LINE__); 2244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_ControlCodec( 2245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 2246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EMMCodecControlStart,(void *)pArgs); 2247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 2248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: Error Occurred in Codec Start..\n",__LINE__); 2249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nBuf = pComponentPrivate->pInputBufferList->numBuffers; 2252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pComponentPrivate->dasfmode == 0) { 2254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Comp :: After LCML_StartCodec function \n",__LINE__); 2255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nBuf = pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->nBufferCountActual; 2256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBufHdr = pComponentPrivate->pBufHeader[G722ENC_INPUT_PORT]; 2257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Comp :: After LCML_StartCodec function \n",__LINE__); 2258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("Sending Input buffer to Application\n"); 2259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("%d :: Component Sending Input buffer to Application %p\n",__LINE__, pBufHdr); 2260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pLcmlHdr = pComponentPrivate->pLcmlBufHeader[G722ENC_INPUT_PORT]; 2261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (pComponentPrivate->curState == OMX_StatePause) { 2264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: Comp: Resume Command Came from App\n",__LINE__); 2265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENCUTILS::About to call LCML_ControlCodec\n",__LINE__); 2266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_ControlCodec( 2267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 2268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EMMCodecControlStart,(void *)pArgs); 2269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT ("Error While Resuming the codec\n"); 2272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("pComponentPrivate->nNumInputBufPending = %d\n",pComponentPrivate->nNumInputBufPending); 2276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->nNumInputBufPending < pComponentPrivate->pInputBufferList->numBuffers) { 2277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nNumInputBufPending = pComponentPrivate->pInputBufferList->numBuffers; 2278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->nNumInputBufPending; i++) { 2281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pInputBufHdrPending[i]) { 2282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!G722ENC_IsPending(pComponentPrivate, pComponentPrivate->pInputBufHdrPending[i], OMX_DirInput)) { 2283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_GetCorresponding_LCMLHeader(pComponentPrivate->pInputBufHdrPending[i]->pBuffer, OMX_DirInput, &pLcmlHdr); 2284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_SetPending(pComponentPrivate,pComponentPrivate->pInputBufHdrPending[i],OMX_DirInput); 2285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_QueueBuffer( 2287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 2288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EMMCodecInputBuffer, 2289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i]->pBuffer, 2290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i]->nAllocLen, 2291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i]->nFilledLen, 2292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_U8 *) pLcmlHdr->pIpParam, 2293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sizeof(G722ENC_UAlgInBufParamStruct), 2294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufHdrPending[i]->pBuffer); 2295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->nNumOutputBufPending; i++) { 2300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->pOutputBufHdrPending[i]) { 2301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!G722ENC_IsPending(pComponentPrivate, pComponentPrivate->pOutputBufHdrPending[i], OMX_DirOutput)) { 2302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_GetCorresponding_LCMLHeader(pComponentPrivate->pOutputBufHdrPending[i]->pBuffer, OMX_DirOutput, &pLcmlHdr); 2303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_SetPending(pComponentPrivate,pComponentPrivate->pOutputBufHdrPending[i],OMX_DirOutput); 2304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_QueueBuffer( 2306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 2307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EMMCodecOuputBuffer, 2308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[i]->pBuffer, 2309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[i]->nAllocLen, 2310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[i]->nFilledLen, 2311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL, 2312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0, 2313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufHdrPending[i]->pBuffer); 2314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 2322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 2323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorIncorrectStateTransition, 0, 2324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Invalid State"); 2325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Invalid State Given by Application\n",__LINE__); 2326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateExecuting; 2329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler(pHandle, 2330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 2331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, 2332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CommandStateSet, pComponentPrivate->curState, NULL); 2333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 2335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_CommandToPause() description for G722ENC_CommandToPause 2340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_CommandToPause(). 2341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This component is called by HandleCommand() when the component is commanded to Paused 2342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 2343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 2345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 2347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 2349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_CommandToPause(G722ENC_COMPONENT_PRIVATE *pComponentPrivate) 2352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 2353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char *pArgs = "damedesuStr"; 2355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = 2356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_COMPONENTTYPE *) pComponentPrivate->pHandle; 2357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pLcmlHandle = pComponentPrivate->pLcmlHandle; 2358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENC_HandleCommand: Cmd Pause: Cur State = %d\n",__LINE__,pComponentPrivate->curState); 2360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StatePause){ 2361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 2362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 2363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorSameState,0, 2364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 2365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Same State Given by Application\n",__LINE__); 2366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ((pComponentPrivate->curState != OMX_StateExecuting) && 2369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (pComponentPrivate->curState != OMX_StateIdle)) { 2370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 2372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 2373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorIncorrectStateTransition, 0, 2374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Invalid State"); 2375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Invalid State Given by Application\n",__LINE__); 2377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENCUTILS::About to call LCML_ControlCodec\n",__LINE__); 2381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = LCML_ControlCodec(((LCML_DSP_INTERFACE*)pLcmlHandle)->pCodecinterfacehandle, 2382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EMMCodecControlPause,(void *)pArgs); 2383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 2385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d : Error: in Pausing the codec\n",__LINE__); 2386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StatePause; 2390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* pComponentPrivate->cbInfo.EventHandler(pHandle, 2391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 2392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, 2393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CommandStateSet, 2394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState, 2395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); */ 2396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Component: Codec Is Paused\n",__LINE__); 2397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 2399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_CommandToWaitForResources() description for G722ENC_CommandToWaitForResources 2406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_CommandToWaitForResources(). 2407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This component is called by HandleCommand() when the component is commanded 2408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin to WaitForResources 2409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 2410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 2412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 2414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 2416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_CommandToWaitForResources(G722ENC_COMPONENT_PRIVATE *pComponentPrivate) 2419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 2420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = 2422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (OMX_COMPONENTTYPE *) pComponentPrivate->pHandle; 2423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: G722ENC_HandleCommand: Cmd : OMX_StateWaitForResources\n",__LINE__); 2425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState == OMX_StateWaitForResources){ 2426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Comp: OMX_AmrDecUtils.c\n",__LINE__); 2427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 2428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 2429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorSameState,0, 2430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL); 2431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Same State Given by Application\n",__LINE__); 2432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (pComponentPrivate->curState == OMX_StateLoaded) { 2435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateWaitForResources; 2436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d: Transitioning from Loaded to OMX_StateWaitForResources\n",__LINE__); 2437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 2438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 2439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, 2440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CommandStateSet,pComponentPrivate->curState, NULL); 2441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 2445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 2446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, OMX_ErrorIncorrectStateTransition,0, NULL); 2447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 2450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_SetPending() description for G722ENC_SetPending 2456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_SetPending(). 2457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This component is called when a buffer is queued to the LCML 2458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 2459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 2461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 2463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 2465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid G722ENC_SetPending(G722ENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir) 2468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 2469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 i = 0; 2470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eDir == OMX_DirInput) { 2472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) { 2473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pInputBufferList->pBufHdr[i]) { 2474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->bBufferPending[i] = 1; 2475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("*******************INPUT BUFFER %d IS PENDING ******************************\n",i); 2476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) { 2481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pOutputBufferList->pBufHdr[i]) { 2482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bBufferPending[i] = 1; 2483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("*******************OUTPUT BUFFER %d IS PENDING******************************\n",i); 2484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_ClearPending() description for G722ENC_ClearPending 2492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_ClearPending(). 2493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This component is called when a buffer is returned from the LCML 2494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 2495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 2497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 2499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 2501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid G722ENC_ClearPending(G722ENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir) 2504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 2505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 i = 0; 2506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eDir == OMX_DirInput) { 2508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) { 2509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pInputBufferList->pBufHdr[i]) { 2510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pInputBufferList->bBufferPending[i] = 0; 2511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("*******************INPUT BUFFER %d IS RECLAIMED******************************\n",i); 2512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) { 2517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pOutputBufferList->pBufHdr[i]) { 2518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pOutputBufferList->bBufferPending[i] = 0; 2519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("*******************OUTPUT BUFFER %d IS RECLAIMED ******************************\n",i); 2520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_IsPending() description for G722ENC_IsPending 2528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_IsPending(). 2529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This method returns the pending status to the buffer 2530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 2531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 2533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 2535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 2537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 G722ENC_IsPending(G722ENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir) 2540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 2541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 i = 0; 2542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eDir == OMX_DirInput) { 2544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) { 2545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pInputBufferList->pBufHdr[i]) { 2546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return pComponentPrivate->pInputBufferList->bBufferPending[i]; 2547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) { 2552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBufHdr == pComponentPrivate->pOutputBufferList->pBufHdr[i]) { 2553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return pComponentPrivate->pOutputBufferList->bBufferPending[i]; 2554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return -1; 2558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_Fill_LCMLInitParamsEx() description for G722ENC_Fill_LCMLInitParamsEx 2563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_Fill_LCMLInitParamsEx(). 2564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This method fills the LCML init parameters. 2565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 2566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 2568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 2570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 2572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722ENC_Fill_LCMLInitParamsEx(OMX_HANDLETYPE pComponent) 2575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 2576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nIpBuf = 0,nIpBufSize = 0,nOpBuf = 0,nOpBufSize = 0; 2578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pTemp = NULL; 2579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = (OMX_COMPONENTTYPE *)pComponent; 2580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_COMPONENT_PRIVATE *pComponentPrivate = pHandle->pComponentPrivate; 2581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LCML_STRMATTR *strmAttr = NULL; 2582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_LCML_BUFHEADERTYPE *pTemp_lcml = NULL; 2583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 i = 0; 2584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 size_lcml = 0; 2585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: G722ENCFill_LCMLInitParamsEx\n ",__LINE__); 2587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[G722ENC_Fill_LCMLInitParamsEx] pComponent = %p\n",pComponent); 2588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("[G722ENC_Fill_LCMLInitParamsEx] pComponentPrivate = %p\n",pComponentPrivate); 2589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nIpBuf = pComponentPrivate->pInputBufferList->numBuffers; 2592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nIpBufSize = pComponentPrivate->pPortDef[G722ENC_INPUT_PORT]->nBufferSize; 2593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nOpBuf = pComponentPrivate->pOutputBufferList->numBuffers; 2594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nOpBufSize = pComponentPrivate->pPortDef[G722ENC_OUTPUT_PORT]->nBufferSize; 2595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: ------ Buffer Details -----------\n",__LINE__); 2597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Input Buffer Count = %ld\n",__LINE__,nIpBuf); 2598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Input Buffer Size = %ld\n",__LINE__,nIpBufSize); 2599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Output Buffer Count = %ld\n",__LINE__,nOpBuf); 2600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Output Buffer Size = %ld\n",__LINE__,nOpBufSize); 2601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: ------ Buffer Details ------------\n",__LINE__); 2602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Allocate memory for all input buffer headers.. 2604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This memory pointer will be sent to LCML */ 2605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin size_lcml = nIpBuf * sizeof(G722ENC_LCML_BUFHEADERTYPE); 2606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml = (G722ENC_LCML_BUFHEADERTYPE *)malloc(size_lcml); 2607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d :: [ALLOC] %p\n",__LINE__,pTemp_lcml); 2608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pTemp_lcml == NULL) { 2609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Memory Allocation Failed\n",__LINE__); 2610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 2611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pLcmlBufHeader[G722ENC_INPUT_PORT] = pTemp_lcml; 2614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i<nIpBuf; i++) { 2615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: INPUT--------- Inside Ip Loop\n",__LINE__); 2616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp = pComponentPrivate->pInputBufferList->pBufHdr[i]; 2617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE); 2618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nAllocLen = nIpBufSize; 2619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nFilledLen = nIpBufSize; 2620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nVersion.s.nVersionMajor = G722ENC_MAJOR_VER; 2621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nVersion.s.nVersionMinor = G722ENC_MINOR_VER; 2622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->pPlatformPrivate = pHandle->pComponentPrivate; 2623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nTickCount = NOT_USED; 2624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pBufHdr = pTemp; 2625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: pTemp_lcml->pBufHdr->pBuffer = %p \n",__LINE__,pTemp_lcml->pBufHdr->pBuffer); 2626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->eDir = OMX_DirInput; 2627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pOtherParams[i] = NULL; 2628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pIpParam = (G722ENC_UAlgInBufParamStruct *)malloc(sizeof(G722ENC_UAlgInBufParamStruct)); 2629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[ALLOC] %p\n",__LINE__,pTemp_lcml->pIpParam); 2631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pTemp_lcml->pIpParam == NULL) { 2632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Free previously allocated memory before bailing */ 2633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (strmAttr) { 2634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,strmAttr); 2635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(strmAttr); 2636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr = NULL; 2637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pTemp_lcml) { 2641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,pTemp_lcml); 2642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pTemp_lcml); 2643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml = NULL; 2644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Error: Malloc Failed...Exiting..\n",__LINE__); 2647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pIpParam->bLastBuffer = 0; 2650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nFlags = NORMAL_BUFFER; 2652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((G722ENC_COMPONENT_PRIVATE *) pTemp->pPlatformPrivate)->pHandle = pHandle; 2653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: InBuffHeader[%d] = %p\n", __LINE__, i, pTemp); 2654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: >>>> InputBuffHeader[%d]->pBuffer = %p\n", 2655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__, i, pTemp->pBuffer); 2656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: Ip : pTemp_lcml[%d] = %p\n", __LINE__, i, pTemp_lcml); 2657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml++; 2659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp = pComponentPrivate->pBufHeader[G722ENC_OUTPUT_PORT]; 2662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin size_lcml = nOpBuf * sizeof(G722ENC_LCML_BUFHEADERTYPE); 2663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml = (G722ENC_LCML_BUFHEADERTYPE *)malloc(size_lcml); 2664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[ALLOC] %p\n",__LINE__,pTemp_lcml); 2665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pTemp_lcml == NULL) { 2666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Memory Allocation Failed\n",__LINE__); 2667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Free previously allocated memory before bailing */ 2668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (strmAttr) { 2669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_MEMPRINT("%d:::[FREE] %p\n",__LINE__,strmAttr); 2670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(strmAttr); 2671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strmAttr = NULL; 2672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 2675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 2676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pLcmlBufHeader[G722ENC_OUTPUT_PORT] = pTemp_lcml; 2678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i<nOpBuf; i++) { 2680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp = pComponentPrivate->pOutputBufferList->pBufHdr[i]; 2681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nSize = sizeof(OMX_BUFFERHEADERTYPE); 2682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nAllocLen = nOpBufSize; 2683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nFilledLen = nOpBufSize; 2684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nVersion.s.nVersionMajor = G722ENC_MAJOR_VER; 2685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nVersion.s.nVersionMinor = G722ENC_MINOR_VER; 2686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->nVersion = pTemp->nVersion.nVersion; 2687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->pPlatformPrivate = pHandle->pComponentPrivate; 2688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nTickCount = NOT_USED; 2689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pBufHdr = pTemp; 2690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->eDir = OMX_DirOutput; 2691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml->pOtherParams[i] = NULL; 2692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp->nFlags = NORMAL_BUFFER; 2694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((G722ENC_COMPONENT_PRIVATE *)pTemp->pPlatformPrivate)->pHandle = pHandle; 2695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: >>>>>>>>>>>>> OutBuffHeader[%d] = %p\n", 2696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__, i, pTemp); 2697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: >>>> OutBuffHeader[%d]->pBuffer = %p\n", 2698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __LINE__, i, pTemp->pBuffer); 2699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d ::Comp: Op : pTemp_lcml[%d] = %p\n", __LINE__, i, pTemp_lcml); 2700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp++; 2701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp_lcml++; 2702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPortDefsAllocated = 1; 2704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_DPRINT("%d :: Exiting G722ENC_Fill_LCMLInitParams",__LINE__); 2706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bInitParamsInitialized = 1; 2708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 2709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 2710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 2714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 2715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn G722ENC_IsValid() description for G722ENC_Fill_LCMLInitParamsEx 2716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722ENC_IsValid(). 2717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin This method checks to see if a buffer returned from the LCML is valid. 2718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent handle for this instance of the component 2719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre 2721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post 2723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 2724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ERRORTYPE 2725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 2726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 2727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 G722ENC_IsValid(G722ENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U8 *pBuffer, OMX_DIRTYPE eDir) 2728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 2729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 i = 0; 2730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int found=0; 2731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eDir == OMX_DirInput) { 2733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->pInputBufferList->numBuffers; i++) { 2734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer == pComponentPrivate->pInputBufferList->pBufHdr[i]->pBuffer) { 2735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin found = 1; 2736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < pComponentPrivate->pOutputBufferList->numBuffers; i++) { 2741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuffer == pComponentPrivate->pOutputBufferList->pBufHdr[i]->pBuffer) { 2742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin found = 1; 2743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return found; 2747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2749