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 OMX_G722DecTest.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\g722_dec\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 *! This is newest file
38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * =========================================================================== */
39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ------compilation control switches -------------------------*/
40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define APP_DEBUG **/
41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#undef APP_DEBUG **/
42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*undef OMX_GETTIME  */
43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define G722DEC_DEBUG*/
45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define APP_DEBUG*/
46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define APP_STATEDETAILS*/
47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define WAITFORRESOURCES*/
48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef USE_BUFFER
49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/****************************************************************
50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  INCLUDE FILES
51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************/
52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ----- system and platform files ----------------------------*/
53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h>
54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h>
55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/ioctl.h>
56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h>
57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h>
58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h>
59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <fcntl.h>
60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <errno.h>
61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <signal.h>
62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/stat.h>
63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Index.h>
64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Types.h>
65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Core.h>
66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Audio.h>
67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <TIDspOmx.h>
68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h>
69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/soundcard.h>
70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum {FALSE, TRUE} boolean;
71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_G722Dec_Utils.h>
72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Common_Utils.h>
76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_GetTime.h>     /*Headers for Performance & measuremet    */
77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUG
80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_DPRINT(...)    fprintf(stderr,__VA_ARGS__)
81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_DPRINT(...)     /*0j0 printf (__VA_ARGS__)*/
83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_STATEDETAILS
86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_STATEPRINT(...)    fprintf(stderr,__VA_ARGS__)
87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_STATEPRINT(...)    /*0j0 printf (__VA_ARGS__)*/
89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* Constants */
92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define APP_OUTPUT_FILE        "output" /*.pcm"*/
93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SLEEP_TIME             2
94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722_APP_ID            100 /* Defines G722 Dec App ID, App must use this value */
95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define INVALID_SAMPLING_FREQ  51  /*Do not change; fixed for component!*/
96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define MAX_NUM_OF_BUFS        10  /*Do not change; fixed for component!*/
97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define EOS_MIN_SIZE           2
98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO1                  "/dev/fifo.1"
99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FIFO2                  "/dev/fifo.2"
100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define STR_G722DECODER        "OMX.TI.G722.decode"
101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUG
103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define N_REPETITIONS 5
104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define N_REPETITIONS 20
106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* undef OMX_GETTIME  */
109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* OMX_ERRORTYPE eError = OMX_ErrorNone;*/
111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint GT_FlagE = 0;  /* Fill Buffer 1 = First Buffer,  0 = Not First Buffer  */
112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint GT_FlagF = 0;  /*Empty Buffer  1 = First Buffer,  0 = Not First Buffer  */
113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_NODE* pListHead = NULL;
114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*typedef enum {FALSE, TRUE} boolean;*/
117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* Prototypes */
119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean              validateArguments  (int, char *[], int *, char *, int *, int *, int *, int *, int *, int *);
120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint                  maxint             (int a, int b);
121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE WaitForState       (OMX_HANDLETYPE *,       OMX_STATETYPE);
122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE        EventHandler       (OMX_HANDLETYPE,         OMX_PTR,                OMX_EVENTTYPE, OMX_U32, OMX_U32, OMX_PTR);
123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid                 FillBufferDone     (OMX_HANDLETYPE,         OMX_PTR,                OMX_BUFFERHEADERTYPE *);
124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid                 EmptyBufferDone    (OMX_HANDLETYPE,         OMX_PTR,                OMX_BUFFERHEADERTYPE *);
125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE        send_input_buffer  (OMX_HANDLETYPE,         OMX_BUFFERHEADERTYPE *, FILE *);
126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint                  validateArg4       (char *);
127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint           getNumTestCase            (char *, char *);
128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean       checkInputParameters      (int);
129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean       validateSampRate          (int);
130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean       omxSetInputPortParameter  (OMX_HANDLETYPE *, int, int);
131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean       omxSetOutputPortParameter (OMX_HANDLETYPE *, int, int, int);
132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean       g722SetInputPort          (OMX_HANDLETYPE *, int);
133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean       g722SetOutputPort         (OMX_HANDLETYPE *);
134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean       omxSetConfigMute          (OMX_HANDLETYPE *, OMX_BOOL);
135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean       omxSetConfigVolume        (OMX_HANDLETYPE *, OMX_S32);
136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE omxUseBuffers             (OMX_HANDLETYPE *, int, int, int, OMX_BUFFERHEADERTYPE *[], int, int, OMX_BUFFERHEADERTYPE *[]);
137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE testCases                 (OMX_HANDLETYPE *, fd_set *,int, FILE *, FILE *, int *, int *, struct timeval *, int, int, OMX_BUFFERHEADERTYPE *[], int, OMX_BUFFERHEADERTYPE *[]);
138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE testCase_2_4              (OMX_HANDLETYPE *, int, FILE *, FILE *, int, OMX_BUFFERHEADERTYPE *[]);
139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE testCase_3                (OMX_HANDLETYPE *);
140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE sendInBuffFillOutBuff     (OMX_HANDLETYPE *, int, int, int, OMX_BUFFERHEADERTYPE *[],  FILE *, OMX_BUFFERHEADERTYPE *[]);
142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE omxFreeBuffers            (OMX_HANDLETYPE *pHandle, int nBuffs, OMX_BUFFERHEADERTYPE *pBufferHeader  [], char *sBuffTypeMsg);
143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid          printTestCaseInfo         (int, char *);
145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid          getString_OMX_State       (char *ptrString, OMX_STATETYPE state);
146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* Global variables */
148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint sendlastbuffer   = 0;
149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_STATETYPE gState = OMX_StateExecuting;
150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint IpBuf_Pipe[2] = {0};
152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OpBuf_Pipe[2] = {0};
153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint Event_Pipe[2] = {0};
154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint preempted = 0;
156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn main() This is the main function of application which gets called.
160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param argc This is the number of commandline arguments..
162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param argv[] This is an array of pointers to command line arguments..
164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      An integer value.
170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint main(int argc, char* argv[])
175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_CALLBACKTYPE              G722CaBa = {(void *)EventHandler,
177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                              (void *)EmptyBufferDone,
178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                              (void *)FillBufferDone
179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    };
180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int                           nIpBuffs   = 1;
181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int                           nOpBuffs   = 1;
182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int                           nIpBufSize = 4096; /*default value */
183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int                           nOpBufSize = 320; /* default value */
184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int                           gDasfMode  = 0;
185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE               *pHandle                  = NULL;
186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE                 error                    = OMX_ErrorNone;
187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32                       AppData                  = G722_APP_ID;
188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    TI_OMX_DSP_DEFINITION         appPrivate;
189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_INDEXTYPE                 index     = 0;
190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE         *pInputBufferHeader  [MAX_NUM_OF_BUFS] = {NULL};
191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE         *pOutputBufferHeader [MAX_NUM_OF_BUFS] = {NULL};
192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    TI_OMX_DATAPATH               dataPath;
193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fd_set                        rfds;
194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    static int                    totalFilled = 0;
195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    struct timeval                tv;
196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int                           retval       = 0;
197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int                           frmCnt       = 1;
198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    char                          fname [100]  = APP_OUTPUT_FILE;
199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    FILE*                         fIn          = NULL;
200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    FILE*                         fOut         = NULL;
201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int                           tcID         = 0;
202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON
203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int                           g722decfdwrite = 0;
204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int                           g722decfdread  = 0;
205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ListCreate(&pListHead);
209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int iSampRate = 0;
211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    boolean bFlag = validateArguments (argc, argv, &iSampRate, fname, &tcID, &gDasfMode, &nIpBuffs, &nIpBufSize, &nOpBuffs, &nOpBufSize);
212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (bFlag == FALSE) {
213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("<<<<<<<<< Argument validate fault >>>>>>>>>");
214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        exit (1);
215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int nIdx = 0,
217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        nJdx = 0;
218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int nCntTest1 = (tcID != 6)? 1: N_REPETITIONS;
219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int nCntTest  = (tcID != 5)? 1: N_REPETITIONS;
220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUG
221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    char strState [20] = {""};
222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = TIOMX_Init();
225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: Error returned by OMX_Init()\n",__LINE__);
227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        exit (1);
228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    for (nIdx = 0; nIdx < nCntTest1; nIdx++) {
231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pHandle = malloc(sizeof(OMX_HANDLETYPE));
232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(pHandle == NULL){
233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("%d :: App: Malloc Failed\n",__LINE__);
234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON
238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((g722decfdwrite = open(FIFO1,O_WRONLY))<0) {
239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("[G722TEST] - failure to open WRITE pipe\n");
240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("[G722TEST] - opened WRITE pipe\n");
243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((g722decfdread = open(FIFO2,O_RDONLY))<0) {
245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("[G722TEST] - failure to open READ pipe\n");
246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("[G722TEST] - opened READ pipe\n");
249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((write(g722decfdwrite, &cmd_data, sizeof(cmd_data)))<0) {
252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("%d ::G722DecTest.c ::[G722 Dec Component] - send command to audio manager\n", __LINE__);
253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((read(g722decfdread, &cmd_data, sizeof(cmd_data)))<0) {
255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("%d ::G722DecTest.c ::[G722 Dec Component] - failure to get data from the audio manager\n", __LINE__);
256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_GetHandle(pHandle, STR_G722DECODER, &AppData, &G722CaBa);
263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to GetHandle");
264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = TIOMX_GetHandle(pHandle, STR_G722DECODER, &AppData, &G722CaBa);
266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((error != OMX_ErrorNone) || (*pHandle == NULL)) {
269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("Error in Get Handle function\n");
270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Create a pipe used to queue data from the callback. */
274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        retval = pipe(IpBuf_Pipe);
275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if( retval != 0) {
276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf( "Error:Fill In Buff Pipe failed to open\n");
277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        retval = pipe(OpBuf_Pipe);
281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if( retval != 0) {
282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf( "Error:Empty Out Buff Pipe failed to open\n");
283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        retval = pipe(Event_Pipe);
287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if( retval != 0) {
288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf( "Error:Empty Event Pipe failed to open\n");
289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Send input port config */
293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        bFlag = omxSetInputPortParameter (pHandle, nIpBuffs, nIpBufSize);
294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (bFlag == FALSE) {
295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Send output port config */
299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        bFlag = omxSetOutputPortParameter (pHandle, nOpBuffs, nOpBufSize, gDasfMode);
300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (bFlag == FALSE) {
301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_GetExtensionIndex(*pHandle, "OMX.TI.index.config.g722headerinfo",&index);
305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Error getting extension index\n");
307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        appPrivate.dasfMode = gDasfMode;
311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SetConfig(*pHandle, index, &appPrivate);
313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_ErrorBadParameter;
315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: Error from OMX_SetConfig() function\n",__LINE__);
316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = omxUseBuffers (pHandle, gDasfMode, nIpBuffs, nIpBufSize, pInputBufferHeader, nOpBuffs, nOpBufSize, pOutputBufferHeader);
323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (error != OMX_ErrorNone) {
324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Send  G722 config for input */
328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        bFlag = g722SetInputPort (pHandle, iSampRate);
329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (bFlag == FALSE) {
330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* Send  G722 config for output */
334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        bFlag = g722SetOutputPort (pHandle);
335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (bFlag == FALSE) {
336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(gDasfMode == 1) {
340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: G722 DECODER RUNNING UNDER DASF MODE\n",__LINE__);
341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RTM_PATH
343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            dataPath = DATAPATH_APPLICATION_RTMIXER;
344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef ETEEDN_PATH
346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            dataPath = DATAPATH_APPLICATION;
347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_GetExtensionIndex(*pHandle, "OMX.TI.index.config.g722dec.datapath",&index);
349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (error != OMX_ErrorNone) {
350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                printf("Error getting extension index\n");
351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                exit (1);
352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_SetConfig (*pHandle, index, &dataPath);
354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                error = OMX_ErrorBadParameter;
356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT("%d :: G722DecTest.c :: Error from OMX_SetConfig() function\n",__LINE__);
357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                exit (1);
358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SendCommand(*pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL);
361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("Error from SendCommand-Idle(Init) State function - error = %d\n",error);
363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: App :: About to call WaitForState to change to Idle\n",__LINE__);
368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = WaitForState(pHandle, OMX_StateIdle);
369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: App :: state changed to Idle\n",__LINE__);
370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "Error:  hAmrEncoder->WaitForState reports an error %X\n", error);
372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for (nJdx = 0; nJdx < nCntTest; nJdx++) {
376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(gDasfMode == 0) {
377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT("%d :: G722 DECODER RUNNING UNDER FILE MODE\n",__LINE__);
378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                fOut = fopen(fname, "w");
379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(fOut == NULL) {
380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT ( "Error:  failed to create the output file \n");
381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    exit (1);
382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT("%d :: Op File has created\n",__LINE__);
384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fIn = fopen(argv[1], "r");
386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(fIn == NULL) {
387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                fprintf(stderr, "Error:  failed to open the file %s for readonly access\n", argv[1]);
388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                exit (1);
389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (tcID == 5) {
392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                printf("*********************************************************\n");
393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                printf ("App: %d time Sending OMX_StateExecuting Command: TC 5\n", nJdx);
394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                printf("*********************************************************\n");
395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (tcID == 6) {
397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                printf("*********************************************************\n");
398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                printf("%d :: App: Outer %d time Sending OMX_StateExecuting Command: TC6\n",__LINE__, nIdx);
399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                printf("*********************************************************\n");
400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /* EOS_sent = OMX_FALSE; */
402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            GT_START();
404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_SendCommand(*pHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL);
406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT ("Error from SendCommand-Executing State function\n");
408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                exit (1);
409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: App :: About to call WaitForState to change to Executing\n",__LINE__);
412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = WaitForState(pHandle, OMX_StateExecuting);
413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            gState = OMX_StateExecuting;
414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            GT_START();
416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT( "Error:  WaitForState reports an error %X\n", error);
419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                exit (1);
420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: App :: state changed to Executing\n",__LINE__);
422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = sendInBuffFillOutBuff (pHandle, nIpBuffs, nOpBuffs, gDasfMode, pInputBufferHeader,  fIn, pOutputBufferHeader);
424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (error != OMX_ErrorNone) {
425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                exit (1);
426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            while (1) {
429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUG
430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                getString_OMX_State (strState, gState);
431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if ((error == OMX_ErrorNone) && (gState != OMX_StateIdle)) {
434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    error = testCases (pHandle, &rfds, tcID, fIn, fOut, &frmCnt, &totalFilled, &tv, gDasfMode, nIpBuffs, pInputBufferHeader, nOpBuffs, pOutputBufferHeader);
435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if (error != OMX_ErrorNone) {
436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        printf ("<<<<<<<<<<<<<< testCases fault exit >>>>>>>>>>>>>>\n");
437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        exit (1);
438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                } else if (preempted) {
440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    sched_yield ();
441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                } else {
442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    break;
443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    /* goto SHUTDOWN */
444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            } /* While Loop Ending Here */
446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fclose(fIn);
447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(0 == gDasfMode) {
448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                fclose(fOut);
449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(nIdx != (nCntTest - 1)) {
452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if((tcID == 5) || (tcID == 2)) {
453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    printf("%d :: sleeping here for %d secs\n",__LINE__,SLEEP_TIME);
454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    sleep (SLEEP_TIME);
455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON
459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        cmd_data.AM_Cmd = AM_Exit;
460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((write (g722decfdwrite, &cmd_data, sizeof(cmd_data)))<0)
461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("%d :: [G722 Dec Component] - send command to audio manager\n",__LINE__);
462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close(g722decfdwrite);
463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close(g722decfdread);
464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("Sending the StateLoaded Command\n");
468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_START();
470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SendCommand(*pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL);
472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = omxFreeBuffers (pHandle, nIpBuffs, pInputBufferHeader, "Input");
474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((error != OMX_ErrorNone)) {
475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d:: Error in Free Input Buffers function\n",__LINE__);
476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(gDasfMode == 0) {
479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = omxFreeBuffers (pHandle, nOpBuffs, pOutputBufferHeader, "Output");
480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if((error != OMX_ErrorNone)) {
481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT ("%d:: Error in Free Output Buffers function\n",__LINE__);
482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                exit (1);
483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = WaitForState(pHandle, OMX_StateLoaded);
486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to SendCommand <OMX_StateLoaded>");
488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d:: Error from SendCommand-Idle State function\n",__LINE__);
491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES
495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateWaitForResources, NULL);
496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d :: AmrDecTest.c :: Error from SendCommand-Idle State function\n",__LINE__);
498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("goto EXIT %d\n",__LINE__);
499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;
501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = WaitForState(pHandle, OMX_StateWaitForResources);
503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* temporarily put this here until I figure out what should really happen here */
505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        sleep(10);
506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_SendCommand(*pHandle, OMX_CommandPortDisable, -1, NULL);
509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_RENDERING_ON
512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((write(g722decfdwrite, &cmd_data, sizeof(cmd_data)))<0)
513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d [G722Dec Test] - send command to audio manager\n",__LINE__);
514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = TIOMX_FreeHandle(*pHandle);
517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if( (error != OMX_ErrorNone)) {
518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            exit (1);
520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("%d:: Free Handle returned Successfully \n\n\n\n",__LINE__);
522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (pHandle) {
523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            free(pHandle);
524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close (Event_Pipe[0]);
527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close (Event_Pipe[1]);
528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close (IpBuf_Pipe[0]);
529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close (IpBuf_Pipe[1]);
530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close (OpBuf_Pipe[0]);
531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        close (OpBuf_Pipe[1]);
532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        sendlastbuffer = 0;
534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = TIOMX_Deinit();
537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( (error != OMX_ErrorNone)) {
538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("APP: Error in Deinit Core function\n");
539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (gDasfMode == 0) {
542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("**********************************************************\n");
543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("NOTE: An output file %s has been created in file system\n",APP_OUTPUT_FILE);
544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("**********************************************************\n");
545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("G722_DEC test <End>");
548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ListDestroy(pListHead);
549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    exit (0);
551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} /* end main () */
552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn validateArguments() This is the main function of application which gets called.
556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean validateArguments (int nArgc, char *sArgv [], int *iSampRate, char *fname, int *tcID, int *gDasfMode, int *nIpBuffs, int *nIpBufSize, int *nOpBuffs, int *nOpBufSize)
560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("------------------------------------------------------\n");
562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("This is Main Thread In G722 DECODER Test Application:\n");
563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("Test Core 1.5 - " __DATE__ ":" __TIME__ "\n");
564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("------------------------------------------------------\n");
565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* check the input parameters */
567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (checkInputParameters (nArgc) == FALSE) {
568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* check to see that the input file exists */
572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    struct stat sb = {0};
573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int status = stat(sArgv[1], &sb);
574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( status != 0 ) {
575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf( "Cannot find file %s. (%u)\n", sArgv[1], errno);
576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Test not performed!!!!!!\n\n");
577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int nTmp = atoi(sArgv[2]);
581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (validateSampRate (nTmp) == FALSE) {
582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    *iSampRate = nTmp;
585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    *tcID = getNumTestCase (sArgv [3], fname);
587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (*tcID == 0) {
588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("Invalid Test Case ID: exiting...\n");
589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    *gDasfMode = validateArg4 (sArgv [4]);
593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (*gDasfMode == -1) {
594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    *nIpBuffs = atoi(sArgv[5]);
598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("%d :: App: nIpBuf = %d\n",__LINE__, *nIpBuffs);
599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    *nIpBufSize = atoi(sArgv[6]);
600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("%d :: App: nIpBufSize = %d\n",__LINE__, *nIpBufSize);
601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    *nOpBuffs = atoi(sArgv[7]);
602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("%d :: App: nOpBuf = %d\n",__LINE__, *nOpBuffs);
603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    *nOpBufSize = atoi(sArgv[8]);
604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_DPRINT("%d :: App: nOpBufSize = %d\n",__LINE__, *nOpBufSize);
605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf ("Sample rate:\t\t %d\n", *iSampRate);
607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf ("Test case ID:\t\t %d\n", *tcID);
608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf ("DasfMode:\t\t %d\n", *gDasfMode);
609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf ("# of Input Buffers:\t %d\n", *nIpBuffs);
610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf ("Size of Input Buffers:\t %d\n", *nIpBufSize);
611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf ("# of Output Buffers:\t %d\n", *nOpBuffs);
612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf ("Size of Output Buffers:\t %d\n", *nOpBufSize);
613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (TRUE);
614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**/
616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn maxint() gives the maximum of two integers.
619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param a intetger a
621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param b integer b
623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      bigger number
629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint maxint(int a, int b)
634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (a>b) ? a : b;
636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn WaitForState() Waits for the state to change.
641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pHandle This is component handle allocated by the OMX core.
643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param DesiredState This is state which the app is waiting for.
645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      Appropriate OMX Error.
651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE WaitForState(OMX_HANDLETYPE* pHandle, OMX_STATETYPE DesiredState)
656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STATETYPE CurState = OMX_StateInvalid;
658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int nCnt = 0;
660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_GetState(*pHandle, &CurState);
662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    while( (error == OMX_ErrorNone) && (CurState != DesiredState)) {
663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        sched_yield();
664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(nCnt++ == 10) {
665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT( "Still Waiting, press CTL-C to continue\n");
666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_GetState(*pHandle, &CurState);
668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return error;
671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn EventHandler() This is event handle which is called by the component on
677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * any event change.
678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComponent This is component handle allocated by the OMX core.
680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pAppData This is application private data.
682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param eEvent  This is event generated from the component.
684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nData1  Data1 associated with the event.
686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param nData2  Data2 associated with the event.
688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pEventData Any other string event data from component.
690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      Appropriate OMX error.
696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE EventHandler(OMX_HANDLETYPE hComponent,OMX_PTR pAppData,OMX_EVENTTYPE eEvent,
701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                           OMX_U32 nData1, OMX_U32 nData2, OMX_PTR pEventData)
702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8        writeValue = 0;
704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef APP_DEBUG
705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    char strState [20] = {""};
706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    char strTargetState [20] = {""};
707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    getString_OMX_State (strState, nData2);
708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    getString_OMX_State (strTargetState, nData1);
709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    switch (eEvent) {
712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventResourcesAcquired:
713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("------> OMX_EventResourcesAcquired <--------\n");
714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        writeValue = 1;
715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        preempted = 0;
717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventCmdComplete:
719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("------> OMX_EventCmdComplete<--------\n");
720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        gState = (OMX_STATETYPE)nData2;
721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventMax:
723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("------> OMX_EventMax<--------\n");
724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventMark:
725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("------> OMX_EventMark<--------\n");
726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventPortSettingsChanged:
728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("------> OMX_EventPortSettingsChanged <--------\n");
729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventComponentResumed:
731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("------> OMX_EventComponentResumed <--------\n");
732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventDynamicResourcesAvailable:
734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("------> OMX_EventDynamicResourcesAvailable <--------\n");
735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventPortFormatDetected:
737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventError:
739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("------> OMX_EventError <--------\n");
740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ( "%d :: G722DecTest.c  Event: OMX_EventError. Component State Changed To %s. Target %s\n", __LINE__, strState, strTargetState);
741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (nData1 != OMX_ErrorInvalidState && nData1 == OMX_ErrorResourcesPreempted) {
742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("------> \tprocess on  OMX_ErrorResourcesPreempted<--------\n");
743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            preempted=1;
744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            writeValue = 0;
746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        } else {
748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("------> \tnothing to process on OMX_EnentError <--------\n");
749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_EventBufferFlag:
752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("------> OMX_EventBufferFlag <--------\n");
753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ( "%d :: G722DecTest.c  Event: OMX_EventBufferFlag. Component State Changed To %s. Target %s\n", __LINE__, strState, strTargetState);
754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* <<<<< Process Manager <<<<< */
755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        writeValue = 2;
756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        write(Event_Pipe[1], &writeValue, sizeof(OMX_U8));
757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* >>>>>>>>>> */
758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    default:
760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("------> Unknown event <--------\n");
761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return OMX_ErrorNone;
765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn FillBufferDone() Component sens the output buffer to app using this
770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * callback.
771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComponent This is component handle allocated by the OMX core.
773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ptr This is another pointer.
775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pBuffer This is output buffer.
777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      None
783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid FillBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer)
788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    write(OpBuf_Pipe[1], &pBuffer, sizeof(pBuffer));
790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE eError = OMX_ErrorNone;
792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int GT_FlagE = 0;  /* Fill Buffer 1 = First Buffer,  0 = Not First Buffer  */
793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int GT_FlagF = 0;  /*Empty Buffer  1 = First Buffer,  0 = Not First Buffer  */
794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    static OMX_NODE* pListHead = NULL;
795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn EmptyBufferDone() Component sends the input buffer to app using this
801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * callback.
802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param hComponent This is component handle allocated by the OMX core.
804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param ptr This is another pointer.
806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pBuffer This is input buffer.
808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      None
814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid EmptyBufferDone(OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer)
819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (!preempted)
821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        write(IpBuf_Pipe[1], &pBuffer, sizeof(pBuffer));
822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (GT_FlagF == 1 ) { /* First Buffer Reply*/  /* 1 = First Buffer,  0 = Not First Buffer  */
824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_END("Call to FillBufferDone  <First: FillBufferDone>");
825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        GT_FlagF = 0 ;   /* 1 = First Buffer,  0 = Not First Buffer  */
826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn send_input_buffer() Sends the input buffer to the component.
833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pHandle This is component handle allocated by the OMX core.
835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pBuffer This is the buffer pointer.
837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fIn This is input file handle.
839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      Appropriate OMX error.
845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer(OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBufferHeader, FILE *fIn)
850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int nRead = 0;
853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    static int totalRead = 0;
854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    static int fileHdrReadFlag = 0;
855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    static int ccnt = 1;
856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (!fileHdrReadFlag) {
857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fileHdrReadFlag = 1;
858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    nRead = fread(pBufferHeader->pBuffer, 1, pBufferHeader->nAllocLen , fIn);
860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (nRead != 0) {
862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        totalRead += nRead;
863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBufferHeader->nFilledLen = nRead;
864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        ccnt++;
865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("\n*****************************************************\n");
867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("%d :: App:: pBuffer->pBuffer = %p pBuffer->nAllocLen = * %ld, nRead = %d, totalread = %d\n",
868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    __LINE__, pBufferHeader->pBuffer, pBufferHeader->nAllocLen, nRead, totalRead);
869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("\n*****************************************************\n");
870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(sendlastbuffer){
873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        sendlastbuffer = 0;
874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBufferHeader->nFlags = 0;
875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return error;
877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(nRead < pBufferHeader->nAllocLen) {
880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBufferHeader->nFlags = OMX_BUFFERFLAG_EOS;
881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        sendlastbuffer = 1;
882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else {
883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        pBufferHeader->nFlags = 0;
884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pBufferHeader->nFilledLen = nRead;
886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_EmptyThisBuffer(pHandle, pBufferHeader);
887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return error;
888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn validateArg4() This is the main function of application which gets called.
893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint validateArg4 (char *sArg4)
897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int gDasfMode = -1;
899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (!strcmp(sArg4, "DM")) {
901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        gDasfMode = 1;
902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if (!strcmp(sArg4, "FM")) {
903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        gDasfMode = 0;
904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else {
905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("\n%d :: App: Sending Bad Parameter for dasf mode\n",__LINE__);
906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("%d :: App: Should Be One of these Modes FM or DM\n",__LINE__);
907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        gDasfMode = -1;
908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (gDasfMode);
911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn getNumTestCase() This is the main function of application which gets called.
916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint getNumTestCase (char *sTestCase, char *sFileName)
920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int iTestCase = 0;
922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(!strcmp(sTestCase,"TC_1")) {
924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        iTestCase = 1;
925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if (!strcmp(sTestCase,"TC_2")) {
926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        iTestCase = 2;
927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if (!strcmp(sTestCase,"TC_3")) {
928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        iTestCase = 3;
929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if (!strcmp(sTestCase,"TC_4")) {
930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        iTestCase = 4;
931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if (!strcmp(sTestCase,"TC_5")) {
932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        iTestCase = 5;
933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if (!strcmp(sTestCase,"TC_6")) {
934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        iTestCase = 6;
935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if (!strcmp(sTestCase,"TC_7")) {
936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        iTestCase = 7;
937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if (!strcmp(sTestCase,"TC_8")) {
938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        iTestCase = 8;
939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if (!strcmp(sTestCase,"TC_9")) {
940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        iTestCase = 9;
941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printTestCaseInfo (iTestCase, sFileName);
943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (iTestCase);
945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn printTestCaseInfo() This is the main function of application which gets called.
950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid printTestCaseInfo (int iTestCase, char *sFileName)
954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    switch (iTestCase) {
956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 1:
957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 7:
958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 8:
959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Simple PLAY till EOF \n");
961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcat(sFileName, ".pcm");
963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 2:
965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Basic Stop \n");
967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcat(sFileName, "_tc2.pcm");
969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 3:
971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing PAUSE & RESUME Command\n");
973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------\n");
974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcat(sFileName, ".pcm");
975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 4:
977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("---------------------------------------------\n");
978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing STOP Command by Stopping In-Between\n");
979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("---------------------------------------------\n");
980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 5:
982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------------------\n");
983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Repeated PLAY without Deleting Component\n");
984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("-------------------------------------------------\n");
985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcat(sFileName,"_tc5.pcm");
986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 6:
988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------\n");
989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Testing Repeated PLAY with Deleting Component\n");
990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------\n");
991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcat(sFileName,"_tc6.pcm");
992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 9:
994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------\n");
995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("TimeStamp, TickCounts\n");
996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("------------------------------------------------\n");
997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcat(sFileName,"_tc6.pcm");
998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return;
1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn checkInputParameters() This is the main function of application which gets called.
1007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean checkInputParameters (iNumParams)
1011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(iNumParams != 9) {
1013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("Wrong Arguments: See Below:\n\n");
1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("%d :: Usage: [TestApp] [Input File] [Input File Bit Rate] [TC ID]\
1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin[FM/DM] [NB INPUT BUF] [INPUT BUF SIZE] [NB OUTPUT BUF] [OUTPUT BUF SIZE]\n",__LINE__);
1016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (TRUE);
1019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn validateSampRate() This is the main function of application which gets called.
1024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean validateSampRate (int iSampRate)
1028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (iSampRate == 64000) {
1030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (TRUE);
1031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if(iSampRate == 56000) {
1032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (TRUE);
1033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if(iSampRate == 48000) {
1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (TRUE);
1035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else if (iSampRate == INVALID_SAMPLING_FREQ) {
1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("***********************************************************\n");
1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("%d :: App: Note: Invalid Frequency has been specified by App\n",__LINE__);
1038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("***********************************************************\n");
1039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
1040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } else {
1041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("%d :: Sample Frequency Not Supported: \n", __LINE__);
1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("Supported frequencies are: 64000 or 56000 or 48000.\n");
1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("If you want to specify invalid sampling frequency, specify %d and test the component for error.\n",
1044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                INVALID_SAMPLING_FREQ);
1045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("%d :: Exiting...........\n",__LINE__);
1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
1047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf ("Unspecified error.\n");
1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (FALSE);
1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn omxSetInputPortParameter() This is the main function of application which gets called.
1055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean omxSetInputPortParameter (OMX_HANDLETYPE *pHandle, int nIpBuffs, int nIpBufSize)
1059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PARAM_PORTDEFINITIONTYPE pCompPrivateStruct;
1061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.nSize                  = sizeof (OMX_PARAM_PORTDEFINITIONTYPE);
1064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.eDir                   = OMX_DirInput;
1065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.nBufferCountActual     = nIpBuffs;
1066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.nBufferSize            = nIpBufSize;
1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.format.audio.eEncoding = OMX_AUDIO_CodingPCM;
1068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.bEnabled               = OMX_TRUE;
1069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.bPopulated             = OMX_FALSE;
1070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.nPortIndex             = OMX_DirInput;
1071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_START();
1073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SetParameter(*pHandle,OMX_IndexParamPortDefinition, &pCompPrivateStruct);
1074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("Set Parameter Test-SetParameter");
1075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
1076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SetParameter(*pHandle,OMX_IndexParamPortDefinition, &pCompPrivateStruct);
1077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_ErrorBadParameter;
1080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("%d :: OMX_ErrorBadParameter\n",__LINE__);
1081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (TRUE);
1084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn omxSetOutputPortParameter() This is the main function of application which gets called.
1089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean omxSetOutputPortParameter (OMX_HANDLETYPE *pHandle, int nOpBuffs, int nOpBufSize, int gDasfMode)
1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PARAM_PORTDEFINITIONTYPE pCompPrivateStruct;
1095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.eDir                   = OMX_DirOutput;
1098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.nBufferCountActual     = (gDasfMode == 1)? 0 : nOpBuffs;
1099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.nBufferSize            = nOpBufSize;
1100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.format.audio.eEncoding = OMX_AUDIO_CodingPCM;
1101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.bEnabled               = OMX_TRUE;
1102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.bPopulated             = (gDasfMode == 1)? OMX_TRUE : OMX_FALSE;
1103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStruct.nPortIndex             = OMX_DirOutput;
1104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_START();
1107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SetParameter(*pHandle,OMX_IndexParamPortDefinition, &pCompPrivateStruct);
1108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("Set Parameter Test-SetParameter");
1109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
1110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SetParameter(*pHandle,OMX_IndexParamPortDefinition, &pCompPrivateStruct);
1111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_ErrorBadParameter;
1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf ("%d :: OMX_ErrorBadParameter\n",__LINE__);
1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (TRUE);
1118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn g722SetInputPort() This is the main function of application which gets called.
1123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean g722SetInputPort (OMX_HANDLETYPE *pHandle, int iSampRate)
1127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_PCMMODETYPE pG722Param;
1129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nSize                    = sizeof(OMX_AUDIO_PARAM_PCMMODETYPE);
1132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nVersion.s.nVersionMajor = 0xF1;
1133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nVersion.s.nVersionMinor = 0xF2;
1134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nPortIndex               = OMX_DirInput;
1135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nChannels                = 1; /* mono */
1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nBitPerSample            = 8;
1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.eNumData                 = OMX_NumericalDataUnsigned;
1138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.eEndian                  = OMX_EndianLittle;
1139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.bInterleaved             = OMX_FALSE;
1140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.ePCMMode                 = OMX_AUDIO_PCMModeLinear;
1141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nSamplingRate            = iSampRate;
1142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_START();
1145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SetParameter (*pHandle, OMX_IndexParamAudioPcm, &pG722Param);
1146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("Set Parameter Test-SetParameter");
1147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
1148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SetParameter (*pHandle, OMX_IndexParamAudioPcm, &pG722Param);
1149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (error != OMX_ErrorNone) {
1152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_ErrorBadParameter;
1153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
1154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (TRUE);
1156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn g722SetOutputPort() This is the main function of application which gets called.
1161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean g722SetOutputPort (OMX_HANDLETYPE *pHandle)
1165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_PCMMODETYPE pG722Param;
1167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nSize                    = sizeof(OMX_AUDIO_PARAM_PCMMODETYPE);
1170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nVersion.s.nVersionMajor = 0xF1;
1171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nVersion.s.nVersionMinor = 0xF2;
1172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nPortIndex               = OMX_DirOutput;
1173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nChannels                = 1; /* mono */
1174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nBitPerSample            = 16;
1175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.nSamplingRate            = 16000;
1176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.eNumData                 = OMX_NumericalDataUnsigned;
1177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.eEndian                  = OMX_EndianLittle;
1178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.bInterleaved             = OMX_FALSE;
1179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pG722Param.ePCMMode                 = OMX_AUDIO_PCMModeLinear;
1180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_START();
1183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SetParameter (*pHandle, OMX_IndexParamAudioPcm, &pG722Param);
1184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("Set Parameter Test-SetParameter");
1185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
1186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SetParameter (*pHandle, OMX_IndexParamAudioPcm, &pG722Param);
1187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (error != OMX_ErrorNone) {
1190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_ErrorBadParameter;
1191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
1192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (TRUE);
1194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn omxSetConfigMute() This is the main function of application which gets called.
1199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean omxSetConfigMute (OMX_HANDLETYPE *pHandle, OMX_BOOL bMute)
1203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_CONFIG_MUTETYPE    pCompPrivateStructMute;
1205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* default setting for Mute/Unmute */
1208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructMute.nSize                    = sizeof (OMX_AUDIO_CONFIG_MUTETYPE);
1209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructMute.nVersion.s.nVersionMajor = 0xF1;
1210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructMute.nVersion.s.nVersionMinor = 0xF2;
1211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructMute.nPortIndex               = OMX_DirInput;
1212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructMute.bMute                    = bMute;
1213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SetConfig(*pHandle, OMX_IndexConfigAudioMute, &pCompPrivateStructMute);
1215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (error != OMX_ErrorNone) {
1216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_ErrorBadParameter;
1217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
1218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (TRUE);
1220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn omxSetConfigVolume() This is the main function of application which gets called.
1225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinboolean omxSetConfigVolume (OMX_HANDLETYPE *pHandle, OMX_S32 nVolume)
1229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_CONFIG_VOLUMETYPE  pCompPrivateStructVolume;
1231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* default setting for volume */
1234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructVolume.nSize                    = sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE);
1235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructVolume.nVersion.s.nVersionMajor = 0xF1;
1236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructVolume.nVersion.s.nVersionMinor = 0xF2;
1237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructVolume.nPortIndex               = OMX_DirInput;
1238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructVolume.bLinear                  = OMX_FALSE;
1239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructVolume.sVolume.nValue           = nVolume;  /* actual volume */
1240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructVolume.sVolume.nMin             = 0;   /* min volume */
1241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pCompPrivateStructVolume.sVolume.nMax             = 100; /* max volume */
1242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SetConfig(*pHandle, OMX_IndexConfigAudioVolume, &pCompPrivateStructVolume);
1244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (error != OMX_ErrorNone) {
1245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_ErrorBadParameter;
1246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (FALSE);
1247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (TRUE);
1249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn omxUseBuffers() This is the main function of application which gets called.
1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE omxUseBuffers (OMX_HANDLETYPE *pHandle, int gDasfMode, int nIpBuffs, int nIpBufSize, OMX_BUFFERHEADERTYPE *pInputBufferHeader [], int nOpBuffs, int nOpBufSize, OMX_BUFFERHEADERTYPE *pOutputBufferHeader [])
1258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int i=0;                                                                                    /* 0j0 <<<<<<<<<<< */
1261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef USE_BUFFER
1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    for(i=0; i < nIpBuffs; i++) {
1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: About to call OMX_AllocateBuffer On Input\n",__LINE__);
1265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_AllocateBuffer(*pHandle, &pInputBufferHeader[i], 0, NULL, nIpBufSize);
1266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: called OMX_AllocateBuffer\n",__LINE__);
1267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
1268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__);
1269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            return (error);
1270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (gDasfMode == 0) {
1274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for(i=0; i < nOpBuffs; i++) {
1275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_AllocateBuffer(*pHandle,&pOutputBufferHeader[i],1,NULL,nOpBufSize);
1276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
1277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__);
1278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
1283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8* pInputBuffer  [MAX_NUM_OF_BUFS] = {NULL};
1284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8* pOutputBuffer [MAX_NUM_OF_BUFS] = {NULL};
1285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    for(i=0; i<nIpBuffs; i++) {
1287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (pInputBuffer[i] == NULL) {
1288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pInputBuffer[i] = (OMX_U8*)malloc(nIpBufSize);
1289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: About to call OMX_UseBuffer On Input\n",__LINE__);
1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("%d :: About to call OMX_UseBuffer On Input\n",__LINE__);
1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_UseBuffer(*pHandle,&pInputBufferHeader[i],0,NULL,nIpBufSize,pInputBuffer[i]);
1292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
1293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__);
1294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (gDasfMode == 0) {
1300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for(i=0; i<nOpBuffs; i++) {
1301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (pOutputBuffer[i] == NULL) {
1302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                pOutputBuffer[i] = malloc (nOpBufSize + 256);
1303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                pOutputBuffer[i] = pOutputBuffer[i] + 128;
1304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                /* allocate output buffer */
1305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT("%d :: About to call OMX_UseBuffer On Output\n",__LINE__);
1306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                printf("%d :: About to call OMX_UseBuffer On Output\n",__LINE__);
1307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                error = OMX_UseBuffer(*pHandle,&pOutputBufferHeader[i],1,NULL,nOpBufSize,pOutputBuffer[i]);
1308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(error != OMX_ErrorNone) {
1309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__);
1310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    return (error);
1311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                pOutputBufferHeader[i]->nFilledLen = 0;
1313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (error);
1318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn testCases() This is the main function of application which gets called.
1323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE testCases (OMX_HANDLETYPE *pHandle, fd_set *rfds, int tcID, FILE *fIn, FILE *fOut, int *frmCnt, int *totalFilled, struct timeval *tv, int gDasfMode, int nIpBuffs, OMX_BUFFERHEADERTYPE *pInputBufferHeader [], int nOpBuffs, OMX_BUFFERHEADERTYPE *pOutputBufferHeader [])
1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    boolean bFlag = true;
1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    static int frmCount = 0;
1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int fdmax = maxint(IpBuf_Pipe [0], OpBuf_Pipe [0]);
1333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fdmax = maxint (fdmax, Event_Pipe [0]);
1334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    FD_ZERO (rfds);
1336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    FD_SET (IpBuf_Pipe[0], rfds);
1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    FD_SET (OpBuf_Pipe[0], rfds);
1338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    FD_SET (Event_Pipe[0], rfds);
1339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    tv->tv_sec  = 1;
1340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    tv->tv_usec = 0;
1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int retval = select(fdmax+1, rfds, NULL, NULL, tv);
1343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(retval == -1) {
1344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        perror("select()");
1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ( " : Error \n");
1346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (OMX_EventError);
1347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(retval == 0) {
1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT ("%d :: BasicFn App Timeout !!!!!!!!!!! \n",__LINE__);
1351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*****/
1353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    frmCount++;
1354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    switch (tcID) {
1356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 1:
1357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 5:
1358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 6:
1359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(FD_ISSET(IpBuf_Pipe[0], rfds)) {
1360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_BUFFERHEADERTYPE* pBuffer = NULL;
1361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: APP: input buffer received, filled length = %d\n",__LINE__,(int)pBuffer->nFilledLen);
1363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = send_input_buffer (*pHandle, pBuffer, fIn);
1364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (error != OMX_ErrorNone) {
1365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 2:
1370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 4:
1371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(FD_ISSET(IpBuf_Pipe[0], rfds)) {
1372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(*frmCnt == 4) {
1373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_DPRINT("Shutting down ---------- \n");
1374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                GT_START();
1376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                error = OMX_SendCommand(*pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL);
1378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(error != OMX_ErrorNone) {
1379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    fprintf (stderr,"Error from SendCommand-Idle(Stop) State function\n");
1380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    return (error);
1381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(tcID == 4) {
1383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    error = testCase_2_4 (pHandle, gDasfMode, fIn, fOut, nIpBuffs, pInputBufferHeader);
1384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if(error != OMX_ErrorNone) {
1385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        fprintf (stderr,"Error from SendCommand-Idle(Stop) State function\n");
1386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        return (error);
1387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            } else {
1390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                OMX_BUFFERHEADERTYPE* pBuffer = NULL;
1391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                error = send_input_buffer (*pHandle, pBuffer, fIn);
1393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if (error != OMX_ErrorNone) {
1394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    return (error);
1395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            (*frmCnt)++;
1398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 3:
1401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(frmCount == 3 || frmCount == 6) {
1402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = testCase_3 (pHandle);
1403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
1404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(FD_ISSET(IpBuf_Pipe[0], rfds)) {
1409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_BUFFERHEADERTYPE* pBuffer = NULL;
1411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = send_input_buffer (*pHandle, pBuffer, fIn);
1413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (error != OMX_ErrorNone) {
1414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            (*frmCnt)++;
1418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 7:
1421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* test mute/unmute playback stream */
1422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(FD_ISSET(IpBuf_Pipe[0], rfds)) {
1423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_BUFFERHEADERTYPE* pBuffer = NULL;
1424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = send_input_buffer (*pHandle, pBuffer, fIn);
1426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (error != OMX_ErrorNone) {
1427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            (*frmCnt)++;
1430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(*frmCnt == 3) {
1433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("************Mute the playback stream*****************\n");
1434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            bFlag = omxSetConfigMute (pHandle, OMX_TRUE);
1435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (bFlag == FALSE) {
1436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(*frmCnt == 6) {
1441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("************Unmute the playback stream*****************\n");
1442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            bFlag = omxSetConfigMute (pHandle, OMX_FALSE);
1443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (bFlag == FALSE) {
1444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 8:
1450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /* test set volume for playback stream */
1451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(FD_ISSET(IpBuf_Pipe[0], rfds)) {
1452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_BUFFERHEADERTYPE* pBuffer = NULL;
1453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = send_input_buffer (*pHandle, pBuffer, fIn);
1455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (error != OMX_ErrorNone) {
1456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            (*frmCnt)++;
1460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(*frmCnt == 3) {
1463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("************Set stream volume to high*****************\n");
1464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            bFlag = omxSetConfigVolume (pHandle, 0x8000);
1465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (bFlag == FALSE) {
1466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(*frmCnt == 6) {
1471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("************Set stream volume to low*****************\n");
1472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            bFlag = omxSetConfigVolume (pHandle, 0x1000);
1473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (bFlag == FALSE) {
1474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case 9:
1479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(FD_ISSET(IpBuf_Pipe[0], rfds)) {
1480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_BUFFERHEADERTYPE* pBuffer=  NULL;
1481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer));
1482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: APP: input buffer received, filled length = %d\n",__LINE__,(int)pBuffer->nFilledLen);
1483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = send_input_buffer (*pHandle, pBuffer, fIn);
1484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (error != OMX_ErrorNone) {
1485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pBuffer->nTimeStamp = (OMX_S64) rand() % 70;
1489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pBuffer->nTickCount = (OMX_S64) rand() % 70;
1490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("SENDING TIMESTAMP = %d\n", (int) pBuffer->nTimeStamp);
1491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("SENDING TICK COUNT = %ld\n", pBuffer->nTickCount);
1492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    default:
1496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: ### Running Simple DEFAULT Case Here ###\n",__LINE__);
1497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } /* end switch */
1498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /**********************/
1499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if( FD_ISSET(OpBuf_Pipe[0], rfds) ) {
1500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_BUFFERHEADERTYPE* pBuf = NULL;
1501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        read(OpBuf_Pipe[0], &pBuf, sizeof(pBuf));
1502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(pBuf->nFlags == OMX_BUFFERFLAG_EOS){
1503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("EOS received by App, Stopping the component\n");
1504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            pBuf->nFlags = 0;
1505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /*            StopComponent(pHandle);*/
1506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fseek(fIn, 0, SEEK_SET);
1507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(pBuf->nFilledLen == 0) {
1509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: APP: output buffer received, filled length = %d, totalfilled = %d\n",__LINE__,(int)pBuf->nFilledLen,totalFilled);
1510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        } else {
1511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: APP: output buffer received, filled length = %d, totalfilled = %d\n",__LINE__,(int)pBuf->nFilledLen,totalFilled);
1512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            fwrite(pBuf->pBuffer, 1, pBuf->nFilledLen, fOut);
1513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        totalFilled += pBuf->nFilledLen;
1515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fflush(fOut);
1516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_FillThisBuffer(*pHandle, pBuf);
1517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*************/
1519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*<<<<<<< Process Manager <<<<<<< */
1520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if ( FD_ISSET (Event_Pipe[0], rfds) ) {
1521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        OMX_U8 pipeContents =0;
1522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        read(Event_Pipe[0], &pipeContents, sizeof(OMX_U8));
1523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (pipeContents == 0) {
1525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Test app received OMX_ErrorResourcesPreempted\n");
1527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            WaitForState(pHandle,OMX_StateIdle);
1528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            int i;
1529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            for (i=0; i < nIpBuffs; i++) {
1530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                error = OMX_FreeBuffer (pHandle,OMX_DirInput,pInputBufferHeader[i]);
1531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if( (error != OMX_ErrorNone)) {
1532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT ("%d :: G722DecTest.c :: Error in Free Handle function\n",__LINE__);
1533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (gDasfMode == 0) {
1537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                for (i=0; i < nOpBuffs; i++) {
1538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    error = OMX_FreeBuffer (pHandle,OMX_DirOutput,pOutputBufferHeader[i]);
1539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    if( (error != OMX_ErrorNone)) {
1540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    }
1542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef USE_BUFFER
1546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /* newfree the App Allocated Buffers */
1547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT("%d :: AmrDecTest.c :: Freeing the App Allocated Buffers in TestApp\n",__LINE__);
1548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            for(i=0; i < nIpBuffs; i++) {
1549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_MEMPRINT("%d::: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]);
1550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(pInputBuffer[i] != NULL){
1551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    pInputBuffer[i] = pInputBuffer[i] - 128;
1552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    newfree(pInputBuffer[i]);
1553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    pInputBuffer[i] = NULL;
1554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            for(i=0; i < numOutputBuffers; i++) {
1557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                APP_MEMPRINT("%d::: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, pOutputBuffer[i]);
1558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(pOutputBuffer[i] != NULL){
1559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    pOutputBuffer[i] = pOutputBuffer[i] - 128;
1560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    newfree(pOutputBuffer[i]);
1561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    pOutputBuffer[i] = NULL;
1562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_SendCommand(*pHandle,OMX_CommandStateSet, OMX_StateIdle/*OMX_StateLoaded*/,NULL);
1567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            WaitForState(pHandle, OMX_StateIdle/*OMX_StateLoaded*/);
1568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef WAITFORRESOURCES
1569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_SendCommand(*pHandle,OMX_CommandStateSet,OMX_StateWaitForResources,NULL);
1570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            WaitForState(pHandle,OMX_StateWaitForResources);
1571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        } else if (pipeContents == 1) {
1573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf("Test app received OMX_ErrorResourcesAcquired\n");
1575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_SendCommand(*pHandle,OMX_CommandStateSet,OMX_StateIdle,NULL);
1577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            int i = 0;
1578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            for (i=0; i < nIpBuffs; i++) {
1579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                /* allocate input buffer */
1580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                error = OMX_AllocateBuffer (*pHandle,&pInputBufferHeader[i],0,NULL, G722D_INPUT_BUFFER_SIZE *3); /*To have enought space for    */
1581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                if(error != OMX_ErrorNone) {
1582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                    APP_DPRINT("%d :: G722DecTest.c :: Error returned by OMX_AllocateBuffer()\n",__LINE__);
1583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                }
1584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            WaitForState(pHandle,OMX_StateIdle);
1586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_SendCommand(*pHandle,OMX_CommandStateSet,OMX_StateExecuting,NULL);
1587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            WaitForState(pHandle,OMX_StateExecuting);
1588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            rewind(fIn);
1589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            for (i=0; i < nIpBuffs;i++) {
1591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                send_input_buffer(*pHandle, pInputBufferHeader[i], fIn);
1592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        } else if (pipeContents == 2) {
1594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            OMX_STATETYPE CurState = OMX_StateInvalid;
1595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            char strCurrState [20] = {""};
1596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_GetState(*pHandle, &CurState);
1598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            getString_OMX_State (strCurrState, CurState);
1599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_SendCommand(*pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL);
1600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = WaitForState(pHandle, OMX_StateIdle);
1601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            GT_END("Call to SendCommand <OMX_StateIdle>");
1603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
1605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                printf("\nError:  WaitForState reports an error %X!!!!!!!\n", error);
1606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return error;
1607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /*
1609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          #if 1
1610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          error = OMX_SendCommand(*pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL);
1611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          if(error != OMX_ErrorNone) {
1612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          APP_DPRINT ("%d :: G722DecTest.c :: Error from SendCommand-Idle State function\n",__LINE__);
1613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          printf("goto EXIT %d\n",__LINE__);
1614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          *goto EXIT;*
1616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          return (-1);
1617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          }
1618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          error = WaitForState(pHandle, OMX_StateLoaded);
1619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          if(error != OMX_ErrorNone) {
1620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          APP_DPRINT( "%d :: G722DecTest.c :: Error:  WaitForState reports an error %X\n",__LINE__, error);
1621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          printf("goto EXIT %d\n",__LINE__);
1622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          *goto EXIT;*
1623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          return (-1);
1624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          }
1625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          #   ifdef OMX_GETTIME
1626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          GT_END("Call to SendCommand <OMX_StateIdle>"); *<OMX_StateLoaded>");*
1627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          #   endif
1628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          #endif
1630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            */
1631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /*goto SHUTDOWN;*/
1632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            return (OMX_ErrorNone);
1633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            /**/
1634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        } else {
1635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            printf ("--------> Pipe content = %d <----------\n", pipeContents);
1636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (error);
1639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn testCase_2_4() This is the main function of application which gets called.
1644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE testCase_2_4 (OMX_HANDLETYPE *pHandle, int gDasfMode, FILE *fIn, FILE *fOut, int nIpBuffs, OMX_BUFFERHEADERTYPE *pInputBufferHeader  [])
1648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_STATEPRINT ("*********** Waiting for state to change to Idle ************\n\n");
1652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("Call to SendCommand <OMX_StateIdle>");
1655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = WaitForState(pHandle, OMX_StateIdle);
1658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fprintf(stderr, "Error:  WaitForState reports an error %X\n", error);
1660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (error);
1661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_STATEPRINT("*********** State Changed to Idle ************\n\n");
1663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("Component Has Stopped here and waiting for %d seconds before it plays further\n",SLEEP_TIME);
1665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    sleep(SLEEP_TIME);
1666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_STATEPRINT("*************** Execute command to Component *******************\n");
1668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_START();
1671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SendCommand(*pHandle, OMX_CommandStateSet,OMX_StateExecuting, NULL);
1674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fprintf (stderr,"Error from SendCommand-Executing State function\n");
1676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (error);
1677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_STATEPRINT("*********** Waiting for state to change to Executing ************\n\n");
1680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = WaitForState(pHandle, OMX_StateExecuting);
1681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_START();
1684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fprintf(stderr, "Error:  WaitForState reports an error %X\n", error);
1687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (error);
1688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_STATEPRINT("*********** State Changed to Executing ************\n\n");
1690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (gDasfMode == 0) {
1692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        /*rewind input and output files*/
1693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fseek(fIn, 0L, SEEK_SET);
1694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fseek(fOut, 0L, SEEK_SET);
1695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int k = 0;
1697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    for (k=0; k < nIpBuffs; k++) {
1698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = send_input_buffer (*pHandle, pInputBufferHeader[k], fIn);
1699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (error);
1701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn testCase_3() This is the main function of application which gets called.
1705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE testCase_3 (OMX_HANDLETYPE *pHandle)
1709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_STATEPRINT("\n\n*************** Pause command to Component *******************\n");
1713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("Call to SendCommand <OMX_StateExecuting>");
1716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SendCommand (*pHandle, OMX_CommandStateSet, OMX_StatePause, NULL);
1719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fprintf (stderr,"Error from SendCommand-Pasue State function\n");
1721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (error);
1722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_STATEPRINT("*********** Waiting for state to change to Pause ************\n");
1724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_START();
1726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = WaitForState (pHandle, OMX_StatePause);
1728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fprintf(stderr, "Error:  WaitForState reports an error %X\n", error);
1731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (error);
1732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_STATEPRINT("*********** State Changed to Pause ************\n\n");
1734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("Sleeping for %d secs....\n\n",SLEEP_TIME);
1736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    sleep(SLEEP_TIME);
1737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_STATEPRINT("*************** Resume command to Component *******************\n");
1739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("Call to SendCommand <OMX_StatePause>");
1741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = OMX_SendCommand (*pHandle, OMX_CommandStateSet,OMX_StateExecuting, NULL);
1743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fprintf (stderr,"Error from SendCommand-Executing State function\n");
1745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (error);
1746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_STATEPRINT("******** Waiting for state to change to Resume ************\n");
1749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GT_END("Call to SendCommand <OMX_StateExecuting>");
1752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    error = WaitForState (pHandle, OMX_StateExecuting);
1755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(error != OMX_ErrorNone) {
1756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        fprintf(stderr, "Error:  WaitForState reports an error %X\n", error);
1757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        return (error);
1758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP_STATEPRINT("*********** State Changed to Resume ************\n\n");
1760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (error);
1762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn sendInBuffFillOutBuff() This is the main function of application which gets called.
1766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE sendInBuffFillOutBuff (OMX_HANDLETYPE *pHandle, int nIpBuffs, int nOpBuffs, int gDasfMode, OMX_BUFFERHEADERTYPE *pInputBufferHeader[],  FILE *fIn, OMX_BUFFERHEADERTYPE *pOutputBufferHeader[])
1770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int k = 0;
1772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    for (k=0; k < nIpBuffs; k++) {
1775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if (k == 0) {
1777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            GT_FlagE=1;  /* 1 = First Buffer,  0 = Not First Buffer  */
1778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            GT_START(); /* Empty Bufffer */
1779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = send_input_buffer (*pHandle, pInputBufferHeader[k], fIn);
1782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(error != OMX_ErrorNone) {
1783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            return (error);
1784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (gDasfMode == 0) {
1787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        for (k=0; k < nOpBuffs; k++) {
1788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef OMX_GETTIME
1789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if (k == 0) {
1790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                GT_FlagF=1;  /* 1 = First Buffer,  0 = Not First Buffer  */
1791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                GT_START(); /* Fill Buffer */
1792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
1794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            error = OMX_FillThisBuffer (*pHandle, pOutputBufferHeader[k]);
1795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            if(error != OMX_ErrorNone) {
1796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                return (error);
1797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            }
1798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (error);
1801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn omxFreeBuffers() This is the main function of application which gets called.
1805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE omxFreeBuffers (OMX_HANDLETYPE *pHandle, int nBuffs, OMX_BUFFERHEADERTYPE *pBufferHeader  [], char *sBuffTypeMsg)
1809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int i = 0;
1811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_ERRORTYPE error = OMX_ErrorNone;
1812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    for (i=0; i<nBuffs; i++) {
1814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        APP_DPRINT("%d :: App: Freeing %p %s BufHeader\n",__LINE__,pBufferHeader[i], sBuffTypeMsg);
1815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        error = OMX_FreeBuffer(*pHandle,OMX_DirInput,pBufferHeader[i]);
1816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if((error != OMX_ErrorNone)) {
1817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__);
1818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            return (error);
1819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }
1820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return (error);
1823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
1825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
1826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @fn getString_OMX_State () This is the main function of application which gets called.
1827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
1828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
1829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
1830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid getString_OMX_State (char *ptrString, OMX_STATETYPE state)
1831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
1832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    switch (state) {
1833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_StateInvalid:
1834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcpy (ptrString, "OMX_StateInvalid\0");
1835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_StateLoaded:
1837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcpy (ptrString, "OMX_StateLoaded\0");
1838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_StateIdle:
1840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcpy (ptrString, "OMX_StateIdle\0");
1841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_StateExecuting:
1843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcpy (ptrString, "OMX_StateExecuting\0");
1844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_StatePause:
1846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcpy (ptrString, "OMX_StatePause\0");
1847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_StateWaitForResources:
1849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcpy (ptrString, "OMX_StateWaitForResources\0");
1850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    case OMX_StateMax:
1852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcpy (ptrString, "OMX_StateMax\0");
1853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    default:
1855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        strcpy (ptrString, "Unknown state\0");
1856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        break;
1857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
1858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
1859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    return;
1860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
1861