1b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 3b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Copyright 2001-2008 Texas Instruments - http://www.ti.com/ 4b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 5b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Licensed under the Apache License, Version 2.0 (the "License"); 6b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * you may not use this file except in compliance with the License. 7b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * You may obtain a copy of the License at 8b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 9b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * http://www.apache.org/licenses/LICENSE-2.0 10b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 11b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Unless required by applicable law or agreed to in writing, software 12b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * distributed under the License is distributed on an "AS IS" BASIS, 13b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * See the License for the specific language governing permissions and 15b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * limitations under the License. 16b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 17b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ 18b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Texas Instruments OMAP(TM) Platform Software 19b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 20b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 21b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Use of this software is controlled by the terms and conditions found 22b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * in the license agreement under which this software has been supplied. 23b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ================================================================================ */ 24b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 25b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @file G722EncTest.c 26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This File contains the G722 ENCODER OMX tests 28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @path $(OMAPSW_MPU)\linux\audio\src\openmax_il\g722_enc\tests 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @rev 0.1 32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----------------------------------------------------------------------------- 34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Revision History 36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! =================================== 37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Date Author(s) Version Description 38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! --------- ------------------- ------- --------------------------------- 39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 08-Mar-2007 A.Donjon 0.1 Code update for G722 ENCODER 40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 21-Mar-2007 A.Donjon 0.2 Test fwk change for pause and stop cmd 41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ================================================================================= */ 44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*define OMX_GETTIME*/ 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef WAITFORRESOURCES 47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h> 50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h> 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/ioctl.h> 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h> 53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h> 54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h> 55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h> 56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <errno.h> 57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/vt.h> 58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <signal.h> 59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/stat.h> 60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h> 61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h> 62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/soundcard.h> 63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Index.h> 65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Types.h> 66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Core.h> 67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Audio.h> 68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <TIDspOmx.h> 69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h> 70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Common_Utils.h> 74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_GetTime.h> /*Headers for Performance & measuremet */ 75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinFILE *fpRes = NULL; 78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinFILE *outputDebugFile = NULL; 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinFILE *fOut= NULL, *fIn = NULL; 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_DEBUG 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_MEMCHECK 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define USE_BUFFER 84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUG 86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_DPRINT(...) fprintf(stderr,__VA_ARGS__) 87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_DPRINT(...) 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_MEMCHECK 92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_MEMPRINT(...) fprintf(stderr,__VA_ARGS__) 93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_MEMPRINT(...) 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_NUM_INPUT_BUFFERS 1 /*Component default number of input buffers*/ 98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_NUM_OUTPUT_BUFFERS 1 /*Component default number of output buffers*/ 99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_MIN_INPUT_BUFFER_SIZE 16 /*G722ENC minimum input buffer size in bytes*/ 100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_MAX_INPUT_BUFFER_SIZE 320 /*G722ENC maximum input buffer size in bytes*/ 101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_MIN_OUTPUT_BUFFER_SIZE 4 /*G722ENC minimum output buffer size in bytes*/ 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_MAX_OUTPUT_BUFFER_SIZE 80 /*G722ENC maximum output buffer size in bytes*/ 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SAMPLING_RATE 16000 104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SAMPLE_SIZE 16 105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_CACHE_ALIGN_MALLOC 256 106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722ENC_CACHE_ALIGN_OFFSET 128 107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define strG722Encoder "OMX.TI.G722.encode" 108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO1 "/dev/fifo.1" 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO2 "/dev/fifo.2" 110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE eError = OMX_ErrorNone; 113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint GT_FlagE = 0; /* Fill Buffer 1 = First Buffer, 0 = Not First Buffer */ 114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint GT_FlagF = 0; /*Empty Buffer 1 = First Buffer, 0 = Not First Buffer */ 115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_NODE* pListHead = NULL; 116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint Gt_k = 0 ; 117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint maxint(int a, int b); 120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint fill_data (OMX_BUFFERHEADERTYPE *pBuf, FILE *fIn); 122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint IpBuf_Pipe[2] = {0}; 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OpBuf_Pipe[2] = {0}; 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint Event_Pipe[2] = {0}; 127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint lastbuffer=0; 128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint nbInCbPending=0; 129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer (OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn); 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinfd_set rfds; 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint done = 0; 134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint whileloopdone = 0; 135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint preempted = 0; 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* safe routine to get the maximum of 2 integers */ 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint maxint(int a, int b) 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return (a>b) ? a : b; 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* This method will wait for the component to get to the state 146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * specified by the DesiredState input. */ 147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE WaitForState(OMX_HANDLETYPE* pHandle, 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE DesiredState) 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE CurState = OMX_StateInvalid; 151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nCnt = 0; 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle;*/ 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetState(pHandle, &CurState); 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while( (eError == OMX_ErrorNone) && (CurState != DesiredState) ) { 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sched_yield(); 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nCnt++ == 10) { 159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Still Waiting, press CTL-C to continue\n"); 160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetState(pHandle, &CurState); 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( eError != OMX_ErrorNone ) return eError; 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return OMX_ErrorNone; 167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn EventHandler() description for SendCommand 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EventHandler(). 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin App event handler 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_Core.h 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE EventHandler(OMX_HANDLETYPE hComponent,OMX_PTR pAppData,OMX_EVENTTYPE eEvent, 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nData1, OMX_U32 nData2, OMX_PTR pEventData) 181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 writeValue = 0; 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch (eEvent) 186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventCmdComplete: 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* State change notification. Do Nothing */ 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventError: 191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Error notification */ 192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nData1==OMX_ErrorOverflow){ 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("EventHandler: Overflow Error\n"); 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(hComponent,OMX_CommandStateSet, OMX_StateIdle, NULL); 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone){ 199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__); 200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(hComponent, OMX_StateIdle); 203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G722Encoder->WaitForState reports an error %X\n", error); 208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }else if(nData1 == OMX_ErrorResourcesPreempted) { 211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin writeValue = 0; 212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin preempted = 1; 213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(Event_Pipe[1], &writeValue, sizeof(OMX_U8)); 214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventMax: 217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventMark: 218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventPortSettingsChanged: 219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventComponentResumed: 220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventDynamicResourcesAvailable: 221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventPortFormatDetected: 222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventBufferFlag: 223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin writeValue = 2; 224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(Event_Pipe[1], &writeValue, sizeof(OMX_U8)); 225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventResourcesAcquired: 227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin writeValue = 1; 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin preempted = 0; 229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(Event_Pipe[1], &writeValue, sizeof(OMX_U8)); 230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } /* end of switch */ 233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT: 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return OMX_ErrorNone; 235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn FillBufferDone() description for FillBufferDone 241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FillBufferDone(). 242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Called by the component when an output buffer has been filled 243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_Core.h 245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid FillBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer) 248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(OpBuf_Pipe[1], &pBuffer, sizeof(pBuffer)); 250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (GT_FlagF == 1 ) /* First Buffer Reply*/ /* 1 = First Buffer, 0 = Not First Buffer */ 252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to FillBufferDone <First: FillBufferDone>"); 254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagF = 0 ; /* 1 = First Buffer, 0 = Not First Buffer */ 255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn EmptyBufferDone() description for EmptyBufferDone 263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EmptyBufferDone(). 264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Called by the component when an input buffer has been emptied 265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_Core.h 267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid EmptyBufferDone(OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer) 270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!preempted) 272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(IpBuf_Pipe[1], &pBuffer, sizeof(pBuffer)); 273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (GT_FlagE == 1 ) /* First Buffer Reply*/ /* 1 = First Buffer, 0 = Not First Buffer */ 275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to EmptyBufferDone <First: EmptyBufferDone>"); 277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagE = 0; /* 1 = First Buffer, 0 = Not First Buffer */ 278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn main() description for main 285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin main(). 286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Test app main function 287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_Core.h 289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint main(int argc, char* argv[]) 292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CALLBACKTYPE PcmCaBa = {(void *)EventHandler, 294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (void*)EmptyBufferDone, 295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (void*)FillBufferDone}; 296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pHandle = NULL; 297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 AppData = 100; 299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct = NULL; 300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_ADPCMTYPE *pG722Param = NULL; 301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = NULL; 302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_CONFIG_VOLUMETYPE* pCompPrivateStructGain = NULL; 303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*OMX_STATETYPE state;*/ 304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pInputBufferHeader = NULL; 305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pOutputBufferHeader = NULL; 306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_DATAPATH dataPath; 307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER 309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pInputBuffer = NULL; 310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pOutputBuffer = NULL; 311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_DSP_DEFINITION *pAppPrivate = NULL; 313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int inBufSize = 0; 314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int outBufSize = 0; 315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S16 numOutputBuffers = 0; 316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S16 numInputBuffers = 0; 317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_STREAM_INFO *streaminfo = NULL; 318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE index = 0; 319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE testAppState = OMX_StateInvalid; 320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct timeval tv; 322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int retval = 0, i = 0, j = 0; 323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int frmCount = 0; 324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int frmCount1 = 0; 325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int frmCnt = 1; 326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int testcnt = 1; 327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int testcnt1 = 1; 328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nbDASFframes = 0; 329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int fdmax = 0; 330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int testCaseNo = 0; 331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int g722encfdwrite = 0; 333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int g722encfdread = 0; 334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin streaminfo = malloc(sizeof(TI_OMX_STREAM_INFO)); 337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pAppPrivate = malloc(sizeof(TI_OMX_DSP_DEFINITION)); 338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("------------------------------------------------------\n"); 340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("This is Main Thread In G722 ENCODER Test Application:\n"); 341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Test Core 1.5 - " __DATE__ ":" __TIME__ "\n"); 342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("------------------------------------------------------\n"); 343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Line %d\n",__LINE__); 345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GTeError = OMX_ListCreate(&pListHead); 346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Line %d\n",__LINE__); 347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("eError = %d\n",GTeError); 348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Line %d\n",__LINE__); 350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((g722encfdwrite=open(FIFO1,O_WRONLY))<0) { 353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("[G722TEST] - failure to open WRITE pipe\n"); 354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("[G722TEST] - opened WRITE pipe\n"); 357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((g722encfdread=open(FIFO2,O_RDONLY))<0) { 360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("[G722TEST] - failure to open READ pipe\n"); 361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("[G722TEST] - opened READ pipe\n"); 365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("File = %s, Function = %s, Line = %d\n",__FILE__,__FUNCTION__,__LINE__); 369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((argc != 11)) { 370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf(" =========================================== \n"); 371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Usage: TestApp inFile outFile TestCaseNo nbInSamp nbOutSamp opMode nbInBuf nbOutBuf DASF nbFramesToEncode\n"); 372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Example: G722EncTest speeche.pcm output.bit 1 160 40 0 1 1 1 1000\n"); 373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("opMode: 0=64kps 1=56kbps 2=48kbps\n"); 374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("DASF mode: 1=DASF 0=file-to-file mode\n"); 375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("nbFramesToEncode: number of frames to encode in DASF mode\n"); 376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* check to see that the input file exists */ 380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct stat sb = {0}; 381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int status = stat(argv[1], &sb); 382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( status != 0 ) { 383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Cannot find file %s. (%u)\n", argv[1], errno); 384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = TIOMX_Init(); 388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by TIOMX_Init()\n",__LINE__); 390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin inBufSize = atoi(argv[4])<<1; 394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin outBufSize = atoi(argv[5])<<1; 395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin numInputBuffers = atoi(argv[7]); 397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin numOutputBuffers = atoi(argv[8]); 398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nbDASFframes = atoi(argv[10]); 400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (atoi(argv[3]) > 0 && atoi(argv[3]) < 7) { 401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch (atoi(argv[3])) { 402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 1: 403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("Testing Simple RECORD till EOF or predefined frame number\n"); 405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 2: 408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("Testing RECORD and STOP at predefined frame number\n"); 410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testCaseNo = 2; 412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 3: 414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("Testing PAUSE & RESUME Command \n"); 416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testCaseNo = 3; 418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 4: 420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("Testing Repeated RECORD without Deleting Component\n"); 422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 15; 424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 5: 426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("Testing Repeated RECORD with Deleting Component \n"); 428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 15; 430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 6: 432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("Testing Set Volume for record stream \n"); 434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("--------------------------------------------------\n"); 435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Bad parameter for test case\n"); 440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(j = 0; j < testcnt1; j++) { 444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin whileloopdone = 0; 445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Create the handle of the G722 Encoder Component */ 446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*pHandle = malloc(sizeof(OMX_HANDLETYPE));*/ 447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pHandle); 448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = TIOMX_GetHandle(&pHandle, strG722Encoder, &AppData, &PcmCaBa); 451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to GetHandle"); 452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = TIOMX_GetHandle(&pHandle, strG722Encoder, &AppData, &PcmCaBa); 454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((error != OMX_ErrorNone) || (pHandle == NULL)) { 456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("Error in Get Handle function\n"); 457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Create a pipe used to queue data from the callback. */ 461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pipe(IpBuf_Pipe); 462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( retval != 0) { 463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error:Fill Data Pipe failed to open\n"); 464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pipe(OpBuf_Pipe); 467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( retval != 0) { 468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error:Empty Data Pipe failed to open\n"); 469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pipe(Event_Pipe); 472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( retval != 0) { 473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error:Empty Data Pipe failed to open\n"); 474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* save off the "max" of the handles for the selct statement */ 478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = maxint(IpBuf_Pipe[0], OpBuf_Pipe[0]); 479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = maxint(fdmax,Event_Pipe[0]); 480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (atoi(argv[3]) == 5){ 482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("%d :: Encoding the file [%d] Time\n",__LINE__, j+1); 483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (atoi(argv[9]) == 0 || atoi(argv[9]) == 1) { 487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pAppPrivate->dasfMode = atoi(argv[9]); 488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Bad value for DASF mode\n"); 491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* add to config TeeDN */ 494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pAppPrivate->teeMode = 0; 495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct = malloc (sizeof (OMX_PARAM_PORTDEFINITIONTYPE)); 496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pCompPrivateStruct); 497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE); 498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMajor = 1; 499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMinor = 1; 500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nPortIndex = OMX_DirInput; 501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_GetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct); 502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Send input port config */ 504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->eDir = OMX_DirInput; 505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bEnabled = OMX_TRUE; 506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountMin = G722ENC_NUM_INPUT_BUFFERS; 507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferSize = inBufSize; 508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.eEncoding = OMX_AUDIO_CodingADPCM; 509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nPortIndex = 0x0; 510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountActual = G722ENC_NUM_INPUT_BUFFERS; 511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bEnabled = OMX_TRUE; 512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition, pCompPrivateStruct); 515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition, pCompPrivateStruct); 518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: OMX_ErrorBadParameter\n",__LINE__); 522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Send output port config */ 526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nPortIndex = OMX_DirOutput; 527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->eDir = OMX_DirOutput; 528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bEnabled = OMX_TRUE; 529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountMin = G722ENC_NUM_OUTPUT_BUFFERS; 530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nPortIndex = 0x1; 531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountActual = G722ENC_NUM_OUTPUT_BUFFERS; 532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bEnabled = OMX_TRUE; 533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferSize = outBufSize; 534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct); 537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct); 540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: OMX_ErrorBadParameter\n",__LINE__); 544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param = malloc (sizeof (OMX_AUDIO_PARAM_ADPCMTYPE)); 548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pG722Param); 549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param->nSize = sizeof (OMX_AUDIO_PARAM_ADPCMTYPE); 550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param->nVersion.s.nVersionMajor = 1; 551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param->nVersion.s.nVersionMinor = 1; 552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param->nPortIndex = OMX_DirOutput; 553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param->nChannels = 1; 554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Codec rate selection */ 555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param->nSampleRate = atoi(argv[6]); 556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((atoi(argv[6])<0)||(atoi(argv[6])>2)){ 557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error in input arguments\n"); 558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("opMode: 0=64kps 1=56kbps 2=48kbps\n"); 559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("opMode set to 64kbps\n"); 560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param->nSampleRate = 0; 561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param->nBitsPerSample = SAMPLE_SIZE; 563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter (pHandle, OMX_IndexParamAudioAdpcm, pG722Param); 566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter (pHandle, OMX_IndexParamAudioAdpcm, pG722Param); 569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: OMX_ErrorBadParameter\n",__LINE__); 573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param->nPortIndex = OMX_DirInput; 577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param->nSampleRate = SAMPLING_RATE; 578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter (pHandle, OMX_IndexParamAudioAdpcm, pG722Param); 581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter (pHandle, OMX_IndexParamAudioAdpcm, pG722Param); 584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: OMX_ErrorBadParameter\n",__LINE__); 588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* setting for stream gain */ 592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain = malloc (sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE)); 593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompPrivateStructGain == NULL) 594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Malloc Failed\n",__LINE__); 596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* default setting for gain */ 599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->nSize = sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE); 600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->nVersion.s.nVersionMajor = 0xF1; 601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->nVersion.s.nVersionMinor = 0xF2; 602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->nPortIndex = OMX_DirOutput; 603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->bLinear = OMX_FALSE; 604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->sVolume.nValue = 50; /* actual volume */ 605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->sVolume.nMin = 0; /* min volume */ 606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->sVolume.nMax = 100; /* max volume */ 607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.g722headerinfo",&index); 609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error getting extension index\n"); 611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SetConfig(pHandle, index, pAppPrivate); 614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef USE_BUFFER 616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate input buffer */ 617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_AllocateBuffer(pHandle,&pInputBufferHeader,0,NULL,inBufSize); 618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__); 620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate output buffer */ 623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_AllocateBuffer(pHandle,&pOutputBufferHeader,1,NULL,outBufSize); 624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__); 626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer = (OMX_U8*)malloc(inBufSize+G722ENC_CACHE_ALIGN_MALLOC); 631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer = pInputBuffer+G722ENC_CACHE_ALIGN_OFFSET; 632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pInputBuffer); 633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate input buffer */ 634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_UseBuffer(pHandle,&pInputBufferHeader,0,NULL,inBufSize,pInputBuffer); 635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__); 637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer= (OMX_U8*)malloc (outBufSize+G722ENC_CACHE_ALIGN_MALLOC); 640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer = pOutputBuffer+G722ENC_CACHE_ALIGN_OFFSET; 641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pOutputBuffer); 642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate output buffer */ 643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_UseBuffer(pHandle,&pOutputBufferHeader,1,NULL,outBufSize,pOutputBuffer); 644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__); 646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* get streamID back to application */ 651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.g722streamIDinfo",&index); 652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error getting extension index\n"); 654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetConfig (pHandle, index, streaminfo); 658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: G722EncTest.c :: Error from OMX_GetConfig() function\n",__LINE__); 661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((write(g722encfdwrite, &cmd_data, sizeof(cmd_data)))<0) { 666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((read(g722encfdread, &cmd_data, sizeof(cmd_data)))<0) { 668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetConfig (pHandle, index, pAppPrivate); 673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error from OMX_SetConfig() function\n",__LINE__); 676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pAppPrivate->dasfMode) { 680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RTM_PATH 681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dataPath = DATAPATH_APPLICATION_RTMIXER; 682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef ETEEDN_PATH 685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dataPath = DATAPATH_APPLICATION; 686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.g722.datapath",&index); 690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error getting extension index\n"); 692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetConfig (pHandle, index, &dataPath); 695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL); 703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("Error from SendCommand-Idle(Init) State function - error = %d\n",error); 705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Wait for startup to complete */ 708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G722Encoder->WaitForState reports an error %X\n", error); 714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Gt_k = 0 ; 718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i = 0; i < testcnt; i++) { 720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin whileloopdone = 0; 721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCount1 = 0; 722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCount = 0; 723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nbInCbPending = 0; 724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fIn = fopen(argv[1], "r"); 726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(fIn == NULL) { 727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error: failed to open the file %s for readonly access\n", argv[1]); 728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fOut = fopen(argv[2], "w"); 732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(fOut == NULL) { 733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error: failed to create the output file \n"); 734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(atoi(argv[3]) == 4) { 738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("%d :: Encoding the file [%d] Time\n",__LINE__, i+1); 739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 0; 742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Sending OMX_StateExecuting Command\n",__LINE__); 744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL); 748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("Error from SendCommand-Executing State function\n"); 750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponent = (OMX_COMPONENTTYPE *)(pHandle); 753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateExecuting); 754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateExecuting>"); 756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: hAmrEncoder->WaitForState reports an error %X\n", error); 759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (Gt_k==0) 764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagE=1; /* 1 = First Buffer, 0 = Not First Buffer */ 766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); /* Fill Buffer */ 767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pAppPrivate->dasfMode == 0) { 770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin send_input_buffer(pHandle, pInputBufferHeader, fIn); 771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (Gt_k==0) 774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagF=1; /* 1 = First Buffer, 0 = Not First Buffer */ 776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); /* Fill Buffer */ 777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_FillThisBuffer(pComponent,pOutputBufferHeader); 780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_GetState (pHandle, &testAppState); 781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin Gt_k=1; 783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES 786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(1){ 787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while((error == OMX_ErrorNone) && (whileloopdone != 1)) { 788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while((error == OMX_ErrorNone) && (testAppState != OMX_StateIdle)) { 790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(1){ 791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ((testAppState == OMX_StateIdle)&&(nbInCbPending==0)) { 794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin whileloopdone = 1; 795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_ZERO(&rfds); 798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET(IpBuf_Pipe[0], &rfds); 799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET(OpBuf_Pipe[0], &rfds); 800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET(Event_Pipe[0], &rfds); 801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_sec = 1; 802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_usec = 0; 803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = select(fdmax+1, &rfds, NULL, NULL, &tv); 804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(retval == -1) { 805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin perror("select()"); 806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error \n",__LINE__); 807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(retval == 0) { 811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: BasicFn App Timeout !!!!!!!!!!! \n",__LINE__); 812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* === input buffer === */ 815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch (atoi(argv[3])){ 816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 1: /* simple record till EOF or predefined frame number */ 818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 4: /* repeated record without deleting component */ 819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 5: /* repeated record with deleting component */ 820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pAppPrivate->dasfMode == 0) { /* file-to-file mode */ 821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(FD_ISSET(IpBuf_Pipe[0], &rfds)){ 822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer = NULL; 823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer)); 824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nbInCbPending--; 825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCount++; 826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = send_input_buffer (pHandle, pBuffer, fIn); 827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error While reading input pipe\n",__LINE__); 829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ /* DASF mode */ 834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((frmCount1 == nbDASFframes) && (done == 0)){ 835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Sending Idle Command - Line %d\n",__LINE__); 836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL); 840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone){ 841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__); 842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G722Encoder->WaitForState reports an error %X\n",error); 850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Shutting down ---------- \n",__LINE__); 854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 2: /* Stop */ 860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pAppPrivate->dasfMode == 0) { /* file-to-file mode */ 861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(FD_ISSET(IpBuf_Pipe[0], &rfds)) { 862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(frmCount1 > 149) { 863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nbInCbPending--; 864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nbInCbPending == 0){ 865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Sending Idle Command - Line %d\n",__LINE__); 866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL); 870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__); 872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G722Encoder->WaitForState reports an error %X\n", error); 880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Shutting down ---------- \n",__LINE__); 884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer = NULL; 888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer)); 889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nbInCbPending--; 890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCount++; 891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = send_input_buffer (pHandle, pBuffer, fIn); 892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error While reading input pipe\n",__LINE__); 894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCnt++; 897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { /* DASF mode */ 901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(frmCount1 == 300) { 902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Sending Idle Command - Line %d\n",__LINE__); 903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL); 907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__); 909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G722Encoder->WaitForState reports an error %X\n", error); 918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Shutting down ---------- \n",__LINE__); 921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 3: /* pause and resume */ 926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*if (frmCount == 320) { 927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Sending Resume command to Codec \n",__LINE__); 928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet,OMX_StateExecuting, NULL); 932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error from SendCommand-Executing State function\n",__LINE__); 934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Calling Wait For State Line %d\n",__LINE__); 937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateExecuting); 938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateExecuting>"); 940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("After Wait For State Line %d\n",__LINE__); 942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error: hPcmEncoder->WaitForState reports an error\n",__LINE__); 944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }*/ 947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(frmCount == 300) { 948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Sending Pause command to Codec \n",__LINE__); 949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StatePause, NULL); 953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error from SendCommand-Pasue State function\n",__LINE__); 955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Wait for state to complete */ 958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Calling Wait For State Line %d\n",__LINE__); 959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StatePause); 960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StatePause>"); 962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("After Wait For State Line %d\n",__LINE__); 964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error: hPcmEncoder->WaitForState reports an error\n", __LINE__); 966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin puts("Sleeping for 3 secs..."); 970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep(3); 971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin puts("Resuming..."); 972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet,OMX_StateExecuting, NULL); 973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error from SendCommand-Executing State function\n",__LINE__); 975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Calling Wait For State Line %d\n",__LINE__); 978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateExecuting); 979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateExecuting>"); 981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("After Wait For State Line %d\n",__LINE__); 983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error: hPcmEncoder->WaitForState reports an error\n",__LINE__); 985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pAppPrivate->dasfMode == 0) { /* file-to-file mode */ 989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(FD_ISSET(IpBuf_Pipe[0], &rfds)) { 990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer = NULL; 991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer)); 992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nbInCbPending--; 993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCount++; 994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = send_input_buffer (pHandle, pBuffer, fIn); 995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error While reading input pipe\n",__LINE__); 997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCnt++; 1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { /* DASF mode */ 1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(frmCount1 == nbDASFframes) { 1004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Sending Idle Command - Line %d\n",__LINE__); 1005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 1006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL); 1009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__); 1011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 1016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G722Encoder->WaitForState reports an error %X\n", error); 1020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Shutting down ---------- \n",__LINE__); 1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 6: /* Set Volume */ 1028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pAppPrivate->dasfMode == 0){ /* file-to-file mode */ 1029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: This test is not applied to file mode\n",__LINE__); 1030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ /* DASF mode */ 1033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(frmCount1 == 500){ 1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* set high gain for record stream */ 1035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("[G722 encoder] --- will set stream gain to high\n"); 1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->sVolume.nValue = 0x8000; 1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructGain); 1038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) 1039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(frmCount1 == 800){ 1045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* set low gain for record stream */ 1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("[G722 encoder] --- will set stream gain to low\n"); 1047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->sVolume.nValue = 0x1000; 1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructGain); 1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) 1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(frmCount1 == nbDASFframes) { 1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("frmCount1 == nbDASFFrames\n\n"); 1059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Sending Idle Command - Line %d\n",__LINE__); 1060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 1061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL); 1064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error from SendCommand-Idle(Stop) State function\n",__LINE__); 1066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 1070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 1071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G722Encoder->WaitForState reports an error %X\n", error); 1075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Shutting down ---------- \n",__LINE__); 1078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 1084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: ### Running Simple DEFAULT Case Here ###\n",__LINE__); 1085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* === output buffer === */ 1088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(FD_ISSET(OpBuf_Pipe[0], &rfds)) { 1089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuf = NULL; 1090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(OpBuf_Pipe[0], &pBuf, sizeof(pBuf)); 1091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pBuf->nAllocLen != pBuf->nFilledLen) { 1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: WARNING: Different Size, %ld\n", __LINE__, pBuf->nFilledLen); 1094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fwrite(pBuf->pBuffer, 1, pBuf->nFilledLen, fOut); 1097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fflush(fOut); 1098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCount1++; 1100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_FillThisBuffer(pHandle, pBuf); 1101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( FD_ISSET(Event_Pipe[0], &rfds) ) { 1105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 pipeContents; 1106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*OMX_BUFFERHEADERTYPE* pBuffer;*/ 1107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(Event_Pipe[0], &pipeContents, sizeof(OMX_U8)); 1109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pipeContents == 0) { 1111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Test app received OMX_ErrorResourcesPreempted\n"); 1112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState(pHandle,OMX_StateIdle); 1113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_FreeBuffer(pHandle,OMX_DirInput,pInputBufferHeader); 1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( (error != OMX_ErrorNone)) { 1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__); 1116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_FreeBuffer(pHandle,OMX_DirOutput,pOutputBufferHeader); 1119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( (error != OMX_ErrorNone)) { 1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__); 1121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER 1124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* free the App Allocated Buffers */ 1125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer = pInputBuffer-G722ENC_CACHE_ALIGN_OFFSET; 1126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer = pOutputBuffer-G722ENC_CACHE_ALIGN_OFFSET; 1127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pOutputBuffer); 1128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pInputBuffer); 1129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer = NULL; 1130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer = NULL; 1131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateLoaded,NULL); 1133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState(pHandle,OMX_StateLoaded); 1134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateWaitForResources,NULL); 1135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState(pHandle,OMX_StateWaitForResources); 1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pipeContents == 1) { 1138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES 1139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Test app received OMX_ErrorResourcesAcquired\n"); 1140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateIdle,NULL); 1141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate input buffer */ 1142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_AllocateBuffer(pHandle,&pInputBufferHeader,0,NULL,inBufSize); 1143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__); 1145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState(pHandle,OMX_StateIdle); 1149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateExecuting,NULL); 1150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState(pHandle,OMX_StateExecuting); 1151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin rewind(fIn); 1152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin send_input_buffer (pHandle, pBuffer, fIn); 1153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pipeContents == 2) { 1156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Send component to Idle */ 1158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL); 1159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState(pHandle, OMX_StateIdle); 1160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES 1162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_FreeBuffer(pHandle,OMX_DirInput,pInputBufferHeader); 1163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( (error != OMX_ErrorNone)) { 1164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__); 1165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_FreeBuffer(pHandle,OMX_DirOutput,pOutputBufferHeader); 1168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( (error != OMX_ErrorNone)) { 1169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__); 1170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER 1173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* free the App Allocated Buffers */ 1174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer = pInputBuffer-G722ENC_CACHE_ALIGN_OFFSET; 1175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer = pOutputBuffer-G722ENC_CACHE_ALIGN_OFFSET; 1176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pOutputBuffer); 1177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pInputBuffer); 1178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer = NULL; 1179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer = NULL; 1180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL); 1183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d Error from SendCommand-Idle State function\n",__LINE__); 1185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("goto EXIT %d\n",__LINE__); 1186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateLoaded); 1189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateLoaded>"); 1191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d Error: WaitForState reports an error %X\n",__LINE__, error); 1194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("goto EXIT %d\n",__LINE__); 1195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto SHUTDOWN; 1198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*if(done == 1) { 1203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Calling GetState Line %d\n",__LINE__); 1204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetState(pHandle, &state); 1205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Warning: OMX_GetState has returned status %X\n", __LINE__, error); 1207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }*/ 1210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_GetState (pHandle, &testAppState); 1212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (preempted){ 1215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sched_yield(); 1216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 1218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto SHUTDOWN; 1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } /* While Loop Ending Here */ 1221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: The current state of the component = %d \n",__LINE__,state); 1223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fclose(fOut); 1224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fclose(fIn); 1225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fOut = NULL; 1226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fIn = NULL; 1227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCnt = 1; 1228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((atoi(argv[3]) == 4) || (atoi(argv[3]) == 5)) { 1230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Pause 6 seconds\n"); 1231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*sleep (6);*/ 1232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep (0); 1235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } /*Inner for loop ends here */ 1237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef WAITFORRESOURCES 1239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* free buffers */ 1240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_FreeBuffer(pHandle,OMX_DirInput,pInputBufferHeader); 1241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( (error != OMX_ErrorNone)) { 1242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__); 1243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_FreeBuffer(pHandle,OMX_DirOutput,pOutputBufferHeader); 1246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( (error != OMX_ErrorNone)) { 1247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__); 1248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER 1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* free the App Allocated Buffers */ 1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer = pInputBuffer-G722ENC_CACHE_ALIGN_OFFSET; 1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer = pOutputBuffer-G722ENC_CACHE_ALIGN_OFFSET; 1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pOutputBuffer); 1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pInputBuffer); 1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer = NULL; 1257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer = NULL; 1258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Sending the OMX_StateLoaded Command\n",__LINE__); 1261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL); 1265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Sent the OMX_StateLoaded Command\n",__LINE__); 1266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateLoaded); 1267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateLoaded>"); 1269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES 1272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateWaitForResources, NULL); 1273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d Error from SendCommand-Idle State function\n",__LINE__); 1275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("goto EXIT %d\n",__LINE__); 1276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateWaitForResources); 1279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* temporarily put this here until I figure out what should really happen here */ 1281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep(10); 1282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* temporarily put this here until I figure out what should really happen here */ 1283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Free the Component handle\n",__LINE__); 1287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinSHUTDOWN: 1288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Unload the G722 Encoder Component */ 1289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = TIOMX_FreeHandle(pHandle); 1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((error != OMX_ErrorNone)) { 1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error in Free Handle function\n",__LINE__); 1292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Free Handle returned Successfully \n",__LINE__); 1295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pCompPrivateStruct); 1297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompPrivateStructGain != NULL) { 1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pCompPrivateStructGain); 1299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain = NULL; 1300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pCompPrivateStruct); 1302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct = NULL; 1303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pG722Param); 1304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG722Param = NULL; 1305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(IpBuf_Pipe[0]); 1308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(IpBuf_Pipe[1]); 1309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(OpBuf_Pipe[0]); 1310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(OpBuf_Pipe[1]); 1311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(Event_Pipe[0]); 1312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(Event_Pipe[1]); 1313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } /*Outer for loop ends here */ 1314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 1318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((write(g722encfdwrite, &cmd_data, sizeof(cmd_data)))<0) 1319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d ::- send command to audio manager\n",__LINE__); 1320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(g722encfdwrite); 1322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(g722encfdread); 1323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(streaminfo){ 1325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(streaminfo); 1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin streaminfo = NULL; 1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(pAppPrivate); 1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pAppPrivate = NULL; 1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("G722_ENC test <End>"); 1333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ListDestroy(pListHead); 1334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return error; 1336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 1340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @fn send_input_buffer() description for send_input_buffer 1342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinsend_input_buffer(). 1343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinSends input buffer to component 1344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*/ 1346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 1347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer(OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn) 1348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle;*/ 1351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nRead = fill_data (pBuffer, fIn); 1352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((nRead == 0) && (done == 0)){ 1353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFlags = OMX_BUFFERFLAG_EOS; 1355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = nRead; 1356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EmptyThisBuffer(pHandle, pBuffer); 1358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nbInCbPending++; 1359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(done==0){ 1362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFlags = 0; 1363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = nRead; 1364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!preempted){ 1365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EmptyThisBuffer(pHandle, pBuffer); 1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nbInCbPending++; 1367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return error; 1371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= */ 1374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 1375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @fn fill_data() description for fill_data 1376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinfill_data(). 1377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinFills input buffer 1378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 1379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*/ 1380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ */ 1381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint fill_data (OMX_BUFFERHEADERTYPE *pBuf,FILE *fIn) 1382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nRead = 0; 1384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin static int totalRead = 0; 1385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(pBuf->pBuffer, 1, pBuf->nAllocLen , fIn); 1387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin totalRead += nRead; 1388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuf->nFilledLen = nRead; 1389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return nRead; 1390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1391