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_G726Decoder.h
30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This is an header file for an audio G726 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\g726_dec\inc\
37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @rev 1.0
39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* --------------------------------------------------------------------------- */
41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef OMX_G726DEC_UTILS__H
44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G726DEC_UTILS__H
45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h>
47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "LCML_DspCodec.h"
48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE
50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <windows.h>
51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <oaf_osal.h>
52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <omx_core.h>
53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h>
54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h>
56b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifdef RESOURCE_MANAGER_ENABLED
57b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#include <ResourceManagerProxyAPI.h>
58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
59b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#endif
60b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef G726DEC_DEBUG           /* See all debug statement of the component */
63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef G726DEC_MEMDETAILS      /* See memory details of the component */
64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef G726DEC_BUFDETAILS      /* See buffers details of the component */
65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef G726DEC_STATEDETAILS    /* See all state transitions of the component */
66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define MAX_NUM_OF_BUFS 4 /* Max number of buffers used */
68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726D_NUM_INPUT_BUFFERS 1  /* Default number of input buffers */
69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726D_NUM_OUTPUT_BUFFERS 1 /* Default number of output buffers */
70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726D_INPUT_BUFFER_SIZE  20 /* Default size of input buffer */
71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726D_OUTPUT_BUFFER_SIZE 320 /* Default size of output buffer */
72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NUM_OF_PORTS 2 /* Number of ports of component */
73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define INVALID_SAMPLING_FREQ  51
74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define EXIT_COMPONENT_THRD  10
75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_MAJOR_VER 1 /* Majer version of the component */
76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_MINOR_VER 1 /* Minor version of the component */
77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_BUFHEADER_VERSION 0x0 /* Version of the buffer header struct */
78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NOT_USED 10 /* To specify that a particulat field is not used */
79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NORMAL_BUFFER 0 /* Marks a buffer as normal buffer i.e. not last buffer */
80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G726DEC_DEFAULT_SEGMENT (0) /* Default segment ID */
81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G726DEC_SN_TIMEOUT (-1) /* timeout, wait until ack is received */
82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G726DEC_SN_PRIORITY (10) /* Priority used by DSP */
83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_CPU 50 /* TBD, 50MHz for the moment */
84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* G726 frame size IN BYTES */
87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SPEECH16_FRAME_SIZE 20
88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define  SPEECH24_FRAME_SIZE 30
89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define  SPEECH32_FRAME_SIZE 40
90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define  SPEECH40_FRAME_SIZE 50
91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* G726 frame type */
93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SPEECH63_FRAME_TYPE 0    /* No tx frame */
94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SPEECH53_FRAME_TYPE 1    /* Speech Frame flag */
95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SID_FRAME_TYPE 2    /* SID frame flag */
96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NODATA_FRAME 3    /* Erasure frame flag */
97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE
99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define USN_DLL_NAME "\\windows\\usn.dll64P" /* Path of USN DLL */
100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_DLL_NAME "\\windows\\g726dec_sn.dll64P" /* Path of G726 SN DLL */
101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define USN_DLL_NAME "usn.dll64P" /* Path of USN DLL */
103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_DLL_NAME "g726dec_sn.dll64P" /* Path of G726 SN DLL */
104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define DONT_CARE 0 /* Value unused or ignored */
107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_BUFDETAILS
108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** Default timeout used to come out of blocking calls*/
109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726D_TIMEOUT 1 /* seconds */
110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE
112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DEBUG
114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_DPRINT   printf
115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_EPRINT   printf
116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_MEMPRINT   printf
117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_STATEPRINT   printf
118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_BUFPRINT   printf
119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_DPRINT
121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_EPRINT
122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_MEMPRINT
123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_STATEPRINT
124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_BUFPRINT
125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else /* for Linux */
128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef  G726DEC_DEBUG
130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_DPRINT(...)  fprintf(stdout, "%s %d::  ",__FUNCTION__, __LINE__); \
132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fprintf(stdout, __VA_ARGS__);                                       \
133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fprintf(stdout, "\n");
134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_BUFPRINT printf
136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_MEMPRINT printf
137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_STATEPRINT printf
138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_DPRINT(...)
141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef G726DEC_STATEDETAILS
143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_STATEPRINT printf
144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_STATEPRINT(...)
146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef G726DEC_BUFDETAILS
149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_BUFPRINT printf
150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_BUFPRINT(...)
152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef G726DEC_MEMDETAILS
155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_MEMPRINT(...)  fprintf(stdout, "%s %d::  ",__FUNCTION__, __LINE__); \
156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fprintf(stdout, __VA_ARGS__);                                       \
157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fprintf(stdout, "\n");
158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_MEMPRINT(...)
160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726DEC_EPRINT(...)  fprintf(stdout, "%s %s %d::  ", __FILE__,__FUNCTION__, __LINE__); \
165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fprintf(stdout, __VA_ARGS__);                                       \
166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    fprintf(stdout, "\n");
167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif /*for UNDER_CE*/
169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726D_OMX_MALLOC(_pStruct_, _sName_)                        \
171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    _pStruct_ = (_sName_*)malloc(sizeof(_sName_));                  \
172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(_pStruct_ == NULL){                                          \
173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("***********************************\n");            \
174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("%d :: Malloc Failed\n",__LINE__);                   \
175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("***********************************\n");            \
176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;                    \
177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;                                                  \
178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }                                                               \
179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    memset(_pStruct_,0,sizeof(_sName_));                            \
180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726DEC_MEMPRINT("%d :: Malloced = %p\n",__LINE__,_pStruct_);
181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726D_OMX_MALLOC_SIZE(_ptr_, _size_,_name_)             \
185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    _ptr_ = (_name_ *)malloc(_size_);                           \
186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(_ptr_ == NULL){                                          \
187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("***********************************\n");        \
188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("%d :: Malloc Failed\n",__LINE__);               \
189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("***********************************\n");        \
190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;                \
191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;                                              \
192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }                                                           \
193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    memset(_ptr_,0,_size_);                                     \
194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726DEC_MEMPRINT("%d :: Malloced = %p\n",__LINE__,_ptr_);
195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726D_OMX_ERROR_EXIT(_e_, _c_, _s_)                             \
197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    _e_ = _c_;                                                          \
198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("\n**************** OMX ERROR ************************\n");  \
199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("%d : Error Name: %s : Error Num = %x",__LINE__, _s_, _e_);  \
200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("\n**************** OMX ERROR ************************\n");  \
201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    goto EXIT;
202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726D_OMX_CONF_CHECK_CMD(_ptr1, _ptr2, _ptr3)   \
205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    {                                                   \
206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        if(!_ptr1 || !_ptr2 || !_ptr3){                 \
207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            eError = OMX_ErrorBadParameter;             \
208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin            goto EXIT;                                  \
209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        }                                               \
210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G726D_OMX_FREE(ptr)                                             \
213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(NULL != ptr) {                                                   \
214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        G726DEC_MEMPRINT("%d :: Freeing Address = %p\n",__LINE__,ptr);  \
215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        free(ptr);                                                      \
216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        ptr = NULL;                                                     \
217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_CONF_INIT_STRUCT(_s_, _name_)       \
220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    memset((_s_), 0x0, sizeof(_name_));         \
221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nSize = sizeof(_name_);              \
222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMajor = 0x1;      \
223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMinor = 0x1;      \
224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nRevision = 0x0;          \
225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nStep = 0x0
226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** OMX_G726DEC_INDEXAUDIOTYPE  Defines the custom configuration settings
230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *                              for the component
231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @param  OMX_IndexCustomG726DecModeDasfConfig      Sets the DASF mode
233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*  ==================================================================== */
236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum OMX_G726DEC_INDEXAUDIOTYPE {
237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*OMX_IndexCustomG726DecModeDasfConfig = OMX_IndexIndexVendorStartUnused + 1,*/
238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomG726DecModeDasfConfig = 0xFF000001,
239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomG726DecHeaderInfoConfig,
240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomG726DecStreamIDConfig,
241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomG726DecDataPath
242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}OMX_G726DEC_INDEXAUDIOTYPE;
243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ============================================================================== * */
246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G726D_COMP_PORT_TYPE  describes the input and output port of indices of the
247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * component.
248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param  G726D_INPUT_PORT  Input port index
250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param  G726D_OUTPUT_PORT Output port index
252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ============================================================================ * */
254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum G726D_COMP_PORT_TYPE {
255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726D_INPUT_PORT = 0,
256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726D_OUTPUT_PORT
257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G726D_COMP_PORT_TYPE;
258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G726DEC_ParamStruct: This struct is passed with input buffers that
261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * are sent to DSP.
262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */
264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct {
265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Set to 1 if buffer is last buffer */
266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long usLastFrame;
267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G726DEC_FrameStruct;
268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G726DEC_UAlgInBufParamStruct: This struct is passed with input buffers that
272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * are sent to DSP.
273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */
275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct {
276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Set to 1 if buffer is last buffer */
277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned short bLastBuffer;
278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G726DEC_UAlgInBufParamStruct;
279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G726D_USN_AudioCodecParams: This contains the information which does to Codec
283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * on DSP
284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * are sent to DSP.
285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */
287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct USN_AudioCodecParams{
288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Specifies the sample frequency */
289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long ulSamplingFreq;
290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Specifies the UUID */
291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long unUUID;
292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Specifies the audio format */
293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned short unAudioFormat;
294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G726D_USN_AudioCodecParams;
295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G726DEC_UAlgOutBufParamStruct: This is passed with output buffer to DSP.
298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */
300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct {
301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Number of frames in a buffer */
302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long ulFrameCount;
303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G726DEC_UAlgOutBufParamStruct;
304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G726D_LCML_BUFHEADERTYPE: This is LCML buffer header which is sent to LCML
307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * for both input and output buffers.
308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */
310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct G726D_LCML_BUFHEADERTYPE {
311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Direction whether input or output buffer */
312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_DIRTYPE eDir;
313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Pointer to OMX Buffer Header */
314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE *pBufHdr;
315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Other parameters, may be useful for enhancements */
316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    void *pOtherParams[10];
317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Input Parameter Information structure */
318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726DEC_UAlgInBufParamStruct *pFrameParam;
319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G726D_LCML_BUFHEADERTYPE;
320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G726D_AUDIODEC_PORT_TYPE: This contains component port information.
323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_AUDIO_PARAM_PORTFORMATTYPE
325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */
327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct AUDIODEC_PORT_TYPE {
328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Used in tunneling, this is handle of tunneled component */
329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE hTunnelComponent;
330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Port which has to be tunneled */
331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nTunnelPort;
332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Buffer Supplier Information */
333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERSUPPLIERTYPE eSupplierSetting;
334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Number of buffers */
335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 nBufferCnt;
336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Port format information */
337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_PORTFORMATTYPE* pPortFormat;
338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} G726D_AUDIODEC_PORT_TYPE;
339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** _G726D_BUFFERLIST: This contains information about a buffer's owner whether
343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * it is application or component, number of buffers owned etc.
344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_BUFFERHEADERTYPE
346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */
348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstruct _G726D_BUFFERLIST{
349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Array of pointer to OMX buffer headers */
350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE *pBufHdr[MAX_NUM_OF_BUFS];
351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Array that tells about owner of each buffer */
352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bufferOwner[MAX_NUM_OF_BUFS];
353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bBufferPending[MAX_NUM_OF_BUFS];
354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Number of buffers  */
355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 numBuffers;
356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct _G726D_BUFFERLIST G726D_BUFFERLIST;
359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE
361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef _OMX_EVENT_
362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define _OMX_EVENT_
363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct OMX_Event {
364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    HANDLE event;
365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} OMX_Event;
366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_CreateEvent(OMX_Event *event);
368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_SignalEvent(OMX_Event *event);
369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_WaitForEvent(OMX_Event *event);
370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OMX_DestroyEvent(OMX_Event *event);
371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G726DEC_COMPONENT_PRIVATE: This is the major and main structure of the
375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * component which contains all type of information of buffers, ports etc
376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * contained in the component.
377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_BUFFERHEADERTYPE
379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_AUDIO_PARAM_PORTFORMATTYPE
380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_PARAM_PORTDEFINITIONTYPE
381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see G726D_LCML_BUFHEADERTYPE
382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_PORT_PARAM_TYPE
383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see OMX_PRIORITYMGMTTYPE
384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see G726D_AUDIODEC_PORT_TYPE
385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see G726D_BUFFERLIST
386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see G726D_AUDIODEC_PORT_TYPE
387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see LCML_STRMATTR
388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @see
389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== */
391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct G726DEC_COMPONENT_PRIVATE
392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Handle for use with async callbacks */
394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_CALLBACKTYPE cbInfo;
395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Component port information */
397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PORT_PARAM_TYPE *sPortParam;
398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Input port information */
400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_PORTFORMATTYPE sInPortFormat;
401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Output port information */
403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_PORTFORMATTYPE sOutPortFormat;
404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Buffer owner information */
406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bIsBufferOwned[NUM_OF_PORTS];
407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Number of input buffers at runtime */
409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nRuntimeInputBuffers;
410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Number of output buffers at runtime */
412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nRuntimeOutputBuffers;
413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Audio codec parameters structure */
415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726D_USN_AudioCodecParams *pParams;
416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** This will contain info like how many buffers
418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        are there for input/output ports, their size etc, but not
419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        BUFFERHEADERTYPE POINTERS. */
420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PARAM_PORTDEFINITIONTYPE* pPortDef[NUM_OF_PORTS];
421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Contains information that come from application */
423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_G726TYPE* G726Params;
424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Contains information that come from application */
426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_PCMMODETYPE* PcmParams;
427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** This is component handle */
429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_COMPONENTTYPE* pHandle;
430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Current state of this component */
432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STATETYPE curState;
433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The component thread handle */
435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_t ComponentThread;
436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The pipes for sending buffers to the thread */
438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int dataPipe[2];
439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The pipes for sending buffers to the thread */
441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int cmdPipe[2];
442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The pipes for sending command data to the thread */
444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int cmdDataPipe[2];
445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The pipes for sending buffers to the thread */
447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int lcml_Pipe[2];
448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Set to indicate component is stopping */
450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bIsEOFSent;
451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Count of number of buffers outstanding with bridge */
453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 lcml_nIpBuf;
454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Count of number of buffers outstanding with bridge */
456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 lcml_nOpBuf;
457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts of number of input buffers sent to LCML */
459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 lcml_nCntIp;
460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts of number of input buffers received from LCML */
462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 lcml_nCntIpRes;
463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts of number of output buffers sent to LCML */
465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 lcml_nCntOp;
466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts of number of output buffers received from LCML */
468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 lcml_nCntOpReceived;
469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts of number of buffers sent to App  */
471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 lcml_nCntApp;
472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts of number of buffers received from App  */
474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 app_nBuf;
475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts of number of output buffers reclaimed from lcml  */
477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 num_Reclaimed_Op_Buff;
478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts of number of input buffers sent to lcml  */
480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 num_Sent_Ip_Buff;
481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts of number of output buffers sent to lcml  */
483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 num_Op_Issued;
484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Holds the value of dasf mode, 1: DASF mode or 0: File Mode  */
486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 dasfmode;
487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* contains the value indicating if linear or rtp is used */
489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 packingType;
490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* contains the string for the hardware device */
492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STRING* sDeviceString;
493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** This is LCML handle  */
495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE pLcmlHandle;
496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Contains pointers to LCML Buffer Headers */
498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726D_LCML_BUFHEADERTYPE *pLcmlBufHeader[2];
499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*contains a flag for if the buffers are allocated */
501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bBufferIsAllocated;
502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Tells whether buffers on ports have been allocated */
504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bPortDefsAllocated;
505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Tells whether component thread has started */
507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bCompThreadStarted;
508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Marks the buffer data  */
510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PTR pMarkData;
511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Marks the buffer */
513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_MARKTYPE *pMarkBuf;
514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Marks the target component */
516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE hMarkTargetComponent;
517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag to track when input buffer's filled length is 0 */
519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bBypassDSP;
520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Input port enable flag */
522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int ipPortEnableFlag;
523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Input port disble flag */
525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int ipPortDisableFlag;
526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Pointer to port parameter structure */
528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PORT_PARAM_TYPE* pPortParamType;
529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Pointer to port priority management structure */
531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRIORITYMGMTTYPE* pPriorityMgmt;
532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Contains the port related info of both the ports */
534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726D_AUDIODEC_PORT_TYPE *pCompPort[NUM_OF_PORTS];
535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Checks whether or not buffer were allocated by appliction */
537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int bufAlloced;
538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag to check about execution of component thread */
540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U16 bExitCompThrd;
541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Pointer to list of input buffers */
543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726D_BUFFERLIST *pInputBufferList;
544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Pointer to list of output buffers */
546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726D_BUFFERLIST *pOutputBufferList;
547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** it is used for component's create phase arguments */
549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    LCML_STRMATTR  *strmAttr;
550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Contains the version information */
552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nVersion;
553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** ACDN mode flag */
555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 acdnmode;
556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Audio Stream ID */
558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 streamID;
559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* flag if the lcml handle is opened */
561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int bLcmlHandleOpened;
562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* counts the calls to FillThisBuffer() */
564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nFillThisBufferCount;
565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts number of FillBufferDone calls*/
567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nFillBufferDoneCount;
568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts number of EmptyThisBuffer calls*/
570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nEmptyThisBufferCount;
571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Counts number of EmptyBufferDone calls*/
573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nEmptyBufferDoneCount;
574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Checks if component Init Params have been initialized */
576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bInitParamsInitialized;
577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* list of input buffers */
579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726D_BUFFERLIST *pInputBufferListQueue;
580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* list of output buffers */
582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G726D_BUFFERLIST *pOutputBufferListQueue;
583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* array of pending input buffers headers */
585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE *pInputBufHdrPending[MAX_NUM_OF_BUFS];
586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* number of pending input buffers */
588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nNumInputBufPending;
589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* array of pending output buffers */
591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE *pOutputBufHdrPending[MAX_NUM_OF_BUFS];
592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* number of pending output buffers */
594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nNumOutputBufPending;
595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* array of buffers received while paused */
597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE *pOutBufHdrWhilePaused[MAX_NUM_OF_BUFS];
598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* number of buffers received while paused */
600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nPendingOutPausedBufs;
601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* flag if disable port command is pending */
603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bDisableCommandPending;
604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* params for disable port command */
606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bDisableCommandParam;
607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* number of invalid frames received */
609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nInvalidFrameCount;
610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* number of pending buffers */
612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 numPendingBuffers;
613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* flag for if component should go to idle state when stopped */
615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bNoIdleOnStop;
616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* flag for if dsp is stopped while component is in executing state */
618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bDspStoppedWhileExecuting;
619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* flag for if transition to idle state is pending */
621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bIdleCommandPending;
622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* number of FillThisBuffer calls pending */
624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nOutStandingFillDones;
625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* coutns the number of unhandled FillThisBuffer() calls */
627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 nUnhandledFillThisBuffers;
628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* coutns the number of unhandled EmptyThisBuffer() calls */
630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 nUnhandledEmptyThisBuffers;
631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* flag if the flush command is pending in Output Port */
633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL bFlushOutputPortCommandPending;
634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* flag if the flush command is pending in Output Port */
636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL bFlushInputPortCommandPending;
637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE
639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* mutex for allocating buffers */
640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_mutex_t AlloBuf_mutex;
641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_cond_t AlloBuf_threshold;
642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 AlloBuf_waitingsignal;
643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*mutex for transition from loaded state to idle state */
645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_mutex_t InLoaded_mutex;
646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_cond_t InLoaded_threshold;
647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 InLoaded_readytoidle;
648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* mutex for transition from idle state to loaded state */
650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_mutex_t InIdle_mutex;
651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_cond_t InIdle_threshold;
652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 InIdle_goingtoloaded;
653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_Event AlloBuf_event;
655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 AlloBuf_waitingsignal;
656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_Event InLoaded_event;
658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 InLoaded_readytoidle;
659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_Event InIdle_event;
661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 InIdle_goingtoloaded;
662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* flag if transition to loaded is pending */
665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL bLoadedCommandPending;
666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* contains the OMX defined role of the component */
668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* not used in non-standard components */
669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PARAM_COMPONENTROLETYPE *componentRole;
670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* describes the OMX_IL version inluding major, minor */
672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VERSIONTYPE ComponentVersion;
673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* holds the name of the component */
675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STRING cComponentName;
676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Keep buffer timestamps **/
678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S64 arrTimestamp[MAX_NUM_OF_BUFS];
679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Keep buffer tick count **/
681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S64 arrTickCount[MAX_NUM_OF_BUFS];
682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Index to arrBufIndex[], used for input buffer timestamps */
684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 IpBufindex;
685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Index to arrBufIndex[], used for output buffer timestamps */
687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 OpBufindex;
688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* flag if the component is preempted for resource or policy reasons */
690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL bPreempted;
691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
692b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    /** Pointer to RM callback **/
693b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifdef RESOURCE_MANAGER_ENABLED
694b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    RMPROXY_CALLBACKTYPE rmproxyCallback;
695b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#endif
696b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} G726DEC_COMPONENT_PRIVATE;
699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_ComponentInit() function is called by OMX Core to initialize the component
705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * with default values of the component. Before calling this function OMX_Init
706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * must have been called.
707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *hComp This is component handle allocated by the OMX core.
709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          OMX_Init should be called by application.
711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         Component has initialzed with default values.
713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_ErrorNone = Successful Inirialization of the component\n
715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorInsufficientResources = Not enough memory
716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see          G726Dec_StartCompThread()
718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE
721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp);
722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*  WinCE Implicit Export Syntax */
724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_EXPORT __declspec(dllexport)
725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_EXPORT OMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp);
726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G726Dec_StartCompThread() starts the component thread. This is internal
731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * function of the component.
732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pHandle This is component handle allocated by the OMX core.
734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_ErrorNone = Successful Inirialization of the component\n
740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorInsufficientResources = Not enough memory
741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G726Dec_StartCompThread(OMX_HANDLETYPE pHandle);
746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G726DEC_Fill_LCMLInitParams() fills the LCML initialization structure.
750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pHandle This is component handle allocated by the OMX core.
752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param plcml_Init This structure is filled and sent to LCML.
754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_ErrorNone = Successful Inirialization of the LCML struct.
760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorInsufficientResources = Not enough memory
761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G726DEC_Fill_LCMLInitParams(OMX_HANDLETYPE pHandle,
766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                          LCML_DSP *plcml_Init, OMX_U16 arr[]);
767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G726DEC_GetBufferDirection() function determines whether it is input buffer or
771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * output buffer.
772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pBufHeader This is pointer to buffer header whose direction needs to
774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *                    be determined.
775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *eDir  This is output argument which stores the direction of buffer.
777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_ErrorNone = Successful processing.
783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorBadParameter = In case of invalid buffer
784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G726DEC_GetBufferDirection(OMX_BUFFERHEADERTYPE *pBufHeader,
789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                         OMX_DIRTYPE *eDir);
790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G726DEC_LCML_Callback() function is callback which is called by LCML whenever
794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * there is an even generated for the component.
795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param event  This is event that was generated.
797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param arg    This has other needed arguments supplied by LCML like handles
799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               etc.
800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_ErrorNone = Successful processing.
806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorInsufficientResources = Not enough memory
807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G726DEC_LCML_Callback (TUsnCodecEvent event,void * args [10]);
812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G726DEC_HandleCommand() function handles the command sent by the application.
816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * All the state transitions, except from nothing to loaded state, of the
817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * component are done by this function.
818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponentPrivate  This is component's private date structure.
820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_ErrorNone = Successful processing.
826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorInsufficientResources = Not enough memory
827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorHardware = Hardware error has occured lile LCML failed
828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               to do any said operartion.
829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 G726DEC_HandleCommand (G726DEC_COMPONENT_PRIVATE *pComponentPrivate);
834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G726DEC_HandleDataBuf_FromApp() function handles the input and output buffers
838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * that come from the application. It is not direct function wich gets called by
839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * the application rather, it gets called eventually.
840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pBufHeader This is the buffer header that needs to be processed.
842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pComponentPrivate  This is component's private date structure.
844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_ErrorNone = Successful processing.
850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorInsufficientResources = Not enough memory
851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorHardware = Hardware error has occured lile LCML failed
852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               to do any said operartion.
853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G726DEC_HandleDataBuf_FromApp(OMX_BUFFERHEADERTYPE *pBufHeader,
858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                            G726DEC_COMPONENT_PRIVATE *pComponentPrivate);
859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G726DEC_GetLCMLHandle() function gets the LCML handle and interacts with LCML
865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * by using this LCML Handle.
866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pBufHeader This is the buffer header that needs to be processed.
868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pComponentPrivate  This is component's private date structure.
870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_HANDLETYPE = Successful loading of LCML library.
876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorHardware = Hardware error has occured.
877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_HANDLETYPE G726DEC_GetLCMLHandle(G726DEC_COMPONENT_PRIVATE *pComponentPrivate);
882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G726DEC_GetCorresponding_LCMLHeader() function gets the corresponding LCML
886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * header from the actual data buffer for required processing.
887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *pBuffer This is the data buffer pointer.
889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param eDir   This is direction of buffer. Input/Output.
891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param *G726D_LCML_BUFHEADERTYPE  This is pointer to LCML Buffer Header.
893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_ErrorNone = Successful Inirialization of the component\n
899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorHardware = Hardware error has occured.
900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G726DEC_GetCorresponding_LCMLHeader(G726DEC_COMPONENT_PRIVATE *pComponentPrivate,
905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                                  OMX_U8 *pBuffer,
906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                                  OMX_DIRTYPE eDir,
907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                                  G726D_LCML_BUFHEADERTYPE **ppLcmlHdr);
908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G726DEC_FreeCompResources() function frees the component resources.
912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent This is the component handle.
914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_ErrorNone = Successful Inirialization of the component\n
920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorHardware = Hardware error has occured.
921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G726DEC_FreeCompResources(OMX_HANDLETYPE pComponent);
926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G726DEC_CleanupInitParams() function frees only the initialization time
930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * memories allocated. For example, it will not close pipes, it will not free the
931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * memory allocated to the buffers etc. But it does free the memory of buffers
932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * utilized by the LCML etc. It is basically subset of G726DEC_FreeResources()
933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * function.
934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pComponent This is the component handle.
936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_ErrorNone = Successful Inirialization of the component\n
942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid G726DEC_CleanupInitParams(OMX_HANDLETYPE pComponent);
947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================= * */
949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G726DEC_ComponentThread() This is component thread of the component which keeps
951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * running or lsitening from the application unless component is deinitialized
952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * from by the application i.e. component is transitioned from Idle to Loaded
953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * state.
954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @param pHandle This is component handle allocated by the OMX core.
956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @pre          None
958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @post         None
960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @return      OMX_ErrorNone = Successful Inirialization of the component\n
962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *               OMX_ErrorInsufficientResources = Not enough memory
963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @see         None
965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ * */
967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid* G726DEC_ComponentThread (void* pThreadData);
968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G726DECFill_LCMLInitParamsEx(OMX_HANDLETYPE pComponent);
970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid G726DEC_SetPending(G726DEC_COMPONENT_PRIVATE *pComponentPrivate,
971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir, OMX_U32 lineNumber);
972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid G726DEC_ClearPending(G726DEC_COMPONENT_PRIVATE *pComponentPrivate,
973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir, OMX_U32 lineNumber) ;
974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 G726DEC_IsPending(G726DEC_COMPONENT_PRIVATE *pComponentPrivate,
975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                          OMX_BUFFERHEADERTYPE *pBufHdr, OMX_DIRTYPE eDir);
976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U32 G726DEC_IsValid(G726DEC_COMPONENT_PRIVATE *pComponentPrivate,
977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                        OMX_U8 *pBuffer, OMX_DIRTYPE eDir) ;
978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE OMX_DmmMap(DSP_HPROCESSOR ProcHandle, int size, void* pArmPtr, DMM_BUFFER_OBJ* pDmmBuf);
980b65f253fdc60f6208a54911bee793d225f23cdf8James DongOMX_ERRORTYPE OMX_DmmUnMap(DSP_HPROCESSOR ProcHandle, void* pMapPtr, void* pResPtr);
981b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
982b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifdef RESOURCE_MANAGER_ENABLED
983b65f253fdc60f6208a54911bee793d225f23cdf8James Dong/***********************************
984b65f253fdc60f6208a54911bee793d225f23cdf8James Dong *  Callback to the RM                                       *
985b65f253fdc60f6208a54911bee793d225f23cdf8James Dong ***********************************/
986b65f253fdc60f6208a54911bee793d225f23cdf8James Dongvoid G726DEC_ResourceManagerCallback(RMPROXY_COMMANDDATATYPE cbData);
987b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#endif
988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
990