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