1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* 3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright 2001-2008 Texas Instruments - http://www.ti.com/ 4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Licensed under the Apache License, Version 2.0 (the "License"); 6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * you may not use this file except in compliance with the License. 7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * You may obtain a copy of the License at 8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * http://www.apache.org/licenses/LICENSE-2.0 10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Unless required by applicable law or agreed to in writing, software 12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * distributed under the License is distributed on an "AS IS" BASIS, 13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * See the License for the specific language governing permissions and 15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * limitations under the License. 16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ============================================================================== 18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* Texas Instruments OMAP (TM) Platform Software 19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* Use of this software is controlled by the terms and conditions found 22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* in the license agreement under which this software has been supplied. 23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ============================================================================ */ 24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @file PcmEncTest.c 26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* This file implements Test for PCM encoder OMX Component, which is fully 28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* compliant with the Khronos 1.0 specification. 29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @path $(CSLPATH)\ 31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @rev 1.0 33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ---------------------------------------------------------------------------- 35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! Revision History 37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! =================================== 38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 24-Jan-2006 rg: Initial Version. Change required per OMAPSWxxxxxxxxx 39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! to provide _________________. 40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ============================================================================= */ 42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <unistd.h> 44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdlib.h> 45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/ioctl.h> 46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/select.h> 47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <string.h> 48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdio.h> 49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <fcntl.h> 50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <errno.h> 51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <linux/vt.h> 52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <signal.h> 53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/stat.h> 54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Index.h> 56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Types.h> 57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Component.h> 58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Core.h> 59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Audio.h> 60b65f253fdc60f6208a54911bee793d225f23cdf8James Dong/*#include <TIDspOmx.h>*/ 61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <pthread.h> 63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdio.h> 64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <linux/soundcard.h> 65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON 66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <AudioManagerAPI.h> 67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <time.h> 69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Common_Utils.h> 71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_GetTime.h> /*Headers for Performance & measuremet */ 72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinFILE *fpRes; 75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**flush*/ 76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint num_flush = 0; 77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint nNextFlushFrame = 100; 78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/***/ 79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_AMRDEC_NonMIME 0 81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define MIME_HEADER_LEN 6 82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef APP_DEBUG 84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef APP_MEMCHECK 85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define DASF 1 86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef USE_BUFFER 87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUG 89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define APP_DPRINT(...) fprintf(stderr,__VA_ARGS__) 90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define APP_DPRINT(...) 92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_MEMCHECK 95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define APP_MEMPRINT(...) fprintf(stderr,__VA_ARGS__) 96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define APP_MEMPRINT(...) 98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Borrowed from http://www.dtek.chalmers.se/groups/dvd/dist/oss_audio.c */ 101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* AFMT_AC3 is really IEC61937 / IEC60958, mpeg/ac3/dts over spdif */ 102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef AFMT_AC3 103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define AFMT_AC3 0x00000400 /* Dolby Digital AC3 */ 104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef AFMT_S32_LE 106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define AFMT_S32_LE 0x00001000 /* 32/24-bits, in 24bit use the msbs */ 107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef AFMT_S32_BE 109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define AFMT_S32_BE 0x00002000 /* 32/24-bits, in 24bit use the msbs */ 110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define FIFO1 "/dev/fifo.1" 114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define FIFO2 "/dev/fifo.2" 115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def OUTPUT_WBAMRDEC_BUFFER_SIZE Default output buffer size 120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OUTPUT_WBAMRDEC_BUFFER_SIZE 640 124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def INPUT_WBAMRDEC_BUFFER_SIZE Default input buffer size 128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define INPUT_WBAMRDEC_BUFFER_SIZE 116 132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * @def APP_DEBUGMEM This Macro turns On the logic to detec memory 136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * leaks on the App. To debug the component, 137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * WBAMRDEC_DEBUGMEM must be defined. 138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef APP_DEBUGMEM 141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*#define APP_DEBUGMEM*/ 142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUGMEM 145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid *arr[500]; 146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint lines[500]; 147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint bytes[500]; 148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinchar file[500][50]; 149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint ind=0; 150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newmalloc(x) mymalloc(__LINE__,__FILE__,x) 152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newfree(z) myfree(z,__LINE__,__FILE__) 153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid * mymalloc(int line, char *s, int size); 155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint myfree(void *dp, int line, char *s); 156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newmalloc(x) malloc(x) 160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define newfree(z) free(z) 161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int GT_FlagE = 0; /* Fill Buffer 1 = First Buffer, 0 = Not First Buffer */ 167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int GT_FlagF = 0; /*Empty Buffer 1 = First Buffer, 0 = Not First Buffer */ 168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin static OMX_NODE* pListHead = NULL; 169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinenum 172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NEXT_BITRATE_UNCHANGED = 0, 174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin NEXT_BITRATE_CHANGED 175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}; 176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum 178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin MIME_NO_SUPPORT = 0, 180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin MIME_SUPPORTED 181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}MIME_Settings; 182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** WBAMRDEC_BUFDATA 186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @param nFrames # of Frames processed on the Output Buffer. 188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ==================================================================== */ 191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct WBAMRDEC_BUFDATA { 192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nFrames; 193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}WBAMRDEC_BUFDATA; 194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint GetInfoFromBufferHeader(unsigned char **pBufPtr, int *pCurBitRate, 196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int *pNextBitRateFlag); 197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid ResetBufferPointers(unsigned char **pBuffer); 199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint maxint(int a, int b); 200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*int gMimeFlag = 0;*/ 202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_S16 WBAmrFrameFormat = 0; 203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint gStateNotifi = 0; 204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint gState; 205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint inputPortDisabled = 0; 206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint outputPortDisabled = 0; 207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint alternate = 0; 208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint numRead; 209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint cnn=1; 210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint cnnn=1; 211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint testCaseNo = 0; 212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8 NextBuffer[INPUT_WBAMRDEC_BUFFER_SIZE*3]; 213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8 TempBuffer[INPUT_WBAMRDEC_BUFFER_SIZE]; 214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#undef WAITFORRESOURCES 216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_mutex_t WaitForState_mutex; 217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_cond_t WaitForState_threshold; 218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8 WaitForState_flag; 219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8 TargetedState; 220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**flush*/ 221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_mutex_t WaitForOUTFlush_mutex; 222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_cond_t WaitForOUTFlush_threshold; 223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_mutex_t WaitForINFlush_mutex; 224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinpthread_cond_t WaitForINFlush_threshold; 225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*****/ 226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FirstTime = 1; 227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint nRead=0; 228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_BOOL bInvalidState; 229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid* ArrayOfPointers[6]; 230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinWBAMRDEC_BUFDATA* OutputFrames; 231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON 233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinAM_COMMANDDATATYPE cmd_data; 234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint fill_data (OMX_U8 *pBuf, int mode, FILE *fIn); 236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER 238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FreeAllResources( OMX_HANDLETYPE *pHandle, 239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBufferIn, 240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBufferOut, 241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int NIB, int NOB, 242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FILE* fIn, FILE* fOut); 243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FreeAllResources(OMX_HANDLETYPE *pHandle, 245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* UseInpBuf[], 246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* UseOutBuf[], 247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int NIB, int NOB, 248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FILE* fIn, FILE* fOut); 249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum COMPONENTS { 251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin COMP_1, 252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin COMP_2 253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}COMPONENTS; 254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid ConfigureAudio(); 255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_STRING strAmrEncoder = "OMX.TI.WBAMR.decode"; 257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint IpBuf_Pipe[2]; 258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint OpBuf_Pipe[2]; 259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint Event_Pipe[2]; 260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint preempted = 0; 262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer (OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn); 264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE StopComponent(OMX_HANDLETYPE *pHandle); 265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PauseComponent(OMX_HANDLETYPE *pHandle); 266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PlayComponent(OMX_HANDLETYPE *pHandle); 267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinfd_set rfds; 269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_S16 dasfmode = 0; 271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* safe routine to get the maximum of 2 integers */ 273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint maxint(int a, int b) 274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return (a>b) ? a : b; 276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* This method will wait for the component to get to the state 279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * specified by the DesiredState input. */ 280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic OMX_ERRORTYPE WaitForState(OMX_HANDLETYPE* pHandle, 281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE DesiredState) 282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE CurState = OMX_StateInvalid; 284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle; 286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = pComponent->GetState(pHandle, &CurState); 287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (CurState == OMX_StateInvalid && bInvalidState == OMX_TRUE) 288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInvalidState; 290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(CurState != DesiredState){ 293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WaitForState_flag = 1; 294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TargetedState = DesiredState; 295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&WaitForState_mutex); 296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_wait(&WaitForState_threshold, &WaitForState_mutex);/*Going to sleep till signal arrives*/ 297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&WaitForState_mutex); 298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn EventHandler() description for SendCommand 306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEventHandler(). 307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinApp event handler 308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @see OMX_Core.h 310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE EventHandler( 314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_HANDLETYPE hComponent, 315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pAppData, 316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_EVENTTYPE eEvent, 317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nData1, 318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nData2, 319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pEventData) 320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)hComponent; 323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE state; 324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError; 325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 writeValue; 327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUG 329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int iComp = *((int *)(pAppData)); 330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = pComponent->GetState (hComponent, &state); 332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(eError != OMX_ErrorNone) { 333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: App: Error returned from GetState\n",__LINE__); 334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch (eEvent) { 337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_EventCmdComplete: 338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /**flush*/ 339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nData1 == OMX_CommandFlush){ 340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(nData2 == 0){ 341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&WaitForINFlush_mutex); 342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_signal(&WaitForINFlush_threshold); 343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&WaitForINFlush_mutex); 344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(nData2 == 1){ 346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&WaitForOUTFlush_mutex); 347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_signal(&WaitForOUTFlush_threshold); 348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&WaitForOUTFlush_mutex); 349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /****/ 352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ( "%d :: App: Component State Changed To %d\n", __LINE__,state); 353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nData1 == OMX_CommandPortDisable) { 355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nData2 == OMX_DirInput) { 356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin inputPortDisabled = 1; 357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nData2 == OMX_DirOutput) { 359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin outputPortDisabled = 1; 360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((nData1 == OMX_CommandStateSet) && (TargetedState == nData2) && 363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (WaitForState_flag)){ 364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WaitForState_flag = 0; 365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&WaitForState_mutex); 366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_signal(&WaitForState_threshold); 367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&WaitForState_mutex); 368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_EventError: 372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (nData1 == OMX_ErrorInvalidState) { 373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bInvalidState =OMX_TRUE; 374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(nData1 == OMX_ErrorResourcesPreempted) { 377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin preempted=1; 378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin writeValue = 0; 379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin write(Event_Pipe[1], &writeValue, sizeof(OMX_U8)); 380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (nData1 == OMX_ErrorResourcesLost) { 382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WaitForState_flag = 0; 383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&WaitForState_mutex); 384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_signal(&WaitForState_threshold);/*Sending Waking Up Signal*/ 385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&WaitForState_mutex); 386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_EventMax: 390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_EventMark: 392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef WAITFORRESOURCES 394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_EventBufferFlag: 395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "%d :: App: Component OMX_EventBufferFlag = %d\n", __LINE__,eEvent); 396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin writeValue = 2; 397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin write(Event_Pipe[1], &writeValue, sizeof(OMX_U8)); 398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case OMX_EventResourcesAcquired: 401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "%d :: App: Component OMX_EventResourcesAcquired = %d\n", __LINE__,eEvent); 402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin writeValue = 1; 403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin write(Event_Pipe[1], &writeValue, sizeof(OMX_U8)); 404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin preempted=0; 405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin default: 409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn FillBufferDone() description for FillBufferDone 416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinFillBufferDone(). 417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinCalled by the component when an output buffer has been filled 418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @see OMX_Core.h 420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid FillBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer) 424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("APP:::: OUTPUT BUFFER = %p && %p\n",pBuffer, pBuffer->pBuffer); 426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("APP:::: pBuffer->nFilledLen = %ld\n",pBuffer->nFilledLen); 427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* OutputFrames = pBuffer->pOutputPortPrivate; 428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Receiving output %d Frames\n",OutputFrames->nFrames);*/ 429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin write(OpBuf_Pipe[1], &pBuffer, sizeof(pBuffer)); 431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #ifdef OMX_GETTIME 432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (GT_FlagF == 1 ) /* First Buffer Reply*/ /* 1 = First Buffer, 0 = Not First Buffer */ 433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Call to FillBufferDone <First: FillBufferDone>"); 435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_FlagF = 0 ; /* 1 = First Buffer, 0 = Not First Buffer */ 436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #endif 438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn EmptyBufferDone() description for EmptyBufferDone 443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEmptyBufferDone(). 444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinCalled by the component when an input buffer has been emptied 445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @see OMX_Core.h 447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid EmptyBufferDone(OMX_HANDLETYPE hComponent, OMX_PTR ptr, OMX_BUFFERHEADERTYPE* pBuffer) 451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S16 ret; 453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("APP:::: INPUT BUFFER = %p && %p\n",pBuffer, pBuffer->pBuffer); 454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!preempted) 456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ret = write(IpBuf_Pipe[1], &pBuffer, sizeof(pBuffer)); 457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (GT_FlagE == 1 ) /* First Buffer Reply*/ /* 1 = First Buffer, 0 = Not First Buffer */ 459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Call to EmptyBufferDone <First: EmptyBufferDone>"); 461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_FlagE = 0; /* 1 = First Buffer, 0 = Not First Buffer */ 462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinFILE *inputToSN; 468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn main() description for main 472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinmain(). 473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinTest app main function 474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @see OMX_Core.h 476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint main(int argc, char* argv[]) 480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CALLBACKTYPE AmrCaBa = {(void *)EventHandler, 484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (void*)EmptyBufferDone, 485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (void*)FillBufferDone}; 486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_HANDLETYPE pHandle; 487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 AppData = 100; 489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pCompPrivateStruct; 490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_AUDIO_PARAM_AMRTYPE *pAmrParam; 491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle; 492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE state; 493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* TODO: Set a max number of buffers */ 494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pInputBufferHeader[10]; 495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* TODO: Set a max number of buffers */ 496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pOutputBufferHeader[10]; 497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuf; 498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bInvalidState=OMX_FALSE; 499b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* TI_OMX_DATAPATH dataPath;*/ 500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FILE* fOut = NULL; 501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FILE* fIn = fopen(argv[1], "r"); 502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef USE_BUFFER 505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* pInputBuffer[10]; 506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* pOutputBuffer[10]; 507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int numInputBuffers = 0; 512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int numOutputBuffers = 0; 513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin struct timeval tv; 514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int retval, i, j,k; 515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int frmCount = 0; 516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int testcnt = 1; 517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int testcnt1 = 1; 518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE index; 519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 streamId; 520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int count=0; 521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON 522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int wbamrdecfdwrite; 523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int wbamrdecfdread; 524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 526b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /*TI_OMX_DSP_DEFINITION* audioinfo;*/ 527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_AUDIO_CONFIG_MUTETYPE* pCompPrivateStructMute = NULL; 528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_AUDIO_CONFIG_VOLUMETYPE* pCompPrivateStructVolume = NULL; 529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 530b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /*TI_OMX_STREAM_INFO *streaminfo; 531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin streaminfo = newmalloc(sizeof(TI_OMX_STREAM_INFO)); 532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin audioinfo = newmalloc(sizeof(TI_OMX_DSP_DEFINITION)); 533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d :: [TESTAPPALLOC] audioinfo = %p\n",__LINE__,audioinfo); 535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(NULL == audioinfo) { 536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: Malloc Failed\n",__LINE__); 537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorInsufficientResources; 538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 540b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ArrayOfPointers[0]=(TI_OMX_STREAM_INFO*)streaminfo; 542b65f253fdc60f6208a54911bee793d225f23cdf8James Dong ArrayOfPointers[1]=(TI_OMX_DSP_DEFINITION*)audioinfo;*/ 543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_init(&WaitForState_mutex, NULL); 545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_init (&WaitForState_threshold, NULL); 546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WaitForState_flag = 0; 547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /**flush*/ 548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_init(&WaitForOUTFlush_mutex, NULL); 549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_init (&WaitForOUTFlush_threshold, NULL); 550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_init(&WaitForINFlush_mutex, NULL); 551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_init (&WaitForINFlush_threshold, NULL); 552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*****/ 553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("------------------------------------------------------\n"); 555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("This is Main Thread In WBAMR DECODER Test Application:\n"); 556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("Test Core 1.5 - " __DATE__ ":" __TIME__ "\n"); 557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("------------------------------------------------------\n"); 558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Line %d\n",__LINE__); 561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GTeError = OMX_ListCreate(&pListHead); 562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Line %d\n",__LINE__); 563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("eError = %d\n",GTeError); 564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Line %d\n",__LINE__); 566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* check the input parameters */ 569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((argc < 11) || (argc > 12)) 570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf( "Usage: test infile [outfile]\n"); 572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin numInputBuffers = atoi(argv[9]); 576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin numOutputBuffers = atoi(argv[10]); 577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ( (numInputBuffers < 1) || (numInputBuffers >4)){ 579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("%d :: App: ERROR: No. of input buffers not valid (0-4) \n",__LINE__); 580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ( (numOutputBuffers< 1) || (numOutputBuffers>4)){ 584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("%d :: App: ERROR: No. of output buffers not valid (0-4) \n",__LINE__); 585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* check to see that the input file exists */ 589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin struct stat sb = {0}; 590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S16 status = stat(argv[1], &sb); 591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( status != 0 ) { 592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Cannot find file %s. (%u)\n", argv[1], errno); 593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Open the file of data to be rendered. */ 597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( fIn == NULL ) { 598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error: failed to open the file %s for readonly\access\n", argv[1]); 599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else{ 602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("------------\n"); 603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("file is %x\n",fIn); 606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*FILE* fOut = NULL;*/ 608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fOut = fopen(argv[2], "w"); 609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( fOut == NULL ) { 610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error: failed to create the output file %s\n", argv[2]); 611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Create a pipe used to queue data from the callback. */ 615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin retval = pipe(IpBuf_Pipe); 616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( retval != 0) { 617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error:Fill Data Pipe failed to open\n"); 618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin retval = pipe(OpBuf_Pipe); 622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( retval != 0) { 623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error:Empty Data Pipe failed to open\n"); 624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin retval = pipe(Event_Pipe); 628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( retval != 0) { 629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error:Empty Event Pipe failed to open\n"); 630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* save off the "max" of the handles for the selct statement */ 634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S16 fdmax = maxint(IpBuf_Pipe[0], OpBuf_Pipe[0]); 635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fdmax = maxint(fdmax,Event_Pipe[0]); 636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: AmrTest\n",__LINE__); 638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = TIOMX_Init(); 639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: AmrTest\n",__LINE__); 640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_Init()\n",__LINE__); 642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int command; 645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin command = atoi(argv[6]); 646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: AmrTest\n",__LINE__); 647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin switch (command ) { 648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 1: 649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("-------------------------------------\n"); 650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing Simple PLAY till EOF \n"); 651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("-------------------------------------\n"); 652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 2: 654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("-------------------------------------\n"); 655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing Stop and Play \n"); 656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("-------------------------------------\n"); 657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin testcnt = 2; 658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 3: 660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("-------------------------------------\n"); 661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing PAUSE & RESUME Command\n"); 662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("-------------------------------------\n"); 663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 4: 665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("---------------------------------------------\n"); 666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing STOP Command by Stopping In-Between\n"); 667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("---------------------------------------------\n"); 668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 5: 670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("-------------------------------------------------\n"); 671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing Repeated PLAY without Deleting Component\n"); 672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("-------------------------------------------------\n"); 673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (argc == 12) 674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin testcnt = atoi(argv[11]); 676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin testcnt = 20; /*20 cycles by default*/ 680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 6: 683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------\n"); 684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing Repeated PLAY with Deleting Component\n"); 685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------\n"); 686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (argc == 12) 687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin testcnt1 = atoi(argv[11]); 689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin testcnt1 = 20; /*20 cycles by default*/ 693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 7: 696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("----------------------------------------------------------\n"); 697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing Multiframe with each buffer size = 2 x frameLength\n"); 698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("----------------------------------------------------------\n"); 699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin testCaseNo = 7; 700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 8: 702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing Multiframe with each buffer size = 1/2 x frameLength\n"); 704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin testCaseNo = 8; 706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 9: 708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing Multiframe with alternating buffer sizes\n"); 710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin testCaseNo = 9; 712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 10: 714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing Mute/Unmute for Playback Stream\n"); 716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 11: 719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing Set Volume for Playback Stream\n"); 721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 12: 724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing Frame Lost Suport\n"); 726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin case 13: 729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Testing Ringtone test\n"); 731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("------------------------------------------------------------\n"); 732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin testcnt = 10; 733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: AmrTest\n",__LINE__); 737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin dasfmode = atoi(argv[7]); 738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: AmrTest\n",__LINE__); 740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(j = 0; j < testcnt1; j++) { 741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #ifdef DSP_RENDERING_ON 743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((wbamrdecfdwrite=open(FIFO1,O_WRONLY))<0) { 745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("[AMRTEST] - failure to open WRITE pipe\n"); 746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("[AMRTEST] - opened WRITE pipe\n"); 749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((wbamrdecfdread=open(FIFO2,O_RDONLY))<0) { 752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("[AMRTEST] - failure to open READ pipe\n"); 753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("[AMRTEST] - opened READ pipe\n"); 757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #endif 760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(j >= 1) { 762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Decoding the file for %d Time\n",j+1); 763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(IpBuf_Pipe[0]); 764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(IpBuf_Pipe[1]); 765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(OpBuf_Pipe[0]); 766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(OpBuf_Pipe[1]); 767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("file is %x\n",fIn); 768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Create a pipe used to queue data from the callback. */ 769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin retval = pipe(IpBuf_Pipe); 770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( retval != 0) { 771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error:Fill Data Pipe failed to open\n"); 772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin retval = pipe(OpBuf_Pipe); 776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( retval != 0) { 777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error:Empty Data Pipe failed to open\n"); 778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fIn = fopen(argv[1], "r"); 781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( fIn == NULL ) { 782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Error: failed to open the file %s for readonly\ 783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin access\n", argv[1]); 784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fOut = fopen(argv[2], "a"); 788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( fOut == NULL ) { 789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Error: failed to create the output file \n"); 790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = TIOMX_Init(); 793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin inputToSN = fopen("outputSecondTime.log","w"); 794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin inputToSN = fopen("outputFirstTime.log","w"); 798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Load the WBAMR Encoder Component */ 801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: AmrTest\n",__LINE__); 802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_GetHandle(&pHandle, strAmrEncoder, &AppData, &AmrCaBa); 806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Call to GetHandle"); 807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = TIOMX_GetHandle(&pHandle, strAmrEncoder, &AppData, &AmrCaBa); 809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: AmrTest\n",__LINE__); 811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((error != OMX_ErrorNone) || (pHandle == NULL)) { 812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("Error in Get Handle function\n"); 813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: AmrTest\n",__LINE__); 817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct = newmalloc (sizeof (OMX_PARAM_PORTDEFINITIONTYPE)); 818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pCompPrivateStruct == 0) { 819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Malloc failed\n"); 820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = -1; 821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ArrayOfPointers[2]=(OMX_PARAM_PORTDEFINITIONTYPE*)pCompPrivateStruct; 824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructMute = newmalloc (sizeof(OMX_AUDIO_CONFIG_MUTETYPE)); 826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pCompPrivateStructMute == NULL) { 827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d :: App: Malloc Failed\n",__LINE__); 828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ArrayOfPointers[3] = (OMX_AUDIO_CONFIG_MUTETYPE*)pCompPrivateStructMute; 831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructVolume = newmalloc (sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE)); 833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pCompPrivateStructVolume == NULL) { 834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d :: App: Malloc Failed\n",__LINE__); 835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ArrayOfPointers[4] = (OMX_AUDIO_CONFIG_VOLUMETYPE*)pCompPrivateStructVolume; 838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pCompPrivateStruct); 840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 841fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: AmrTest\n",__LINE__); 842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE); 843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMajor = 0xF1; 844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMinor = 0xF2; 845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nPortIndex = OMX_DirInput; 846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_GetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct); 847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Send input port config */ 849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!(strcmp(argv[3],"MIME"))) 851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WBAmrFrameFormat = OMX_AUDIO_AMRFrameFormatFSF; 853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(!(strcmp(argv[3],"NONMIME"))) 855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WBAmrFrameFormat = OMX_AUDIO_AMRFrameFormatConformance; 857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(!(strcmp(argv[3],"IF2"))) 859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WBAmrFrameFormat = OMX_AUDIO_AMRFrameFormatIF2; 861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Enter proper Frame Format Type MIME, NON MIME or IF2\nExit\n"); 865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->eDir = OMX_DirInput; 870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nBufferCountActual = numInputBuffers; 871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nBufferCountMin = numInputBuffers; 872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nBufferSize = INPUT_WBAMRDEC_BUFFER_SIZE; 873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->eDomain = OMX_PortDomainAudio; 874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->format.audio.eEncoding = OMX_AUDIO_CodingAMR; 875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct); 878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct); 881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("%d:: OMX_ErrorBadParameter\n",__LINE__); 885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nSize = sizeof (OMX_PARAM_PORTDEFINITIONTYPE); 889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMajor = 0xF1; 890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nVersion.s.nVersionMinor = 0xF2; 891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nPortIndex = OMX_DirOutput; 892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_GetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct); 893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Send output port config */ 895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->eDir = OMX_DirOutput; 896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nBufferCountActual = numOutputBuffers; 897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nBufferCountMin = numOutputBuffers; 898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nBufferSize = OUTPUT_WBAMRDEC_BUFFER_SIZE; 899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->eDomain = OMX_PortDomainAudio; 900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(dasfmode ) 902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStruct->nBufferCountActual = 0; 904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct); 908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetParameter (pHandle,OMX_IndexParamPortDefinition,pCompPrivateStruct); 911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("%d:: OMX_ErrorBadParameter\n",__LINE__); 915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam = newmalloc (sizeof (OMX_AUDIO_PARAM_AMRTYPE)); 919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pAmrParam); 920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->nSize = sizeof (OMX_AUDIO_PARAM_AMRTYPE); 921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->nVersion.s.nVersionMajor = 0xF1; 922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->nVersion.s.nVersionMinor = 0xF2; 923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->nPortIndex = OMX_DirInput; 924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->nChannels = 1; 925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->nBitRate = 8000; 926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->eAMRBandMode = atoi(argv[5]); 927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("\n%d :: App: pAmrParam->eAMRBandMode --> %d \n",__LINE__, 928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->eAMRBandMode); 929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ArrayOfPointers[5] = (OMX_AUDIO_PARAM_AMRTYPE *)pAmrParam; 931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER 933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < numInputBuffers; i++) { 935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* allocate input buffer */ 936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_AllocateBuffer\n",__LINE__); 937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_AllocateBuffer(pHandle,&pInputBufferHeader[i],0,NULL,INPUT_WBAMRDEC_BUFFER_SIZE*3); 938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: called OMX_AllocateBuffer\n",__LINE__); 939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__); 941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < numOutputBuffers; i++) { 946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* allocate output buffer */ 947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_AllocateBuffer\n",__LINE__); 948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("About to call OMX_AllocateBuffer\n"); 949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((testCaseNo != 7)&&(testCaseNo != 9)) 950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_AllocateBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,OUTPUT_WBAMRDEC_BUFFER_SIZE*1); 951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_AllocateBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,OUTPUT_WBAMRDEC_BUFFER_SIZE*2); 953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: called OMX_AllocateBuffer\n",__LINE__); 954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__); 956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d::USE BUFFER\n",__LINE__); 963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__); 964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < numInputBuffers; i++) { 966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInputBuffer[i] = (OMX_U8*)newmalloc(INPUT_WBAMRDEC_BUFFER_SIZE*3 + 256); 967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pInputBuffer[i]); 968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInputBuffer[i] = pInputBuffer[i] + 128; 969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* allocate input buffer */ 970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_UseBuffer\n",__LINE__); 971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_UseBuffer(pHandle,&pInputBufferHeader[i],0,NULL,INPUT_WBAMRDEC_BUFFER_SIZE*3,pInputBuffer[i]); 972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: called OMX_UseBuffer\n",__LINE__); 973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__); 975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < numOutputBuffers; i++) { 980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if ((testCaseNo != 7)&&(testCaseNo != 9)){ 981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutputBuffer[i]= newmalloc (OUTPUT_WBAMRDEC_BUFFER_SIZE*1 + 256); 982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pOutputBuffer[i]); 983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutputBuffer[i] = pOutputBuffer[i] + 128; 984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_UseBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,OUTPUT_WBAMRDEC_BUFFER_SIZE*1,pOutputBuffer[i]); 985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: called OMX_UseBuffer\n",__LINE__); 986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__); 988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else{ 992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutputBuffer[i]= newmalloc (OUTPUT_WBAMRDEC_BUFFER_SIZE*2 + 256); 993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPALLOC] %p\n",__LINE__,pOutputBuffer[i]); 994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutputBuffer[i] = pOutputBuffer[i] + 128; 995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_UseBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,OUTPUT_WBAMRDEC_BUFFER_SIZE*2,pOutputBuffer[i]); 996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: called OMX_UseBuffer\n",__LINE__); 997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_UseBuffer()\n",__LINE__); 999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!(strcmp(argv[4],"DTXON"))) { 1008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /**< AMR Discontinuous Transmission Mode is enabled */ 1009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->eAMRDTXMode = OMX_AUDIO_AMRDTXModeOnVAD1; 1010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("\n%d :: App: pAmrParam->eAMRDTXMode --> %s \n",__LINE__, 1011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin argv[4]); 1012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!(strcmp(argv[4],"DTXOFF"))) { 1014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /**< AMR Discontinuous Transmission Mode is disabled */ 1015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->eAMRDTXMode = OMX_AUDIO_AMRDTXModeOff; 1016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("\n%d :: App: pAmrParam->eAMRDTXMode --> %s \n",__LINE__, 1017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin argv[4]); 1018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!(strcmp(argv[4],"WBAMR_EFR"))) { 1021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /**< DTX as WBAMR_EFR instead of AMR standard */ 1022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->eAMRDTXMode = OMX_AUDIO_AMRDTXasEFR; 1023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("\n%d :: App: pAmrParam->eAMRDTXMode --> %s \n",__LINE__, 1024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin argv[4]); 1025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->eAMRFrameFormat = WBAmrFrameFormat; 1028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*if(gMimeFlag == 1){ 1030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatFSF; 1031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(gMimeFlag == 0){ 1033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatConformance; 1034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Enter proper MIME mode\n"); 1037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("MIME:0\n"); 1038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("NON MIME:1\n"); 1039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }*/ 1041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 1044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 1045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetParameter (pHandle,OMX_IndexParamAudioAmr,pAmrParam); 1046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 1047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetParameter (pHandle,OMX_IndexParamAudioAmr,pAmrParam); 1049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 1051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 1052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("%d:: OMX_ErrorBadParameter\n",__LINE__); 1053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->nPortIndex = OMX_DirOutput; 1056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->nChannels = 1; 1057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam->nBitRate = 8000; 1058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 1059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 1060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetParameter (pHandle,OMX_IndexParamAudioAmr, 1061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam); 1062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Set Parameter Test-SetParameter"); 1063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetParameter (pHandle,OMX_IndexParamAudioAmr, 1065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pAmrParam); 1066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 1068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 1069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("%d:: OMX_ErrorBadParameter\n",__LINE__); 1070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* get TeeDN or ACDN mode */ 1074b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /*audioinfo->acousticMode = atoi(argv[8]);*/ 1075b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* 1076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (audioinfo->acousticMode == OMX_TRUE) { 1077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Using Acoustic Device Node Path\n"); 1078b65f253fdc60f6208a54911bee793d225f23cdf8James Dong dataPath = DATAPATH_ACDN; 1079b65f253fdc60f6208a54911bee793d225f23cdf8James Dong }*/ 1080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (dasfmode) { 1081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RTM_PATH 1082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Using Real Time Mixer Path\n"); 1083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin dataPath = DATAPATH_APPLICATION_RTMIXER; 1084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ETEEDN_PATH 1087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Using Eteedn Path\n"); 1088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin dataPath = DATAPATH_APPLICATION; 1089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1092b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /*audioinfo->dasfMode = dasfmode;*/ 1093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.wbamrheaderinfo",&index); 1094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 1095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Error getting extension index\n"); 1096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON 1100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin cmd_data.hComponent = pHandle; 1101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin cmd_data.AM_Cmd = AM_CommandIsOutputStreamAvailable; 1102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* for encoder, using AM_CommandIsInputStreamAvailable */ 1104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin cmd_data.param1 = 0; 1105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((write(wbamrdecfdwrite, &cmd_data, sizeof(cmd_data)))<0) { 1107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d ::OMX_WbAmrDecoder.c ::[WBAMR Dec Component] - send command to audio manager\n", __LINE__); 1108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((read(wbamrdecfdread, &cmd_data, sizeof(cmd_data)))<0) { 1110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d ::OMX_WbAmrDecoder.c ::[WBAMR Dec Component] - failure to get data from the audio manager\n", __LINE__); 1111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin audioinfo->streamId = cmd_data.streamID; 1115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin streamId = audioinfo->streamId; 1116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1118b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /*error = OMX_SetConfig (pHandle, index, audioinfo); 1119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 1121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: Error from OMX_SetConfig() function\n",__LINE__); 1122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1124b65f253fdc60f6208a54911bee793d225f23cdf8James Dong */ 1125b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /*error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.wbamr.datapath",&index); 1126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 1127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Error getting extension index\n"); 1128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1129b65f253fdc60f6208a54911bee793d225f23cdf8James Dong }*/ 1130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1132b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /*error = OMX_SetConfig (pHandle, index, &dataPath); 1133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 1135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: AmrDecTest.c :: Error from OMX_SetConfig() function\n",__LINE__); 1136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1137b65f253fdc60f6208a54911bee793d225f23cdf8James Dong }*/ 1138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* default setting for Mute/Unmute */ 1141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructMute->nSize = sizeof (OMX_AUDIO_CONFIG_MUTETYPE); 1142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructMute->nVersion.s.nVersionMajor = 0xF1; 1143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructMute->nVersion.s.nVersionMinor = 0xF2; 1144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructMute->nPortIndex = OMX_DirInput; 1145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructMute->bMute = OMX_FALSE; 1146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* default setting for volume */ 1148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructVolume->nSize = sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE); 1149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructVolume->nVersion.s.nVersionMajor = 0xF1; 1150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructVolume->nVersion.s.nVersionMinor = 0xF2; 1151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructVolume->nPortIndex = OMX_DirInput; 1152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructVolume->bLinear = OMX_FALSE; 1153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructVolume->sVolume.nValue = 50; /* actual volume */ 1154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructVolume->sVolume.nMin = 0; /* min volume */ 1155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructVolume->sVolume.nMax = 100; /* max volume */ 1156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 1157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 1158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle, NULL); 1160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("Error from SendCommand-Idle(Init) State function\n"); 1162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Wait for startup to complete */ 1165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 1166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 1167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 1168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error: WaitForState reports an error %X\n", error); 1171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (dasfmode) { 1174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* get streamID back to application */ 1175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.wbamrstreamIDinfo",&index); 1176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 1177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Error getting extension index\n"); 1178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("***************StreamId=%ld******************\n", streamId); 1181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i = 0; i < testcnt; i++) { 1183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(i > 0) { 1184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Decoding the file for %d Time\n",i+1); 1185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(IpBuf_Pipe[0]); 1187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(IpBuf_Pipe[1]); 1188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(OpBuf_Pipe[0]); 1189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(OpBuf_Pipe[1]); 1190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Create a pipe used to queue data from the callback. */ 1192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin retval = pipe(IpBuf_Pipe); 1193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( retval != 0) { 1194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error:Fill Data Pipe failed to open\n"); 1195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin retval = pipe(OpBuf_Pipe); 1199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( retval != 0) { 1200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error:Empty Data Pipe failed to open\n"); 1201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fIn = fopen(argv[1], "r"); 1205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(fIn == NULL) { 1206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Error: failed to open the file %s for readonly access\n", argv[1]); 1207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fOut = fopen(argv[2], "a"); 1210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(fOut == NULL) { 1211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Error: failed to create the output file \n"); 1212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((command == 13)){ 1218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (i == 0){ 1219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Basic Function:: Sending OMX_StateExecuting Command\n"); 1220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 1221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 1222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL); 1224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("Error from SendCommand-Executing State function\n"); 1226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponent = (OMX_COMPONENTTYPE *)pHandle; 1229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateExecuting); 1231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 1232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateExecuting>"); 1233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error: WaitForState reports an error %X\n", error); 1236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }else{ 1240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Basic Function(else):: Sending OMX_StateExecuting Command\n"); 1241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 1242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 1243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateExecuting, NULL); 1245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("Error from SendCommand-Executing State function\n"); 1247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponent = (OMX_COMPONENTTYPE *)pHandle; 1250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateExecuting); 1252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 1253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateExecuting>"); 1254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error: WaitForState reports an error %X\n", error); 1257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (k=0; k < numInputBuffers; k++) { 1264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #ifdef OMX_GETTIME 1265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (k==0) 1266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_FlagE=1; /* 1 = First Buffer, 0 = Not First Buffer */ 1268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); /* Empty Bufffer */ 1269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #endif 1271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = send_input_buffer (pHandle, pInputBufferHeader[k], fIn); 1272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (dasfmode == 0) { 1276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (k=0; k < numOutputBuffers; k++) { 1277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #ifdef OMX_GETTIME 1278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (k==0) 1279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_FlagF=1; /* 1 = First Buffer, 0 = Not First Buffer */ 1281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); /* Fill Buffer */ 1282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #endif 1284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponent->FillThisBuffer(pHandle, pOutputBufferHeader[k]); 1285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponent->GetState(pHandle, &state); 1289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin retval = 1; 1290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef WAITFORRESOURCES 1291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin while( (error == OMX_ErrorNone) && ((state != OMX_StateIdle) || (count < 2)) ) 1292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(1) 1294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin while(1) 1297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((eError == OMX_ErrorNone) && (state != OMX_StateIdle) || (count < 2)) ) 1299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FD_ZERO(&rfds); 1304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FD_SET(IpBuf_Pipe[0], &rfds); 1305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FD_SET(OpBuf_Pipe[0], &rfds); 1306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FD_SET(Event_Pipe[0], &rfds); 1307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin tv.tv_sec = 1; 1308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin tv.tv_usec = 0; 1309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin retval = select(fdmax+1, &rfds, NULL, NULL, &tv); 1311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(retval == -1) 1312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin perror("select()"); 1314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ( " : Error \n"); 1315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 1316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (retval == 0) 1319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin count++; 1320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (count ==3){ 1321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(command != 13){ 1322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Shutting down Since there is nothing else to send nor read---------- \n"); 1323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin StopComponent(pHandle); 1324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }else{ 1325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(i != 9){ 1326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("**RING_TONE: Lets play again!\n"); 1327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("counter= %d \n",i); 1328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto my_exit; 1329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }else{ 1331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin StopComponent(pHandle); 1332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("stopcomponent\n"); 1333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(FD_ISSET(IpBuf_Pipe[0], &rfds)){ 1338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer; 1339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer)); 1340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin frmCount++; 1341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->nFlags = 0; 1342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( ((2==command) || (4==command) ) && (50 == frmCount)){ /*Stop Tests*/ 1344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Send Stop Command to component ---------- \n"); 1345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin StopComponent(pHandle); 1346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /**flush*/ 1349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*if ((frmCount >= nNextFlushFrame) && (num_flush < 5000)){*/ 1350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* 1351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (frmCount >= nNextFlushFrame){ 1352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Flush #%d\n", num_flush++); 1353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StatePause, NULL); 1354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf (stderr,"Error from SendCommand-Pasue State function\n"); 1356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = WaitForState(pHandle, OMX_StatePause); 1359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Error: WBAmrDecoder->WaitForState reports an error %X\n", error); 1361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandFlush, 0, NULL); 1364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&WaitForINFlush_mutex); 1365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_wait(&WaitForINFlush_threshold, 1366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin &WaitForINFlush_mutex); 1367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&WaitForINFlush_mutex); 1368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandFlush, 1, NULL); 1370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_lock(&WaitForOUTFlush_mutex); 1371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_wait(&WaitForOUTFlush_threshold, 1372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin &WaitForOUTFlush_mutex); 1373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_unlock(&WaitForOUTFlush_mutex); 1374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet,OMX_StateExecuting, NULL); 1376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf (stderr,"Error from SendCommand-Executing State function\n"); 1378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateExecuting); 1381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Error: AmrDecoder->WaitForState reports an error %X\n", error); 1383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fseek(fIn, 0, SEEK_SET); 1387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin frmCount = 0; 1388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nNextFlushFrame = 5 + 50 * ((rand() * 1.0) / RAND_MAX); 1389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("nNextFlushFrame d= %d\n", nNextFlushFrame); 1390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }*/ 1391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (state == OMX_StateExecuting){/**/ 1392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = send_input_buffer (pHandle, pBuffer, fIn); 1393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 1394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("goto EXIT %d\n",__LINE__); 1395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }/**/ 1398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(3 == command){ /*Pause Test*/ 1400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(frmCount == 100) { /*100 Frames processed */ 1401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Sending Pause command to Codec \n"); 1402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PauseComponent(pHandle); 1403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("5 secs sleep...\n"); 1404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sleep(5); 1405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Sending Resume command to Codec \n"); 1406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PlayComponent(pHandle); 1407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if ( 10 == command ){ /*Mute and UnMuteTest*/ 1410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(frmCount == 50){ 1411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("************Mute the playback stream*****************\n"); 1412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructMute->bMute = OMX_TRUE; 1413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioMute, pCompPrivateStructMute); 1414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) 1415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 1417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(frmCount == 120) { 1421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("************Unmute the playback stream*****************\n"); 1422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructMute->bMute = OMX_FALSE; 1423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioMute, pCompPrivateStructMute); 1424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 1425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 1426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if ( 11 == command ) { /*Set Volume Test*/ 1432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(frmCount == 35) { 1433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("************Set stream volume to high*****************\n"); 1434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructVolume->sVolume.nValue = 0x8000; 1435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructVolume); 1436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 1437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 1438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(frmCount == 120) { 1442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("************Set stream volume to low*****************\n"); 1443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pCompPrivateStructVolume->sVolume.nValue = 0x1000; 1444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetConfig(pHandle, OMX_IndexConfigAudioVolume, pCompPrivateStructVolume); 1445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 1446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 1447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (command == 12) { /* frame lost test */ 1452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(frmCount == 35 || frmCount == 120) { 1453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("************Sending lost frame*****************\n"); 1454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_GetExtensionIndex(pHandle, "OMX.TI.index.config.wbamr.framelost",&index); 1455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SetConfig(pHandle, index, NULL); 1456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error != OMX_ErrorNone) { 1457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_ErrorBadParameter; 1458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( FD_ISSET(OpBuf_Pipe[0], &rfds) ) { 1465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin read(OpBuf_Pipe[0], &pBuf, sizeof(pBuf)); 1466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBuf->nFlags == OMX_BUFFERFLAG_EOS){ 1467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*printf("EOS received by App, Stopping the component\n");*/ 1468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuf->nFlags = 0; 1469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* StopComponent(pHandle);*/ 1470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /**/fwrite(pBuf->pBuffer, 1, pBuf->nFilledLen, fOut); 1472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fflush(fOut); 1473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (state == OMX_StateExecuting ) { 1474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponent->FillThisBuffer(pHandle, pBuf); 1475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( FD_ISSET(Event_Pipe[0], &rfds) ) { 1479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 pipeContents; 1480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin read(Event_Pipe[0], &pipeContents, sizeof(OMX_U8)); 1481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pipeContents == 0) { 1482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Test app received OMX_ErrorResourcesPreempted\n"); 1483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WaitForState(pHandle,OMX_StateIdle); 1484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i < numInputBuffers; i++) { 1486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: App: About to newfree pInputBufferHeader[%d]\n",__LINE__, i); 1487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_FreeBuffer(pHandle, OMX_DirInput, pInputBufferHeader[i]); 1488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((error != OMX_ErrorNone)) { 1489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d:: Error in FreeBuffer function\n",__LINE__); 1490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i < numOutputBuffers; i++) { 1496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: App: About to newfree pOutputBufferHeader[%d]\n",__LINE__, i); 1497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_FreeBuffer(pHandle, OMX_DirOutput, pOutputBufferHeader[i]); 1498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((error != OMX_ErrorNone)) { 1499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: Error in Free Buffer function\n",__LINE__); 1500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef USE_BUFFER 1505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i < numOutputBuffers; i++) { 1507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pInputBuffer[i] != NULL){ 1508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]); 1509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInputBuffer[i] = pInputBuffer[i] - 128; 1510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin newfree(pInputBuffer[i]); 1511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInputBuffer[i] = NULL; 1512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL); 1518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WaitForState(pHandle, OMX_StateLoaded); 1519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateWaitForResources,NULL); 1521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WaitForState(pHandle,OMX_StateWaitForResources); 1522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (pipeContents == 1) { 1524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Test app received OMX_ErrorResourcesAcquired\n"); 1525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateIdle,NULL); 1527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < numOutputBuffers; i++) { 1528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* allocate output buffer */ 1529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: About to call OMX_AllocateBuffer\n",__LINE__); 1530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_AllocateBuffer(pHandle,&pOutputBufferHeader[i],1,NULL,OUTPUT_WBAMRDEC_BUFFER_SIZE*2); 1531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: called OMX_AllocateBuffer\n",__LINE__); 1532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: Error returned by OMX_AllocateBuffer()\n",__LINE__); 1534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WaitForState(pHandle,OMX_StateIdle); 1539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet,OMX_StateExecuting,NULL); 1541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WaitForState(pHandle,OMX_StateExecuting); 1542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin rewind(fIn); 1544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin send_input_buffer (pHandle, (OMX_BUFFERHEADERTYPE*)pOutputBufferHeader, fIn); 1546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pipeContents == 2) { 1549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(command !=13){ 1551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: AmrDecTest.c :: StopComponent\n",__LINE__); 1552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin StopComponent(pHandle); 1553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef WAITFORRESOURCES 1554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i < numInputBuffers; i++) { 1555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: App: About to newfree pInputBufferHeader[%d]\n",__LINE__, i); 1556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_FreeBuffer(pHandle, OMX_DirInput, pInputBufferHeader[i]); 1557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((error != OMX_ErrorNone)) { 1558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d:: Error in FreeBuffer function\n",__LINE__); 1559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i < numOutputBuffers; i++) { 1565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: App: About to newfree pOutputBufferHeader[%d]\n",__LINE__, i); 1566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_FreeBuffer(pHandle, OMX_DirOutput, pOutputBufferHeader[i]); 1567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((error != OMX_ErrorNone)) { 1568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d :: Error in Free Buffer function\n",__LINE__); 1569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL); 1575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin WaitForState(pHandle, OMX_StateLoaded); 1576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto SHUTDOWN; 1578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }else{ 1580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("**RING_TONE: !!!!\n"); 1581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(i != 9){ 1582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("**RING_TONE: Lets play again!\n"); 1583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("counter= %d \n",i); 1584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto my_exit; 1585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }else{ 1587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin StopComponent(pHandle); 1588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("stopcomponent\n"); 1589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = pComponent->GetState(pHandle, &state); 1594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("%d:: Warning: hAmrEncoder->GetState has returned status %X\n", 1596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin __LINE__, error); 1597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (preempted) { 1601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sched_yield(); 1602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto SHUTDOWN; 1605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} /* While Loop Ending Here */ 1608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-----------------------------------------*/ 1609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("The current state of the component = %d \n",state); 1610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinmy_exit: 1611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fclose(fOut); 1612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fclose(fIn); 1613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FirstTime = 1; 1614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin count=0; 1615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } /*Inner for loop ends here */ 1617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* newfree buffers */ 1618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < numInputBuffers; i++) { 1619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_FreeBuffer(pHandle,OMX_DirInput,pInputBufferHeader[i]); 1620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( (error != OMX_ErrorNone)) { 1621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__); 1622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (i=0; i < numOutputBuffers; i++) { 1626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_FreeBuffer(pHandle,OMX_DirOutput,pOutputBufferHeader[i]); 1627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( (error != OMX_ErrorNone)) { 1628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__); 1629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef USE_BUFFER 1634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* newfree the App Allocated Buffers */ 1636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d :: App: Freeing the App Allocated Buffers in TestApp\n",__LINE__); 1637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i < numInputBuffers; i++) { 1638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pInputBuffer[i] != NULL){ 1639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,pInputBuffer[i]); 1640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInputBuffer[i] = pInputBuffer[i] - 128; 1641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin newfree(pInputBuffer[i]); 1642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInputBuffer[i] = NULL; 1643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i < numOutputBuffers; i++) { 1647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pOutputBuffer[i] != NULL){ 1648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d :: App: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, pOutputBuffer[i]); 1649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutputBuffer[i] = pOutputBuffer[i] - 128; 1650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin newfree(pOutputBuffer[i]); 1651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutputBuffer[i] = NULL; 1652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Sending the StateLoaded Command\n"); 1657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 1659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 1660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateLoaded, NULL); 1662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("%d:: Error from SendCommand-Idle State function\n",__LINE__); 1664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateLoaded); 1667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 1668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateLoaded>"); 1669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT( "Error: WaitForState reports an error %X\n", error); 1672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandPortDisable, -1, NULL); 1676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef WAITFORRESOURCES 1680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateWaitForResources, NULL); 1681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 1682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("%d Error from SendCommand-Idle State function\n",__LINE__); 1683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateWaitForResources); 1686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* temporarily put this here until I figure out what should really happen here */ 1688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sleep(10); 1689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* temporarily put this here until I figure out what should really happen here */ 1690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinSHUTDOWN: 1692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef DSP_RENDERING_ON 1693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin cmd_data.hComponent = pHandle; 1694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin cmd_data.AM_Cmd = AM_Exit; 1695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((write(wbamrdecfdwrite, &cmd_data, sizeof(cmd_data)))<0) 1697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d ::OMX_AmrDecoder.c :: [NBAMR Dec Component] - send command to audio manager\n",__LINE__); 1698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(wbamrdecfdwrite); 1699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(wbamrdecfdread); 1700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf ("Free the Component handle\n"); 1702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Unload the WBAMR Encoder Component */ 1704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pAmrParam); 1706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin newfree(pAmrParam); 1707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pCompPrivateStruct); 1709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin newfree(pCompPrivateStruct); 1710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pCompPrivateStructMute); 1711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin newfree(pCompPrivateStructMute); 1712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_MEMPRINT("%d:::[TESTAPPFREE] %p\n",__LINE__,pCompPrivateStructVolume); 1713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin newfree(pCompPrivateStructVolume); 1714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = TIOMX_FreeHandle(pHandle); 1716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( (error != OMX_ErrorNone)) { 1718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("%d:: Error in Free Handle function\n",__LINE__); 1719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(IpBuf_Pipe[0]); 1723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(IpBuf_Pipe[1]); 1724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(OpBuf_Pipe[0]); 1725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin close(OpBuf_Pipe[1]); 1726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fclose(inputToSN); 1728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("%d:: Free Handle returned Successfully \n\n\n\n",__LINE__); 1729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } /*Outer for loop ends here */ 1731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_destroy(&WaitForState_mutex); 1733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_destroy(&WaitForState_threshold); 1734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /**flush */ 1736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_destroy(&WaitForOUTFlush_mutex); 1737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_destroy(&WaitForOUTFlush_threshold); 1738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_destroy(&WaitForINFlush_mutex); 1739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_destroy(&WaitForINFlush_threshold); 1740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /***/ 1741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = TIOMX_Deinit(); 1743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( (error != OMX_ErrorNone)) 1744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT("APP: Error in Deinit Core function\n"); 1746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1749b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /*newfree(audioinfo); 1750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1751b65f253fdc60f6208a54911bee793d225f23cdf8James Dong newfree(streaminfo);*/ 1752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 1756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(bInvalidState==OMX_TRUE) 1757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER 1759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = FreeAllResources(pHandle, 1760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInputBufferHeader[0], 1761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutputBufferHeader[0], 1762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin numInputBuffers, 1763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin numOutputBuffers, 1764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fIn, 1765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fOut); 1766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = FreeAllResources(pHandle, 1768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pInputBuffer, 1769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pOutputBuffer, 1770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin numInputBuffers, 1771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin numOutputBuffers, 1772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fIn, 1773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fOut); 1774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUGMEM 1777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("\n-Printing memory not deleted-\n"); 1778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0;i<500;i++){ 1779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (lines[i]!=0){ 1780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf(" --->%d Bytes allocated on %p File:%s Line: %d\n",bytes[i], arr[i],file[i],lines[i]); 1781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 1786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("WBAMR_DEC test <End>"); 1787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ListDestroy(pListHead); 1788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return error; 1790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 1794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn send_input_buffer() description for send_input_buffer 1796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinsend_input_buffer(). 1797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinSends input buffer to component 1798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 1799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 1800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 1801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE send_input_buffer(OMX_HANDLETYPE pHandle, OMX_BUFFERHEADERTYPE* pBuffer, FILE *fIn) 1802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 1804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle; 1805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("*************************\n"); 1806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("%d :: pBuffer = %p nRead = %d\n",__LINE__,pBuffer,nRead); 1807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin APP_DPRINT ("*************************\n"); 1808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(FirstTime) 1810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRead = fill_data (pBuffer->pBuffer, WBAmrFrameFormat, fIn); 1812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->nFilledLen = nRead; 1813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memcpy(pBuffer->pBuffer, NextBuffer,nRead); 1817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->nFilledLen = nRead; 1818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRead = fill_data (NextBuffer, WBAmrFrameFormat, fIn); 1821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (WBAmrFrameFormat == OMX_AUDIO_AMRFrameFormatConformance) 1823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( nRead<numRead ) 1825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->nFlags = OMX_BUFFERFLAG_EOS; 1826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->nFlags = 0; 1828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if( 0 == nRead ) 1833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->nFlags = OMX_BUFFERFLAG_EOS; 1834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 1835fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->nFlags = 0; 1836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1837fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1838fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(pBuffer->nFilledLen!=0) 1839fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1840fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (pBuffer->nFlags == OMX_BUFFERFLAG_EOS) 1841fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("EOS send on last data buffer\n"); 1842fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pBuffer->nTimeStamp = rand() % 100; 1844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = pComponent->EmptyThisBuffer(pHandle, pBuffer); 1845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (error == OMX_ErrorIncorrectStateOperation) 1846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = 0; 1847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FirstTime=0; 1852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*printf("Fin de send_input buffer...");*/ 1853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return error; 1855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================= */ 1858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 1859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @fn fill_data() description for fill_data 1860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinfill_data(). 1861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinFills input buffer 1862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* 1863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 1864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================ */ 1865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint fill_data (OMX_U8 *pBuf, int mode, FILE *fIn) 1867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 1868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int nBytesRead = 0; 1869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin static unsigned long totalRead = 0; 1870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin static int fileHdrReadFlag = 0; 1871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1872fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (OMX_AUDIO_AMRFrameFormatConformance == mode) 1873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!fileHdrReadFlag) 1875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf (stderr, "Reading the file in Frame Format Conformance Mode\n"); 1877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fileHdrReadFlag = 1; 1878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (testCaseNo == 7) { 1881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin numRead = 2*INPUT_WBAMRDEC_BUFFER_SIZE; 1882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (testCaseNo == 8) { 1884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin numRead = INPUT_WBAMRDEC_BUFFER_SIZE/2; 1885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (testCaseNo == 9) { 1887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (alternate == 0) { 1888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin numRead = 2*INPUT_WBAMRDEC_BUFFER_SIZE; 1889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin alternate = 1; 1890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin numRead = INPUT_WBAMRDEC_BUFFER_SIZE/2; 1893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin alternate = 0; 1894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1895fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin numRead = INPUT_WBAMRDEC_BUFFER_SIZE; 1898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead = fread(pBuf, 1, numRead , fIn); 1900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(OMX_AUDIO_AMRFrameFormatFSF == mode) 1904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { /*Mime Mode*/ 1905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin static const unsigned char FrameLength[] = {18, 24, 33, 37, 41, 47, 51, 59, 61,6}; 1906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin char size = 0; 1907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int index = 45; /* some invalid value*/ 1908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin signed char first_char; 1909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!fileHdrReadFlag) { 1910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf (stderr, "Reading the file in MIME Mode\n"); 1911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Read the file header */ 1912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((fgetc(fIn) != 0x23) || (fgetc(fIn) != 0x21) || 1913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (fgetc(fIn) != 0x41) || (fgetc(fIn) != 0x4d) || 1914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (fgetc(fIn) != 0x52) || (fgetc(fIn) != 0x2d) || 1915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (fgetc(fIn) != 0x57) || (fgetc(fIn) != 0x42) || 1916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (fgetc(fIn) != 0x0a)) { 1917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Error: File does not have correct header\n"); 1918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fileHdrReadFlag = 1; 1920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin first_char = fgetc(fIn); 1922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (EOF == first_char) { 1923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Got EOF character\n"); 1924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead = 0; 1925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = (first_char>>3) & 0xf; 1928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((index>=0) && (index<10)) 1930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin size = FrameLength[index]; 1932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((OMX_S8*)(pBuf)) = first_char; 1933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead = fread(((char*)(pBuf))+1, 1, size - 1, fIn); 1934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead += 1; 1935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (index == 14) { 1937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((char*)(pBuf)) = first_char; 1938fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead = 1; 1939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (index == 15) { 1941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((char*)(pBuf)) = first_char; 1942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead = 1; 1943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { 1945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead = 0; 1946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Invalid Index in the frame index1 = %d \n", index); 1947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if(OMX_AUDIO_AMRFrameFormatIF2 == mode) 1952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin {/*IF2*/ 1953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin static const OMX_U8 FrameLength[] = {18, 23, 33, 37, 41, 47, 51, 59, 61, 6};/*List of valid IF2 frame length*/ 1954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S8 size = 0; 1955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S16 index = 45; /* some invalid value*/ 1956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S8 first_char; 1957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (!fileHdrReadFlag) { 1959fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf (stderr, "Reading the file in IF2 Mode\n"); 1960fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fileHdrReadFlag = 1; 1961fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1962fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin first_char = fgetc(fIn); 1964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (EOF == first_char) { 1965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "Got EOF character\n"); 1966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead = 0; 1967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin index = (first_char>>4) & 0xf; 1970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((index>=0) && (index<=9)) 1971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 1972fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin size = FrameLength[index]; 1973fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((OMX_S8*)(pBuf)) = first_char; 1974fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead = fread(((OMX_S8*)(pBuf))+1, 1, size - 1, fIn); 1975fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead += 1; 1976fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } else if (index == 14) { 1977fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((char*)(pBuf)) = first_char; 1978fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead = 1; 1979fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } else if (index == 15) { 1980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *((OMX_S8*)(pBuf)) = first_char; 1981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nBytesRead = 1; 1982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } else { 1983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin nRead = 0; 1984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Invalid Index in the frame index2 = %d \n", index); 1985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 1986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin totalRead += nBytesRead; 1994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 1995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return nBytesRead; 1996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1998fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE StopComponent(OMX_HANDLETYPE *pHandle) 1999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 2001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 2002fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 2003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL); 2005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 2006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf (stderr,"\nError from SendCommand-Idle(Stop) State function!!!!!!!!\n"); 2007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2008fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2009fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 2010fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 2011fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateIdle>"); 2012fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2013fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 2014fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "\nError: WaitForState reports an error %X!!!!!!!\n", error); 2015fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2016fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2017fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2018fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return error; 2019fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2020fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2021fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PauseComponent(OMX_HANDLETYPE *pHandle) 2022fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2023fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 2024fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 2025fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 2026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StatePause, NULL); 2028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 2029fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf (stderr,"\nError from SendCommand-Pasue State function!!!!!!\n"); 2030fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2031fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2032fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = WaitForState(pHandle, OMX_StatePause); 2033fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 2034fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StatePause>"); 2035fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2036fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 2037fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "\nError: WaitForState reports an error %X!!!!!!!\n", error); 2038fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2039fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2040fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2041fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return error; 2042fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2043fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2044fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE PlayComponent(OMX_HANDLETYPE *pHandle) 2045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 2047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 2049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_START(); 2050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateExecuting, NULL); 2052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 2053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf (stderr,"\nError from SendCommand-Executing State function!!!!!!!\n"); 2054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateExecuting); 2057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef OMX_GETTIME 2058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin GT_END("Call to SendCommand <OMX_StateExecuting>"); 2059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(error != OMX_ErrorNone) { 2061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "\nError: WaitForState reports an error %X!!!!!!!\n", error); 2062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; 2063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinEXIT: 2065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return error; 2066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef APP_DEBUGMEM 2069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid * mymalloc(int line, char *s, int size) 2070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin void *p; 2072fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int e=0; 2073fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin p = malloc(size); 2074fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(p==NULL){ 2075fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Memory not available\n"); 2076fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin exit(1); 2077fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2078fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else{ 2079fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin while((lines[e]!=0)&& (e<500) ){ 2080fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin e++; 2081fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2082fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin arr[e]=p; 2083fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin lines[e]=line; 2084fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin bytes[e]=size; 2085fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy(file[e],s); 2086fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Allocating %d bytes on address %p, line %d file %s\n", size, p, line, s); 2087fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return p; 2088fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2089fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2090fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2091fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint myfree(void *dp, int line, char *s){ 2092fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int q; 2093fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (dp==NULL){ 2094fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Null Memory can not be deleted line: %d file: %s\n", line, s); 2095fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return 0; 2096fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2097fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2098fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(q=0;q<500;q++){ 2099fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(arr[q]==dp){ 2100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Deleting %d bytes on address %p, line %d file %s\n", bytes[q],dp, line, s); 2101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(dp); 2102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin dp = NULL; 2103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin lines[q]=0; 2104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin strcpy(file[q],""); 2105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin break; 2106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(500==q) 2109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("\n\nPointer not found. Line:%d File%s!!\n\n",line, s); 2110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return 1; 2111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*================================================================= 2114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Freeing All allocated resources 2116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin==================================================================*/ 2118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef USE_BUFFER 2119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FreeAllResources( OMX_HANDLETYPE *pHandle, 2120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBufferIn, 2121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBufferOut, 2122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int NIB, int NOB, 2123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FILE* fileIn, FILE* fileOut) 2124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d::Freeing all resources by state invalid \n",__LINE__); 2126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 i; 2128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i < NIB; i++) { 2129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d :: APP: About to free pInputBufferHeader[%d]\n",__LINE__, i); 2130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle, OMX_DirInput, pBufferIn+i); 2131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i < NOB; i++) { 2136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d :: APP: About to free pOutputBufferHeader[%d]\n",__LINE__, i); 2137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_FreeBuffer(pHandle, OMX_DirOutput, pBufferOut+i); 2138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*i value is fixed by the number calls to malloc in the App */ 2141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i<6;i++) 2142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (ArrayOfPointers[i] != NULL) 2144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(ArrayOfPointers[i]); 2145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = close (IpBuf_Pipe[0]); 2149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = close (IpBuf_Pipe[1]); 2150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = close (OpBuf_Pipe[0]); 2151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = close (OpBuf_Pipe[1]); 2152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = close (Event_Pipe[0]); 2153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = close (Event_Pipe[1]); 2154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(fileOut != NULL) /* Could have been closed previously */ 2155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fclose(fileOut); 2157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fileOut=NULL; 2158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(fileIn != NULL) 2161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { fclose(fileIn); 2162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fileIn=NULL; 2163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIOMX_FreeHandle(pHandle); 2166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*================================================================= 2173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Freeing the resources with USE_BUFFER define 2175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin==================================================================*/ 2177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 2178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint FreeAllResources(OMX_HANDLETYPE *pHandle, 2180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* UseInpBuf[], 2181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* UseOutBuf[], 2182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int NIB,int NOB, 2183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FILE* fileIn, FILE* fileOut) 2184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 2185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 2187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 i; 2188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d::Freeing all resources by state invalid \n",__LINE__); 2189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* free the UseBuffers */ 2190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i < NIB; i++) { 2191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin UseInpBuf[i] = UseInpBuf[i] - 128; 2192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d :: [TESTAPPFREE] pInputBuffer[%d] = %p\n",__LINE__,i,(UseInpBuf[i])); 2193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(UseInpBuf[i] != NULL){ 2194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin newfree(UseInpBuf[i]); 2195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin UseInpBuf[i] = NULL; 2196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i < NOB; i++) { 2200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin UseOutBuf[i] = UseOutBuf[i] - 128; 2201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("%d :: [TESTAPPFREE] pOutputBuffer[%d] = %p\n",__LINE__,i, UseOutBuf[i]); 2202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(UseOutBuf[i] != NULL){ 2203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin newfree(UseOutBuf[i]); 2204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin UseOutBuf[i] = NULL; 2205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*i value is fixed by the number calls to malloc in the App */ 2209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for(i=0; i<6;i++) 2210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (ArrayOfPointers[i] != NULL) 2212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin free(ArrayOfPointers[i]); 2213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = close (IpBuf_Pipe[0]); 2216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = close (IpBuf_Pipe[1]); 2217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = close (OpBuf_Pipe[0]); 2218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = close (OpBuf_Pipe[1]); 2219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (fileOut != NULL) /* Could have been closed previously */ 2221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 2222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fclose(fileOut); 2223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fileOut=NULL; 2224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (fileIn != NULL) 2227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { fclose(fileIn); 2228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fileIn=NULL; 2229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 2230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_FreeHandle(pHandle); 2232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return eError; 2234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 2235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 2237