#include "global.h"
#include <stdlib.h>
#include <string.h>
#include "fixed.h"
#include "bit.h"
#include "stream.h"
#include "frame.h"
#include "huffman.h"
#include "layer3.h"
#include "rq_table.dat"
#include "imdct_s.dat"
Go to the source code of this file.
Data Structures | |
struct | sideinfo |
struct | sideinfo::granule |
struct | sideinfo::granule::channel |
struct | fixedfloat |
table for requantization. More... | |
Defines | |
#define | CHAR_BIT 8 |
#define | sfb_16000_long sfb_22050_long |
#define | sfb_12000_long sfb_16000_long |
MPEG 2.5 scalefactor band widths. | |
#define | sfb_11025_long sfb_12000_long |
#define | sfb_12000_short sfb_16000_short |
#define | sfb_11025_short sfb_12000_short |
#define | sfb_12000_mixed sfb_16000_mixed |
#define | sfb_11025_mixed sfb_12000_mixed |
#define | MASK(cache, sz, bits) (((cache) >> ((sz) - (bits))) & ((1 << (bits)) - 1)) |
#define | MASK1BIT(cache, sz) ((cache) & (1 << ((sz) - 1))) |
Enumerations | |
enum | { count1table_select = 0x01, scalefac_scale = 0x02, preflag = 0x04, mixed_block_flag = 0x08 } |
enum | { I_STEREO = 0x1, MS_STEREO = 0x2 } |
Functions | |
static enum mad_error | III_sideinfo (struct mad_bitptr *ptr, unsigned int nch, int lsf, struct sideinfo *si, unsigned int *data_bitlen, unsigned int *priv_bitlen) |
decode frame side information from a bitstream. | |
static unsigned int | III_scalefactors_lsf (struct mad_bitptr *ptr, struct channel *channel, struct channel *gr1ch, int mode_extension) |
decode channel scalefactors for LSF from a bitstream. | |
static unsigned int | III_scalefactors (struct mad_bitptr *ptr, struct channel *channel, struct channel const *gr0ch, unsigned int scfsi) |
decode channel scalefactors of one granule from a bitstream. | |
static void | III_exponents (struct channel const *channel, unsigned char const *sfbwidth, signed int exponents[39]) |
The Layer III formula for requantization and scaling is defined by section 2.4.3.4.7.1 of ISO/IEC 11172-3, as follows:. | |
static mad_fixed_t | III_requantize (unsigned int value, signed int exp) |
requantize one (positive) value. | |
static enum mad_error | III_huffdecode (struct mad_bitptr *ptr, mad_fixed_t xr[576], struct channel *channel, unsigned char const *sfbwidth, unsigned int part2_length) |
decode Huffman code words of one channel of one granule. | |
static void | III_reorder (mad_fixed_t xr[576], struct channel const *channel, unsigned char const sfbwidth[39]) |
reorder frequency lines of a short block into subband order. | |
static enum mad_error | III_stereo (mad_fixed_t xr[2][576], struct granule const *granule, struct mad_header *header, unsigned char const *sfbwidth) |
perform joint stereo processing on a granule. | |
static void | III_aliasreduce (mad_fixed_t xr[576], int lines) |
perform frequency line alias reduction. | |
static void | fastsdct (mad_fixed_t const x[9], mad_fixed_t y[18]) |
static void | sdctII (mad_fixed_t const x[18], mad_fixed_t X[18]) |
static void | dctIV (mad_fixed_t const y[18], mad_fixed_t X[18]) |
static void | imdct36 (mad_fixed_t const x[18], mad_fixed_t y[36]) |
perform X[18]->x[36] IMDCT using Szu-Wei Lee's fast algorithm. | |
static void | III_imdct_l (mad_fixed_t const X[18], mad_fixed_t z[36], unsigned int block_type) |
perform IMDCT and windowing for long blocks. | |
static void | III_imdct_s (mad_fixed_t const X[18], mad_fixed_t z[36]) |
perform IMDCT and windowing for short blocks. | |
static void | III_overlap (mad_fixed_t const output[36], mad_fixed_t overlap[18], mad_fixed_t sample[18][32], unsigned int sb) |
perform overlap-add of windowed IMDCT outputs. | |
static void | III_overlap_z (mad_fixed_t overlap[18], mad_fixed_t sample[18][32], unsigned int sb) |
perform "overlap-add" of zero IMDCT outputs. | |
static void | III_freqinver (mad_fixed_t sample[18][32], unsigned int sb) |
perform subband frequency inversion for odd sample lines. | |
static enum mad_error | III_decode (struct mad_bitptr *ptr, struct mad_frame *frame, struct sideinfo *si, unsigned int nch) |
decode frame main_data. | |
int | mad_layer_III (struct mad_stream *stream, struct mad_frame *frame) |
decode a single Layer III frame. | |
Variables | |
struct { | |
unsigned char slen1 | |
unsigned char slen2 | |
} | sflen_table [16] |
static unsigned char const | nsfb_table [6][3][4] |
number of LSF scalefactor band values. | |
static unsigned char const | sfb_48000_long [] |
MPEG-1 scalefactor band widths. | |
static unsigned char const | sfb_44100_long [] |
static unsigned char const | sfb_32000_long [] |
static unsigned char const | sfb_48000_short [] |
static unsigned char const | sfb_44100_short [] |
static unsigned char const | sfb_32000_short [] |
static unsigned char const | sfb_48000_mixed [] |
static unsigned char const | sfb_44100_mixed [] |
static unsigned char const | sfb_32000_mixed [] |
static unsigned char const | sfb_24000_long [] |
MPEG-2 scalefactor band widths. | |
static unsigned char const | sfb_22050_long [] |
static unsigned char const | sfb_24000_short [] |
static unsigned char const | sfb_22050_short [] |
static unsigned char const | sfb_16000_short [] |
static unsigned char const | sfb_24000_mixed [] |
static unsigned char const | sfb_22050_mixed [] |
static unsigned char const | sfb_16000_mixed [] |
static unsigned char const | sfb_8000_long [] |
static unsigned char const | sfb_8000_short [] |
static unsigned char const | sfb_8000_mixed [] |
struct { | |
unsigned char const * l | |
unsigned char const * s | |
unsigned char const * m | |
} | sfbwidth_table [9] |
static unsigned char const | pretab [22] |
scalefactor band preemphasis (used only when preflag is set). | |
static struct fixedfloat | rq_table [8207] |
static mad_fixed_t const | root_table [7] |
fractional powers of two. | |
static mad_fixed_t const | cs [8] |
coefficients for aliasing reduction. | |
static mad_fixed_t const | ca [8] |
static mad_fixed_t const | imdct_s [6][6] |
IMDCT coefficients for short blocks. | |
static mad_fixed_t const | window_l [36] |
windowing coefficients for long blocks. | |
static mad_fixed_t const | window_s [12] |
windowing coefficients for short blocks. | |
static mad_fixed_t const | is_table [7] |
coefficients for intensity stereo processing. | |
static mad_fixed_t const | is_lsf_table [2][15] |
coefficients for LSF intensity stereo processing. |
Definition in file layer3.c.
unsigned char const* l |
Definition at line 308 of file layer3.c.
Referenced by III_decode(), III_exponents(), III_reorder(), and III_stereo().
unsigned char const* m |
Definition at line 310 of file layer3.c.
Referenced by III_decode(), III_stereo(), and mad_timer_string().
unsigned char const* s |
Definition at line 309 of file layer3.c.
Referenced by II_samples(), III_decode(), III_imdct_s(), III_stereo(), mad_frame_mute(), mad_layer_I(), mad_layer_II(), mad_synth_mute(), synth_full(), and synth_half().
unsigned char slen1 |
unsigned char slen2 |