From b2c56301f9458207cfd16c66dc2f3ce15a336651 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandra=20H=C3=A1jkov=C3=A1?= Date: Sun, 10 Apr 2016 11:34:09 +0200 Subject: [PATCH] gsm: Convert to the new bitstream reader Signed-off-by: Anton Khirnov --- libavcodec/gsmdec.c | 11 ++++++----- libavcodec/gsmdec_template.c | 34 +++++++++++++++++----------------- libavcodec/msgsmdec.c | 9 +++++---- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/libavcodec/gsmdec.c b/libavcodec/gsmdec.c index a333e58bdc..d727cf9ccf 100644 --- a/libavcodec/gsmdec.c +++ b/libavcodec/gsmdec.c @@ -25,8 +25,9 @@ */ #include "libavutil/channel_layout.h" + #include "avcodec.h" -#include "get_bits.h" +#include "bitstream.h" #include "internal.h" #include "msgsmdec.h" @@ -67,7 +68,7 @@ static int gsm_decode_frame(AVCodecContext *avctx, void *data, { AVFrame *frame = data; int res; - GetBitContext gb; + BitstreamContext bc; const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; int16_t *samples; @@ -87,10 +88,10 @@ static int gsm_decode_frame(AVCodecContext *avctx, void *data, switch (avctx->codec_id) { case AV_CODEC_ID_GSM: - init_get_bits(&gb, buf, buf_size * 8); - if (get_bits(&gb, 4) != 0xd) + bitstream_init(&bc, buf, buf_size * 8); + if (bitstream_read(&bc, 4) != 0xd) av_log(avctx, AV_LOG_WARNING, "Missing GSM magic!\n"); - res = gsm_decode_block(avctx, samples, &gb, GSM_13000); + res = gsm_decode_block(avctx, samples, &bc, GSM_13000); if (res < 0) return res; break; diff --git a/libavcodec/gsmdec_template.c b/libavcodec/gsmdec_template.c index 2794bd1132..7437908ae5 100644 --- a/libavcodec/gsmdec_template.c +++ b/libavcodec/gsmdec_template.c @@ -24,17 +24,17 @@ * GSM decoder */ -#include "get_bits.h" +#include "bitstream.h" #include "gsm.h" #include "gsmdec_data.h" -static void apcm_dequant_add(GetBitContext *gb, int16_t *dst, const int *frame_bits) +static void apcm_dequant_add(BitstreamContext *bc, int16_t *dst, const int *frame_bits) { int i, val; - int maxidx = get_bits(gb, 6); + int maxidx = bitstream_read(bc, 6); const int16_t *tab = ff_gsm_dequant_tab[maxidx]; for (i = 0; i < 13; i++) { - val = get_bits(gb, frame_bits[i]); + val = bitstream_read(bc, frame_bits[i]); dst[3 * i] += tab[ff_gsm_requant_tab[frame_bits[i]][val]]; } } @@ -120,28 +120,28 @@ static int postprocess(int16_t *data, int msr) } static int gsm_decode_block(AVCodecContext *avctx, int16_t *samples, - GetBitContext *gb, int mode) + BitstreamContext *bc, 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(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); + 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); for (i = 0; i < 4; i++) { - int lag = get_bits(gb, 7); - int gain_idx = get_bits(gb, 2); - int offset = get_bits(gb, 2); + int lag = bitstream_read(bc, 7); + int gain_idx = bitstream_read(bc, 2); + int offset = bitstream_read(bc, 2); lag = av_clip(lag, 40, 120); long_term_synth(ref_dst, lag, gain_idx); - apcm_dequant_add(gb, ref_dst + offset, ff_gsm_apcm_bits[mode][i]); + apcm_dequant_add(bc, 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)); diff --git a/libavcodec/msgsmdec.c b/libavcodec/msgsmdec.c index 92b5ae6be8..c26efa9fae 100644 --- a/libavcodec/msgsmdec.c +++ b/libavcodec/msgsmdec.c @@ -21,6 +21,7 @@ #define BITSTREAM_READER_LE #include "avcodec.h" +#include "bitstream.h" #include "gsm.h" #include "msgsmdec.h" @@ -30,10 +31,10 @@ int ff_msgsm_decode_block(AVCodecContext *avctx, int16_t *samples, const uint8_t *buf, int mode) { int res; - GetBitContext gb; - init_get_bits(&gb, buf, GSM_MS_BLOCK_SIZE * 8); - res = gsm_decode_block(avctx, samples, &gb, mode); + BitstreamContext bc; + bitstream_init(&bc, buf, GSM_MS_BLOCK_SIZE * 8); + res = gsm_decode_block(avctx, samples, &bc, mode); if (res < 0) return res; - return gsm_decode_block(avctx, samples + GSM_FRAME_SIZE, &gb, mode); + return gsm_decode_block(avctx, samples + GSM_FRAME_SIZE, &bc, mode); }