|
Libav
0.7.1
|
MPEG Audio decoder. More...
#include "libavutil/audioconvert.h"#include "avcodec.h"#include "get_bits.h"#include "mathops.h"#include "mpegaudiodsp.h"#include "mpegaudio.h"#include "mpegaudiodecheader.h"#include "mpegaudiodata.h"#include "mpegaudiodectab.h"#include "mpegaudio_tablegen.h"Go to the source code of this file.
Data Structures | |
| struct | GranuleDef |
| struct | MPADecodeContext |
Defines | |
| #define | BACKSTEP_SIZE 512 |
| #define | EXTRABYTES 24 |
| #define | SHR(a, b) ((a)>>(b)) |
| #define | FIXR_OLD(a) ((int)((a) * FRAC_ONE + 0.5)) |
| #define | FIXR(a) ((int)((a) * FRAC_ONE + 0.5)) |
| #define | FIXHR(a) ((int)((a) * (1LL<<32) + 0.5)) |
| #define | MULH3(x, y, s) MULH((s)*(x), y) |
| #define | MULLx(x, y, s) MULL(x,y,s) |
| #define | RENAME(a) a ## _fixed |
| #define | OUT_FMT AV_SAMPLE_FMT_S16 |
| #define | HEADER_SIZE 4 |
| #define | SCALE_GEN(v) { FIXR_OLD(1.0 * (v)), FIXR_OLD(0.7937005259 * (v)), FIXR_OLD(0.6299605249 * (v)) } |
| #define | C3 FIXHR(0.86602540378443864676/2) |
| #define | C1 FIXHR(0.98480775301220805936/2) |
| #define | C2 FIXHR(0.93969262078590838405/2) |
| #define | C3 FIXHR(0.86602540378443864676/2) |
| #define | C4 FIXHR(0.76604444311897803520/2) |
| #define | C5 FIXHR(0.64278760968653932632/2) |
| #define | C6 FIXHR(0.5/2) |
| #define | C7 FIXHR(0.34202014332566873304/2) |
| #define | C8 FIXHR(0.17364817766693034885/2) |
| #define | SPLIT(dst, sf, n) |
| #define | READ_FLIP_SIGN(dst, src) |
| #define | ISQRT2 FIXR(0.70710678118654752440) |
| #define | AA(j) |
Typedefs | |
| typedef struct GranuleDef | GranuleDef |
| typedef struct MPADecodeContext | MPADecodeContext |
Functions | |
| static void | ff_region_offset2size (GranuleDef *g) |
| Convert region offsets to region sizes and truncate size to big_values. | |
| static void | ff_init_short_region (MPADecodeContext *s, GranuleDef *g) |
| static void | ff_init_long_region (MPADecodeContext *s, GranuleDef *g, int ra1, int ra2) |
| static void | ff_compute_band_indexes (MPADecodeContext *s, GranuleDef *g) |
| static int | l1_unscale (int n, int mant, int scale_factor) |
| static int | l2_unscale_group (int steps, int mant, int scale_factor) |
| static int | l3_unscale (int value, int exponent) |
| static av_cold int | decode_init (AVCodecContext *avctx) |
| static void | imdct12 (INTFLOAT *out, INTFLOAT *in) |
| static void | imdct36 (INTFLOAT *out, INTFLOAT *buf, INTFLOAT *in, INTFLOAT *win) |
| static int | mp_decode_layer1 (MPADecodeContext *s) |
| static int | mp_decode_layer2 (MPADecodeContext *s) |
| static av_always_inline void | lsf_sf_expand (int *slen, int sf, int n1, int n2, int n3) |
| static void | exponents_from_scale_factors (MPADecodeContext *s, GranuleDef *g, int16_t *exponents) |
| static int | get_bitsz (GetBitContext *s, int n) |
| static void | switch_buffer (MPADecodeContext *s, int *pos, int *end_pos, int *end_pos2) |
| static int | huffman_decode (MPADecodeContext *s, GranuleDef *g, int16_t *exponents, int end_pos2) |
| static void | reorder_block (MPADecodeContext *s, GranuleDef *g) |
| static void | compute_stereo (MPADecodeContext *s, GranuleDef *g0, GranuleDef *g1) |
| static void | compute_antialias (MPADecodeContext *s, GranuleDef *g) |
| static void | compute_imdct (MPADecodeContext *s, GranuleDef *g, INTFLOAT *sb_samples, INTFLOAT *mdct_buf) |
| static int | mp_decode_layer3 (MPADecodeContext *s) |
| static int | mp_decode_frame (MPADecodeContext *s, OUT_INT *samples, const uint8_t *buf, int buf_size) |
| static int | decode_frame (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) |
| static void | flush (AVCodecContext *avctx) |
Variables | |
| static VLC | huff_vlc [16] |
| static VLC_TYPE | huff_vlc_tables [0+128+128+128+130+128+154+166+142+204+190+170+542+460+662+414][2] |
| static const int | huff_vlc_tables_sizes [16] |
| static VLC | huff_quad_vlc [2] |
| static VLC_TYPE | huff_quad_vlc_tables [128+16][2] |
| static const int | huff_quad_vlc_tables_sizes [2] |
| static uint16_t | band_index_long [9][23] |
| static INTFLOAT | is_table [2][16] |
| static INTFLOAT | is_table_lsf [2][2][16] |
| static INTFLOAT | csa_table [8][4] |
| static INTFLOAT | mdct_win [8][36] |
| static int16_t | division_tab3 [1<< 6] |
| static int16_t | division_tab5 [1<< 8] |
| static int16_t | division_tab9 [1<< 11] |
| static int16_t *const | division_tabs [4] |
| static uint16_t | scale_factor_modshift [64] |
| static int32_t | scale_factor_mult [15][3] |
| static const int32_t | scale_factor_mult2 [3][3] |
| static const INTFLOAT | icos36 [9] |
| static const INTFLOAT | icos36h [9] |
MPEG Audio decoder.
Definition in file mpegaudiodec.c.
| #define AA | ( | j | ) |
do { \ int tmp0 = ptr[-1-j]; \ int tmp1 = ptr[ j]; \ int tmp2 = MULH(tmp0 + tmp1, csa_table[j][0]); \ ptr[-1-j] = 4*(tmp2 - MULH(tmp1, csa_table[j][2])); \ ptr[ j] = 4*(tmp2 + MULH(tmp0, csa_table[j][3])); \ } while (0)
Definition at line 1325 of file mpegaudiodec.c.
Referenced by compute_antialias().
| #define BACKSTEP_SIZE 512 |
Definition at line 41 of file mpegaudiodec.c.
Referenced by mp_decode_frame().
Definition at line 550 of file mpegaudiodec.c.
Referenced by idct4col_add(), idct4col_put(), and imdct36().
Definition at line 551 of file mpegaudiodec.c.
Referenced by idct4col_add(), idct4col_put(), and imdct36().
Definition at line 552 of file mpegaudiodec.c.
Definition at line 552 of file mpegaudiodec.c.
Definition at line 553 of file mpegaudiodec.c.
Referenced by idct_col(), and imdct36().
Definition at line 554 of file mpegaudiodec.c.
Referenced by imdct36().
Definition at line 555 of file mpegaudiodec.c.
Definition at line 556 of file mpegaudiodec.c.
Referenced by imdct36().
Definition at line 557 of file mpegaudiodec.c.
Referenced by imdct36().
| #define EXTRABYTES 24 |
Definition at line 42 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
| #define FIXHR | ( | a | ) | ((int)((a) * (1LL<<32) + 0.5)) |
Definition at line 101 of file mpegaudiodec.c.
Referenced by decode_init().
Definition at line 100 of file mpegaudiodec.c.
Referenced by decode_init().
Definition at line 99 of file mpegaudiodec.c.
| #define HEADER_SIZE 4 |
Definition at line 110 of file mpegaudiodec.c.
Referenced by decode_frame(), and mp_decode_frame().
Definition at line 1190 of file mpegaudiodec.c.
Referenced by compute_stereo().
Definition at line 102 of file mpegaudiodec.c.
Referenced by compute_imdct(), imdct12(), and imdct36().
| #define MULLx | ( | x, | |
| y, | |||
| s | |||
| ) | MULL(x,y,s) |
Definition at line 103 of file mpegaudiodec.c.
Referenced by compute_stereo(), decode_init(), and imdct36().
| #define OUT_FMT AV_SAMPLE_FMT_S16 |
Definition at line 105 of file mpegaudiodec.c.
Referenced by decode_init().
| #define READ_FLIP_SIGN | ( | dst, | |
| src | |||
| ) |
Definition at line 995 of file mpegaudiodec.c.
Referenced by huffman_decode().
| #define RENAME | ( | a | ) | a ## _fixed |
Definition at line 104 of file mpegaudiodec.c.
Referenced by bgr24ToUV_TMPL(), bgr24ToY_TMPL(), decode_init(), huffman_decode(), mp_decode_frame(), nv12ToUV_TMPL(), nv21ToUV_TMPL(), postProcess_TMPL(), rgb24ToUV_TMPL(), rgb24ToY_TMPL(), rgb2rgb_init_TMPL(), sws_init_swScale_TMPL(), uyvytoyuv420_TMPL(), uyvytoyuv422_TMPL(), yuv422ptouyvy_TMPL(), yuv422ptoyuy2_TMPL(), yuyvtoyuv420_TMPL(), yuyvtoyuv422_TMPL(), yv12touyvy_TMPL(), and yv12toyuy2_TMPL().
| #define SCALE_GEN | ( | v | ) | { FIXR_OLD(1.0 * (v)), FIXR_OLD(0.7937005259 * (v)), FIXR_OLD(0.6299605249 * (v)) } |
Definition at line 153 of file mpegaudiodec.c.
Definition at line 97 of file mpegaudiodec.c.
| #define SPLIT | ( | dst, | |
| sf, | |||
| n | |||
| ) |
if(n==3){\ int m= (sf*171)>>9;\ dst= sf - 3*m;\ sf=m;\ }else if(n==4){\ dst= sf&3;\ sf>>=2;\ }else if(n==5){\ int m= (sf*205)>>10;\ dst= sf - 5*m;\ sf=m;\ }else if(n==6){\ int m= (sf*171)>>10;\ dst= sf - 6*m;\ sf=m;\ }else{\ dst=0;\ }
Definition at line 895 of file mpegaudiodec.c.
Referenced by lsf_sf_expand().
| typedef struct GranuleDef GranuleDef |
| typedef struct MPADecodeContext MPADecodeContext |
| static void compute_antialias | ( | MPADecodeContext * | s, |
| GranuleDef * | g | ||
| ) | [static] |
Definition at line 1334 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
| static void compute_imdct | ( | MPADecodeContext * | s, |
| GranuleDef * | g, | ||
| INTFLOAT * | sb_samples, | ||
| INTFLOAT * | mdct_buf | ||
| ) | [static] |
Definition at line 1364 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
| static void compute_stereo | ( | MPADecodeContext * | s, |
| GranuleDef * | g0, | ||
| GranuleDef * | g1 | ||
| ) | [static] |
Definition at line 1192 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
| static int decode_frame | ( | AVCodecContext * | avctx, |
| void * | data, | ||
| int * | data_size, | ||
| AVPacket * | avpkt | ||
| ) | [static] |
Definition at line 1773 of file mpegaudiodec.c.
| static av_cold int decode_init | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 272 of file mpegaudiodec.c.
| static void exponents_from_scale_factors | ( | MPADecodeContext * | s, |
| GranuleDef * | g, | ||
| int16_t * | exponents | ||
| ) | [static] |
Definition at line 924 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
| static void ff_compute_band_indexes | ( | MPADecodeContext * | s, |
| GranuleDef * | g | ||
| ) | [static] |
Definition at line 200 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
| static void ff_init_long_region | ( | MPADecodeContext * | s, |
| GranuleDef * | g, | ||
| int | ra1, | ||
| int | ra2 | ||
| ) | [static] |
Definition at line 190 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
| static void ff_init_short_region | ( | MPADecodeContext * | s, |
| GranuleDef * | g | ||
| ) | [static] |
Definition at line 176 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
| static void ff_region_offset2size | ( | GranuleDef * | g | ) | [static] |
Convert region offsets to region sizes and truncate size to big_values.
Definition at line 166 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
| static void flush | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 1828 of file mpegaudiodec.c.
| static int get_bitsz | ( | GetBitContext * | s, |
| int | n | ||
| ) | [inline, static] |
Definition at line 963 of file mpegaudiodec.c.
Referenced by huffman_decode().
| static int huffman_decode | ( | MPADecodeContext * | s, |
| GranuleDef * | g, | ||
| int16_t * | exponents, | ||
| int | end_pos2 | ||
| ) | [static] |
Definition at line 1000 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
Definition at line 508 of file mpegaudiodec.c.
Referenced by compute_imdct().
Definition at line 561 of file mpegaudiodec.c.
Referenced by compute_imdct().
| static int l1_unscale | ( | int | n, |
| int | mant, | ||
| int | scale_factor | ||
| ) | [inline, static] |
Definition at line 226 of file mpegaudiodec.c.
Referenced by mp_decode_layer1(), and mp_decode_layer2().
| static int l2_unscale_group | ( | int | steps, |
| int | mant, | ||
| int | scale_factor | ||
| ) | [inline, static] |
Definition at line 240 of file mpegaudiodec.c.
Referenced by mp_decode_layer2().
| static int l3_unscale | ( | int | value, |
| int | exponent | ||
| ) | [inline, static] |
Definition at line 256 of file mpegaudiodec.c.
Referenced by huffman_decode().
| static av_always_inline void lsf_sf_expand | ( | int * | slen, |
| int | sf, | ||
| int | n1, | ||
| int | n2, | ||
| int | n3 | ||
| ) | [static] |
Definition at line 915 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
| static int mp_decode_frame | ( | MPADecodeContext * | s, |
| OUT_INT * | samples, | ||
| const uint8_t * | buf, | ||
| int | buf_size | ||
| ) | [static] |
Definition at line 1700 of file mpegaudiodec.c.
Referenced by decode_frame().
| static int mp_decode_layer1 | ( | MPADecodeContext * | s | ) | [static] |
Definition at line 642 of file mpegaudiodec.c.
Referenced by mp_decode_frame().
| static int mp_decode_layer2 | ( | MPADecodeContext * | s | ) | [static] |
Definition at line 708 of file mpegaudiodec.c.
Referenced by mp_decode_frame().
| static int mp_decode_layer3 | ( | MPADecodeContext * | s | ) | [static] |
Definition at line 1456 of file mpegaudiodec.c.
Referenced by mp_decode_frame().
| static void reorder_block | ( | MPADecodeContext * | s, |
| GranuleDef * | g | ||
| ) | [static] |
Definition at line 1156 of file mpegaudiodec.c.
Referenced by mp_decode_layer3().
| static void switch_buffer | ( | MPADecodeContext * | s, |
| int * | pos, | ||
| int * | end_pos, | ||
| int * | end_pos2 | ||
| ) | [static] |
Definition at line 972 of file mpegaudiodec.c.
Referenced by huffman_decode().
uint16_t band_index_long[9][23] [static] |
Definition at line 131 of file mpegaudiodec.c.
Referenced by decode_init(), and ff_init_long_region().
Definition at line 136 of file mpegaudiodec.c.
Referenced by decode_init().
int16_t division_tab3[1<< 6] [static] |
Definition at line 139 of file mpegaudiodec.c.
int16_t division_tab5[1<< 8] [static] |
Definition at line 140 of file mpegaudiodec.c.
int16_t division_tab9[1<< 11] [static] |
Definition at line 141 of file mpegaudiodec.c.
int16_t* const division_tabs[4] [static] |
Definition at line 143 of file mpegaudiodec.c.
Referenced by decode_init(), and mp_decode_layer2().
VLC huff_quad_vlc[2] [static] |
Definition at line 125 of file mpegaudiodec.c.
VLC_TYPE huff_quad_vlc_tables[128+16][2] [static] |
Definition at line 126 of file mpegaudiodec.c.
Referenced by decode_init().
const int huff_quad_vlc_tables_sizes[2] [static] |
{
128, 16
}
Definition at line 127 of file mpegaudiodec.c.
Referenced by decode_init().
Definition at line 116 of file mpegaudiodec.c.
VLC_TYPE huff_vlc_tables[0+128+128+128+130+128+154+166+142+204+190+170+542+460+662+414][2] [static] |
Definition at line 120 of file mpegaudiodec.c.
Referenced by decode_init().
const int huff_vlc_tables_sizes[16] [static] |
{
0, 128, 128, 128, 130, 128, 154, 166,
142, 204, 190, 170, 542, 460, 662, 414
}
Definition at line 121 of file mpegaudiodec.c.
Referenced by decode_init().
{
FIXR(0.50190991877167369479),
FIXR(0.51763809020504152469),
FIXR(0.55168895948124587824),
FIXR(0.61038729438072803416),
FIXR(0.70710678118654752439),
FIXR(0.87172339781054900991),
FIXR(1.18310079157624925896),
FIXR(1.93185165257813657349),
FIXR(5.73685662283492756461),
}
Definition at line 481 of file mpegaudiodec.c.
Referenced by imdct36().
{
FIXHR(0.50190991877167369479/2),
FIXHR(0.51763809020504152469/2),
FIXHR(0.55168895948124587824/2),
FIXHR(0.61038729438072803416/2),
FIXHR(0.70710678118654752439/2),
FIXHR(0.87172339781054900991/2),
FIXHR(1.18310079157624925896/4),
FIXHR(1.93185165257813657349/4),
}
Definition at line 494 of file mpegaudiodec.c.
Definition at line 134 of file mpegaudiodec.c.
Referenced by compute_stereo(), and decode_init().
INTFLOAT is_table_lsf[2][2][16] [static] |
Definition at line 135 of file mpegaudiodec.c.
Referenced by compute_stereo(), and decode_init().
Definition at line 137 of file mpegaudiodec.c.
Referenced by compute_imdct(), and decode_init().
uint16_t scale_factor_modshift[64] [static] |
Definition at line 148 of file mpegaudiodec.c.
Referenced by decode_init(), l1_unscale(), and l2_unscale_group().
int32_t scale_factor_mult[15][3] [static] |
Definition at line 150 of file mpegaudiodec.c.
Referenced by decode_init(), encode_frame(), l1_unscale(), and MPA_encode_init().
const int32_t scale_factor_mult2[3][3] [static] |
Definition at line 156 of file mpegaudiodec.c.
Referenced by l2_unscale_group().
1.7.6.1