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 G726Enc_Test.c 26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* This file implements G726 Encoder Component Test Application to verify 28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* which is fully compliant with the Khronos OpenMAX (TM) 1.0 Specification 29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @path $(CSLPATH)\OMAPSW_MPU\linux\audio\src\openmax_il\g726_enc\tests 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @rev 1.0 33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*/ 34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ---------------------------------------------------------------------------- 35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! 36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! Revision History 37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! =================================== 38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! Gyancarlo Garcia: Initial Verision 39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! 05-Oct-2007 40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! 41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* =========================================================================== */ 42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ------compilation control switches -------------------------*/ 43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**************************************************************** 44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* INCLUDE FILES 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin****************************************************************/ 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----- system and platform files ----------------------------*/ 47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h> 49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/ioctl.h> 50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h> 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <errno.h> 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/vt.h> 53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <signal.h> 54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/stat.h> 55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h> 56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/soundcard.h> 57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h> 59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h> 60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h> 61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h> 62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Index.h> 64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Types.h> 65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Core.h> 66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Audio.h> 67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <TIDspOmx.h> 68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h> 70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <time.h> 71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #include <OMX_Common_Utils.h> 73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #include <OMX_GetTime.h> /*Headers for Performance & measuremet */ 74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint preempted=0; 76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef WAITFORRESOURCES 78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define MAX_CYCLES 20 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef FLUSHINPAUSE 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinFILE *fpRes = NULL; 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def G726ENC_INPUT_BUFFER_SIZE Default input buffer size 86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726ENC_INPUT_BUFFER_SIZE 16 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*16 = 8 input samples of 2 bytes each*/ 90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def G726ENC_INPUT_BUFFER_SIZE_DASF Default input buffer size for DASF tests 93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726ENC_INPUT_BUFFER_SIZE_DASF 80 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def G726ENC_OUTPUT_BUFFER_SIZE Default output buffer size 100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726ENC_OUTPUT_BUFFER_SIZE 60 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*60 was choseen since is multiple of 2,3,4 and 5, that are the 104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin smallest frame size for 16kps, 24kbps, 32kbps and 40kbps respectively, 105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin so the same outputSize can be used for all the bitrates*/ 106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def G726ENC_APP_ID App ID Value setting 110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726ENC_APP_ID 100 113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define HALF_FRAME 1 115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define TWO_FRAMES 2 116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SLEEP_TIME 5 118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO1 "/dev/fifo.1" 120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO2 "/dev/fifo.2" 121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_DEBUG 122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_MEMCHECK 124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define USE_BUFFER*/ 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef USE_BUFFER 127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUG 129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #define APP_DPRINT(...) fprintf(stderr,__VA_ARGS__) 130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #define APP_DPRINT(...) 132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_MEMCHECK 135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #define APP_MEMPRINT(...) fprintf(stderr,__VA_ARGS__) 136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #define APP_MEMPRINT(...) 138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int GT_FlagE = 0; /* Fill Buffer 1 = First Buffer, 0 = Not First Buffer */ 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int GT_FlagF = 0; /*Empty Buffer 1 = First Buffer, 0 = Not First Buffer */ 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin static OMX_NODE* pListHead = NULL; 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def APP_DEBUGMEM Turns memory leaks messaging on and off. 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * NBAMRENC_DEBUGMEM must be defined in OMX Comp in order to get 151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * this functionality On. 152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_DEBUGMEM 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define APP_DEBUGMEM*/ 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUGMEM 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid *arr[500] = {NULL}; 159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint lines[500] = {0}; 160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint bytes[500] = {0}; 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinchar file[500][50] = {""}; 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint ind=0; 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SafeMalloc(x) DebugMalloc(__LINE__,__FILE__,x) 165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SafeFree(z) DebugFree(z,__LINE__,__FILE__) 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid * DebugMalloc(int line, char *s, int size) 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin void *p = NULL; 170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int e=0; 171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin p = calloc(1,size); 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(p==NULL){ 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("__ Memory not available\n"); 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin exit(1); 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while((lines[e]!=0)&& (e<500) ){ 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin e++; 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin arr[e]=p; 181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin lines[e]=line; 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bytes[e]=size; 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy(file[e],s); 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("__ Allocating %d bytes on address %p, line %d file %s\n", size, p, line, s); 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return p; 186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint DebugFree(void *dp, int line, char *s){ 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int q = 0; 191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(dp==NULL){ 192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("__ NULL can't be deleted\n"); 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return 0; 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(q=0;q<500;q++){ 196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(arr[q]==dp){ 197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("__ Deleting %d bytes on address %p, line %d file %s\n", bytes[q],dp, line, s); 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(dp); 199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dp = NULL; 200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin lines[q]=0; 201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin strcpy(file[q],""); 202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(500==q) 206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n\__ nPointer not found. Line:%d File%s!!\n\n",line, s); 207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SafeMalloc(x) calloc(1,x) 210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SafeFree(z) free(z) 211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * M A C R O S FOR MALLOC and MEMORY FREE and CLOSING PIPES 217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_NBAPP_CONF_INIT_STRUCT(_s_, _name_) \ 221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset((_s_), 0x0, sizeof(_name_)); \ 222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nSize = sizeof(_name_); \ 223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nVersionMajor = 0x1; \ 224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nVersionMinor = 0x0; \ 225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nRevision = 0x0; \ 226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nStep = 0x0 227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_NBAPP_INIT_STRUCT(_s_, _name_) \ 229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset((_s_), 0x0, sizeof(_name_)); \ 230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_NBAPP_MALLOC_STRUCT(_pStruct_, _sName_) \ 232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin _pStruct_ = (_sName_*)SafeMalloc(sizeof(_sName_)); \ 233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(_pStruct_ == NULL){ \ 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("***********************************\n"); \ 235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: Malloc Failed\n",__LINE__); \ 236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("***********************************\n"); \ 237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; \ 238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; \ 239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } \ 240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: ALLOCATING MEMORY = %p\n",__LINE__,_pStruct_); 241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def NBAPP_MAX_NUM_OF_BUFS Maximum number of buffers 246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def NBAPP_NUM_OF_CHANNELS Number of Channels 247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def NBAPP_SAMPLING_FREQUENCY Sampling frequency 248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NBAPP_MAX_NUM_OF_BUFS 10 251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NBAPP_NUM_OF_CHANNELS 1 252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NBAPP_SAMPLING_FREQUENCY 8000 253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct AUDIO_INFO { 255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 acdnMode; 256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 dasfMode; 257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nIpBufs; 258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nIpBufSize; 259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nOpBufs; 260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nOpBufSize; 261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nMFrameMode; 262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} AUDIO_INFO; 263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_BOOL bInvalidState; 265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE StopComponent(OMX_HANDLETYPE *pHandle); 267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE PauseComponent(OMX_HANDLETYPE *pHandle); 268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE PlayComponent(OMX_HANDLETYPE *pHandle); 269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer(OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn); 270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint maxint(int a, int b); 272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint inputPortDisabled = 0; 274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint outputPortDisabled = 0; 275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_STRING strG726Encoder = "OMX.TI.G726.encode"; 277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint IpBuf_Pipe[2] = {0}; 279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OpBuf_Pipe[2] = {0}; 280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint Event_Pipe[2] = {0}; 281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinfd_set rfds; 283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint done = 0; 284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint FirstTime = 1; 285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint mframe=0; 286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint nRead = 0; 287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint DasfMode =0; 288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinunsigned long int vez=0; 289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8 NextBuffer[G726ENC_INPUT_BUFFER_SIZE*3]; 291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 fdwrite = 0; 292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 fdread = 0; 293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinpthread_mutex_t WaitForState_mutex; 295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinpthread_cond_t WaitForState_threshold; 296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8 WaitForState_flag = 0; 297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8 TargetedState = 0; 298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* safe routine to get the maximum of 2 integers */ 300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint maxint(int a, int b) 301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return (a>b) ? a : b; 303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* This method will wait for the component to get to the state 306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * specified by the DesiredState input. */ 307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE WaitForState(OMX_HANDLETYPE* pHandle, 308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE DesiredState) 309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE CurState = OMX_StateInvalid; 311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle; 313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetState(pComponent, &CurState); 314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (CurState == OMX_StateInvalid && bInvalidState == OMX_TRUE) 315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInvalidState; 317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(CurState != DesiredState){ 319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState_flag = 1; 320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TargetedState = DesiredState; 321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&WaitForState_mutex); 322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_wait(&WaitForState_threshold, &WaitForState_mutex);/*Going to sleep till signal arrives*/ 323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&WaitForState_mutex); 324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE EventHandler( 329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE hComponent, 330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pAppData, 331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EVENTTYPE eEvent, 332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nData1, 333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nData2, 334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pEventData) 335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Entering EventHandler \n", __LINE__); 337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)hComponent; 339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE state = OMX_StateInvalid; 340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 writeValue = 0; 341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetState(pComponent, &state); 343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Error returned from OMX_GetState\n",__LINE__); 345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component eEvent = %d\n", __LINE__,eEvent); 348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch (eEvent) { 349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component State Changed To %d\n", __LINE__,state); 350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventResourcesAcquired: 351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin writeValue = 1; 352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(Event_Pipe[1], &writeValue, sizeof(OMX_U8)); 353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin preempted=0; 354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventCmdComplete: 356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component State Changed To %d\n", __LINE__,state); 357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nData1 == OMX_CommandPortDisable) { 358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nData2 == OMX_DirInput) { 359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin inputPortDisabled = 1; 360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nData2 == OMX_DirOutput) { 362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin outputPortDisabled = 1; 363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ((nData1 == OMX_CommandStateSet) && (TargetedState == nData2) && (WaitForState_flag)){ 366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState_flag = 0; 367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&WaitForState_mutex); 368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&WaitForState_threshold);/*Sending Waking Up Signal*/ 369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&WaitForState_mutex); 370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nData1 == OMX_CommandFlush){ 372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nData2 == OMX_DirInput) { 373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("App: EventHandler - Flush completed on input port\n"); 374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (nData2 == OMX_DirOutput) { 376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("App: EventHandler - Flush completed on output port\n"); 377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventError: 381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nData1 == OMX_ErrorInvalidState) { 382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bInvalidState =OMX_TRUE; 383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(nData1 == OMX_ErrorResourcesPreempted) { 385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin preempted=1; 386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin writeValue = 0; 388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(Event_Pipe[1], &writeValue, sizeof(OMX_U8)); 389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (nData1 == OMX_ErrorResourcesLost) { 391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState_flag = 0; 392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_lock(&WaitForState_mutex); 393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_signal(&WaitForState_threshold);/*Sending Waking Up Signal*/ 394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_unlock(&WaitForState_mutex); 395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventMax: 398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component OMX_EventMax = %d\n", __LINE__,eEvent); 399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventMark: 401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component OMX_EventMark = %d\n", __LINE__,eEvent); 402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventPortSettingsChanged: 404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component OMX_EventPortSettingsChanged = %d\n", __LINE__,eEvent); 405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventBufferFlag: 407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Component OMX_EventBufferFlag = %d\n", __LINE__,eEvent); 408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES 409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin writeValue = 2; 410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(Event_Pipe[1], &writeValue, sizeof(OMX_U8)); 411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: App: Exiting EventHandler \n", __LINE__); 419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid FillBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer) 423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(OpBuf_Pipe[1], &pBuffer, sizeof(pBuffer)); 425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (GT_FlagF == 1 ) /* First Buffer Reply*/ /* 1 = First Buffer, 0 = Not First Buffer */ 427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to FillBufferDone <First: FillBufferDone>"); 429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagF = 0 ; /* 1 = First Buffer, 0 = Not First Buffer */ 430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid EmptyBufferDone(OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer) 435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!preempted) 437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(IpBuf_Pipe[1], &pBuffer, sizeof(pBuffer)); 438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (GT_FlagE == 1 ) /* First Buffer Reply*/ /* 1 = First Buffer, 0 = Not First Buffer */ 440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to EmptyBufferDone <First: EmptyBufferDone>"); 442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagE = 0; /* 1 = First Buffer, 0 = Not First Buffer */ 443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint main(int argc, char* argv[]) 448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CALLBACKTYPE G726CaBa = {(void *)EventHandler, 450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (void*)EmptyBufferDone, 451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (void*)FillBufferDone}; 452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pHandle; 453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 AppData = G726ENC_APP_ID; 455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct = NULL; 456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_G726TYPE *pG726Param = NULL; 457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = NULL; 459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE state = OMX_StateInvalid; 460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pInputBufferHeader[NBAPP_MAX_NUM_OF_BUFS] = {NULL}; 461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pOutputBufferHeader[NBAPP_MAX_NUM_OF_BUFS] = {NULL}; 462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER 463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pInputBuffer[NBAPP_MAX_NUM_OF_BUFS] = {NULL}; 464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pOutputBuffer[NBAPP_MAX_NUM_OF_BUFS] = {NULL}; 465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_DSP_DEFINITION* audioinfo = NULL; 467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FILE* fIn = NULL; 469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FILE* fOut = NULL; 470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct timeval tv; 471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int retval, i = 0, j = 0, k = 0, kk = 0, tcID = 0; 472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int frmCount = 0; 473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int frmCnt = 1; 474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int testcnt = 0; 475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int testcnt1 = 0; 476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int fdmax = 0; 477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nFrameCount = 1; 478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nFrameLen = 0; 479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nIpBuff = 1; 480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nOutBuff = 1; 481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE index = 0; 482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int status = 0; 483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int NoDataRead = 0; 484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int numInputBuffers=0,numOutputBuffers=0; 485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_CONFIG_VOLUMETYPE* pCompPrivateStructGain = NULL; 486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_DATAPATH dataPath; 487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TI_OMX_STREAM_INFO *streaminfo=NULL; 488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bInvalidState=OMX_FALSE; 490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_init(&WaitForState_mutex, NULL); 492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_init (&WaitForState_threshold, NULL); 493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState_flag = 0; 494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("------------------------------------------------------\n"); 496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("This is Main Thread In G726 ENCODER Test Application:\n"); 497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Test Core 1.5 - " __DATE__ ":" __TIME__ "\n"); 498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("------------------------------------------------------\n"); 499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Line %d\n",__LINE__); 502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GTeError = OMX_ListCreate(&pListHead); 503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Line %d\n",__LINE__); 504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("eError = %d\n",GTeError); 505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Line %d\n",__LINE__); 507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* check the input parameters */ 510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(argc < 9) { 511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: Usage: [TestApp][Input File][Output File][FUNC_ID_X][FM/DM][ACDN_ON/ACDN_OFF][16/24/3240][# INPUT BUF][# OUTPUT BUF][# REP]\n",__LINE__); 512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* check to see that the input file exists */ 516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct stat sb = {0}; 517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = stat(argv[1], &sb); 518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( status != 0 ) { 519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Cannot find file %s (%u)\n", argv[1], errno); 520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Open the file of data to be encoded. */ 524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Input file is %s\n", __LINE__, argv[1]); 525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fIn = fopen(argv[1], "r"); 526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( fIn == NULL ) { 527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error: failed to open the input file %s\n", argv[1]); 528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Open the file of data to be written. */ 532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: g726 output file is %s\n", __LINE__, argv[2]); 533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fOut = fopen(argv[2], "w"); 534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( fOut == NULL ) { 535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error: failed to open the output file %s\n", argv[2]); 536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!strcmp(argv[3],"FUNC_ID_1")) { 540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### TESTCASE 1: Playing component till EOF ###\n",__LINE__); 541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 1; 544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if(!strcmp(argv[3],"FUNC_ID_2")) { 545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### TESTCASE 2: Stoping component at the middle of stream ###\n",__LINE__); 546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 2; 549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if(!strcmp(argv[3],"FUNC_ID_3")) { 550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### TESTCASE 3: Runing pause & resume test ###\n",__LINE__); 551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 3; 554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if(!strcmp(argv[3],"FUNC_ID_4")) { 555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### TESTCASE 4: Runing stop & resume test ###\n",__LINE__); 556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 2; 557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 4; 559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("######## testcnt = %d #########\n",testcnt); 560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!strcmp(argv[3],"FUNC_ID_5")){ 562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### TESTCASE 5: Repetitive Test without deleting the component ###\n",__LINE__); 563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (argc > 9) 564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = (int) atoi (argv[9]); 566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = MAX_CYCLES; 570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 5; 573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!strcmp(argv[3],"FUNC_ID_6")) { 576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### TESTCASE 6: Repetitive Test with Deleting the component ###\n",__LINE__); 577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (argc > 9) 579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = (int) atoi( argv[9]); 581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = MAX_CYCLES; 585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 6; 587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!strcmp(argv[3],"FUNC_ID_7")) { 590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### TESTCASE 7: Testing Component by sending 2 frames by buffer ###\n",__LINE__); 591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 1; 594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin mframe = TWO_FRAMES; 595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!strcmp(argv[3],"FUNC_ID_8")) { 598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### TESTCASE 8: Testing Component by sending 1/2 frame by buffer ###\n",__LINE__); 599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 1; 602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin mframe = HALF_FRAME; 603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!strcmp(argv[3],"FUNC_ID_9")) { 606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: ### TESTCASE 8: Runing Component with Volume Test ###\n",__LINE__); 607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt = 1; 608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin testcnt1 = 1; 609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 1; 610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(j = 0; j < testcnt1; j++) { 614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Create a pipe used to queue data from the callback. */ 616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pipe(IpBuf_Pipe); 617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( retval != 0) { 618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error:Fill Data Pipe failed to open\n"); 619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pipe(OpBuf_Pipe); 623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( retval != 0) { 624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error:Empty Data Pipe failed to open\n"); 625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pipe(Event_Pipe); 629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(retval != 0) { 630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error:Empty Event Pipe failed to open\n"); 631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* save off the "max" of the handles for the selct statement */ 634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = maxint(IpBuf_Pipe[0], OpBuf_Pipe[0]); 635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = maxint(fdmax,Event_Pipe[0]); 636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = TIOMX_Init(); 638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_Init()\n",__LINE__); 641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(j >= 1) { 645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("%d :: Encoding the file in TESTCASE 6\n",__LINE__); 646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fIn = fopen(argv[1], "r"); 647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( fIn == NULL ) { 648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error: failed to open the file %s for read only access\n",argv[1]); 649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fOut = fopen("TC6_G7261.G726", "w"); 653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( fOut == NULL ) { 654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error: failed to create the output file %s\n",argv[2]); 655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Load the G726 Encoder Component */ 660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = TIOMX_GetHandle(&pHandle, strG726Encoder, &AppData, &G726CaBa); 663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to GetHandle"); 664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #else 665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = TIOMX_GetHandle(&pHandle, strG726Encoder, &AppData, &G726CaBa); 666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError != OMX_ErrorNone) || (pHandle == NULL)) { 668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error in Get Handle function\n"); 669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error in Get Handle function\n"); 670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBAPP_MALLOC_STRUCT(audioinfo, TI_OMX_DSP_DEFINITION); 674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBAPP_INIT_STRUCT(audioinfo, TI_OMX_DSP_DEFINITION); 675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Setting Input and Output Buffers features for the Component */ 677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin numInputBuffers = atoi(argv[7]); 678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: number of input buffers = %d \n",__LINE__,numInputBuffers); 679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: input buffer size = %d \n",__LINE__,G726ENC_INPUT_BUFFER_SIZE); 680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin numOutputBuffers = atoi(argv[8]); 682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: number of output buffers = %d \n",__LINE__,numOutputBuffers); 683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: output buffer size = %d \n",__LINE__,G726ENC_OUTPUT_BUFFER_SIZE); 684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBAPP_MALLOC_STRUCT(pCompPrivateStruct, OMX_PARAM_PORTDEFINITIONTYPE); 686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBAPP_CONF_INIT_STRUCT(pCompPrivateStruct, OMX_PARAM_PORTDEFINITIONTYPE); 687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBAPP_MALLOC_STRUCT(pG726Param, OMX_AUDIO_PARAM_G726TYPE); 689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBAPP_CONF_INIT_STRUCT(pG726Param, OMX_AUDIO_PARAM_G726TYPE); 690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Setting input port config\n",__LINE__); 692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE); 693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMajor = 0xF1; 694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMinor = 0xF2; 695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nPortIndex = OMX_DirInput; 696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->eDir = OMX_DirInput; 697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountActual = numInputBuffers; 698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountMin = numInputBuffers; 699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferSize = G726ENC_INPUT_BUFFER_SIZE; 700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bEnabled = OMX_TRUE; 701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bPopulated = OMX_FALSE; 702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->eDomain = OMX_PortDomainAudio; 703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.eEncoding = OMX_AUDIO_CodingG726; 704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.pNativeRender = NULL; 705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.bFlagErrorConcealment = OMX_FALSE; /*Send input port config*/ 706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!(strcmp(argv[4],"FM"))) { 708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->dasfMode = 0; 709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: audioinfo->dasfMode = %ld \n",__LINE__,audioinfo->dasfMode); 710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if(!(strcmp(argv[4],"DM"))){ 711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->dasfMode = 1; 712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin DasfMode = 1; 713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: audioinfo->dasfMode = %ld \n",__LINE__,audioinfo->dasfMode); 714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: G726 ENCODER RUNNING UNDER DASF MODE \n",__LINE__); 715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountActual = 0; 716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferSize = G726ENC_INPUT_BUFFER_SIZE_DASF; 717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n%d :: App: audioinfo->dasfMode Sending Bad Parameter\n",__LINE__); 720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Should Be One of these Modes FM, DM\n",__LINE__); 721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (argc == 11) 726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Application wants to decide upon rtp */ 728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->rtpMode = atoi (argv[10]); 729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* if user hasn't decided, let's go linear */ 734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->rtpMode = 0; 735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode) { /*Dasf Mode*/ 738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((atoi(argv[7])) != 0) { 739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: For DASF mode argv[7] Should Be --> 0\n",__LINE__); 741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((atoi(argv[7])) == 0) { /*File Mode*/ 745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: For FILE mode argv[7] Should be greater than zero depends on number of buffers user want to encode\n",__LINE__); 747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!(strcmp(argv[5],"ACDN_OFF"))) { 752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->acousticMode = 0; 753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: audioinfo->acdnMode = %ld \n",__LINE__,audioinfo->acousticMode); 754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else if(!(strcmp(argv[5],"ACDN_ON"))) { 755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->acousticMode = 1; 756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: audioinfo->acdnMode = %ld \n",__LINE__,audioinfo->acousticMode); 757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n%d :: App: audioinfo->acdnMode Sending Bad Parameter\n",__LINE__); 760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Should Be One of these Modes ACDN_ON, ACDN_OFF, not %s\n",__LINE__, argv[5]); 761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct); 766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #else 768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct); 769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: OMX_ErrorBadParameter\n",__LINE__); 773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: Setting output port config\n",__LINE__); 777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE); 778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMajor = 0xF1; 779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMinor = 0xF2; 780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nPortIndex = OMX_DirOutput; 781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->eDir = OMX_DirOutput; 782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountActual = numOutputBuffers; 783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferCountMin = numOutputBuffers; 784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->nBufferSize = G726ENC_OUTPUT_BUFFER_SIZE; 785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bEnabled = OMX_TRUE; 786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->bPopulated = OMX_FALSE; 787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->eDomain = OMX_PortDomainAudio; 788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.eEncoding = OMX_AUDIO_CodingG726; 789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.pNativeRender = NULL; 790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct->format.audio.bFlagErrorConcealment = OMX_FALSE; /*Send output port config*/ 791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct); 794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #else 796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct); 797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: OMX_ErrorBadParameter\n",__LINE__); 801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!(strcmp(argv[6],"16"))) { 805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG726Param->eG726Mode = OMX_AUDIO_G726Mode16; 806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: eBitRate set to 16 kbps\n",__LINE__); 807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!(strcmp(argv[6],"24"))) { 809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG726Param->eG726Mode = OMX_AUDIO_G726Mode24; 810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: eBitRate set to 24 kbps\n",__LINE__); 811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!(strcmp(argv[6],"32"))) { 813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG726Param->eG726Mode = OMX_AUDIO_G726Mode32; 814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: eBitRate set to 32 kbps\n",__LINE__); 815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(!(strcmp(argv[6],"40"))) { 817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG726Param->eG726Mode = OMX_AUDIO_G726Mode40; 818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: eBitRate set to 40 kbps\n",__LINE__); 819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG726Param->eG726Mode = OMX_AUDIO_G726ModeUnused; 822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("\n%d :: App: UnSuported bit Rate, setting to OMX_AUDIO_G726ModeUnused\n",__LINE__); 823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Send G726 config for output */ 826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG726Param->nSize = sizeof(OMX_AUDIO_PARAM_G726TYPE); 827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG726Param->nVersion.s.nVersionMajor = 0xF1; 828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG726Param->nVersion.s.nVersionMinor = 0xF2; 829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG726Param->nPortIndex = OMX_DirOutput; 830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG726Param->nChannels = NBAPP_NUM_OF_CHANNELS; 831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamAudioG726, pG726Param); 834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #else 836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetParameter (pHandle, OMX_IndexParamAudioG726, pG726Param); 837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: OMX_ErrorBadParameter\n",__LINE__); 841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON 845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (audioinfo->dasfMode){ 846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((fdwrite=open(FIFO1,O_WRONLY))<0) { 847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: [G726E Component] - failure to open WRITE pipe\n",__LINE__); 848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((fdread=open(FIFO2,O_RDONLY))<0) { 850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: [G726E Component] - failure to open READ pipe\n",__LINE__); 851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: OMX_ComponentInit\n", __LINE__); 853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.hComponent = pHandle; 855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.AM_Cmd = AM_CommandIsInputStreamAvailable; 856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cmd_data.param1 = 0; 857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((write(fdwrite, &cmd_data, sizeof(cmd_data)))<0) { 859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: [G726E Component] - send command to audio manager\n",__LINE__); 860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((read(fdread, &cmd_data, sizeof(cmd_data)))<0) { 862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: [G726E Component] - failure to get data from the audio manager!!! \n",__LINE__); 863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(cmd_data.streamID == 0) { 866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: [G726E Component] - no input stream available!!!!!!!\n",__LINE__); 867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: [G726E Component] - input stream available\n",__LINE__); 872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo->streamId=cmd_data.streamID; 873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorNone; 874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.tispecific",&index); 879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error returned from OMX_GetExtensionIndex\n"); 881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig (pHandle, index, audioinfo); 885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error from OMX_SetConfig() function\n",__LINE__); 888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (audioinfo->acousticMode == OMX_TRUE) { 891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Using Acoustic Device Node Path\n"); 892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dataPath = DATAPATH_ACDN; 893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (audioinfo->dasfMode) { 895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RTM_PATH 896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Using Real Time Mixer Path\n"); 897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dataPath = DATAPATH_APPLICATION_RTMIXER; 898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef ETEEDN_PATH 901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Using Eteeden Path\n"); 902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin dataPath = DATAPATH_APPLICATION; 903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.G726.datapath",&index); 906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error getting extension index\n"); 908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig (pHandle, index, &dataPath); 911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: AmrDecTest.c :: Error from OMX_SetConfig() function\n",__LINE__); 914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (audioinfo->dasfMode == 1) { 918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* get streamID back to application */ 919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_NBAPP_MALLOC_STRUCT(streaminfo, TI_OMX_STREAM_INFO); 920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.G726.streamIDinfo",&index); 922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) { 923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error getting extension index\n"); 924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetConfig (pHandle, index, streaminfo); 928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: AmrEncTest.c :: Error from OMX_GetConfig() function\n",__LINE__); 931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("***************StreamId=%ld******************\n", streaminfo->streamId); 934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d Sending Component to OMX_StateIdle\n",__LINE__); 937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL); 941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Error from SendCommand-Idle(Init) State function\n"); 943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef USE_BUFFER 947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_AllocateBuffer\n",__LINE__); 948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i = 0; i < numInputBuffers; i++) { 949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate input buffer */ 950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_AllocateBuffer for pInputBufferHeader[%d]\n",__LINE__, i); 951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_AllocateBuffer(pHandle, &pInputBufferHeader[i], 0, NULL, G726ENC_INPUT_BUFFER_SIZE); 952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer for pInputBufferHeader[%d]\n",__LINE__, i); 954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i = 0; i < numOutputBuffers; i++) { 959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate output buffer */ 960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_AllocateBuffer for pOutputBufferHeader[%d]\n",__LINE__, i); 961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_AllocateBuffer(pHandle, &pOutputBufferHeader[i], 1, NULL, G726ENC_OUTPUT_BUFFER_SIZE); 962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer for pOutputBufferHeader[%d]\n",__LINE__, i); 964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i = 0; i < numInputBuffers; i++) { 969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer[i] = (OMX_U8*)SafeMalloc(G726ENC_INPUT_BUFFER_SIZE); 970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: [TESTAPP ALLOC] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]); 971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(NULL == pInputBuffer[i]) { 972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Malloc Failed\n",__LINE__); 973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate input buffer */ 977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__); 978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_UseBuffer(pHandle, &pInputBufferHeader[i], 0, NULL, G726ENC_INPUT_BUFFER_SIZE, pInputBuffer[i]); 979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__); 981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i = 0; i < numOutputBuffers; i++) { 986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = SafeMalloc(G726ENC_OUTPUT_BUFFER_SIZE + 256); 987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: [TESTAPP ALLOC] pOutputBuffer[%d] = %p\n",__LINE__,i,pOutputBuffer[i]); 988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(NULL == pOutputBuffer[i]) { 989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Malloc Failed\n",__LINE__); 990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; 991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = pOutputBuffer[i] + 128; 994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate output buffer */ 996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__); 997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_UseBuffer(pHandle, &pOutputBufferHeader[i], 1, NULL, G726ENC_OUTPUT_BUFFER_SIZE, pOutputBuffer[i]); 998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__); 1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Wait for startup to complete */ 1006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateIdle); 1007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 1009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: hG726Encoder->WaitForState reports an eError %X\n", eError); 1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d Component on OMX_StateIdle\n",__LINE__); 1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i = 0; i < testcnt; i++) { 1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCnt = 1; 1018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nFrameCount = 1; 1019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nOutBuff = 1; 1020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nIpBuff = 1; 1021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(i >= 1) { 1022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: Encoding the file in TESTCASE 5 OR TESTCSE 4\n",__LINE__); 1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fIn = fopen(argv[1], "r"); 1024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(fIn == NULL) { 1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error: failed to open the file %s for readonly access\n", argv[1]); 1026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fOut = fopen("TC5_G7261.G726", "w"); 1029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(fOut == NULL) { 1030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error: failed to create the output file %s\n", argv[2]); 1031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 0; 1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Sending OMX_StateExecuting Command\n",__LINE__); 1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d Sending Component to OMX_Executing\n",__LINE__); 1039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 1040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL); 1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error from SendCommand-Executing State function\n"); 1045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateExecuting); 1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateExecuting>"); 1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d Component on OMX_Executing\n",__LINE__); 1052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: hG726Encoder->WaitForState reports an eError %X\n", eError); 1054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode == 1) { 1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: No.of Buffers Encoding = %d\n",__LINE__, atoi(argv[8])); 1059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponent = (OMX_COMPONENTTYPE *)pHandle; 1062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode == 0) { 1064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (k=0; k < numInputBuffers; k++) { 1065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer = pInputBufferHeader[k]; 1066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFlags=0; 1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d About to call send_input_buffer\n",__LINE__);/*glen*/ 1068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 1069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (k==0) 1070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagE=1; /* 1 = First Buffer, 0 = Not First Buffer */ 1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); /* Empty Bufffer */ 1073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = send_input_buffer(pHandle, pBuffer, fIn); 1076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (kk = 0; kk < numOutputBuffers; kk++) { 1080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Calling FillThisBuffer \n",__LINE__); 1081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d About to call FillThisBuffern \n",__LINE__);/*glen*/ 1082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 1083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (kk==0) 1084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_FlagF=1; /* 1 = First Buffer, 0 = Not First Buffer */ 1086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); /* Fill Buffer */ 1087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_FillThisBuffer(pHandle, pOutputBufferHeader[kk]); 1090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetState(pComponent, &state); 1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: OMX_GetState has returned status %X\n",__LINE__, eError); 1095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = 1; 1098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES 1099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while( 1 ){ 1100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError == OMX_ErrorNone) && (state != OMX_StateIdle) && (state != OMX_StateInvalid) ){ 1101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while((eError == OMX_ErrorNone) && (state != OMX_StateIdle) && (state != OMX_StateInvalid)){ 1103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( 1 ){ 1104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_ZERO(&rfds); 1106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET(IpBuf_Pipe[0], &rfds); 1107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET(OpBuf_Pipe[0], &rfds); 1108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET(Event_Pipe[0], &rfds); 1109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_sec = 1; 1110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tv.tv_usec = 0; 1111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = select(fdmax+1, &rfds, NULL, NULL, &tv); 1113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(retval == -1) { 1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin perror("select()"); 1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( " :: Error \n"); 1116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!retval){ 1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NoDataRead++; 1121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES 1122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(NoDataRead > 2000){ 1123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(NoDataRead > 5){ 1125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Stoping component since No data is read from the pipes\n"); 1127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin StopComponent(pHandle); 1128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 1131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NoDataRead=0; 1132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch (tcID) { 1135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 1: 1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 2: 1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 3: 1138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 4: 1139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 5: 1140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 6: 1141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 7: 1142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode == 0) { 1143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(FD_ISSET(IpBuf_Pipe[0], &rfds)) { 1144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer = NULL; 1145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer)); 1146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin frmCount++; 1147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (frmCount==15 && tcID ==3){ /*Pause the component*/ 1148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("App: Pausing Component for 5 Seconds....\n\n\n"); 1149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PauseComponent(pHandle); 1150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep(3); 1151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef FLUSHINPAUSE 1152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("App: Sending Flush to input port\n"); 1153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandFlush, 0, NULL); 1154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d:: Error from SendCommand OMX_CommandFlush\n",__LINE__); 1156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep(2); 1160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("App: Resume Component\n"); 1161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PlayComponent(pHandle); 1162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (frmCount==50 && tcID ==4){ /*Stop the component*/ 1164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Stoping the Component And Starting Again\n"); 1165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"); 1166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin StopComponent(pHandle); 1167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 1; 1168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (frmCount==100 && tcID ==2){ /*Stop the component*/ 1171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Stoping the Component at the middle of stream\n"); 1172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin StopComponent(pHandle); 1173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = send_input_buffer(pHandle, pBuffer, fIn); 1176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } else { 1178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nFrameCount==15 && tcID ==3){ /*Pause the component*/ 1179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 1; 1180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("App: Pausing Component for 5 Seconds....\n\n\n"); 1181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PauseComponent(pHandle); 1182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep(3); 1183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef FLUSHINPAUSE 1184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("App: Sending Flush to output port\n"); 1185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandFlush, 1, NULL); 1186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d:: Error from SendCommand OMX_CommandFlush\n",__LINE__); 1188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep(2); 1192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("App: Resume Component\n"); 1193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PlayComponent(pHandle); 1194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nFrameCount==50 && tcID ==4){ /*Stop the component*/ 1196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Stoping the Component And Starting Again\n"); 1197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"); 1198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin StopComponent(pHandle); 1199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin tcID = 1; 1200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nFrameCount = 0; 1201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nFrameCount==100 && tcID ==2){ /*Stop the component*/ 1204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Stoping the Component at the middle of stream\n"); 1205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin StopComponent(pHandle); 1206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nFrameCount == 50 && tcID == 7) { 1210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* set high gain for record stream */ 1211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("[G726 encoder] --- will set stream gain to high\n"); 1212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->sVolume.nValue = 0x8000; 1213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructGain); 1214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) 1215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nFrameCount == 250 && tcID == 7) 1221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* set low gain for record stream */ 1223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("[G726 encoder] --- will set stream gain to low\n"); 1224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStructGain->sVolume.nValue = 0x2000; 1225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructGain); 1226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (eError != OMX_ErrorNone) 1227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; 1229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 1235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: ### Simple DEFAULT Case Here ###\n",__LINE__); 1236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*----- output buffer ----*/ 1238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( FD_ISSET(OpBuf_Pipe[0], &rfds) ) { 1239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuf = NULL; 1240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(OpBuf_Pipe[0], &pBuf, sizeof(pBuf)); 1241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: pBuf->nFilledLen = %ld\n",__LINE__, pBuf->nFilledLen); 1242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nFrameLen = pBuf->nFilledLen; 1243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: nFrameLen = %d \n",__LINE__, nFrameLen); 1244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nFrameLen != 0) { 1245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Writing OutputBuffer No: %d to the file nWrite = %d \n",__LINE__, nOutBuff, nFrameLen); 1246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Writing %d Bytes to the output File #%d\n", nFrameLen,nFrameCount); 1247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fwrite(pBuf->pBuffer, 1, nFrameLen, fOut); 1248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fflush(fOut); 1249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nFrameCount++; 1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: pBuf->nFlags = %ld\n",__LINE__, pBuf->nFlags); 1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pBuf->nFlags == OMX_BUFFERFLAG_EOS) { 1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: OMX_BUFFERFLAG_EOS is received\n",__LINE__); 1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: App: Shutting down ---------- \n",__LINE__); 1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin StopComponent(pHandle); 1257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuf->nFlags = 0; 1258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 1260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nOutBuff++; 1261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_FillThisBuffer(pComponent, pBuf); 1262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: pBuf->nFlags = %ld\n",__LINE__, pBuf->nFlags); 1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode) { 1265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: NBAMR ENCODER RUNNING UNDER DASF MODE \n",__LINE__); 1266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nFrameCount >= 400) { 1267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("400 Frames Reached, Stoping Component from App\n");/*glen*/ 1268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin StopComponent(pHandle); 1269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: NBAMR ENCODER READING DATA FROM DASF \n",__LINE__); 1271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------*/ 1274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( FD_ISSET(Event_Pipe[0], &rfds) ) { 1275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 pipeContents = 0; 1276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(Event_Pipe[0], &pipeContents, sizeof(OMX_U8)); 1277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: received RM event: %d\n",__LINE__, pipeContents); 1278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pipeContents == 0) { 1279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Test app received OMX_ErrorResourcesPreempted\n"); 1281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState(pHandle,OMX_StateIdle); 1282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < numInputBuffers; i++) { 1283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle,OMX_DirInput,pInputBufferHeader[i]); 1284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( (eError != OMX_ErrorNone)) { 1285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("Error in Free Handle function\n"); 1286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < numOutputBuffers; i++) { 1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle,OMX_DirOutput,pOutputBufferHeader[i]); 1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( (eError != OMX_ErrorNone)) { 1292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__); 1293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER 1297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* newfree the App Allocated Buffers */ 1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Freeing the App Allocated Buffers in TestApp\n",__LINE__); 1299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < numInputBuffers; i++) { 1300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d::: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]); 1301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pInputBuffer[i] != NULL){ 1302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer[i] = pInputBuffer[i] - 128; 1303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin newfree(pInputBuffer[i]); 1304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer[i] = NULL; 1305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < numOutputBuffers; i++) { 1308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d::: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, pOutputBuffer[i]); 1309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pOutputBuffer[i] != NULL){ 1310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = pOutputBuffer[i] - 128; 1311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin newfree(pOutputBuffer[i]); 1312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = NULL; 1313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateLoaded,NULL); 1318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState(pHandle,OMX_StateLoaded); 1319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateWaitForResources,NULL); 1320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState(pHandle,OMX_StateWaitForResources); 1321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (pipeContents == 1) { 1323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Test app received OMX_ErrorResourcesAcquired\n"); 1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateIdle,NULL); 1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < numInputBuffers; i++) { 1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* allocate input buffer */ 1328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_AllocateBuffer(pHandle,&pInputBufferHeader[i],0,NULL,G726ENC_INPUT_BUFFER_SIZE*3); /*To have enought space for */ 1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__); 1331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState(pHandle,OMX_StateIdle); 1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateExecuting,NULL); 1338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WaitForState(pHandle,OMX_StateExecuting); 1339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin rewind(fIn); 1340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < numInputBuffers;i++) { 1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin send_input_buffer(pHandle, pInputBufferHeader[i], fIn); 1342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pipeContents == 2) { 1346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin StopComponent(pHandle); 1348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < numInputBuffers; i++) { 1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle,OMX_DirInput,pInputBufferHeader[i]); 1351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( (eError != OMX_ErrorNone)) { 1352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: TestAPP :: Error in Free Handle function\n",__LINE__); 1353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (i=0; i < numOutputBuffers; i++) { 1357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle,OMX_DirOutput,pOutputBufferHeader[i]); 1358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( (eError != OMX_ErrorNone)) { 1359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__); 1360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#if 1 1364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL); 1365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error from SendCommand-Idle State function\n",__LINE__); 1367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("goto EXIT %d\n",__LINE__); 1368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateLoaded); 1372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateLoaded>"); 1374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "%d :: Error: WaitForState reports an eError %X\n",__LINE__, error); 1377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("goto EXIT %d\n",__LINE__); 1378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavingoto SHUTDOWN; 1383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*-------*/ 1386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetState(pComponent, &state); 1388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: OMX_GetState has returned status %X\n",__LINE__, eError); 1390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinelse if (preempted) { 1394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sched_yield(); 1395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinelse { 1397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto SHUTDOWN; 1398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} /* While Loop Ending Here */ 1401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FirstTime =1; 1402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: The current state of the component = %d \n",__LINE__,state); 1403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fclose(fOut); 1404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fclose(fIn); 1405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: G726 Encoded = %d Frames \n",__LINE__,(nOutBuff)); 1407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } /*Test Case 4 & 5 Inner for loop ends here */ 1408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: App: Sending the OMX_StateLoaded Command\n",__LINE__); 1410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 1411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL); 1414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d:: Error from SendCommand-Idle State function\n",__LINE__); 1416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef WAITFORRESOURCES 1420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* free the Allocate and Use Buffers */ 1421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Freeing the Allocate OR Use Buffers in TestApp\n",__LINE__); 1422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < numInputBuffers; i++) { 1423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: About to free pInputBufferHeader[%d]\n",__LINE__, i); 1424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle, OMX_DirInput, pInputBufferHeader[i]); 1425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError != OMX_ErrorNone)) { 1426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d:: Error in FreeBuffer function\n",__LINE__); 1427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < numOutputBuffers; i++) { 1431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: About to free pOutputBufferHeader[%d]\n",__LINE__, i); 1432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle, OMX_DirOutput, pOutputBufferHeader[i]); 1433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError != OMX_ErrorNone)) { 1434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error in Free Buffer function\n",__LINE__); 1435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef USE_BUFFER 1439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* free the App Allocated Buffers */ 1440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Freeing the App Allocated Buffers in TestApp\n",__LINE__); 1441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < numInputBuffers; i++) { 1442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]); 1443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pInputBuffer[i] != NULL){ 1444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SafeFree(pInputBuffer[i]); 1445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInputBuffer[i] = NULL; 1446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < numOutputBuffers; i++) { 1450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = pOutputBuffer[i] - 128; 1451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, pOutputBuffer[i]); 1452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pOutputBuffer[i] != NULL){ 1453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SafeFree(pOutputBuffer[i]); 1454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutputBuffer[i] = NULL; 1455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateLoaded); 1461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef OMX_GETTIME 1462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateLoaded>, PortReset, clear buffers"); 1463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #endif 1464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT( "Error: G726Encoder->WaitForState reports an error %X\n", eError); 1466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES 1470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateWaitForResources, NULL); 1471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: Error from SendCommand-Idle State function\n",__LINE__); 1473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("goto EXIT %d\n",__LINE__); 1474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = WaitForState(pHandle, OMX_StateWaitForResources); 1478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* temporarily put this here until I figure out what should really happen here */ 1480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sleep(10); 1481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* temporarily put this here until I figure out what should really happen here */ 1482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT ("%d :: App: Sending the OMX_CommandPortDisable Command\n",__LINE__); 1485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SendCommand(pHandle, OMX_CommandPortDisable, -1, NULL); 1486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d:: Error from SendCommand OMX_CommandPortDisable\n",__LINE__); 1488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinSHUTDOWN: 1491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo->dasfMode){ 1493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(fdwrite); 1494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin close(fdread); 1495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (streaminfo != NULL){ 1496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SafeFree(streaminfo); 1497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Free the Component handle\n",__LINE__); 1501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Unload the G726 Encoder Component */ 1502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = TIOMX_FreeHandle(pHandle); 1503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if((eError != OMX_ErrorNone)) { 1504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error in Free Handle function\n",__LINE__); 1505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Free Handle returned Successfully\n",__LINE__); 1508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Calling OMX_Deinit()\n",__LINE__); 1510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = TIOMX_Deinit(); 1511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(eError != OMX_ErrorNone) { 1512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_Deinit()\n",__LINE__); 1513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Freeing the Memory Allocated in TestApp\n",__LINE__); 1517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,pG726Param); 1519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pG726Param != NULL){ 1520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SafeFree(pG726Param); 1521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pG726Param = NULL; 1522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,pCompPrivateStruct); 1524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pCompPrivateStruct != NULL){ 1525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SafeFree(pCompPrivateStruct); 1526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pCompPrivateStruct = NULL; 1527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] %p\n",__LINE__,audioinfo); 1529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(audioinfo != NULL){ 1530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SafeFree(audioinfo); 1531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin audioinfo = NULL; 1532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: App: Closing the Input and Output Pipes\n",__LINE__); 1535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (IpBuf_Pipe[0]); 1536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing IpBuf_Pipe[0]\n",__LINE__); 1539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (IpBuf_Pipe[1]); 1542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing IpBuf_Pipe[1]\n",__LINE__); 1545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (OpBuf_Pipe[0]); 1548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing OpBuf_Pipe[0]\n",__LINE__); 1551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = close (OpBuf_Pipe[1]); 1554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (0 != eError && OMX_ErrorNone == eError) { 1555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorHardware; 1556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("%d :: Error while closing OpBuf_Pipe[1]\n",__LINE__); 1557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } /*Outer for loop ends here */ 1560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_destroy(&WaitForState_mutex); 1562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_destroy(&WaitForState_threshold); 1563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: *********************************************************************\n",__LINE__); 1565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: NOTE: An output file %s has been created in file system\n",__LINE__,argv[2]); 1566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: *********************************************************************\n",__LINE__); 1567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (testcnt == MAX_CYCLES) { 1568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: *********************************************************************\n",__LINE__); 1569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: NOTE: An output file TC5_G7261.G726 has been created in file system\n",__LINE__); 1570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: *********************************************************************\n",__LINE__); 1571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (testcnt1 == MAX_CYCLES) { 1573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: *********************************************************************\n",__LINE__); 1574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: NOTE: An output file TC6_G7261.G726 has been created in file system\n",__LINE__); 1575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: *********************************************************************\n",__LINE__); 1576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUGMEM 1579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n__ Printing memory not deleted\n"); 1580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0;i<500;i++){ 1581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (lines[i]!=0){ 1582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("__ %d Bytes allocated on [%p], File:%s Line: %d\n",bytes[i],arr[i],file[i],lines[i]); 1583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("G726Enc test <End>"); 1588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ListDestroy(pListHead); 1589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer(OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn) 1594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 1596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle; 1597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(FirstTime){ 1599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(mframe == TWO_FRAMES){ 1600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(pBuffer->pBuffer, 1, G726ENC_INPUT_BUFFER_SIZE*2, fIn); 1601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(mframe == HALF_FRAME){ 1603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(NextBuffer, 1, G726ENC_INPUT_BUFFER_SIZE/2, fIn); 1604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 1606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(pBuffer->pBuffer, 1, G726ENC_INPUT_BUFFER_SIZE, fIn); 1607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = nRead; 1609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 1611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memcpy(pBuffer->pBuffer, NextBuffer,nRead); 1612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFilledLen = nRead; 1613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(mframe == TWO_FRAMES){ 1616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(NextBuffer, 1, G726ENC_INPUT_BUFFER_SIZE*2, fIn); 1617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(mframe == HALF_FRAME){ 1619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(NextBuffer, 1, G726ENC_INPUT_BUFFER_SIZE/2, fIn); 1620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 1622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(NextBuffer, 1, G726ENC_INPUT_BUFFER_SIZE, fIn); 1623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(nRead < G726ENC_INPUT_BUFFER_SIZE && !DasfMode && (mframe != HALF_FRAME)){ 1626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFlags = OMX_BUFFERFLAG_EOS; 1627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }else{ 1628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nFlags = 0; 1629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( ((mframe != HALF_FRAME) && (pBuffer->nFilledLen>= G726ENC_INPUT_BUFFER_SIZE)) || 1632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ((mframe == HALF_FRAME) && (pBuffer->nFilledLen> 0))){ 1633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pBuffer->nFlags == OMX_BUFFERFLAG_EOS){ 1635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Sending Last Input Buffer from App\n"); 1636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin vez++; 1638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin APP_DPRINT("Sending %d bytes to Comp, Time: %ld\n", (int)pBuffer->nFilledLen,vez); 1639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuffer->nTimeStamp = rand() % 100; 1640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (!preempted) { 1641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_EmptyThisBuffer(pComponent, pBuffer); 1642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error == OMX_ErrorIncorrectStateOperation) 1643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = 0; 1644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FirstTime=0; 1647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return error; 1648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE StopComponent(OMX_HANDLETYPE *pHandle) 1651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 1653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL); 1657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr,"\nError from SendCommand-Idle(Stop) State function!!!!!!!!\n"); 1659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 1662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 1664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "\nError: G726Encoder->WaitForState reports an error %X!!!!!!!\n", error); 1667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return error; 1671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE PauseComponent(OMX_HANDLETYPE *pHandle) 1674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 1676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StatePause, NULL); 1680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr,"\nError from SendCommand-Idle(Stop) State function!!!!!!!!\n"); 1682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StatePause); 1685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StatePause>"); 1687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "\nError: G726Encoder->WaitForState reports an error %X!!!!!!!\n", error); 1690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return error; 1694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE PlayComponent(OMX_HANDLETYPE *pHandle) 1697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 1699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_START(); 1701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateExecuting, NULL); 1703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr,"\nError from SendCommand-Idle(Stop) State function!!!!!!!!\n"); 1705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateExecuting); 1708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME 1709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateExecuting>"); 1710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(error != OMX_ErrorNone) { 1712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "\nError: G726Encoder->WaitForState reports an error %X!!!!!!!\n", error); 1713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return error; 1717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1719