1d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/* ------------------------------------------------------------------
2d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Copyright (C) 1998-2009 PacketVideo
3d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *
4d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * you may not use this file except in compliance with the License.
6d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * You may obtain a copy of the License at
7d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *
8d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *
10d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Unless required by applicable law or agreed to in writing, software
11d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * express or implied.
14d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * See the License for the specific language governing permissions
15d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * and limitations under the License.
16d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * -------------------------------------------------------------------
17d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber */
18d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*
19d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
20d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber   PacketVideo Corp.
21d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber   MP3 Decoder Library
22d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
23d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber   Filename: pvmp3decoder_api.h
24d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
25d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber   Date: 09/21/2007
26d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
27d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
28d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber REVISION HISTORY
29d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
30d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Description:
31d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
32d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
33d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber INCLUDE DESCRIPTION
34d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
35d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber This include file defines the structure tPVMP3DecoderExternal
36d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
37d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
38d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber*/
39d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
40d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
41d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; CONTINUE ONLY IF NOT ALREADY DEFINED
42d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
43d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#ifndef PVMP3DECODER_API_H
44d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define PVMP3DECODER_API_H
45d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
46d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
47d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; INCLUDES
48d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
49d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
50d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#include "pvmp3_audio_type_defs.h"
51d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#include "pvmp3_dec_defs.h"
52d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
53d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
54d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; MACROS
55d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Define module specific macros here
56d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
57d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#ifdef __cplusplus
58d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberextern "C"
59d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{
60d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#endif
61d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
62d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*----------------------------------------------------------------------------
63d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ; DEFINES
64d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ; Include all pre-processor statements here.
65d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ----------------------------------------------------------------------------*/
66d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
67d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*----------------------------------------------------------------------------
68d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ; EXTERNAL VARIABLES REFERENCES
69d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ; Declare variables used in this module but defined elsewhere
70d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ----------------------------------------------------------------------------*/
71d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
72d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*----------------------------------------------------------------------------
73d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ; SIMPLE TYPEDEF'S
74d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ----------------------------------------------------------------------------*/
75d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
76d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*----------------------------------------------------------------------------
77d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ; ENUMERATED TYPEDEF'S
78d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ----------------------------------------------------------------------------*/
79d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    typedef enum
80d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
81d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        flat       = 0,
82d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        bass_boost = 1,
83d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        rock       = 2,
84d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        pop        = 3,
85d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        jazz       = 4,
86d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        classical  = 5,
87d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        talk       = 6,
88d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        flat_      = 7
89d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
90d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    } e_equalization;
91d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
92d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
93d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
94d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    typedef enum ERROR_CODE
95d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
96d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        NO_DECODING_ERROR         = 0,
97d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        UNSUPPORTED_LAYER         = 1,
98d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        UNSUPPORTED_FREE_BITRATE  = 2,
99d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        FILE_OPEN_ERROR           = 3,          /* error opening file */
100d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        CHANNEL_CONFIG_ERROR      = 4,     /* error in channel configuration */
101d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        SYNTHESIS_WINDOW_ERROR    = 5,   /* error in synthesis window table */
102d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        READ_FILE_ERROR           = 6,          /* error reading input file */
103d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        SIDE_INFO_ERROR           = 7,          /* error in side info */
104d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        HUFFMAN_TABLE_ERROR       = 8,      /* error in Huffman table */
105d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        COMMAND_LINE_ERROR        = 9,       /* error in command line */
106d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        MEMORY_ALLOCATION_ERROR   = 10,   /* error allocating memory */
107d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        NO_ENOUGH_MAIN_DATA_ERROR = 11,
108d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        SYNCH_LOST_ERROR          = 12,
109d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        OUTPUT_BUFFER_TOO_SMALL   = 13     /* output buffer can't hold output */
110d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    } ERROR_CODE;
111d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
112d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*----------------------------------------------------------------------------
113d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ; STRUCTURES TYPEDEF'S
114d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    ----------------------------------------------------------------------------*/
115d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
116d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    typedef struct
117d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#ifdef __cplusplus
118d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                tPVMP3DecoderExternal
119d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#endif
120d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
121d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
122d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
123d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * INPUT:
124d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * Pointer to the input buffer that contains the encoded bistream data.
125d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * The data is filled in such that the first bit transmitted is
126d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * the most-significant bit (MSB) of the first array element.
127d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * The buffer is accessed in a linear fashion for speed, and the number of
128d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * bytes consumed varies frame to frame.
129d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * The calling environment can change what is pointed to between calls to
130d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * the decode function, library, as long as the inputBufferCurrentLength,
131d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * and inputBufferUsedLength are updated too. Also, any remaining bits in
132d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * the old buffer must be put at the beginning of the new buffer.
133d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
134d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        uint8      *pInputBuffer;
135d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
136d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
137d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * INPUT:
138d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * Number of valid bytes in the input buffer, set by the calling
139d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * function. After decoding the bitstream the library checks to
140d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * see if it when past this value; it would be to prohibitive to
141d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * check after every read operation. This value is not modified by
142d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * the MP3 library.
143d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
144d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        int32     inputBufferCurrentLength;
145d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
146d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
147d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * INPUT/OUTPUT:
148d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * Number of elements used by the library, initially set to zero by
149d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * the function pvmp3_resetDecoder(), and modified by each
150d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * call to pvmp3_framedecoder().
151d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
152d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        int32     inputBufferUsedLength;
153d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
154d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
155d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * OUTPUT:
156d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * holds the predicted frame size. It used on the test console, for parsing
157d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * purposes.
158d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
159d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        uint32     CurrentFrameLength;
160d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
161d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
162d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * INPUT:
163d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * This variable holds the type of equalization used
164d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         *
165d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         *
166d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
167d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        e_equalization     equalizerType;
168d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
169d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
170d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
171d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * INPUT:
172d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * The actual size of the buffer.
173d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * This variable is not used by the library, but is used by the
174d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * console test application. This parameter could be deleted
175d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * if this value was passed into these function.
176d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
177d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        int32     inputBufferMaxLength;
178d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
179d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
180d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * OUTPUT:
181d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * The number of channels decoded from the bitstream.
182d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
183d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        int16       num_channels;
184d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
185d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
186d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * OUTPUT:
187d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * The number of channels decoded from the bitstream.
188d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
189d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        int16       version;
190d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
191d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
192d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * OUTPUT:
193d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * The sampling rate decoded from the bitstream, in units of
194d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * samples/second.
195d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
196d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        int32       samplingRate;
197d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
198d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
199d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * OUTPUT:
200d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * This value is the bitrate in units of bits/second. IT
201d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * is calculated using the number of bits consumed for the current frame,
202d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * and then multiplying by the sampling_rate, divided by points in a frame.
203d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * This value can changes frame to frame.
204d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
205d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        int32       bitRate;
206d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
207d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
208d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * INPUT/OUTPUT:
209d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * In: Inform decoder how much more room is available in the output buffer in int16 samples
210d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * Out: Size of the output frame in 16-bit words, This value depends on the mp3 version
211d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
212d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        int32     outputFrameSize;
213d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
214d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
215d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * INPUT:
216d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * Flag to enable/disable crc error checking
217d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
218d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        int32     crcEnabled;
219d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
220d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
221d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * OUTPUT:
222d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * This value is used to accumulate bit processed and compute an estimate of the
223d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * bitrate. For debugging purposes only, as it will overflow for very long clips
224d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
225d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        uint32     totalNumberOfBitsUsed;
226d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
227d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
228d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*
229d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * INPUT: (but what is pointed to is an output)
230d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * Pointer to the output buffer to hold the 16-bit PCM audio samples.
231d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * If the output is stereo, both left and right channels will be stored
232d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         * in this one buffer.
233d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber         */
234d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
235d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        int16       *pOutputBuffer;
236d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
237d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    } tPVMP3DecoderExternal;
238d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
239d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint32 pvmp3_decoderMemRequirements(void);
240d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
241d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubervoid pvmp3_InitDecoder(tPVMP3DecoderExternal *pExt,
242d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                       void  *pMem);
243d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
244d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubervoid pvmp3_resetDecoder(void  *pMem);
245d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
246d9618f23226f46c752e56f712bc4b505117d8b4bAndreas HuberERROR_CODE pvmp3_framedecoder(tPVMP3DecoderExternal *pExt,
247d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                              void              *pMem);
248d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
249d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#ifdef __cplusplus
250d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber}
251d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#endif
252d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
253d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
254d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; END
255d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
256d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
257d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#endif
258d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
259d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
260