1250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/* ------------------------------------------------------------------
2250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * Copyright (C) 1998-2009 PacketVideo
3250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber *
4250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * you may not use this file except in compliance with the License.
6250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * You may obtain a copy of the License at
7250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber *
8250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber *
10250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * Unless required by applicable law or agreed to in writing, software
11250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * express or implied.
14250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * See the License for the specific language governing permissions
15250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * and limitations under the License.
16250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * -------------------------------------------------------------------
17250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber */
18250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*
19250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber------------------------------------------------------------------------------
20250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber   PacketVideo Corp.
21250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber   MP3 Decoder Library
22250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
23250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber   Filename: pvmp3decoder_api.h
24250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
25250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber   Date: 09/21/2007
26250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
27250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber------------------------------------------------------------------------------
28250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber REVISION HISTORY
29250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
30250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber Description:
31250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
32250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber------------------------------------------------------------------------------
33250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber INCLUDE DESCRIPTION
34250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
35250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber This include file defines the structure tPVMP3DecoderExternal
36250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
37250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber------------------------------------------------------------------------------
38250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber*/
39250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
40250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
41250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; CONTINUE ONLY IF NOT ALREADY DEFINED
42250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
43250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#ifndef PVMP3DECODER_API_H
44250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#define PVMP3DECODER_API_H
45250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
46250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
47250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; INCLUDES
48250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
49250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
50250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#include "pvmp3_audio_type_defs.h"
51250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#include "pvmp3_dec_defs.h"
52250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
53250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
54250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; MACROS
55250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; Define module specific macros here
56250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
57250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#ifdef __cplusplus
58250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huberextern "C"
59250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber{
60250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#endif
61250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
62250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    /*----------------------------------------------------------------------------
63250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ; DEFINES
64250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ; Include all pre-processor statements here.
65250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ----------------------------------------------------------------------------*/
66250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
67250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    /*----------------------------------------------------------------------------
68250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ; EXTERNAL VARIABLES REFERENCES
69250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ; Declare variables used in this module but defined elsewhere
70250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ----------------------------------------------------------------------------*/
71250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
72250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    /*----------------------------------------------------------------------------
73250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ; SIMPLE TYPEDEF'S
74250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ----------------------------------------------------------------------------*/
75250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
76250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    /*----------------------------------------------------------------------------
77250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ; ENUMERATED TYPEDEF'S
78250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ----------------------------------------------------------------------------*/
79250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    typedef enum
80250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    {
81250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        flat       = 0,
82250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        bass_boost = 1,
83250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        rock       = 2,
84250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        pop        = 3,
85250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        jazz       = 4,
86250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        classical  = 5,
87250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        talk       = 6,
88250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        flat_      = 7
89250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
90250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    } e_equalization;
91250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
92250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
93250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
94250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    typedef enum ERROR_CODE
95250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    {
96250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        NO_DECODING_ERROR         = 0,
97250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        UNSUPPORTED_LAYER         = 1,
98250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        UNSUPPORTED_FREE_BITRATE  = 2,
99250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        FILE_OPEN_ERROR           = 3,          /* error opening file */
100250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        CHANNEL_CONFIG_ERROR      = 4,     /* error in channel configuration */
101250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        SYNTHESIS_WINDOW_ERROR    = 5,   /* error in synthesis window table */
102250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        READ_FILE_ERROR           = 6,          /* error reading input file */
103250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        SIDE_INFO_ERROR           = 7,          /* error in side info */
104250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        HUFFMAN_TABLE_ERROR       = 8,      /* error in Huffman table */
105250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        COMMAND_LINE_ERROR        = 9,       /* error in command line */
106250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        MEMORY_ALLOCATION_ERROR   = 10,   /* error allocating memory */
107250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        NO_ENOUGH_MAIN_DATA_ERROR = 11,
108250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        SYNCH_LOST_ERROR          = 12,
109250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        OUTPUT_BUFFER_TOO_SMALL   = 13     /* output buffer can't hold output */
110250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    } ERROR_CODE;
111250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
112250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    /*----------------------------------------------------------------------------
113250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ; STRUCTURES TYPEDEF'S
114250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    ----------------------------------------------------------------------------*/
115250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
116250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    typedef struct
117250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#ifdef __cplusplus
118250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber                tPVMP3DecoderExternal
119250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#endif
120250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    {
121250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
122250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
123250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * INPUT:
124250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * Pointer to the input buffer that contains the encoded bistream data.
125250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * The data is filled in such that the first bit transmitted is
126250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * the most-significant bit (MSB) of the first array element.
127250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * The buffer is accessed in a linear fashion for speed, and the number of
128250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * bytes consumed varies frame to frame.
129250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * The calling environment can change what is pointed to between calls to
130250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * the decode function, library, as long as the inputBufferCurrentLength,
131250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * and inputBufferUsedLength are updated too. Also, any remaining bits in
132250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * the old buffer must be put at the beginning of the new buffer.
133250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
134250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        uint8      *pInputBuffer;
135250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
136250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
137250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * INPUT:
138250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * Number of valid bytes in the input buffer, set by the calling
139250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * function. After decoding the bitstream the library checks to
140250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * see if it when past this value; it would be to prohibitive to
141250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * check after every read operation. This value is not modified by
142250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * the MP3 library.
143250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
144250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        int32     inputBufferCurrentLength;
145250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
146250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
147250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * INPUT/OUTPUT:
148250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * Number of elements used by the library, initially set to zero by
149250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * the function pvmp3_resetDecoder(), and modified by each
150250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * call to pvmp3_framedecoder().
151250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
152250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        int32     inputBufferUsedLength;
153250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
154250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
155250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * OUTPUT:
156250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * holds the predicted frame size. It used on the test console, for parsing
157250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * purposes.
158250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
159250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        uint32     CurrentFrameLength;
160250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
161250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
162250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * INPUT:
163250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * This variable holds the type of equalization used
164250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         *
165250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         *
166250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
167250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        e_equalization     equalizerType;
168250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
169250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
170250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
171250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * INPUT:
172250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * The actual size of the buffer.
173250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * This variable is not used by the library, but is used by the
174250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * console test application. This parameter could be deleted
175250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * if this value was passed into these function.
176250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
177250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        int32     inputBufferMaxLength;
178250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
179250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
180250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * OUTPUT:
181250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * The number of channels decoded from the bitstream.
182250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
183250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        int16       num_channels;
184250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
185250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
186250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * OUTPUT:
187250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * The number of channels decoded from the bitstream.
188250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
189250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        int16       version;
190250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
191250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
192250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * OUTPUT:
193250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * The sampling rate decoded from the bitstream, in units of
194250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * samples/second.
195250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
196250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        int32       samplingRate;
197250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
198250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
199250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * OUTPUT:
200250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * This value is the bitrate in units of bits/second. IT
201250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * is calculated using the number of bits consumed for the current frame,
202250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * and then multiplying by the sampling_rate, divided by points in a frame.
203250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * This value can changes frame to frame.
204250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
205250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        int32       bitRate;
206250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
207250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
208250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * INPUT/OUTPUT:
209250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * In: Inform decoder how much more room is available in the output buffer in int16 samples
210250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * Out: Size of the output frame in 16-bit words, This value depends on the mp3 version
211250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
212250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        int32     outputFrameSize;
213250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
214250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
215250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * INPUT:
216250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * Flag to enable/disable crc error checking
217250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
218250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        int32     crcEnabled;
219250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
220250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
221250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * OUTPUT:
222250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * This value is used to accumulate bit processed and compute an estimate of the
223250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * bitrate. For debugging purposes only, as it will overflow for very long clips
224250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
225250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        uint32     totalNumberOfBitsUsed;
226250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
227250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
228250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        /*
229250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * INPUT: (but what is pointed to is an output)
230250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * Pointer to the output buffer to hold the 16-bit PCM audio samples.
231250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * If the output is stereo, both left and right channels will be stored
232250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         * in this one buffer.
233250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber         */
234250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
235250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber        int16       *pOutputBuffer;
236250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
237250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    } tPVMP3DecoderExternal;
238250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
239250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huberuint32 pvmp3_decoderMemRequirements(void);
240250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
241250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Hubervoid pvmp3_InitDecoder(tPVMP3DecoderExternal *pExt,
242250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber                       void  *pMem);
243250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
244250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Hubervoid pvmp3_resetDecoder(void  *pMem);
245250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
246250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas HuberERROR_CODE pvmp3_framedecoder(tPVMP3DecoderExternal *pExt,
247250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber                              void              *pMem);
248250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
249250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#ifdef __cplusplus
250250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber}
251250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#endif
252250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
253250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
254250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; END
255250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
256250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
257250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#endif
258250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
259250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
260