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_G729Dec_ComponentThread.c 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This file implements OMX Component for G729 decoder 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\g729_dec\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 *! 03-Jan-2007 A.Donjon 0.1 Code update for G729 DECODER 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ================================================================================= */ 48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ------compilation control switches -------------------------*/ 50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * INCLUDE FILES 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----- system and platform files ----------------------------*/ 54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <windows.h> 56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h> 58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <dbapi.h> 59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h> 60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h> 61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h> 62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h> 63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <errno.h> 64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h> 65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/time.h> 66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <signal.h> 67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------program files ----------------------------------------*/ 70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_G729Dec_Utils.h" 71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_G729Decoder.h" 72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_G729Dec_ComponentThread.h" 73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <ResourceManagerProxyAPI.h> 76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "perf.h" 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * EXTERNAL REFERENCES NOTE : only use if not found in header file 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------data declarations -----------------------------------*/ 85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * PUBLIC DECLARATIONS Defined here, used elsewhere 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------data declarations -----------------------------------*/ 91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * PRIVATE DECLARATIONS Defined here, used only here 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/ 97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------data declarations -----------------------------------*/ 98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------function prototypes ---------------------------------*/ 99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*--------macros ----------------------------------------------*/ 100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid* G729DEC_ComponentThread (void* pThreadData) 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S16 status = 0; 105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct timespec tv; 106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S16 fdmax = 0; 107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fd_set rfds; 108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nRet = 0; 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_COMPONENT_PRIVATE* pComponentPrivate = (G729DEC_COMPONENT_PRIVATE*)pThreadData; 111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pHandle = pComponentPrivate->pHandle; 112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufHeader = NULL; 113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ssize_t ret = 0; 114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("OMX_G729Dec_ComponentThread:%d\n",__LINE__); 116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->pPERFcomp = PERF_Create(PERF_FOURCC('7', '2', '9', 'E'), 118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleComponent | 119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PERF_ModuleAudioDecode); 120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = pComponentPrivate->cmdPipe[0]; 122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->dataPipe[0] > fdmax) { 124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = pComponentPrivate->dataPipe[0]; 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while (1) { 128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_ZERO (&rfds); 129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET (pComponentPrivate->cmdPipe[0], &rfds); 130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET (pComponentPrivate->dataPipe[0], &rfds); 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_sec = 1; 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_nsec = 0; 134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigset_t set; 136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigemptyset (&set); 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigaddset (&set, SIGALRM); 138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = pselect (fdmax+1, &rfds, NULL, NULL, &tv, &set); 139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 == status) { 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d : bIsStopping = %d\n",__LINE__, 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (int)pComponentPrivate->bIsStopping); 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d : lcml_nOpBuf = %d\n",__LINE__, 146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (int)pComponentPrivate->lcml_nOpBuf); 147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d : lcml_nIpBuf = %d\n",__LINE__, 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (int)pComponentPrivate->lcml_nIpBuf); 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d : app_nBuf = %d\n",__LINE__, 151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (int)pComponentPrivate->app_nBuf); 152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bIsStopping == 1) { 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d:G729ComponentThread \n",__LINE__); 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d:G729ComponentThread \n",__LINE__); 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d: Error Occurred in Codec Stop..\n",__LINE__); 159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsStopping = 0; 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nOpBuf = 0; 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->lcml_nIpBuf = 0; 164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->app_nBuf = 0; 165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->num_Op_Issued = 0; 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->num_Sent_Ip_Buff = 0; 167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->num_Reclaimed_Op_Buff = 0; 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bIsEOFSent = 0; 169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d:G729ComponentThread \n",__LINE__); 171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->curState != OMX_StateIdle) { 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d:G729AComponentThread \n",__LINE__); 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: Component Time Out !!!!!!!!!!!! \n",__LINE__); 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if (-1 == status) { 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_EPRINT ("%d :: Error in Select\n", __LINE__); 181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler ( 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle->pApplicationPrivate, 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError,OMX_ErrorInsufficientResources,0, 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "Error from COmponent Thread in select"); 186b65f253fdc60f6208a54911bee793d225f23cdf8James Dong eError = OMX_ErrorInsufficientResources; 187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if ((FD_ISSET (pComponentPrivate->dataPipe[0], &rfds))){ 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: DATA pipe is set in Component Thread\n",__LINE__); 191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ret = read(pComponentPrivate->dataPipe[0], &pBufHeader, sizeof(pBufHeader)); 192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (ret == -1) { 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: Error while reading from the pipe\n",__LINE__); 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = G729DECHandleDataBuf_FromApp (pBufHeader,pComponentPrivate); 196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: Error From G729DECHandleDataBuf_FromApp\n", __LINE__); 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (FD_ISSET (pComponentPrivate->cmdPipe[0], &rfds)) { 203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Do not accept any command when the component is stopping */ 204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("%d :: CMD pipe is set in Component Thread\n",__LINE__); 205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRet = G729DECHandleCommand (pComponentPrivate); 206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nRet == EXIT_COMPONENT_THRD) { 207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT ("Exiting from Component thread\n"); 208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_CleanupInitParams(pHandle); 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: Function G729Dec_FreeCompResources returned\ 211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error\n",__LINE__); 212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d :: ARM Side Resources Have Been Freed\n",__LINE__); 215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->curState = OMX_StateLoaded; 216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pComponentPrivate->bPreempted == 0) { 217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventCmdComplete, 220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorNone,pComponentPrivate->curState, NULL); 221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->cbInfo.EventHandler( 224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle, pHandle->pApplicationPrivate, 225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EventError, 226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ErrorResourcesLost,pComponentPrivate->curState, NULL); 227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponentPrivate->bPreempted = 0; 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G729DEC_DPRINT("%d::Exiting ComponentThread\n",__LINE__); 236b65f253fdc60f6208a54911bee793d225f23cdf8James Dong return (void*)eError; 237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 238