diff options
Diffstat (limited to 'libavcodec/gsmdec_template.c')
-rw-r--r-- | libavcodec/gsmdec_template.c | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/libavcodec/gsmdec_template.c b/libavcodec/gsmdec_template.c index 7437908..4e40a20 100644 --- a/libavcodec/gsmdec_template.c +++ b/libavcodec/gsmdec_template.c @@ -2,20 +2,20 @@ * gsm 06.10 decoder * Copyright (c) 2010 Reimar Döffinger <Reimar.Doeffinger@gmx.de> * - * This file is part of Libav. + * This file is part of FFmpeg. * - * Libav is free software; you can redistribute it and/or + * 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. * - * Libav is distributed in the hope that it will be useful, + * 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 Libav; if not, write to the Free Software + * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -24,24 +24,24 @@ * GSM decoder */ -#include "bitstream.h" +#include "get_bits.h" #include "gsm.h" #include "gsmdec_data.h" -static void apcm_dequant_add(BitstreamContext *bc, int16_t *dst, const int *frame_bits) +static void apcm_dequant_add(GetBitContext *gb, int16_t *dst, const int *frame_bits) { int i, val; - int maxidx = bitstream_read(bc, 6); + int maxidx = get_bits(gb, 6); const int16_t *tab = ff_gsm_dequant_tab[maxidx]; for (i = 0; i < 13; i++) { - val = bitstream_read(bc, frame_bits[i]); + val = get_bits(gb, frame_bits[i]); dst[3 * i] += tab[ff_gsm_requant_tab[frame_bits[i]][val]]; } } static inline int gsm_mult(int a, int b) { - return (a * b + (1 << 14)) >> 15; + return (int)(a * (SUINT)b + (1 << 14)) >> 15; } static void long_term_synth(int16_t *dst, int lag, int gain_idx) @@ -57,7 +57,7 @@ static inline int decode_log_area(int coded, int factor, int offset) { coded <<= 10; coded -= offset; - return gsm_mult(coded, factor) << 1; + return gsm_mult(coded, factor) * 2; } static av_noinline int get_rrp(int filtered) @@ -114,34 +114,34 @@ static int postprocess(int16_t *data, int msr) int i; for (i = 0; i < 160; i++) { msr = av_clip_int16(data[i] + gsm_mult(msr, 28180)); - data[i] = av_clip_int16(msr << 1) & ~7; + data[i] = av_clip_int16(msr * 2) & ~7; } return msr; } static int gsm_decode_block(AVCodecContext *avctx, int16_t *samples, - BitstreamContext *bc, int mode) + GetBitContext *gb, int mode) { GSMContext *ctx = avctx->priv_data; int i; int16_t *ref_dst = ctx->ref_buf + 120; int *lar = ctx->lar[ctx->lar_idx]; - lar[0] = decode_log_area(bitstream_read(bc, 6), 13107, 1 << 15); - lar[1] = decode_log_area(bitstream_read(bc, 6), 13107, 1 << 15); - lar[2] = decode_log_area(bitstream_read(bc, 5), 13107, (1 << 14) + 2048 * 2); - lar[3] = decode_log_area(bitstream_read(bc, 5), 13107, (1 << 14) - 2560 * 2); - lar[4] = decode_log_area(bitstream_read(bc, 4), 19223, (1 << 13) + 94 * 2); - lar[5] = decode_log_area(bitstream_read(bc, 4), 17476, (1 << 13) - 1792 * 2); - lar[6] = decode_log_area(bitstream_read(bc, 3), 31454, (1 << 12) - 341 * 2); - lar[7] = decode_log_area(bitstream_read(bc, 3), 29708, (1 << 12) - 1144 * 2); + lar[0] = decode_log_area(get_bits(gb, 6), 13107, 1 << 15); + lar[1] = decode_log_area(get_bits(gb, 6), 13107, 1 << 15); + lar[2] = decode_log_area(get_bits(gb, 5), 13107, (1 << 14) + 2048*2); + lar[3] = decode_log_area(get_bits(gb, 5), 13107, (1 << 14) - 2560*2); + lar[4] = decode_log_area(get_bits(gb, 4), 19223, (1 << 13) + 94*2); + lar[5] = decode_log_area(get_bits(gb, 4), 17476, (1 << 13) - 1792*2); + lar[6] = decode_log_area(get_bits(gb, 3), 31454, (1 << 12) - 341*2); + lar[7] = decode_log_area(get_bits(gb, 3), 29708, (1 << 12) - 1144*2); for (i = 0; i < 4; i++) { - int lag = bitstream_read(bc, 7); - int gain_idx = bitstream_read(bc, 2); - int offset = bitstream_read(bc, 2); + int lag = get_bits(gb, 7); + int gain_idx = get_bits(gb, 2); + int offset = get_bits(gb, 2); lag = av_clip(lag, 40, 120); long_term_synth(ref_dst, lag, gain_idx); - apcm_dequant_add(bc, ref_dst + offset, ff_gsm_apcm_bits[mode][i]); + apcm_dequant_add(gb, ref_dst + offset, ff_gsm_apcm_bits[mode][i]); ref_dst += 40; } memcpy(ctx->ref_buf, ctx->ref_buf + 160, 120 * sizeof(*ctx->ref_buf)); |