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