header for common code between mp3 decoder and encoder.

unfinished, iam just commiting this so the functions that should be
non static have prototypes.

Originally committed as revision 22270 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2010-03-06 23:36:30 +00:00
parent 1e50348a2a
commit d5dfecb1ea
1 changed files with 53 additions and 0 deletions

53
libavcodec/mpegaudio3.h Normal file
View File

@ -0,0 +1,53 @@
/*
* Copyright (c) 2007 Michael Niedermayer
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/* layer 3 "granule" */
typedef struct GranuleDef {
uint8_t scfsi;
int part2_3_length;
int big_values;
int global_gain;
int scalefac_compress;
uint8_t block_type;
uint8_t switch_point;
int table_select[3];
int subblock_gain[3];
uint8_t scalefac_scale;
uint8_t count1table_select;
int region_size[3]; /* number of huffman codes in each region */
int preflag;
int short_start, long_end; /* long/short band indexes */
uint8_t scale_factors[40];
int32_t sb_hybrid[SBLIMIT * 18]; /* 576 samples */
} GranuleDef;
void ff_mp3_init(void);
/**
* Compute huffman coded region sizes.
*/
void ff_init_short_region(MPADecodeContext *s, GranuleDef *g);
/**
* Compute huffman coded region sizes.
*/
void ff_init_long_region(MPADecodeContext *s, GranuleDef *g, int ra1, int ra2);
void ff_compute_band_indexes(MPADecodeContext *s, GranuleDef *g);