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_G711Decoder.h
30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This is an header file for an audio PCM decoder that is fully
32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * compliant with the OMX Audio specification.
33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This the file that the application that uses OMX would include
34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * in its code.
35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @path $(CSLPATH)\
37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @rev 0.1
39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* --------------------------------------------------------------------------- */
41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef OMX_G711DECODER_H
43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G711DECODER_H
44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "LCML_DspCodec.h"
46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h>
47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <pthread.h>
48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE
50b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
51b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifdef DSP_RENDERING_ON
52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <AudioManagerAPI.h>
53b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#endif
54b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
55b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifdef RESOURCE_MANAGER_ENABLED
56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <ResourceManagerProxyAPI.h>
57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
59b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#endif
60b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
61b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    EXTRA_BUFFBYTES                Num of Extra Bytes to be allocated
65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define EXTRA_BUFFBYTES (256)
68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    G711D_TIMEOUT   Default timeout used to come out of blocking calls
72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711D_TIMEOUT (1000) /* millisecs */
75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    NUM_G711DEC_INPUT_BUFFERS              Number of Input Buffers
79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NUM_G711DEC_INPUT_BUFFERS 1
82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    NUM_G711DEC_OUTPUT_BUFFERS              Number of Output Buffers
86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NUM_G711DEC_OUTPUT_BUFFERS 1
89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    NUM_G711DEC_OUTPUT_BUFFERS_DASF         Number of Output Buffers
93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *                                                  on DASF mode
94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NUM_G711DEC_OUTPUT_BUFFERS_DASF 2
97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    OUTPUT_G711DEC_BUFFER_SIZE           Standart Output Buffer Size
101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OUTPUT_G711DEC_BUFFER_SIZE 160
104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    INPUT_G711DEC_BUFFER_SIZE             Standart Input Buffer Size
108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define INPUT_G711DEC_BUFFER_SIZE 80
112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */
113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    RTP_Framesize                          Size in Bytes of determined
115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *                                               frame. Not change it
116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */
118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define RTP_Framesize 80
119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */
120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    STD_GSMFRDEC_BUF_SIZE                  Standart Input Buffer Size
122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */
124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define STD_G711DEC_BUF_SIZE 80
125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    STREAM_COUNT                         Stream Count value for
129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *                                              LCML init.
130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define STREAM_COUNT 2
133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    INPUT_STREAM_ID                      Input Stream ID
137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define INPUT_STREAM_ID 0
140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    MAX_NUM_OF_BUFS                      Max Num of Bufs Allowed
144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define MAX_NUM_OF_BUFS 10
147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define G711DEC_DEBUG
149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin  #define G711DEC_MEMCHECK*/
150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef G711DEC_DEBUG
151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef G711DEC_MEMCHECK
152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#if 0
154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define FillBufferDone(handle, appPrivate, buffer) FillBufferDone(handle, appPrivate, buffer); \
155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("FillBufferDone :: line %d, buffer %p\n", __LINE__, buffer)
156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#if 0
158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define EmptyBufferDone(handle, appPrivate, buffer) EmptyBufferDone(handle, appPrivate, buffer); \
159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    printf("EmptyBufferDone :: line %d, buffer %p\n", __LINE__, buffer)
160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE
162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef  G711DEC_DEBUG
163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_DPRINT(...)    fprintf(stderr,__VA_ARGS__)
164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_DPRINT(...)
166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef  G711DEC_MEMCHECK
169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_MEMPRINT(...)    fprintf(stderr,__VA_ARGS__)
170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_MEMPRINT(...)
172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef  G711DEC_DEBUG_MCP
176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_MCP_DPRINT(...)    fprintf(stderr,__VA_ARGS__)
177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_MCP_DPRINT(...)
179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else /*UNDER_CE*/
181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef  G711DEC_DEBUG
182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_DPRINT(STR, ARG...) printf()
183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef G711DEC_MEMCHECK
187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_MEMPRINT(STR, ARG...) printf()
188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE
191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DEBUG
193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_DPRINT   printf
194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_MEMPRINT   printf
195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_DPRINT
198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711DEC_MEMPRINT
199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif  //UNDER_CE
202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    WMADEC_MEMDEBUG   Enable memory leaks debuf info
208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#undef G711DEC_MEMDEBUG
211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def  CACHE_ALIGNMENT                           Buffer Cache Alignment
215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define CACHE_ALIGNMENT 128
218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * @def    NUM_OF_PORTS                       Number of Comunication Port
222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NUM_OF_PORTS 2
225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  M A C R O S FOR MALLOC and MEMORY FREE and CLOSING PIPES
230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_NBCONF_INIT_STRUCT(_s_, _name_)     \
234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    memset((_s_), 0x0, sizeof(_name_));         \
235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nSize = sizeof(_name_);              \
236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMajor = 0x1;      \
237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMinor = 0x0;      \
238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nRevision = 0x0;          \
239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nStep = 0x0
240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711D_OMX_MALLOC(_pStruct_, _sName_)                        \
242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    _pStruct_ = (_sName_*)newmalloc(sizeof(_sName_));               \
243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(_pStruct_ == NULL){                                          \
244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("***********************************\n");            \
245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("%d :: Malloc Failed\n",__LINE__);                   \
246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("***********************************\n");            \
247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;                    \
248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;                                                  \
249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }                                                               \
250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    memset(_pStruct_,0,sizeof(_sName_));                            \
251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_MEMPRINT("%d :: Malloced = %p\n",__LINE__,_pStruct_);
252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define G711D_OMX_MALLOC_SIZE(_ptr_, _size_,_name_)             \
254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    _ptr_ = (_name_ *)newmalloc(_size_);                        \
255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(_ptr_ == NULL){                                          \
256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("***********************************\n");        \
257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("%d :: Malloc Failed\n",__LINE__);               \
258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("***********************************\n");        \
259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;                \
260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;                                              \
261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }                                                           \
262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    memset(_ptr_,0,_size_);                                     \
263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_MEMPRINT("%d :: Malloced = %p\n",__LINE__,_ptr_);
264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_G711DECMEMFREE_STRUCT(_pStruct_)                    \
266eaaadaf5ebb5e352e2ed4a12714f5d2363da0dcdJames Dong    if(_pStruct_ != NULL){                                      \
267b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    G711DEC_MEMPRINT("%d :: [FREE] %p\n",__LINE__,_pStruct_);   \
268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        newfree(_pStruct_);                                     \
269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        _pStruct_ = NULL;                                       \
270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_NBCLOSE_PIPE(_pStruct_,err)                         \
276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_DPRINT("%d :: CLOSING PIPE \n",__LINE__);           \
277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    err = close (_pStruct_);                                    \
278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(0 != err && OMX_ErrorNone == eError){                    \
279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        eError = OMX_ErrorHardware;                             \
280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        printf("%d :: Error while closing pipe\n",__LINE__);    \
281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;                                              \
282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G711DEC_COMP_PORT_TYPE  Port Type
286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @param  G711DEC_INPUT_PORT                   Port Type Input
288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @param  G711DEC_OUTPUT_PORT                  Port Type Output
290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*  ==================================================================== */
293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum G711DEC_COMP_PORT_TYPE {
294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_INPUT_PORT = 0,
295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_OUTPUT_PORT
296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G711DEC_COMP_PORT_TYPE;
297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G711DEC_StreamType  StreamType
300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @param  G711DEC_DMM                  Stream Type DMM
302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @param  G711DEC_INSTRM               Stream Type Input
304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @param  G711DEC_OUTSTRM             Stream Type Output
306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*  ==================================================================== */
308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinenum G711DEC_StreamType
309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    {
310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        G711DEC_DMM,
311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        G711DEC_INSTRM,
312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        G711DEC_OUTSTRM
313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    };
314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ======================================================================= */
316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** G711DEC_BUFFER_Dir  Direction of the Buffer
317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @param  G711DEC_DIRECTION_INPUT              Direction Input
319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *  @param  G711DEC_DIRECTION_INPUT              Direction Output
321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*  ==================================================================== */
323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum {
324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_DIRECTION_INPUT,
325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_DIRECTION_OUTPUT
326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G711DEC_BUFFER_Dir;
327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* =================================================================================== */
330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================== */
334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct G711DEC_FTYPES{
335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16     FrameSizeType;
336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16     NmuNLvl;
337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16     NoiseLp;
338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16     dBmNoise;
339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16     plc;
340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G711DEC_FTYPES;
341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* =================================================================================== */
342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Socket node input parameters.
344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================== */
346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct G711DEC_AudioCodecParams
347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long iSamplingRate;
349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long iStrmId;
350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned short iAudioFormat;
351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    // unsigned short iFrameFormat;
352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G711DEC_AudioCodecParams;
353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* =================================================================================== */
355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Socket node alg parameters..
357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================== */
359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct {
360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long usEndOfFile;
361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long usFrameLost;
362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}G711DEC_UAlgInBufParamStruct;
363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */
365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Socket node alg parameters..
367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ========================================================================== */
369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct G711DEC_FrameStruct{
370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long   usLastFrame;
371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long   usFrameLost;
372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long   frameType; /* 0: voice frame (80 bytes), 1: SID frame (22 bytes), 2: No Data (0 bytes), 3: Frame lost */
373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} G711DEC_FrameStruct;
374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct G711DEC_ParamStruct{
376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    unsigned long int usNbFrames;
377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_FrameStruct *pParamElem;
378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} G711DEC_ParamStruct;
379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* =================================================================================== */
381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * LCML_G711DEC_BUFHEADERTYPE
383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================== */
385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct LCML_G711DEC_BUFHEADERTYPE {
386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_BUFFER_Dir eDir;
387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* buffer;
388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_UAlgInBufParamStruct *pIpParam;
389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_FrameStruct *pFrameParam;
390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_ParamStruct *pBufferParam;
391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    DMM_BUFFER_OBJ* pDmmBuf;
392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}LCML_G711DEC_BUFHEADERTYPE;
393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE
395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp);
397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* =================================================================================== */
400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *   OMX_EXPORT                                           WinCE Implicit Export Syntax
402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================== */
404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_EXPORT __declspec(dllexport)
405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_EXPORT OMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComp);
407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G711DEC_StartComponentThread(OMX_HANDLETYPE pHandle);
411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G711DEC_StopComponentThread(OMX_HANDLETYPE pHandle);
412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE G711DEC_FreeCompResources(OMX_HANDLETYPE pComponent);
413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct _G711DEC_BUFFERLIST G711DEC_BUFFERLIST;
415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* =================================================================================== */
417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Structure for buffer list
419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================== */
421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstruct _G711DEC_BUFFERLIST{
422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE *pBufHdr[MAX_NUM_OF_BUFS]; /* records buffer header send by client */
423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bufferOwner[MAX_NUM_OF_BUFS];
424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bBufferPending[MAX_NUM_OF_BUFS];
425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 numBuffers;
426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* =================================================================================== */
429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * G711ENC_PORT_TYPE Structure for PortFormat details
431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* =================================================================================== */
433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct G711DEC_PORT_TYPE {
434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE hTunnelComponent;
435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nTunnelPort;
436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERSUPPLIERTYPE eSupplierSetting;
437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 nBufferCnt;
438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_PORTFORMATTYPE* pPortFormat;
439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} G711DEC_PORT_TYPE;
440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE OMX_DmmMap(DSP_HPROCESSOR ProcHandle, int size,
442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                         void* pArmPtr, DMM_BUFFER_OBJ* pDmmBuf);
443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE OMX_DmmUnMap(DSP_HPROCESSOR ProcHandle, void* pMapPtr,
444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                           void* pResPtr);
445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* =================================================================================== */
446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Component private data
448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================== */
450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct G711DEC_COMPONENT_PRIVATE
451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE
453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* pBufHeader[NUM_OF_PORTS];
454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Structure of callback pointers */
457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_CALLBACKTYPE cbInfo;
458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_PORT_TYPE *pCompPort[NUM_OF_PORTS];
460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Handle for use with async callbacks */
462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PORT_PARAM_TYPE sPortParam;
463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Input port parameters */
465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_PORTFORMATTYPE sInPortFormat;
466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Output port parameters */
468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_PORTFORMATTYPE sOutPortFormat;
469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** This will contain info like how many buffers
471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        are there for input/output ports, their size etc, but not
472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        BUFFERHEADERTYPE POINTERS. */
473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PARAM_PORTDEFINITIONTYPE* pPortDef[NUM_OF_PORTS];
474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** G711 Component Parameters */
476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_AUDIO_PARAM_PCMMODETYPE* g711Params[NUM_OF_PORTS];
477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** This is component handle */
479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_COMPONENTTYPE* pHandle;
480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Current state of this component */
482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STATETYPE curState;
483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The component thread handle */
485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_t ComponentThread;
486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The pipes for sending buffers to the thread */
488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int dataPipe[2];
489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The pipes for sending buffers to the thread */
491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int cmdPipe[2];
492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The pipes for sending buffers to the thread */
494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int cmdDataPipe[2];
495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Set to indicate component is stopping */
497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bIsStopping;
498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag set when the EOS marker is sent */
500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bIsEOFSent;
501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Count of number of buffers outstanding with bridge */
503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 lcml_nIpBuf;
504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Count of number of buffers outstanding with bridge */
506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 lcml_nOpBuf;
507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Number of Buffers In the Application*/
509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 app_nBuf;
510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** LCML Number Input Buffer Received*/
512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 lcml_nCntIp;
513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** LCML Number Output Buffer Received*/
515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 lcml_nCntOpReceived;
516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Num Reclaimed OutPut Buff    */
518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 num_Reclaimed_Op_Buff;
519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Num Sent Input Buff   */
521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 num_Sent_Ip_Buff;
522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Num Sent Output Buff Issued   */
524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 num_Op_Issued;
525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** LCML Handle */
527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE pLcmlHandle;
528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** LCML Buffer Header */
530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    LCML_G711DEC_BUFHEADERTYPE *pLcmlBufHeader[2];
531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for G711 mode */
533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 iG711Mode;
534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for DASF mode */
536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 dasfmode;
537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for ACDN mode */
539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 acdnmode;
540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for frame size type mode */
542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 fsizemode;
543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for fram type mode */
544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 ftype;
545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for Noise Level NMU */
546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 nmulevel;
547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for Noise LP  */
548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 noiselp;
549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for Noise level in dBm */
550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 dbmnoise;
551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for Noise level in dBm */
552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 packetlostc;
553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Writing pipe Used for DSP_RENDERING_ON */
555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int fdwrite;
556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Reading pipe Used for DSP_RENDERING_ON */
558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int fdread;
559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* ID stream ID*/
561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 streamID;
562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Flag for Port Defs Allocated*/
564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bPortDefsAllocated;
565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Flag for Component Thread Started*/
567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bCompThreadStarted;
568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Mark data */
570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PTR pMarkData;
571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Mark buffer */
573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_MARKTYPE *pMarkBuf;
574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Mark target component */
576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE hMarkTargetComponent;
577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag set when buffer should not be queued to the DSP */
579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bBypassDSP;
580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Input buffer list */
582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_BUFFERLIST *pInputBufferList;
583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Output buffer list */
585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_BUFFERLIST *pOutputBufferList;
586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** LCML stream attributes */
588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    LCML_STRMATTR *strmAttr;
589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Component version */
591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nVersion;
592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Play Complete Flag */
594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bPlayCompleteFlag;
595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Number of Bytes holding to be sent*/
597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nHoldLength;
598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Pointer to the data holding to be sent*/
600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8* pHoldBuffer;
601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag set when LCML handle is opened */
603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S16 bLcmlHandleOpened;
604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Keeps track of the number of nFillThisBufferCount() calls */
606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nFillThisBufferCount;
607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Keeps track of the number of nFillBufferDoneCount() calls */
609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nFillBufferDoneCount;
610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Keeps track of the number of nEmptyThisBufferCount() calls */
612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nEmptyThisBufferCount;
613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Keeps track of the number of nEmptyBufferDoneCount() calls */
615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nEmptyBufferDoneCount;
616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Parameters for the Audio Codec */
618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    G711DEC_AudioCodecParams *pParams;
619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for Init Params Initialized */
621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bInitParamsInitialized;
622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for bIdleCommandPending */
624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bIdleCommandPending;
625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Array of Input Buffers that are pending to sent due State = Idle */
627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE *pInputBufHdrPending[MAX_NUM_OF_BUFS];
628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Number of Input Buffers that are pending to sent due State = Idle */
630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nNumInputBufPending;
631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Array of Output Buffers that are pending to sent due State = Idle */
633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE *pOutputBufHdrPending[MAX_NUM_OF_BUFS];
634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Number of Output Buffers that are pending to sent due State = Idle */
636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nNumOutputBufPending;
637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for Reenabling Ports*/
639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bJustReenabled;
640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for Invalid Frame Count*/
642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nInvalidFrameCount;
643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for Writes While Paused   */
645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nDataWritesWhilePaused;
646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for bDisableCommandPending*/
648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bDisableCommandPending;
649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for bDisableCommandParam*/
651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bDisableCommandParam;
652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for Enabling the port*/
654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bEnableCommandPending;
655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag for Enabling the port*/
657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bEnableCommandParam;
658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag to set when socket node stop callback should not transition
660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        component to OMX_StateIdle */
661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bNoIdleOnStop;
662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Flag set when socket node is stopped */
664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 bDspStoppedWhileExecuting;
665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Number of outstanding FillBufferDone() calls */
667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_S32 nOutStandingFillDones;
668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Stop Codec Command Sent Flag*/
670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 bStopSent;
671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL bLoadedCommandPending;
673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PARAM_COMPONENTROLETYPE componentRole;
675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Device string */
677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STRING* sDeviceString;
678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* Removing sleep() calls. Definition. */
679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE
680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_mutex_t AlloBuf_mutex;
681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_cond_t AlloBuf_threshold;
682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 AlloBuf_waitingsignal;
683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_mutex_t InLoaded_mutex;
685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_cond_t InLoaded_threshold;
686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 InLoaded_readytoidle;
687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_mutex_t InIdle_mutex;
689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_cond_t InIdle_threshold;
690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 InIdle_goingtoloaded;
691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_Event AlloBuf_event;
693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 AlloBuf_waitingsignal;
694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_Event InLoaded_event;
696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 InLoaded_readytoidle;
697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_Event InIdle_event;
699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 InIdle_goingtoloaded;
700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    // /**************************/
702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 nUnhandledFillThisBuffers;
703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /**Keep buffer tickcount*/
705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 arrBufIndexTick[MAX_NUM_OF_BUFS];
706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Keep buffer timestamps **/
708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 arrBufIndex[MAX_NUM_OF_BUFS];
709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Index to arrBufIndex[], used for input buffer timestamps */
711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 IpBufindex;
712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Index to arrBufIndex[], used for output buffer timestamps */
714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 OpBufindex;
715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Pointer to RM callback **/
717b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifdef RESOURCE_MANAGER_ENABLED
718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    RMPROXY_CALLBACKTYPE rmproxyCallback;
719b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#endif
720b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL bPreempted;
722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} G711DEC_COMPONENT_PRIVATE;
725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum OMX_G711DEC_INDEXAUDIOTYPE {
727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomG711DecModeAcdnConfig = 0xFF000001,
728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomG711DecModeDasfConfig,
729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomG711DecHeaderInfoConfig,
730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomG711DecFrameParams,
731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomG711DecDataPath
732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}OMX_G711DEC_INDEXAUDIOTYPE;
733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
734b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#ifdef RESOURCE_MANAGER_ENABLED
735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid G711DEC_ResourceManagerCallback(RMPROXY_COMMANDDATATYPE cbData);
736b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#endif
737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif /* OMX_G711DECODER_H */
739