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