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