diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-05-31 23:16:26 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-06-01 00:09:05 +0200 |
commit | f6a8ce98a7bce601a7db4a8f2a615822dc8f71bd (patch) | |
tree | 25eca30f64783b92220d8e75bdd8551842d22752 /libavcodec | |
parent | 0abbd3adb6a28c088e121bf3da6c04225398bee4 (diff) | |
parent | 5ac4952a5808cc8cfe01031ca9d4df7d072f453c (diff) | |
download | ffmpeg-f6a8ce98a7bce601a7db4a8f2a615822dc8f71bd.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
vf_drawtext: Replace FFmpeg by Libav in license boilerplate.
mpegaudiodec: remove unusued code and variables
improved 'edts' atom writing support
mpegaudio: clean up compute_antialias() definition
vp8: fix segmentation race during frame-threading.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/mpegaudiodec.c | 96 | ||||
-rw-r--r-- | libavcodec/mpegaudiodec_float.c | 39 | ||||
-rw-r--r-- | libavcodec/vp8.c | 2 |
3 files changed, 41 insertions, 96 deletions
diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c index 4500739189..6a3b6f95ab 100644 --- a/libavcodec/mpegaudiodec.c +++ b/libavcodec/mpegaudiodec.c @@ -112,8 +112,6 @@ typedef struct MPADecodeContext { #include "mpegaudiodata.h" #include "mpegaudiodectab.h" -static void RENAME(compute_antialias)(MPADecodeContext *s, GranuleDef *g); - /* vlc structure for decoding layer 3 huffman tables */ static VLC huff_vlc[16]; static VLC_TYPE huff_vlc_tables[ @@ -135,8 +133,7 @@ static uint16_t band_index_long[9][23]; /* intensity stereo coef table */ static INTFLOAT is_table[2][16]; static INTFLOAT is_table_lsf[2][2][16]; -static int32_t csa_table[8][4]; -static float csa_table_float[8][4]; +static INTFLOAT csa_table[8][4]; static INTFLOAT mdct_win[8][36]; static int16_t division_tab3[1<<6 ]; @@ -272,27 +269,6 @@ static inline int l3_unscale(int value, int exponent) return m; } -/* all integer n^(4/3) computation code */ -#define DEV_ORDER 13 - -#define POW_FRAC_BITS 24 -#define POW_FRAC_ONE (1 << POW_FRAC_BITS) -#define POW_FIX(a) ((int)((a) * POW_FRAC_ONE)) -#define POW_MULL(a,b) (((int64_t)(a) * (int64_t)(b)) >> POW_FRAC_BITS) - -static int dev_4_3_coefs[DEV_ORDER]; - -static av_cold void int_pow_init(void) -{ - int i, a; - - a = POW_FIX(1.0); - for(i=0;i<DEV_ORDER;i++) { - a = POW_MULL(a, POW_FIX(4.0 / 3.0) - i * POW_FIX(1.0)) / (i + 1); - dev_4_3_coefs[i] = a; - } -} - static av_cold int decode_init(AVCodecContext * avctx) { MPADecodeContext *s = avctx->priv_data; @@ -388,7 +364,6 @@ static av_cold int decode_init(AVCodecContext * avctx) /* compute n ^ (4/3) and store it in mantissa/exp format */ - int_pow_init(); mpegaudio_tableinit(); for (i = 0; i < 4; i++) @@ -441,14 +416,17 @@ static av_cold int decode_init(AVCodecContext * avctx) ci = ci_table[i]; cs = 1.0 / sqrt(1.0 + ci * ci); ca = cs * ci; +#if !CONFIG_FLOAT csa_table[i][0] = FIXHR(cs/4); csa_table[i][1] = FIXHR(ca/4); csa_table[i][2] = FIXHR(ca/4) + FIXHR(cs/4); csa_table[i][3] = FIXHR(ca/4) - FIXHR(cs/4); - csa_table_float[i][0] = cs; - csa_table_float[i][1] = ca; - csa_table_float[i][2] = ca + cs; - csa_table_float[i][3] = ca - cs; +#else + csa_table[i][0] = cs; + csa_table[i][1] = ca; + csa_table[i][2] = ca + cs; + csa_table[i][3] = ca - cs; +#endif } /* compute mdct windows */ @@ -1335,10 +1313,26 @@ static void compute_stereo(MPADecodeContext *s, } } -#if !CONFIG_FLOAT -static void compute_antialias_fixed(MPADecodeContext *s, GranuleDef *g) +#if CONFIG_FLOAT +#define AA(j) do { \ + float tmp0 = ptr[-1-j]; \ + float tmp1 = ptr[ j]; \ + ptr[-1-j] = tmp0 * csa_table[j][0] - tmp1 * csa_table[j][1]; \ + ptr[ j] = tmp0 * csa_table[j][1] + tmp1 * csa_table[j][0]; \ + } while (0) +#else +#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) +#endif + +static void compute_antialias(MPADecodeContext *s, GranuleDef *g) { - int32_t *ptr, *csa; + INTFLOAT *ptr; int n, i; /* we antialias only "long" bands */ @@ -1353,28 +1347,18 @@ static void compute_antialias_fixed(MPADecodeContext *s, GranuleDef *g) ptr = g->sb_hybrid + 18; for(i = n;i > 0;i--) { - int tmp0, tmp1, tmp2; - csa = &csa_table[0][0]; -#define INT_AA(j) \ - tmp0 = ptr[-1-j];\ - tmp1 = ptr[ j];\ - tmp2= MULH(tmp0 + tmp1, csa[0+4*j]);\ - ptr[-1-j] = 4*(tmp2 - MULH(tmp1, csa[2+4*j]));\ - ptr[ j] = 4*(tmp2 + MULH(tmp0, csa[3+4*j])); - - INT_AA(0) - INT_AA(1) - INT_AA(2) - INT_AA(3) - INT_AA(4) - INT_AA(5) - INT_AA(6) - INT_AA(7) + AA(0); + AA(1); + AA(2); + AA(3); + AA(4); + AA(5); + AA(6); + AA(7); ptr += 18; } } -#endif static void compute_imdct(MPADecodeContext *s, GranuleDef *g, @@ -1470,7 +1454,7 @@ static void compute_imdct(MPADecodeContext *s, /* main layer3 decoding function */ static int mp_decode_layer3(MPADecodeContext *s) { - int nb_granules, main_data_begin, private_bits; + int nb_granules, main_data_begin; int gr, ch, blocksplit_flag, i, j, k, n, bits_pos; GranuleDef *g; int16_t exponents[576]; //FIXME try INTFLOAT @@ -1478,14 +1462,14 @@ static int mp_decode_layer3(MPADecodeContext *s) /* read side info */ if (s->lsf) { main_data_begin = get_bits(&s->gb, 8); - private_bits = get_bits(&s->gb, s->nb_channels); + skip_bits(&s->gb, s->nb_channels); nb_granules = 1; } else { main_data_begin = get_bits(&s->gb, 9); if (s->nb_channels == 2) - private_bits = get_bits(&s->gb, 3); + skip_bits(&s->gb, 3); else - private_bits = get_bits(&s->gb, 5); + skip_bits(&s->gb, 5); nb_granules = 2; for(ch=0;ch<s->nb_channels;ch++) { s->granules[ch][0].scfsi = 0;/* all scale factors are transmitted */ @@ -1703,7 +1687,7 @@ static int mp_decode_layer3(MPADecodeContext *s) g = &s->granules[ch][gr]; reorder_block(s, g); - RENAME(compute_antialias)(s, g); + compute_antialias(s, g); compute_imdct(s, g, &s->sb_samples[ch][18 * gr][0], s->mdct_buf[ch]); } } /* gr */ diff --git a/libavcodec/mpegaudiodec_float.c b/libavcodec/mpegaudiodec_float.c index 26454190f5..44b38b66d9 100644 --- a/libavcodec/mpegaudiodec_float.c +++ b/libavcodec/mpegaudiodec_float.c @@ -22,45 +22,6 @@ #define CONFIG_FLOAT 1 #include "mpegaudiodec.c" -static void compute_antialias_float(MPADecodeContext *s, - GranuleDef *g) -{ - float *ptr; - int n, i; - - /* we antialias only "long" bands */ - if (g->block_type == 2) { - if (!g->switch_point) - return; - /* XXX: check this for 8000Hz case */ - n = 1; - } else { - n = SBLIMIT - 1; - } - - ptr = g->sb_hybrid + 18; - for(i = n;i > 0;i--) { - float tmp0, tmp1; - float *csa = &csa_table_float[0][0]; -#define FLOAT_AA(j)\ - tmp0= ptr[-1-j];\ - tmp1= ptr[ j];\ - ptr[-1-j] = tmp0 * csa[0+4*j] - tmp1 * csa[1+4*j];\ - ptr[ j] = tmp0 * csa[1+4*j] + tmp1 * csa[0+4*j]; - - FLOAT_AA(0) - FLOAT_AA(1) - FLOAT_AA(2) - FLOAT_AA(3) - FLOAT_AA(4) - FLOAT_AA(5) - FLOAT_AA(6) - FLOAT_AA(7) - - ptr += 18; - } -} - #if CONFIG_MP1FLOAT_DECODER AVCodec ff_mp1float_decoder = { diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c index 9f7d5dd38d..082d8e5829 100644 --- a/libavcodec/vp8.c +++ b/libavcodec/vp8.c @@ -1612,7 +1612,7 @@ static int vp8_decode_frame(AVCodecContext *avctx, void *data, int *data_size, s->mv_min.x = -MARGIN; s->mv_max.x = ((s->mb_width - 1) << 6) + MARGIN; - if (prev_frame && s->segmentation.enabled && s->segmentation.update_map) + if (prev_frame && s->segmentation.enabled && !s->segmentation.update_map) ff_thread_await_progress(prev_frame, mb_y, 0); for (mb_x = 0; mb_x < s->mb_width; mb_x++, mb_xy++, mb++) { |