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 G711DecTest.c
26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This file contains the test application code that invokes the component.
28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @path  $(CSLPATH)\OMAPSW_MPU\linux\audio\src\openmax_il\g711\tests
30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @rev  1.0
32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----------------------------------------------------------------------------
34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *!
35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! Revision History
36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! ===================================
37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *! 14-dec-2006 sc: creation
38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * =========================================================================== */
39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* standard header files */
42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h>
43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h>
44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/ioctl.h>
45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h>
46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h>
47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h>
48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h>
49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <errno.h>
50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/vt.h>
51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <signal.h>
52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/stat.h>
53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h>
54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h>
55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/soundcard.h>
56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* OMX header files */
58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Index.h>
59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Types.h>
60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h>
61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Core.h>
62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Audio.h>
63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <TIDspOmx.h>
64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Common_Utils.h>
68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_GetTime.h>     /*Headers for Performance & measuremet    */
69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def APP_DEBUG Configure Debug traces
74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_DEBUG
77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*For timestamp and tickcount*/
78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_TIME_TIC_DEBUG
79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def APP_DEBUG Configure Debug traces
82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_MEMCHECK
85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    APP_MEMDEBUG    This Macro turns On the logic to detec memory
88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *                         leaks on the App. To debug the component,
89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *                         WMADEC_MEMDEBUG must be defined.
90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef APP_MEMDEBUG
93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid *arr[500] = {NULL};
95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint lines[500]= {0};
96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint bytes[500]= {0};
97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinchar file[500][50]= {""};
98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_MEMDEBUG
100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint r;
101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define newmalloc(x) mymalloc(__LINE__,__FILE__,x)
102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define newfree(z) myfree(z,__LINE__,__FILE__)
103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid * mymalloc(int line, char *s, int size);
104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint myfree(void *dp, int line, char *s);
105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define newmalloc(x) malloc(x)
107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define newfree(z) free(z)
108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def  DASF                           Define a Value for DASF mode
113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define DASF 1
116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def  USE_BUFFER                 Buffer allocation method (app vs OMX)
119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef USE_BUFFER
122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def  FIFO1, FIFO2                 FIFO
125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO1 "/dev/fifo.1"
128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO2 "/dev/fifo.2"
129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def  GAIN                      Define a GAIN value for Configure Audio
132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define GAIN 95
135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    INPUT_G711DEC_BUFFER_SIZE             Standart Input Buffer Size
138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *                                                (1 frame)
139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define INPUT_G711DEC_BUFFER_SIZE 80
142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    OUTPUT_G711DEC_BUFFER_SIZE           Standart Output Buffer Size
145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OUTPUT_G711DEC_BUFFER_SIZE 160
148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    G711DEC_SAMPLING_FREQUENCY          Sampling Frequency
151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_SAMPLING_FREQUENCY 8000
154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    G711_APP_ID          Application Id
157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711_APP_ID 100
160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    G711_MAX_NUM_BUFS    Number of buffer
163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711_MAX_NUM_BUFS 10
166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  MACROS used for debug
169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUG
172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_DPRINT(...)    fprintf(stderr,__VA_ARGS__)
173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_DPRINT(...)
175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_MEMCHECK
178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_MEMPRINT(...)    fprintf(stderr,__VA_ARGS__)
179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_MEMPRINT(...)
181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_TIME_TIC_DEBUG
184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define TIME_PRINT(...)     fprintf(stderr,__VA_ARGS__)
185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define TICK_PRINT(...)     fprintf(stderr,__VA_ARGS__)
186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define TIME_PRINT(...)
188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define TICK_PRINT(...)
189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE eError = OMX_ErrorNone;
193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint GT_FlagE = 0;  /* Fill Buffer 1 = First Buffer,  0 = Not First Buffer  */
194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint GT_FlagF = 0;  /*Empty Buffer  1 = First Buffer,  0 = Not First Buffer  */
195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_NODE* pListHead = NULL;
196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  PRIVATE functions
201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 GetInfoFromBufferHeader(OMX_U8 **pBufPtr, OMX_S16 *pCurBitRate,OMX_S16 *pNextBitRateFlag);
204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid ResetBufferPointers(OMX_U8 **pBuffer);
205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 maxint(OMX_S16 a, OMX_S16 b);
206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 fill_data (OMX_BUFFERHEADERTYPE *pBuf, FILE *fIn);
207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer (OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn);
208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid ConfigureAudio();
209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  GLOBAL variables
213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinFILE *inputToSN = NULL;
216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 inputPortDisabled = 0;
217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 outputPortDisabled = 0;
218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 alternate = 0;
219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 numRead = 0;
220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 testCaseNo = 0;
221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_STRING strG711Decoder = "OMX.TI.G711.decode";
222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinpthread_mutex_t WaitForState_mutex;
224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinpthread_cond_t  WaitForState_threshold;
225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8          WaitForState_flag = 0;
226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8          TargetedState = 0;
227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* pipe management */
229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint IpBuf_Pipe[2] = {0};
230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OpBuf_Pipe[2] = {0};
231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint Event_Pipe[2] = {0};
232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinfd_set rfds;
233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_BOOL bInvalidState;
234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 done = 0;
235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 dasfmode = 0;
236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 fsizemode = 0;
237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/******************************************************************************/
238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 numInputBuffers = 0;
239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 numOutputBuffers = 0;
240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER
241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8* pInputBuffer[10] = {NULL};
242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8* pOutputBuffer[10] = {NULL};
243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_BUFFERHEADERTYPE* pInputBufferHeader[10]  = {NULL};
246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_BUFFERHEADERTYPE* pOutputBufferHeader[10] = {NULL};
247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint timeToExit = 0;
249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* RM control */
250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint preempted = 0;
251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/******************************************************************************/
252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----------------------------------------------------------------------------
255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * maxint()
256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * safe routine to get the maximum of 2 integers
258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ---------------------------------------------------------------------------- */
259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 maxint(OMX_S16 a, OMX_S16 b)
260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (a>b) ? a : b;
262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----------------------------------------------------------------------------
265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * WaitForState()
266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This function is called by the application.
268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * It blocks until the OMX component is not in the DesiredState
269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ---------------------------------------------------------------------------- */
270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE WaitForState(OMX_HANDLETYPE* pHandle, OMX_STATETYPE DesiredState)
271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STATETYPE CurState = OMX_StateInvalid;
273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 nCnt = 0;
275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle;
276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    eError = pComponent->GetState(pHandle, &CurState);
277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    while( (eError == OMX_ErrorNone) && (CurState != DesiredState) && (eError == OMX_ErrorNone) ) {
279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        // sleep(1);
280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(nCnt++ == 10) {
281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "Still Waiting, press CTL-C to continue\n");
282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        eError = pComponent->GetState(pHandle, &CurState);
284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( eError != OMX_ErrorNone ) return eError;
287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return OMX_ErrorNone;
288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----------------------------------------------------------------------------
291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * EventHandler()
292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This function is called by OMX component as
294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * a callback when one of the following OMX_EVENTS
295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * occurs:
296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_EventCmdComplete,         component has sucessfully completed a command
298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_EventError,               component has detected an error condition
299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_EventMark,                component has detected a buffer mark
300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_EventPortSettingsChanged, component is reported a port settings change
301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_EventBufferFlag,          component has detected an EOS
302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_EventResourcesAcquired,   component has been granted resources and is
303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *                               automatically starting the state change from
304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *                               OMX_StateWaitForResources to OMX_StateIdle.
305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ---------------------------------------------------------------------------- */
306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE EventHandler(OMX_HANDLETYPE hComponent,OMX_PTR pAppData,OMX_EVENTTYPE eEvent,
307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                           OMX_U32 nData1,OMX_U32 nData2,OMX_PTR pEventData)
308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)hComponent;
310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STATETYPE state = OMX_StateInvalid;
311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 writeValue = 0;
313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    eError = pComponent->GetState (hComponent, &state);
315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("%d Error returned from GetState\n",__LINE__);
316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(eError != OMX_ErrorNone) {
317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: App: Error returned from GetState\n",__LINE__);
318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    switch (eEvent) {
321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventResourcesAcquired:
322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        writeValue = 1;
323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        preempted = 0;
324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "%d :: App: Component OMX_EventResourcesAquired = %d\n", __LINE__,eEvent);
326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventBufferFlag:
328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        writeValue = 2;
329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf( "%d :: App: Component OMX_EventBufferFlag = %d\n", __LINE__,eEvent);
331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventCmdComplete:
333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ( "%d :: App: Component State Changed To %d\n", __LINE__,state);
334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (nData1 == OMX_CommandPortDisable) {
335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (nData2 == OMX_DirInput) {
336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                inputPortDisabled = 1;
337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "%d :: App: Component OMX_EventCmdComplete = %d\n", __LINE__,eEvent);
339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (nData2 == OMX_DirOutput) {
340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                outputPortDisabled = 1;
341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "%d :: App: Component OMX_EventCmdComplete = %d\n", __LINE__,eEvent);
343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if ((nData1 == OMX_CommandStateSet) && (TargetedState == nData2) &&
345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            (WaitForState_flag)){
346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            WaitForState_flag = 0;
347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pthread_mutex_lock(&WaitForState_mutex);
348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pthread_cond_signal(&WaitForState_threshold);
349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pthread_mutex_unlock(&WaitForState_mutex);
350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "%d :: App: Component OMX_EventCmdComplete = %d\n", __LINE__,(int)nData2);
352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventError:
355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (nData1 == OMX_ErrorInvalidState) {
356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            bInvalidState = OMX_TRUE;
357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else if(nData1 == OMX_ErrorResourcesPreempted) {
359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            writeValue = 0;
360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            preempted = 1;
361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else if (nData1 == OMX_ErrorResourcesLost) {
364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            WaitForState_flag = 0;
365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pthread_mutex_lock(&WaitForState_mutex);
366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pthread_cond_signal(&WaitForState_threshold);
367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pthread_mutex_unlock(&WaitForState_mutex);
368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else if(nData1 == OMX_ErrorResourcesPreempted) {
370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            writeValue = 0;
371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            preempted = 1;
372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "%d :: App: Component OMX_EventError = %d\n", __LINE__,eEvent);
375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventMax:
378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventMark:
379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    default:
382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return eError;
386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----------------------------------------------------------------------------
389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * FillBufferDone()
390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This function is called by OMX component as
392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * a callback when a Buffer has been filled
393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ---------------------------------------------------------------------------- */
394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid FillBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer)
395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT ("APP:::: OUTPUT BUFFER = %p && %p\n",pBuffer, pBuffer->pBuffer);
397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT ("APP:::: pBuffer->nFilledLen = %d\n",(int)pBuffer->nFilledLen);
398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*add on: TimeStamp & TickCount EmptyBufferDone*/
399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    TIME_PRINT("TimeStamp Output: %lld\n",pBuffer->nTimeStamp);
400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    TICK_PRINT("TickCount Output: %ld\n\n",pBuffer->nTickCount);
401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    write(OpBuf_Pipe[1], &pBuffer, sizeof(pBuffer));
402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (GT_FlagF == 1 ) /* First Buffer Reply*/  /* 1 = First Buffer,  0 = Not First Buffer  */
404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    {
405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to FillBufferDone  <First: FillBufferDone>");
406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_FlagF = 0 ;   /* 1 = First Buffer,  0 = Not First Buffer  */
407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----------------------------------------------------------------------------
412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * EmptyBufferDone()
413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This function is called by OMX component as
415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * a callback when a Buffer has been emptied
416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ---------------------------------------------------------------------------- */
417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid EmptyBufferDone(OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer)
418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT ("APP:::: INPUT BUFFER = %p && %p\n",pBuffer, pBuffer->pBuffer);
420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (!preempted) {
421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        write(IpBuf_Pipe[1], &pBuffer, sizeof(pBuffer));
422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (GT_FlagE == 1 ) /* First Buffer Reply*/  /* 1 = First Buffer,  0 = Not First Buffer  */
425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    {
426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to EmptyBufferDone <First: EmptyBufferDone>");
427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_FlagE = 0;   /* 1 = First Buffer,  0 = Not First Buffer  */
428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct G711DEC_FTYPES{
432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned short FrameSizeType;
433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned short NmuNLvl;
434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned short NoiseLp;
435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long  dBmNoise;
436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned short plc;
437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G711DEC_FTYPES;
438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----------------------------------------------------------------------------
439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * main()
440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This function is called at application startup
442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * and drives the G711 Decoder OMX component
443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ---------------------------------------------------------------------------- */
444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint main(int argc, char* argv[])
445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_CALLBACKTYPE G711CaBa = {(void *)EventHandler,
447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                 (void*)EmptyBufferDone,
448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                 (void*)FillBufferDone};
449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE                pHandle;
451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct    = NULL;
452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_CONFIG_MUTETYPE*    pCompPrivateStructMute = NULL;
453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_CONFIG_VOLUMETYPE*  pCompPrivateStructVolume = NULL;
454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_PCMMODETYPE*  pG711Param = NULL;
455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_COMPONENTTYPE*            pComponent,*pComponent_dasf = NULL;
456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE*         pInputBufferHeader[G711_MAX_NUM_BUFS] = {NULL};
457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE*         pOutputBufferHeader[G711_MAX_NUM_BUFS] = {NULL};
458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 AppData = G711_APP_ID;
461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    TI_OMX_DSP_DEFINITION* audioinfo = malloc(sizeof(TI_OMX_DSP_DEFINITION));
462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_FTYPES* frameinfo = malloc(sizeof(G711DEC_FTYPES));
463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    TI_OMX_DATAPATH dataPath;
464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    struct timeval tv   ;
465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 retval = 0, i = 0, j = 0,k = 0;
466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 frmCount = 0;
467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 frmCnt = 1;
468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 testcnt = 1;
469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 testcnt1 = 1;
470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* pBuf = NULL;
472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    bInvalidState = OMX_FALSE;
474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STATETYPE         state = OMX_StateInvalid;
476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_INDEXTYPE         index = 0;
477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*    int g711decfdwrite = 0;
478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int g711decfdread = 0;*/
479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("------------------------------------------------------\n");
481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("This is Main Thread In G711 DECODER Test Application:\n");
482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("Test Core 1.5 - " __DATE__ ":" __TIME__ "\n");
483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("------------------------------------------------------\n");
484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("Line %d\n",__LINE__);
486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GTeError = OMX_ListCreate(&pListHead);
487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("Line %d\n",__LINE__);
488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("eError = %d\n",GTeError);
489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_START();
490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("Line %d\n",__LINE__);
491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* check the input parameters */
493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(argc != 17) {
494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf( "Usage: G711DecTest_common [infile] [outfile] [1-ALaw 2-MuLaw]\
495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                [sampling freq] [testcase] [dasf mode] [accoustic mode] [nbInputBuf]\
496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                [Input Buf Size] [nbOutputBuf] [Output Buf size] [Frame Size Type]\
497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                [NMU Lvl] [Noise LP] [Noise in dBm] [PLC index]\n");
498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 numInputBuffers = 0;
502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 inputBufferSize = 0;
503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 numOutputBuffers = 0;
504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 outputBufferSize = 0;
505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S8  fParam1 = 0;
506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    numInputBuffers = atoi(argv[8]);
507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    inputBufferSize = atoi(argv[9]);
508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    numOutputBuffers = atoi(argv[10]);
509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    outputBufferSize = atoi(argv[11]);
510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fParam1 = atoi(argv[12]);
511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(numInputBuffers > 4 && numInputBuffers < 1)
513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    {
514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "Cannot support %u Input buffers\n", numInputBuffers);
515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(numOutputBuffers > 4 && numOutputBuffers < 0)
518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    {
519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "Cannot support %u Output buffers\n", numOutputBuffers);
520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(fParam1 > 3 && fParam1 < 0)
523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    {
524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "Cannot support %u such frame size type \n", fParam1);
525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf( "Cannot support %u such frame size type \n", fParam1);
526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("%d :: App: number of Input buffers = %d \n",__LINE__,numInputBuffers);
531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("%d :: App: size of input buffers = %d \n",__LINE__,inputBufferSize);
532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("%d :: App: number of output buffers = %d \n",__LINE__,numOutputBuffers);
533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("%d :: App: size of Output buffers = %d \n",__LINE__,outputBufferSize);
534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* check to see that the input file exists */
536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    struct stat sb = {0};
537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 status = stat(argv[1], &sb);
538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( status != 0 ) {
539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "Cannot find file %s. (%u)\n", argv[1], errno);
540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Open the file of data to be rendered. */
544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    FILE* fIn = fopen(argv[1], "r");
545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( fIn == NULL ) {
546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "Error:  failed to open the file %s for readonly\access\n", argv[1]);
547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    FILE* fOut = NULL;
551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fOut = fopen(argv[2], "w");
552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( fOut == NULL ) {
553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "Error:  failed to create the output file %s\n", argv[2]);
554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Create a pipe used to queue data from the callback. */
558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    retval = pipe(IpBuf_Pipe);
559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( retval != 0) {
560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "Error:Fill Data Pipe failed to open\n");
561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    retval = pipe(OpBuf_Pipe);
565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( retval != 0) {
566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "Error:Empty Data Pipe failed to open\n");
567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    retval = pipe(Event_Pipe);
570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( retval != 0) {
571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT( "%d %s Error: Empty Data Pipe failed to open\n",__LINE__, __FUNCTION__);
572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* save off the "max" of the handles for the selct statement */
576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 fdmax = maxint(IpBuf_Pipe[0], OpBuf_Pipe[0]);
577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fdmax = maxint(fdmax,Event_Pipe[0]);
578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("%d :: G711Test\n",__LINE__);
579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = TIOMX_Init();
581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: Error returned by TIOMX_Init()\n",__LINE__);
584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("%d :: G711Test\n",__LINE__);
588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int command = atoi(argv[5]);
590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    switch (command ) {
591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 1:
592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Simple PLAY till EOF \n");
594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 2:
597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Stop and Play \n");
599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        testcnt = 2;
601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 3:
603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing PAUSE & RESUME Command\n");
605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 4:
608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("---------------------------------------------\n");
609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing STOP Command by Stopping In-Between\n");
610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("---------------------------------------------\n");
611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 5:
613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------------------\n");
614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Repeated PLAY without Deleting Component\n");
615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------------------\n");
616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        testcnt = 20;
617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 6:
619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------\n");
620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Repeated PLAY with Deleting Component\n");
621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------\n");
622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        testcnt1 = 20;
623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 7:
625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("----------------------------------------------------------\n");
626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Multiframe with each buffer size = 2 x frameLength\n");
627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("----------------------------------------------------------\n");
628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        testCaseNo = 7;
629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 8:
631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------------------\n");
632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Multiframe with each buffer size = 1/2 x frameLength\n");
633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------------------\n");
634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        testCaseNo = 8;
635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 9:
637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------------------\n");
638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Multiframe with alternating buffer sizes\n");
639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------------------\n");
640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        testCaseNo = 9;
641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 10:
643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------------------\n");
644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Mute/Unmute for Playback Stream\n");
645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------------------\n");
646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 11:
648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------------------\n");
649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Set Volume for Playback Stream\n");
650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------------------\n");
651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 12:
654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------------------\n");
655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Simple PLAY  \n");
656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------------------\n");
657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("%d :: G711Test\n",__LINE__);
662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fsizemode = atoi(argv[12]);
663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    dasfmode = atoi(argv[6]);
664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(dasfmode == 1){
665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("DASF MODE\n");
666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#if STATE_TRANSITION_STATE
667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        ConfigureAudio();
668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    else if(dasfmode == 0){
671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("NON DASF MODE\n");
672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    else {
674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("Enter proper DASF mode\n");
675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("DASF:1\n");
676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("NON DASF:0\n");
677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("%d :: G711Test\n",__LINE__);
681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    for(j = 0; j < testcnt1; j++) {
683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(j >= 1) {
684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("\n****** Decoding the file %i Time ******* \n", j+1);
685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /* Create a pipe used to queue data from the callback. */
687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            retval = pipe( IpBuf_Pipe);
688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if( retval != 0) {
689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT( "Error:Fill Data Pipe failed to open\n");
690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            retval = pipe( OpBuf_Pipe);
694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if( retval != 0) {
695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT( "Error:Empty Data Pipe failed to open\n");
696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fIn = fopen(argv[1], "r");
699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if( fIn == NULL ) {
700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                fprintf(stderr, "Error:  failed to open the file %s for readonly\
701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                                                   access\n", argv[1]);
702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fOut = fopen(argv[2], "w");
706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if( fOut == NULL ) {
707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                fprintf(stderr, "Error:  failed to create the output file \n");
708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = TIOMX_Init();
711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            inputToSN = fopen("outputSecondTime.log","w");
712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else {
715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            inputToSN = fopen("outputFirstTime.log","w");
716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON
718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((g711decfdwrite=open(FIFO1,O_WRONLY))<0)
719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        {
720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("[G711TEST] - failure to open WRITE pipe\n");
721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else
723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        {
724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("[G711TEST] - opened WRITE pipe\n");
725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((g711decfdread=open(FIFO2,O_RDONLY))<0)
727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        {
728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("[G711TEST] - failure to open READ pipe\n");
729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else
732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        {
733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("[G711TEST] - opened READ pipe\n");
734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Load the G711 Encoder Component */
737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: G711Test\n",__LINE__);
738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_GetHandle(&pHandle, strG711Decoder, &AppData, &G711CaBa);
741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to OMX_GetHandle");
742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = TIOMX_GetHandle(&pHandle, strG711Decoder, &AppData, &G711CaBa);
744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: G711Test\n",__LINE__);
746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((error != OMX_ErrorNone) || (pHandle == NULL)) {
747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("Error in Get Handle function\n");
748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: G711Test\n",__LINE__);
752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct = malloc (sizeof (OMX_PARAM_PORTDEFINITIONTYPE));
754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (pCompPrivateStruct == 0) {
755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Malloc failed\n");
756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = -1;
757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (dasfmode)
761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        {
762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RTM_PATH
763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            dataPath = DATAPATH_APPLICATION_RTMIXER;
764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef ETEEDN_PATH
767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            dataPath = DATAPATH_APPLICATION;
768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* set playback stream mute/unmute */
771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructMute = malloc (sizeof(OMX_AUDIO_CONFIG_MUTETYPE));
772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(pCompPrivateStructMute == NULL) {
773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("%d :: App: Malloc Failed\n",__LINE__);
774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructVolume = malloc (sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE));
777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(pCompPrivateStructVolume == NULL) {
778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("%d :: App: Malloc Failed\n",__LINE__);
779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pCompPrivateStruct);
783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: G711Test\n",__LINE__);
784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nVersion.s.nVersionMajor = 0xF1;
786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nVersion.s.nVersionMinor = 0xF2;
787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: G711Test\n",__LINE__);
788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Send input port config */
789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nPortIndex = OMX_DirInput;
790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->format.audio.cMIMEType = malloc(20);
791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcpy(pCompPrivateStruct->format.audio.cMIMEType,"NONMIME");
792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->eDir = OMX_DirInput;
793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nPortIndex = OMX_DirInput;
794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nBufferCountActual = numInputBuffers;
795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nBufferSize = inputBufferSize;
796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->format.audio.eEncoding = OMX_AUDIO_CodingG711;
797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->bEnabled = 1;
798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->bPopulated = 0;
799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct);
803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Set Parameter Test-SetParameter");
804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct);
806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("%d:: OMX_ErrorBadParameter\n",__LINE__);
810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Send output port config */
813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nPortIndex = OMX_DirOutput;
814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->eDir = OMX_DirOutput;
815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nPortIndex = OMX_DirOutput;
816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nBufferCountActual = numOutputBuffers;
817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStruct->nBufferSize = outputBufferSize;
818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(dasfmode == 1) {
820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pCompPrivateStruct->nBufferCountActual = 0;
821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct);
825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Set Parameter Test-SetParameter");
826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pCompPrivateStruct);
828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("%d:: OMX_ErrorBadParameter\n",__LINE__);
832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* default setting for Mute/Unmute */
835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructMute->nSize = sizeof (OMX_AUDIO_CONFIG_MUTETYPE);
836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructMute->nVersion.s.nVersionMajor    = 0xF1;
837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructMute->nVersion.s.nVersionMinor    = 0xF2;
838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructMute->nPortIndex                  = OMX_DirInput;
839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructMute->bMute                       = OMX_FALSE;
840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* default setting for volume */
842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructVolume->nSize = sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE);
843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructVolume->nVersion.s.nVersionMajor  = 0xF1;
844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructVolume->nVersion.s.nVersionMinor  = 0xF2;
845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructVolume->nPortIndex                = OMX_DirInput;
846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructVolume->bLinear                   = OMX_FALSE;
847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructVolume->sVolume.nValue            = 50;               /* actual volume */
848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructVolume->sVolume.nMin              = 0;                /* min volume */
849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pCompPrivateStructVolume->sVolume.nMax              = 100;              /* max volume */
850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef USE_BUFFER
852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Allocate Input buffers with OMX_AllocateBuffer() API */
853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for (i=0; i < numInputBuffers; i++) {
854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /* allocate input buffer */
855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: About to call OMX_AllocateBuffer\n",__LINE__);
856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_AllocateBuffer(pHandle,&pInputBufferHeader[i],0,NULL,inputBufferSize);
857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: called OMX_AllocateBuffer\n",__LINE__);
858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__);
860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Allocate Output buffers with OMX_AllocateBuffer() API */
865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for (i=0; i < numOutputBuffers; i++) {
866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /* allocate output buffer */
867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: About to call OMX_AllocateBuffer\n",__LINE__);
868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_AllocateBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,outputBufferSize);
869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: called OMX_AllocateBuffer\n",__LINE__);
870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__);
872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Allocate Input buffers with OMX_UseBuffer() API */
877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for (i=0; i < numInputBuffers; i++)
878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        {
879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pInputBuffer[i] = (OMX_U8*)malloc(inputBufferSize + EXTRA_BUFFBYTES);
880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pInputBuffer[i]);
881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pInputBuffer[i] = pInputBuffer[i] + CACHE_ALIGNMENT;
882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /* allocate input buffer */
884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__);
885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_UseBuffer(pHandle,&pInputBufferHeader[i],0,NULL,inputBufferSize,pInputBuffer[i]);
886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: called OMX_UseBuffer\n",__LINE__);
887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone)
888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            {
889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__);
890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Allocate Output buffers with OMX_UseBuffer() API */
895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for ( i = 0 ; i < numOutputBuffers ; i++ )
896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        {
897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pOutputBuffer[i] = (OMX_U8*)malloc (outputBufferSize + EXTRA_BUFFBYTES);
898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pOutputBuffer);
899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pOutputBuffer[i] = pOutputBuffer[i] + CACHE_ALIGNMENT;
900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /* allocate output buffer */
902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__);
903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_UseBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,outputBufferSize,pOutputBuffer[i]);
904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: called OMX_UseBuffer\n",__LINE__);
905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone)
906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            {
907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__);
908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Send  G711 config for input */
915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param = malloc (sizeof (OMX_AUDIO_PARAM_PCMMODETYPE));
916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pG711Param);
917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(pG711Param == NULL) {
918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("%d :: App: Malloc Failed\n",__LINE__);
919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->nPortIndex = OMX_DirInput;
923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_GetParameter(pHandle, OMX_IndexParamAudioPcm, pG711Param);
924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->nSize = sizeof (OMX_AUDIO_PARAM_PCMMODETYPE);
925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->nVersion.s.nVersionMajor = 0xF1;
926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->nVersion.s.nVersionMinor = 0xF2;
927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->nChannels = 1; /* mono */
929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->eNumData = OMX_NumericalDataUnsigned;
930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->eEndian = OMX_EndianLittle;
931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->bInterleaved = OMX_FALSE;
932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->nBitPerSample = 8;
933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->nSamplingRate = 0; /* means undefined in the OMX standard */
934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for ( i = 0 ; i < OMX_AUDIO_MAXCHANNELS ; i++ )
936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pG711Param->eChannelMapping[0] = OMX_AUDIO_ChannelNone;
937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* extract compression format from command line */
939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (atoi(argv[3]) == OMX_AUDIO_PCMModeALaw)
940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pG711Param->ePCMMode = OMX_AUDIO_PCMModeALaw;
941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else if (atoi(argv[3]) == OMX_AUDIO_PCMModeMULaw)
942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pG711Param->ePCMMode = OMX_AUDIO_PCMModeMULaw;
943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else {
945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Enter proper G711 mode\n");
946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("A-Law:1\n");
947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("MU-Law:2\n");
948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamAudioPcm, pG711Param);
953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Set Parameter Test-SetParameter");
954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle, OMX_IndexParamAudioPcm, pG711Param);
956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("%d:: OMX_ErrorBadParameter\n",__LINE__);
960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Send  G711 config for output */
963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->nPortIndex = OMX_DirOutput;
964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->nBitPerSample = 16;
965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->ePCMMode = OMX_AUDIO_PCMModeLinear;
966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* extract sampling rate from command line */
968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pG711Param->nSamplingRate = atoi(argv[4]);
969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle,OMX_IndexParamAudioPcm, pG711Param);
972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Set Parameter Test-SetParameter");
973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetParameter (pHandle,OMX_IndexParamAudioPcm, pG711Param);
975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("%d:: OMX_ErrorBadParameter\n",__LINE__);
979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pComponent_dasf = (OMX_COMPONENTTYPE *)pHandle;
983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /** Getting the frame params */
985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        frameinfo->FrameSizeType = atoi(argv[12]);
986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        frameinfo->NmuNLvl = atoi(argv[13]);
987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        frameinfo->NoiseLp = atoi(argv[14]);
988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        frameinfo->dBmNoise = atoi(argv[15]);
989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        frameinfo->plc = atoi(argv[16]);
990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.g711dec.frameparams",&index);
992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Error getting extension index\n");
994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetConfig (pHandle, index, frameinfo);
998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: Error from OMX_SetConfig() function\n",__LINE__);
1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* get TeeDN or ACDN mode */
1005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        audioinfo->acousticMode = atoi(argv[7]);
1006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Process DASF mode */
1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(dasfmode == 1){
1009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            audioinfo->dasfMode = 1;
1010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else if(dasfmode == 0){
1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            audioinfo->dasfMode = 0;
1013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else {
1016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Enter proper DASF mode\n");
1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("DASF:1\n");
1018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("NON DASF:0\n");
1019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* get extension index to define proprietary DASF settings */
1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.g711headerinfo",&index);
1024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Error getting extension index\n");
1026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*        cmd_data.hComponent = pHandle;
1030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        cmd_data.AM_Cmd = AM_CommandIsOutputStreamAvailable;*/
1031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* for decoder, using AM_CommandIsInputStreamAvailable */
1033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*        cmd_data.param1 = 0;*/
1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON
1035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((write(g711decfdwrite, &cmd_data, sizeof(cmd_data)))<0) {
1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("%d [G711 Dec Component] - send command to audio manager\n", __LINE__);
1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((read(g711decfdread, &cmd_data, sizeof(cmd_data)))<0) {
1040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("%d [G711 Dec Component] - failure to get data from the audio manager\n", __LINE__);
1041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*        audioinfo->streamId = cmd_data.streamID;*/
1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(audioinfo->dasfMode)
1047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("***************StreamId=%d******************\n", (int)audioinfo->streamId );
1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: TestApp: Set Config, pHandle %p\n", __LINE__, pHandle);
1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetConfig(pHandle,index,audioinfo);
1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
1051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Error in SetConfig\n");
1052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: TestApp: Get Extension Index, pHandle %p\n", __LINE__, pHandle);
1055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.g711dec.datapath",&index);
1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
1057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Error getting extension index\n");
1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: TestApp: Set Config, pHandle %p\n", __LINE__, pHandle);
1061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetConfig (pHandle, index, &dataPath);
1062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
1063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
1064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: WmaDecTest.c :: Error from OMX_SetConfig() function\n",__LINE__);
1065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* start the OMX component */
1069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: TestApp: Change state to Idle, pHandle %p\n", __LINE__, pHandle);
1070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL);
1074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
1075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("Error from SendCommand-Idle(Init) State function\n");
1076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Wait for startup to complete */
1080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = WaitForState(pHandle, OMX_StateIdle);
1081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to SendCommand <OMX_StateIdle>");
1083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
1085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "Error:  hG711Encoder->WaitForState reports an error %X\n", error);
1086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: TestApp: State Changed to Idle\n", __LINE__);
1089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for(i = 0; i < testcnt; i++)
1090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        {
1091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(i > 0)
1092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            {
1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                printf ("\n***** Decoding the file for %i Time ***** \n",i+1);
1094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                close(IpBuf_Pipe[0]);
1096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                close(IpBuf_Pipe[1]);
1097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                close(OpBuf_Pipe[0]);
1098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                close(OpBuf_Pipe[1]);
1099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                close(Event_Pipe[0]);
1100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                close(Event_Pipe[1]);
1101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                /* Create a pipe used to queue data from the callback. */
1103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                retval = pipe(IpBuf_Pipe);
1104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if( retval != 0)
1105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                {
1106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT( "Error:Fill Data Pipe failed to open\n");
1107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    goto EXIT;
1108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                retval = pipe(OpBuf_Pipe);
1111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if( retval != 0)
1112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                {
1113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT( "Error:Empty Data Pipe failed to open\n");
1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    goto EXIT;
1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                retval = pipe(Event_Pipe);
1118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if( retval != 0) {
1119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT( "%d Error: Empty Event Pipe failed to open\n",__LINE__);
1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    goto EXIT;
1121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                fIn = fopen(argv[1], "r");
1124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(fIn == NULL)
1125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                {
1126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    fprintf(stderr, "Error:  failed to open the file %s for readonly access\n", argv[1]);
1127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    goto EXIT;
1128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                fOut = fopen(argv[2], "w");
1131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(fOut == NULL)
1132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                {
1133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    fprintf(stderr, "Error:  failed to create the output file \n");
1134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    goto EXIT;
1135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            done = 0;
1139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("Basic Function:: Sending OMX_StateExecuting Command\n");
1141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            GT_START();
1143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL);
1145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone)
1146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            {
1147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT ("Error from SendCommand-Executing State function\n");
1148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
1149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pComponent = (OMX_COMPONENTTYPE *)pHandle;
1151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = WaitForState(pHandle, OMX_StateExecuting);
1152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            GT_END("Call to SendCommand <OMX_StateExecuting>");
1154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone)
1156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            {
1157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT( "Error:  hG711Decoder->WaitForState reports an error %X\n", error);
1158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
1159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            for (k=0; k < numInputBuffers; k++)
1162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            {
1163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if (k==0)
1165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                {
1166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    GT_FlagE=1;  /* 1 = First Buffer,  0 = Not First Buffer  */
1167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    GT_START(); /* Empty Bufffer */
1168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                error = send_input_buffer (pHandle, pInputBufferHeader[k], fIn);
1171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (dasfmode == 0)
1174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            {
1175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                for (k=0; k < numOutputBuffers; k++)
1176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                {
1177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if (k==0)
1179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    {
1180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        GT_FlagF=1;  /* 1 = First Buffer,  0 = Not First Buffer  */
1181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        GT_START(); /* Fill Buffer */
1182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    OMX_FillThisBuffer(pHandle,  pOutputBufferHeader[k]);
1185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_GetState(pHandle, &state);
1189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            while( (error == OMX_ErrorNone) && (state != OMX_StateIdle) &&
1191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                   (state != OMX_StateInvalid)) {
1192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                FD_ZERO(&rfds);
1194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                FD_SET(IpBuf_Pipe[0], &rfds);
1195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                FD_SET(OpBuf_Pipe[0], &rfds);
1196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                FD_SET(Event_Pipe[0], &rfds);
1197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                tv.tv_sec = 1;
1198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                tv.tv_usec = 0;
1199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                frmCount++;
1200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                retval = select(fdmax+1, &rfds, NULL, NULL, &tv);
1202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(retval == -1)
1203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                {
1204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    perror("select()");
1205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT ( " : Error \n");
1206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    break;
1207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(retval == 0) {
1210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT ("%d :: BasicFn App Timeout !!!!!!!!!!! \n",__LINE__);
1211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                switch (command)
1214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                {
1215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 1: /* Testing Simple PLAY till EOF */
1216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 5: /* Testing Repeated PLAY without Deleting Component */
1217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 6: /* Testing Repeated PLAY with Deleting Component */
1218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 7: /* Testing Multiframe with each buffer size = 2 x frameLength */
1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 8: /* Testing Multiframe with each buffer size = 1/2 x frameLength */
1220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 9: /* Testing Multiframe with alternating buffer sizes */
1221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(FD_ISSET(IpBuf_Pipe[0], &rfds)) {
1222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_BUFFERHEADERTYPE* pBuffer;
1223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = send_input_buffer (pHandle, pBuffer, fIn);
1225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if (error != OMX_ErrorNone) {
1227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            printf ("Error While reading input pipe\n");
1228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        frmCnt++;
1231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pBuffer->nFlags = 0;
1232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    break;
1234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 2: /* Testing Stop and Play */
1236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 4: /* Testing STOP Command by Stopping In-Between */
1237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(FD_ISSET(IpBuf_Pipe[0], &rfds)) {
1238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_BUFFERHEADERTYPE* pBuffer;
1239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        frmCnt++;
1241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pBuffer->nFlags = 0;
1242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(frmCnt == 50) { /*100 Frames processed */
1243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            fprintf(stderr, "Shutting down since 100 frames were sent---------- \n");
1244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            GT_START();
1246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL);
1248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(error != OMX_ErrorNone) {
1249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                fprintf (stderr,"Error from SendCommand-Idle(Stop) State function\n");
1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                goto EXIT;
1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = WaitForState(pHandle, OMX_StateIdle);
1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            GT_END("Call to SendCommand <OMX_StateIdle>");
1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            if(error != OMX_ErrorNone) {
1257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                fprintf(stderr, "Error:  hPcmDecoder->WaitForState reports an error %X\n", error);
1258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                goto EXIT;
1259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            }
1260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            done = 1;
1261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = send_input_buffer (pHandle, pBuffer, fIn);
1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if (error != OMX_ErrorNone) {
1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            printf ("Error While reading input pipe\n");
1265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    break;
1269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 3: /* Testing PAUSE & RESUME Command */
1271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if (frmCount == 16) {  /*100 Frames processed */
1272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        printf (" Sending Resume command to Codec \n");
1273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        GT_START();
1275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_SendCommand(pHandle, OMX_CommandStateSet,OMX_StateExecuting, NULL);
1277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(error != OMX_ErrorNone) {
1278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            fprintf (stderr,"Error from SendCommand-Executing State function\n");
1279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        /* Wait for startup to complete */
1282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = WaitForState(pHandle, OMX_StateExecuting);
1283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        GT_END("Call to SendCommand <OMX_StateExecuting>");
1285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(error != OMX_ErrorNone) {
1287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            fprintf(stderr, "Error:  hPcmDecoder->WaitForState reports an error %X\n", error);
1288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(frmCount == 6) {   /*6 Frames processed */
1292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        printf (" Sending Pause command to Codec \n");
1293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        GT_START();
1295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StatePause, NULL);
1297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(error != OMX_ErrorNone) {
1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            fprintf (stderr,"Error from SendCommand-Pasue State function\n");
1299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        /* Wait for startup to complete */
1302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = WaitForState(pHandle, OMX_StatePause);
1303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        GT_END("Call to SendCommand <OMX_StatePause>");
1305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(error != OMX_ErrorNone) {
1307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            fprintf(stderr, "Error:  hPcmDecoder->WaitForState reports an error %X\n", error);
1308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(FD_ISSET(IpBuf_Pipe[0], &rfds)) {
1313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_BUFFERHEADERTYPE* pBuffer;
1314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = send_input_buffer (pHandle, pBuffer, fIn);
1316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if (error != OMX_ErrorNone) {
1317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            printf ("Error While reading input pipe\n");
1318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        frmCnt++;
1321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    break;
1323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 10: /* Testing Mute/Unmute for Playback Stream */
1325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(FD_ISSET(IpBuf_Pipe[0], &rfds)) {
1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_BUFFERHEADERTYPE* pBuffer;
1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pBuffer->nFlags = 0;
1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = send_input_buffer (pHandle, pBuffer, fIn);
1331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if (error != OMX_ErrorNone) {
1332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        frmCnt++;
1335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(frmCnt == 50) {
1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        printf("************Mute the playback stream*****************\n");
1338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pCompPrivateStructMute->bMute = OMX_TRUE;
1339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioMute, pCompPrivateStructMute);
1340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if (error != OMX_ErrorNone) {
1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = OMX_ErrorBadParameter;
1342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(frmCnt == 120) {
1346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        printf("************Unmute the playback stream*****************\n");
1347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pCompPrivateStructMute->bMute = OMX_FALSE;
1348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioMute, pCompPrivateStructMute);
1349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if (error != OMX_ErrorNone) {
1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = OMX_ErrorBadParameter;
1351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    break;
1355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 11: /* test set volume for playback stream */
1357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(FD_ISSET(IpBuf_Pipe[0], &rfds)) {
1358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_BUFFERHEADERTYPE* pBuffer;
1359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pBuffer->nFlags = 0;
1362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = send_input_buffer (pHandle, pBuffer, fIn);
1363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if (error != OMX_ErrorNone) {
1364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        frmCnt++;
1367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(frmCnt == 10) {
1369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        printf("************Set stream volume to high*****************\n");
1370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pCompPrivateStructVolume->sVolume.nValue = 0x8000;
1371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructVolume);
1372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if (error != OMX_ErrorNone) {
1373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = OMX_ErrorBadParameter;
1374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(frmCnt == 85) {
1378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        printf("************Set stream volume to low*****************\n");
1379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        pCompPrivateStructVolume->sVolume.nValue = 0x1000;
1380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructVolume);
1381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if (error != OMX_ErrorNone) {
1382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            error = OMX_ErrorBadParameter;
1383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    break;
1387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                case 12: /* test unsupported content*/
1389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(FD_ISSET(IpBuf_Pipe[0], &rfds)) {
1390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        int a, b;
1391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        a = (int)argv[4];
1392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        b = (int)argv[7];
1393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_BUFFERHEADERTYPE* pBuffer;
1394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        error = send_input_buffer (pHandle, pBuffer, fIn);
1396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if(((a != 8000)) || ((b <= 0) || (b >= 3))){
1397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            printf("************ Unsupported content ****************\n ");
1398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        if (error != OMX_ErrorNone) {
1401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            printf ("Error While reading input pipe\n");
1402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            goto EXIT;
1403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        }
1404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        frmCnt++;
1405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                default:
1407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT("%d :: ### Running Simple DEFAULT Case Here ###\n",__LINE__);
1408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                } /* Switch Command Ending Here */
1410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if( FD_ISSET(OpBuf_Pipe[0], &rfds) ) {
1412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    read(OpBuf_Pipe[0], &pBuf, sizeof(pBuf));
1413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if (OUTPUT_G711DEC_BUFFER_SIZE != pBuf->nFilledLen ) {
1414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        APP_DPRINT ("%d : WARNING: Different Size, %d\n",__LINE__,(int)pBuf->nFilledLen);
1415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if ((state != OMX_StateExecuting) && (pBuf->nFilledLen > 0))
1417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        printf("Writing remaining output buffer\n");
1418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    fwrite(pBuf->pBuffer, 1, pBuf->nFilledLen, fOut);
1419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    fflush(fOut);
1420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if (state == OMX_StateExecuting ) {
1421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_FillThisBuffer(pHandle, pBuf);
1422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                error = pComponent->GetState(pHandle, &state);
1426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(error != OMX_ErrorNone) {
1427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT("%d:: Warning:  hG711Encoder->GetState has returned status %X\n",__LINE__, error);
1428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    goto EXIT;
1429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                else if (preempted){
1431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    sched_yield();
1432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            } /* While Loop Ending Here */
1434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("The current state of the component = %d \n",state);
1436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fclose(fOut);
1437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fclose(fIn);
1438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(( command == 5) || (command == 2)) { /*If test is Stop & Play or Repeated*/
1439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                sleep (3);                                     /*play without deleting the component*/
1440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        } /* For loop on testcnt ends here */
1442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*        cmd_data.hComponent = pHandle;
1444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        cmd_data.AM_Cmd = AM_Exit;*/
1445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON
1446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((write(g711decfdwrite, &cmd_data, sizeof(cmd_data)))<0)
1447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("%d ::TestApp :: [G711 Dec Component] - send command to audio manager\n",__LINE__);
1448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close(g711decfdwrite);
1449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close(g711decfdread);
1450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Sending the StateLoaded Command\n");
1452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
1454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL);
1456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
1457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d:: Error from SendCommand-Idle State function\n",__LINE__);
1458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SendCommand(pHandle, OMX_CommandPortDisable, -1, NULL);
1462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
1465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "Error:  hG711Encoder->WaitForState reports an error %X\n", error);
1466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* free buffers */
1470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for (i=0; i < numInputBuffers; i++) {
1471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_FreeBuffer(pHandle,OMX_DirInput,pInputBufferHeader[i]);
1472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if( (error != OMX_ErrorNone)) {
1473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
1475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for (i=0; i < numOutputBuffers; i++) {
1479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_FreeBuffer(pHandle,OMX_DirOutput,pOutputBufferHeader[i]);
1480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if( (error != OMX_ErrorNone)) {
1481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                goto EXIT;
1483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER
1487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* free the App Allocated Buffers */
1488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("%d :: App: Freeing the App Allocated Buffers in TestApp\n",__LINE__);
1489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for(i=0; i < numInputBuffers; i++) {
1490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pInputBuffer[i] = pInputBuffer[i] - 128;
1491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_MEMPRINT("%d :: App: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]);
1492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(pInputBuffer[i] != NULL){
1493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                free(pInputBuffer[i]);
1494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                pInputBuffer[i] = NULL;
1495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for(i=0; i < numOutputBuffers; i++) {
1499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pOutputBuffer[i] = pOutputBuffer[i] - 128;
1500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_MEMPRINT("%d :: App: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, pOutputBuffer[i]);
1501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(pOutputBuffer[i] != NULL){
1502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                free(pOutputBuffer[i]);
1503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                pOutputBuffer[i] = NULL;
1504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = WaitForState(pHandle, OMX_StateLoaded);
1509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to SendCommand <OMX_StateLoaded After freeing input/output BUFFERS & OMX_CommandPortDisable>");
1511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Unload the G711 Encoder Component */
1514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Free the Component handle\n");
1515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = TIOMX_FreeHandle(pHandle);
1516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pG711Param);
1517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        free(pG711Param);
1518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pCompPrivateStruct->format.audio.cMIMEType);
1519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        free(pCompPrivateStruct->format.audio.cMIMEType);
1520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pCompPrivateStruct);
1521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        free(pCompPrivateStruct);
1522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if( (error != OMX_ErrorNone)) {
1523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close(IpBuf_Pipe[0]);
1528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close(IpBuf_Pipe[1]);
1529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close(OpBuf_Pipe[0]);
1530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close(OpBuf_Pipe[1]);
1531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close(Event_Pipe[0]);
1533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close(Event_Pipe[1]);
1534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("%d Free Handle returned Successfully\n",__LINE__);
1535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fclose(inputToSN);
1537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("%d:: Free Handle returned Successfully \n\n\n\n",__LINE__);
1538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } /* For loop on testcnt1 ends here */
1540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT:
1542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("G711_DEC test <End>");
1545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ListDestroy(pListHead);
1546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = TIOMX_Deinit();
1549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( (error != OMX_ErrorNone)) {
1550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("APP: Error in Deinit Core function\n");
1551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;
1552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return error;
1554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/***************************************************
1557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *   Send_input_Buffer send input buffer to OMX_COMPONENT
1559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *****************************************************/
1561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer(OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn)
1562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 nRead = fill_data (pBuffer, fIn);
1565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 i = 0;
1566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT ("%%%%%%%%%%%%%%%%%%%%%%%%%\n");
1567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT ("%d :: pBuffer = %p nRead = %d\n",__LINE__,pBuffer,nRead);
1568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT ("%%%%%%%%%%%%%%%%%%%%%%%%%\n");
1569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if((nRead < numRead) && (done == 0)) {
1571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fprintf(stderr, "Shutting down Since last buffer was sent---------- \n");
1572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
1574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL);
1576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
1577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fprintf (stderr,"Error from SendCommand-Idle(Stop) State function\n");
1578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
1579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        WaitForState(pHandle, OMX_StateIdle);
1581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to SendCommand <OMX_StateIdle>");
1583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        done = 1;
1585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBuffer->nFlags = OMX_BUFFERFLAG_EOS;
1586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("%i %s - EOS Has been ocurred \n",__LINE__,__FUNCTION__);
1587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    else {
1590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBuffer->nFilledLen = nRead;
1591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for (i=0; i < nRead; i++) {
1592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fprintf(inputToSN,"pBuffer->pBuffer[%d] = %x\n",i,pBuffer->pBuffer[i]);
1593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBuffer->nTimeStamp = rand()%100;
1595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBuffer->nTickCount = rand() % 70;
1596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        TIME_PRINT("TimeStamp Input: %lld\n",pBuffer->nTimeStamp);
1597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        TICK_PRINT("TickCount Input: %ld\n",pBuffer->nTickCount);
1598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_EmptyThisBuffer(pHandle, pBuffer);
1599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error == OMX_ErrorIncorrectStateOperation) error = 0;
1600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin EXIT:
1603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return error;
1604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_S16 fill_data (OMX_BUFFERHEADERTYPE *pBuf, FILE *fIn)
1608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 nRead = 0;
1610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    static OMX_S16 totalRead = 0;
1611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    static OMX_S16 fileHdrReadFlag = 0;
1612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (!fileHdrReadFlag) {
1614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fprintf (stderr, "Reading the file\n");
1615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fileHdrReadFlag = 1;
1616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (testCaseNo == 7) { /* Multiframe with each buffer size = 2* framelenght */
1619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        numRead = 2*pBuf->nAllocLen;
1620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    else if (testCaseNo == 8) { /* Multiframe with each buffer size = 2/framelenght */
1622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        numRead = pBuf->nAllocLen/2;
1623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    else if (testCaseNo == 9) { /* Multiframe with alternating buffer size */
1625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (alternate == 0) {
1626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            numRead = 2*pBuf->nAllocLen;
1627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            alternate = 1;
1628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        else {
1630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            numRead = pBuf->nAllocLen/2;
1631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            alternate = 0;
1632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    else {
1635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        numRead = pBuf->nAllocLen;
1636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    nRead = fread(pBuf->pBuffer, 1, numRead , fIn);
1638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    totalRead += nRead;
1639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pBuf->nFilledLen = nRead;
1641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return nRead;
1642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid ConfigureAudio()
1645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int Mixer = 0, arg = 0, status = 0;
1647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    Mixer = open("/dev/sound/mixer", O_WRONLY);
1649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (Mixer < 0) {
1650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        perror("open of /dev/sound/mixer failed");
1651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        exit(1);
1652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    arg = G711DEC_SAMPLING_FREQUENCY;      /* sampling rate */
1655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("Sampling freq set to:%d\n",arg);
1656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    status = ioctl(Mixer, SOUND_PCM_WRITE_RATE, &arg);
1657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (status == -1) {
1658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        perror("SOUND_PCM_WRITE_RATE ioctl failed");
1659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("sample rate set to %u\n", arg);
1660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    arg = AFMT_S16_LE;          /* AFMT_S16_LE or AFMT_S32_LE */
1662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    status = ioctl(Mixer, SOUND_PCM_SETFMT, &arg);
1663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (status == -1) {
1664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        perror("SOUND_PCM_SETFMT ioctl failed");
1665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("Bitsize set to %u\n", arg);
1666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    arg = 2;            /* Channels mono 1 stereo 2 */
1668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    status = ioctl(Mixer, SOUND_PCM_WRITE_CHANNELS, &arg);
1669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (status == -1) {
1670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        perror("SOUND_PCM_WRITE_CHANNELS ioctl failed");
1671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("Channels set to %u\n", arg);
1672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* MIN 0 MAX 100 */
1674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    arg = GAIN<<8|GAIN;
1676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    status = ioctl(Mixer, SOUND_MIXER_WRITE_VOLUME, &arg);
1677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (status == -1) {
1678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        perror("SOUND_MIXER_WRITE_VOLUME ioctl failed");
1679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("Volume set to %u\n", arg);
1680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_MEMDEBUG
1684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid * mymalloc(int line, char *s, int size)
1685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    void *p;
1687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int e=0;
1688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    p = malloc(size);
1689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(p==NULL){
1690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("Memory not available\n");
1691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        exit(1);
1692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    else{
1694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        while((lines[e]!=0)&& (e<500) ){
1695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            e++;
1696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        arr[e]=p;
1698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        lines[e]=line;
1699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        bytes[e]=size;
1700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcpy(file[e],s);
1701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("Allocating %d bytes on address %p, line %d file %s pos %d\n", size, p, line, s, e);
1702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return p;
1703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint myfree(void *dp, int line, char *s)
1707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int q = 0;
1709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    for(q=0;q<500;q++){
1710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(arr[q]==dp){
1711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Deleting %d bytes on address %p, line %d file %s\n", bytes[q],dp, line, s);
1712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            free(dp);
1713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            dp = NULL;
1714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            lines[q]=0;
1715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            strcpy(file[q],"");
1716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            break;
1717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(500==q)
1720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("\n\nPointer not found. Line:%d    File%s!!\n\n",line, s);
1721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return 0;
1723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1725