1b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 3b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/ 4b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 5b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This library is free software; you can redistribute it and/or 6b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public 7b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * License as published by the Free Software Foundation; either 8b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version. 9b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 10b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 11b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This library is distributed in the hope that it will be useful, 12b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of 13b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Lesser General Public License for more details. 15b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 16b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 17b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public 18b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * License along with this library; if not, write to the Free Software 19b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 21b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ============================================================================= 22b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Texas Instruments OMAP(TM) Platform Software 23b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 24b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 25b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Use of this software is controlled by the terms and conditions found 26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * in the license agreement under which this software has been supplied. 27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * ============================================================================ */ 28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @file OMX_G722Decoder.h 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This is an header file for an audio G722 decoder that is fully 32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * compliant with the OMX Audio specification. 33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This the file is used internally by the component 34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * in its code. 35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @path $(CSLPATH)\OMAPSW_MPU\linux\audio\src\openmax_il\g722_dec\inc\ 37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @rev 1.0 39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* --------------------------------------------------------------------------- */ 41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef OMX_G722DEC_UTILS__H 42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G722DEC_UTILS__H 43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h> 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "LCML_DspCodec.h" 47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin #ifdef UNDER_CE 49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <windows.h> 50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <oaf_osal.h> 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <omx_core.h> 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h> 53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h> 55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define G722DEC_DEBUG **/ /* See all debug statement of the component */ 58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define G722DEC_MEMDETAILS */ /* See memory details of the component */ 59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define G722DEC_BUFDETAILS */ /* See buffers details of the component */ 60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define G722DEC_STATEDETAILS */ /* See all state transitions of the component */ 61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define MAX_NUM_OF_BUFS 10 /* Max number of buffers used */ 63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722D_NUM_INPUT_BUFFERS 1 /* Default number of input buffers */ 64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722D_NUM_OUTPUT_BUFFERS 1 /* Default number of output buffers */ 65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722D_INPUT_BUFFER_SIZE 4096 /* Default size of input buffer */ 66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722D_OUTPUT_BUFFER_SIZE 320 /* Default size of output buffer */ 67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NUM_OF_PORTS 2 /* Number of ports of component */ 69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define INVALID_SAMPLING_FREQ 51 70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define EXIT_COMPONENT_THRD 10 72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_MAJOR_VER 0xF1 /* Majer version of the component */ 75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_MINOR_VER 0xF2 /* Minor version of the component */ 76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_BUFHEADER_VERSION 0x0 /* Version of the buffer header struct */ 77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NOT_USED 10 /* To specify that a particulat field is not used */ 78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NORMAL_BUFFER 0 /* Marks a buffer as normal buffer i.e. not last buffer */ 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G722DEC_DEFAULT_SEGMENT (0) /* Default segment ID */ 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G722DEC_SN_TIMEOUT (-1) /* timeout, wait until ack is received */ 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G722DEC_SN_PRIORITY (10) /* Priority used by DSP */ 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_CPU 50 /* TBD, 50MHz for the moment */ 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define USN_DLL_NAME "\\windows\\usn.dll64P" /* Path of USN DLL */ 86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_DLL_NAME "\\windows\\g722dec_sn.dll64P" /* Path of G722 SN DLL */ 87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define USN_DLL_NAME "usn.dll64P" /* Path of USN DLL */ 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_DLL_NAME "g722dec_sn.dll64P" /* Path of G722 SN DLL */ 90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define DONT_CARE 0 /* Value unused or ignored */ 93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** Default timeout used to come out of blocking calls*/ 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722D_TIMEOUT (1000) /* millisecs */ 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DEBUG 100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_DPRINT printf 101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_EPRINT printf 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_MEMPRINT printf 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_STATEPRINT printf 104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_BUFPRINT printf 105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_DPRINT 107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_EPRINT 108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_MEMPRINT 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_STATEPRINT 110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_BUFPRINT 111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else /* for Linux */ 114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef G722DEC_DEBUG 116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_DPRINT(...) fprintf(stdout, "%s %d:: ",__FUNCTION__, __LINE__); \ 118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stdout, __VA_ARGS__); \ 119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stdout, "\n"); 120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_BUFPRINT printf 122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_MEMPRINT printf 123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_STATEPRINT printf 124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_DPRINT(...) 127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef G722DEC_STATEDETAILS 129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_STATEPRINT printf 130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_STATEPRINT(...) 132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef G722DEC_BUFDETAILS 135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_BUFPRINT printf 136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_BUFPRINT(...) 138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef G722DEC_MEMDETAILS 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_MEMPRINT(...) fprintf(stdout, "%s %d:: ",__FUNCTION__, __LINE__); \ 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stdout, __VA_ARGS__); \ 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stdout, "\n"); 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722DEC_MEMPRINT(...) 146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif /*for UNDER_CE*/ 151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722D_OMX_MALLOC(_pStruct_, _sName_) \ 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin _pStruct_ = (_sName_*)malloc(sizeof(_sName_)); \ 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(_pStruct_ == NULL){ \ 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("***********************************\n"); \ 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: Malloc Failed\n",__LINE__); \ 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("***********************************\n"); \ 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; \ 159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; \ 160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } \ 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset(_pStruct_,0,sizeof(_sName_)); \ 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722DEC_MEMPRINT("%d :: Malloced = %p\n",__LINE__,_pStruct_); 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722D_OMX_MALLOC_SIZE(_ptr_, _size_,_name_) \ 167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin _ptr_ = (_name_ *)malloc(_size_); \ 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(_ptr_ == NULL){ \ 169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("***********************************\n"); \ 170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d :: Malloc Failed\n",__LINE__); \ 171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("***********************************\n"); \ 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; \ 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; \ 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } \ 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset(_ptr_,0,_size_); \ 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722DEC_MEMPRINT("%d :: Malloced = %p\n",__LINE__,_ptr_); 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722D_OMX_ERROR_EXIT(_e_, _c_, _s_) \ 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin _e_ = _c_; \ 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n**************** OMX ERROR ************************\n"); \ 181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d : Error Name: %s : Error Num = %x",__LINE__, _s_, _e_); \ 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n**************** OMX ERROR ************************\n"); \ 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722D_OMX_CONF_CHECK_CMD(_ptr1, _ptr2, _ptr3) \ 187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { \ 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!_ptr1 || !_ptr2 || !_ptr3){ \ 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorBadParameter; \ 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; \ 191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } \ 192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G722D_OMX_FREE(ptr) \ 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(NULL != ptr) { \ 196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722DEC_MEMPRINT("%d :: Freeing Address = %p\n",__LINE__,ptr); \ 197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin free(ptr); \ 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ptr = NULL; \ 199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_CONF_INIT_STRUCT(_s_, _name_) \ 202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin memset((_s_), 0x0, sizeof(_name_)); \ 203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nSize = sizeof(_name_); \ 204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nVersionMajor = 0x1; \ 205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nVersionMinor = 0x0; \ 206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nRevision = 0x0; \ 207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (_s_)->nVersion.s.nStep = 0x0 208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** OMX_G722DEC_INDEXAUDIOTYPE Defines the custom configuration settings 212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * for the component 213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param OMX_IndexCustomG722DecModeDasfConfig Sets the DASF mode 215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */ 218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum OMX_G722DEC_INDEXAUDIOTYPE { 219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*OMX_IndexCustomG722DecModeDasfConfig = OMX_IndexIndexVendorStartUnused + 1,*/ 220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IndexCustomG722DecModeDasfConfig = 0xFF000001, 221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IndexCustomG722DecHeaderInfoConfig, 222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IndexCustomG722DecStreamIDConfig, 223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IndexCustomG722DecDataPath 224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}OMX_G722DEC_INDEXAUDIOTYPE; 225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ============================================================================== * */ 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G722D_COMP_PORT_TYPE describes the input and output port of indices of the 229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * component. 230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param G722D_INPUT_PORT Input port index 232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param G722D_OUTPUT_PORT Output port index 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ============================================================================ * */ 236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum G722D_COMP_PORT_TYPE { 237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722D_INPUT_PORT = 0, 238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722D_OUTPUT_PORT 239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G722D_COMP_PORT_TYPE; 240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G722DEC_ParamStruct: This struct is passed with input buffers that 244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * are sent to DSP. 245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */ 247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct { 248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set to 1 if buffer is last buffer */ 249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned long usLastFrame; 250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned long usFrameLost; 251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G722DEC_ParamStruct; 252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G722DEC_UAlgInBufParamStruct: This struct is passed with input buffers that 255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * are sent to DSP. 256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */ 258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct { 259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set to 1 if buffer is last buffer */ 260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned long bLastBuffer; 261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G722DEC_UAlgInBufParamStruct; 262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G722D_USN_AudioCodecParams: This contains the information which does to Codec 266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * on DSP 267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * are sent to DSP. 268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */ 270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct USN_AudioCodecParams{ 271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Specifies the sample frequency */ 272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned long ulSamplingFreq; 273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Specifies the UUID */ 274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned long unUUID; 275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Specifies the audio format */ 276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned short unAudioFormat; 277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G722D_USN_AudioCodecParams; 278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G722DEC_UAlgOutBufParamStruct: This is passed with output buffer to DSP. 281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */ 283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct { 284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Number of frames in a buffer */ 285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned long ulFrameCount; 286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G722DEC_UAlgOutBufParamStruct; 287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G722D_LCML_BUFHEADERTYPE: This is LCML buffer header which is sent to LCML 290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * for both input and output buffers. 291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */ 293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct G722D_LCML_BUFHEADERTYPE { 294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Direction whether input or output buffer */ 295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DIRTYPE eDir; 296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Pointer to OMX Buffer Header */ 297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufHdr; 298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Other parameters, may be useful for enhancements */ 299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin void *pOtherParams[10]; 300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Input Parameter Information structure */ 301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*G722DEC_UAlgInBufParamStruct *pIpParam;*/ 302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722DEC_ParamStruct *pIpParam; 303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Output Parameter Information structure */ 304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722DEC_UAlgOutBufParamStruct *pOpParam; 305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* buffer; 307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G722D_LCML_BUFHEADERTYPE; 308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G722D_AUDIODEC_PORT_TYPE: This contains component port information. 311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_AUDIO_PARAM_PORTFORMATTYPE 313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */ 315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct AUDIODEC_PORT_TYPE { 316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Used in tunneling, this is handle of tunneled component */ 317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE hTunnelComponent; 318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Port which has to be tunneled */ 319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nTunnelPort; 320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Buffer Supplier Information */ 321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERSUPPLIERTYPE eSupplierSetting; 322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Number of buffers */ 323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 nBufferCnt; 324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Port format information */ 325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_PORTFORMATTYPE* pPortFormat; 326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} G722D_AUDIODEC_PORT_TYPE; 327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** _G722D_BUFFERLIST: This contains information about a buffer's owner whether 331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * it is application or component, number of buffers owned etc. 332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_BUFFERHEADERTYPE 334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */ 336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstruct _G722D_BUFFERLIST{ 337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Array of pointer to OMX buffer headers */ 338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pBufHdr[MAX_NUM_OF_BUFS]; 339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Array that tells about owner of each buffer */ 340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bufferOwner[MAX_NUM_OF_BUFS]; 341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bBufferPending[MAX_NUM_OF_BUFS]; 342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Number of buffers */ 343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 numBuffers; 344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}; 345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct _G722D_BUFFERLIST G722D_BUFFERLIST; 347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef _OMX_EVENT_ 350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define _OMX_EVENT_ 351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct OMX_Event { 352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin HANDLE event; 353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} OMX_Event; 354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_CreateEvent(OMX_Event *event); 356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_SignalEvent(OMX_Event *event); 357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_WaitForEvent(OMX_Event *event); 358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_DestroyEvent(OMX_Event *event); 359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */ 362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G722DEC_COMPONENT_PRIVATE: This is the major and main structure of the 363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * component which contains all type of information of buffers, ports etc 364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * contained in the component. 365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_BUFFERHEADERTYPE 367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_AUDIO_PARAM_PORTFORMATTYPE 368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_PARAM_PORTDEFINITIONTYPE 369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see G722D_LCML_BUFHEADERTYPE 370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_PORT_PARAM_TYPE 371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_PRIORITYMGMTTYPE 372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see G722D_AUDIODEC_PORT_TYPE 373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see G722D_BUFFERLIST 374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see G722D_AUDIODEC_PORT_TYPE 375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see LCML_STRMATTR 376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see 377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */ 379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct G722DEC_COMPONENT_PRIVATE 380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Handle for use with async callbacks */ 382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CALLBACKTYPE cbInfo; 383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Component port information */ 384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PORT_PARAM_TYPE *sPortParam; 385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Input port information */ 386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_PORTFORMATTYPE sInPortFormat; 387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Output port information */ 388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_PORTFORMATTYPE sOutPortFormat; 389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Buffer owner information */ 390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bIsBufferOwned[NUM_OF_PORTS]; 391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Number of input buffers at runtime */ 393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nRuntimeInputBuffers; 394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Number of output buffers at runtime */ 396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nRuntimeOutputBuffers; 397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Audio codec parameters structure */ 399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722D_USN_AudioCodecParams *pParams; 400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** This will contain info like how many buffers 402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin are there for input/output ports, their size etc, but not 403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin BUFFERHEADERTYPE POINTERS. */ 404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDef[NUM_OF_PORTS]; 405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Contains information that come from application */ 406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_AUDIO_PARAM_PCMMODETYPE* G722Params[NUM_OF_PORTS]; 407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** This is component handle */ 408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle; 409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Current state of this component */ 410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE curState; 411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** The component thread handle */ 412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_t ComponentThread; 413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** The pipes for sending buffers to the thread */ 414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int dataPipe[2]; 415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** The pipes for sending buffers to the thread */ 416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int cmdPipe[2]; 417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** The pipes for sending command data to the thread */ 419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int cmdDataPipe[2]; 420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* int portcmdPipe[2]; */ 422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** The pipes for sending buffers to the thread */ 424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int lcml_Pipe[2]; 425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Set to indicate component is stopping */ 427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bIsEOFSent; 428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Count of number of buffers outstanding with bridge */ 430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 lcml_nIpBuf; 431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Count of number of buffers outstanding with bridge */ 433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 lcml_nOpBuf; 434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts of number of input buffers sent to LCML */ 436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 lcml_nCntIp; 437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts of number of input buffers received from LCML */ 438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 lcml_nCntIpRes; 439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts of number of output buffers sent to LCML */ 440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 lcml_nCntOp; 441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts of number of output buffers received from LCML */ 442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 lcml_nCntOpReceived; 443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts of number of buffers sent to App */ 444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 lcml_nCntApp; 445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts of number of buffers received from App */ 446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 app_nBuf; 447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts of number of output buffers reclaimed from lcml */ 449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 num_Reclaimed_Op_Buff; 450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts of number of input buffers sent to lcml */ 451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 num_Sent_Ip_Buff; 452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts of number of output buffers sent to lcml */ 453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 num_Op_Issued; 454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Holds the value of dasf mode, 1: DASF mode or 0: File Mode */ 455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 dasfmode; 456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STRING* sDeviceString; 458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** This is LCML handle */ 460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pLcmlHandle; 461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Contains pointers to LCML Buffer Headers */ 463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722D_LCML_BUFHEADERTYPE *pLcmlBufHeader[2]; 464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bBufferIsAllocated; 465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Tells whether buffers on ports have been allocated */ 467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bPortDefsAllocated; 468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Tells whether component thread has started */ 469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bCompThreadStarted; 470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Marks the buffer data */ 471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PTR pMarkData; 472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Marks the buffer */ 473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_MARKTYPE *pMarkBuf; 474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Marks the target component */ 475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE hMarkTargetComponent; 476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Flag to track when input buffer's filled length is 0 */ 477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bBypassDSP; 478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Input port enable flag */ 479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ipPortEnableFlag; 480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Input port disble flag */ 481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int ipPortDisableFlag; 482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Pointer to port parameter structure */ 483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PORT_PARAM_TYPE* pPortParamType; 484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Pointer to port priority management structure */ 485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PRIORITYMGMTTYPE* pPriorityMgmt; 486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Contains the port related info of both the ports */ 487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722D_AUDIODEC_PORT_TYPE *pCompPort[NUM_OF_PORTS]; 488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Checks whether or not buffer were allocated by appliction */ 489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int bufAlloced; 490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Flag to check about execution of component thread */ 491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U16 bExitCompThrd; 492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Pointer to list of input buffers */ 493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722D_BUFFERLIST *pInputBufferList; 494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Pointer to list of output buffers */ 495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722D_BUFFERLIST *pOutputBufferList; 496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** it is used for component's create phase arguments */ 497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LCML_STRMATTR *strmAttr; 498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Contains the version information */ 499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nVersion; 500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** ACDN mode flag */ 502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 acdnmode; 503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Audio Stream ID */ 505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 streamID; 506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nOpBit; 508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int bLcmlHandleOpened; 509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nFillThisBufferCount; 510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts number of FillBufferDone calls*/ 511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nFillBufferDoneCount; 512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts number of EmptyThisBuffer calls*/ 513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nEmptyThisBufferCount; 514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Counts number of EmptyBufferDone calls*/ 515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nEmptyBufferDoneCount; 516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Checks if component Init Params have been initialized */ 517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bInitParamsInitialized; 518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722D_BUFFERLIST *pInputBufferListQueue; 519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722D_BUFFERLIST *pOutputBufferListQueue; 520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pInputBufHdrPending[MAX_NUM_OF_BUFS]; 521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nNumInputBufPending; 522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pOutputBufHdrPending[MAX_NUM_OF_BUFS]; 523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nNumOutputBufPending; 524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE *pOutBufHdrWhilePaused[MAX_NUM_OF_BUFS]; 525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nPendingOutPausedBufs; 526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bDisableCommandPending; 528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bDisableCommandParam; 529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nInvalidFrameCount; 530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 numPendingBuffers; 531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bNoIdleOnStop; 532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bDspStoppedWhileExecuting; 533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 bIdleCommandPending; 534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nOutStandingFillDones; 535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_t AlloBuf_mutex; 538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_t AlloBuf_threshold; 539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 AlloBuf_waitingsignal; 540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_t InLoaded_mutex; 542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_t InLoaded_threshold; 543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 InLoaded_readytoidle; 544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_mutex_t InIdle_mutex; 546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pthread_cond_t InIdle_threshold; 547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 InIdle_goingtoloaded; 548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_Event AlloBuf_event; 550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 AlloBuf_waitingsignal; 551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_Event InLoaded_event; 553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 InLoaded_readytoidle; 554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_Event InIdle_event; 556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 InIdle_goingtoloaded; 557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BOOL bLoadedCommandPending; 560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_COMPONENTROLETYPE *componentRole; 561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_VERSIONTYPE ComponentVersion; 562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STRING cComponentName; 563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Keep buffer timestamps **/ 565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S64 arrTimestamp[MAX_NUM_OF_BUFS]; 566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Keep buffer nTickCounts **/ 567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S64 arrTickCount[MAX_NUM_OF_BUFS]; 568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Index to arrTimestamp[], used for input buffer timestamps */ 569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 IpBufindex; 570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Index to arrTimestamp[], used for output buffer timestamps */ 571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 OpBufindex; 572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} G722DEC_COMPONENT_PRIVATE; 573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ComponentInit() function is called by OMX Core to initialize the component 579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * with default values of the component. Before calling this function OMX_Init 580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * must have been called. 581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *hComp This is component handle allocated by the OMX core. 583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre OMX_Init should be called by application. 585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post Component has initialzed with default values. 587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Successful Inirialization of the component\n 589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorInsufficientResources = Not enough memory 590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see G722Dec_StartCompThread() 592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp); 596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* WinCE Implicit Export Syntax */ 598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_EXPORT __declspec(dllexport) 599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_EXPORT OMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp); 600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722Dec_StartCompThread() starts the component thread. This is internal 605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * function of the component. 606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pHandle This is component handle allocated by the OMX core. 608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Successful Inirialization of the component\n 614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorInsufficientResources = Not enough memory 615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722Dec_StartCompThread(OMX_HANDLETYPE pHandle); 620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722DEC_Fill_LCMLInitParams() fills the LCML initialization structure. 624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pHandle This is component handle allocated by the OMX core. 626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param plcml_Init This structure is filled and sent to LCML. 628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Successful Inirialization of the LCML struct. 634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorInsufficientResources = Not enough memory 635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722DEC_Fill_LCMLInitParams(OMX_HANDLETYPE pHandle, 640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LCML_DSP *plcml_Init, OMX_U16 arr[]); 641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722DEC_GetBufferDirection() function determines whether it is input buffer or 645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * output buffer. 646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pBufHeader This is pointer to buffer header whose direction needs to 648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * be determined. 649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *eDir This is output argument which stores the direction of buffer. 651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Successful processing. 657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorBadParameter = In case of invalid buffer 658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722DEC_GetBufferDirection(OMX_BUFFERHEADERTYPE *pBufHeader, 663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DIRTYPE *eDir); 664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722DEC_LCML_Callback() function is callback which is called by LCML whenever 668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * there is an even generated for the component. 669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param event This is event that was generated. 671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param arg This has other needed arguments supplied by LCML like handles 673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * etc. 674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Successful processing. 680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorInsufficientResources = Not enough memory 681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722DEC_LCML_Callback (TUsnCodecEvent event,void * args [10]); 686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722DEC_HandleCommand() function handles the command sent by the application. 690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * All the state transitions, except from nothing to loaded state, of the 691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * component are done by this function. 692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponentPrivate This is component's private date structure. 694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Successful processing. 700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorInsufficientResources = Not enough memory 701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorHardware = Hardware error has occured lile LCML failed 702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * to do any said operartion. 703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 G722DEC_HandleCommand (G722DEC_COMPONENT_PRIVATE *pComponentPrivate); 708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722DEC_HandleDataBuf_FromApp() function handles the input and output buffers 712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * that come from the application. It is not direct function wich gets called by 713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * the application rather, it gets called eventually. 714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pBufHeader This is the buffer header that needs to be processed. 716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pComponentPrivate This is component's private date structure. 718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Successful processing. 724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorInsufficientResources = Not enough memory 725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorHardware = Hardware error has occured lile LCML failed 726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * to do any said operartion. 727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722DEC_HandleDataBuf_FromApp(OMX_BUFFERHEADERTYPE *pBufHeader, 732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722DEC_COMPONENT_PRIVATE *pComponentPrivate); 733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722DEC_GetLCMLHandle() function gets the LCML handle and interacts with LCML 737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * by using this LCML Handle. 738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pBufHeader This is the buffer header that needs to be processed. 740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pComponentPrivate This is component's private date structure. 742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_HANDLETYPE = Successful loading of LCML library. 748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorHardware = Hardware error has occured. 749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_HANDLETYPE G722DEC_GetLCMLHandle(G722DEC_COMPONENT_PRIVATE *pComponentPrivate); 754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722DEC_GetCorresponding_LCMLHeader() function gets the corresponding LCML 758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * header from the actual data buffer for required processing. 759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pBuffer This is the data buffer pointer. 761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param eDir This is direction of buffer. Input/Output. 763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *G722D_LCML_BUFHEADERTYPE This is pointer to LCML Buffer Header. 765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Successful Inirialization of the component\n 771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorHardware = Hardware error has occured. 772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722DEC_GetCorresponding_LCMLHeader(G722DEC_COMPONENT_PRIVATE *pComponentPrivate, 777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 *pBuffer, 778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_DIRTYPE eDir, 779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin G722D_LCML_BUFHEADERTYPE **ppLcmlHdr); 780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722DEC_FreeCompResources() function frees the component resources. 784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent This is the component handle. 786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Successful Inirialization of the component\n 792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorHardware = Hardware error has occured. 793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722DEC_FreeCompResources(OMX_HANDLETYPE pComponent); 798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722DEC_CleanupInitParams() function frees only the initialization time 802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * memories allocated. For example, it will not close pipes, it will not free the 803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * memory allocated to the buffers etc. But it does free the memory of buffers 804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * utilized by the LCML etc. It is basically subset of G722DEC_FreeResources() 805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * function. 806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent This is the component handle. 808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Successful Inirialization of the component\n 814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid G722DEC_CleanupInitParams(OMX_HANDLETYPE pComponent); 819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */ 821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G722DEC_ComponentThread() This is component thread of the component which keeps 823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * running or lsitening from the application unless component is deinitialized 824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * from by the application i.e. component is transitioned from Idle to Loaded 825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * state. 826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pHandle This is component handle allocated by the OMX core. 828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre None 830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post None 832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @return OMX_ErrorNone = Successful Inirialization of the component\n 834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ErrorInsufficientResources = Not enough memory 835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see None 837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */ 839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid* G722DEC_ComponentThread (void* pThreadData); 840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G722DECFill_LCMLInitParamsEx (OMX_HANDLETYPE pComponent); 842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid G722DEC_SetPending (G722DEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir, OMX_U32 lineNumber); 843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid G722DEC_ClearPending (G722DEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir, OMX_U32 lineNumber) ; 844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 G722DEC_IsPending (G722DEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir); 845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 G722DEC_IsValid (G722DEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U8 *pBuffer, OMX_DIRTYPE eDir) ; 846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid printEmmEvent (TUsnCodecEvent); 847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid* G722DEC_ComponentThread (void* pThreadData); 848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef OMX_G722_COMPONENTTHREAD__H 850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G722_COMPONENTTHREAD__H 851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define EXIT_COMPONENT_THRD 10 853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 856