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