[FFmpeg-cvslog] g72x: Convert to the new bitstream reader
Alexandra Hájková
git at videolan.org
Mon Apr 3 21:38:40 EEST 2017
ffmpeg | branch: master | Alexandra Hájková <alexandra at khirnov.net> | Mon Apr 18 10:38:43 2016 +0200| [2188d53906015ea5dd5b2e446f8e5374beacbffe] | committer: Anton Khirnov
g72x: Convert to the new bitstream reader
Signed-off-by: Anton Khirnov <anton at khirnov.net>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2188d53906015ea5dd5b2e446f8e5374beacbffe
---
libavcodec/g722dec.c | 13 ++++-----
libavcodec/g723_1dec.c | 72 +++++++++++++++++++++++++-------------------------
libavcodec/g726.c | 11 ++++----
3 files changed, 49 insertions(+), 47 deletions(-)
diff --git a/libavcodec/g722dec.c b/libavcodec/g722dec.c
index c4c0ec8..bfd4b42 100644
--- a/libavcodec/g722dec.c
+++ b/libavcodec/g722dec.c
@@ -36,8 +36,9 @@
#include "libavutil/channel_layout.h"
#include "libavutil/opt.h"
+
#include "avcodec.h"
-#include "get_bits.h"
+#include "bitstream.h"
#include "g722.h"
#include "internal.h"
@@ -92,7 +93,7 @@ static int g722_decode_frame(AVCodecContext *avctx, void *data,
int j, ret;
const int skip = 8 - c->bits_per_codeword;
const int16_t *quantizer_table = low_inv_quants[skip];
- GetBitContext gb;
+ BitstreamContext bc;
/* get output buffer */
frame->nb_samples = avpkt->size * 2;
@@ -102,15 +103,15 @@ static int g722_decode_frame(AVCodecContext *avctx, void *data,
}
out_buf = (int16_t *)frame->data[0];
- init_get_bits(&gb, avpkt->data, avpkt->size * 8);
+ bitstream_init(&bc, avpkt->data, avpkt->size * 8);
for (j = 0; j < avpkt->size; j++) {
int ilow, ihigh, rlow, rhigh, dhigh;
int xout[2];
- ihigh = get_bits(&gb, 2);
- ilow = get_bits(&gb, 6 - skip);
- skip_bits(&gb, skip);
+ ihigh = bitstream_read(&bc, 2);
+ ilow = bitstream_read(&bc, 6 - skip);
+ bitstream_skip(&bc, skip);
rlow = av_clip_intp2((c->band[0].scale_factor * quantizer_table[ilow] >> 10)
+ c->band[0].s_predictor, 14);
diff --git a/libavcodec/g723_1dec.c b/libavcodec/g723_1dec.c
index f50bed1..2ea3bbf 100644
--- a/libavcodec/g723_1dec.c
+++ b/libavcodec/g723_1dec.c
@@ -32,8 +32,8 @@
#define BITSTREAM_READER_LE
#include "acelp_vectors.h"
#include "avcodec.h"
+#include "bitstream.h"
#include "celp_filters.h"
-#include "get_bits.h"
#include "internal.h"
#include "g723_1.h"
@@ -68,14 +68,14 @@ static av_cold int g723_1_decode_init(AVCodecContext *avctx)
static int unpack_bitstream(G723_1_Context *p, const uint8_t *buf,
int buf_size)
{
- GetBitContext gb;
+ BitstreamContext bc;
int ad_cb_len;
int temp, info_bits, i;
- init_get_bits(&gb, buf, buf_size * 8);
+ bitstream_init(&bc, buf, buf_size * 8);
/* Extract frame type and rate info */
- info_bits = get_bits(&gb, 2);
+ info_bits = bitstream_read(&bc, 2);
if (info_bits == 3) {
p->cur_frame_type = UNTRANSMITTED_FRAME;
@@ -83,13 +83,13 @@ static int unpack_bitstream(G723_1_Context *p, const uint8_t *buf,
}
/* Extract 24 bit lsp indices, 8 bit for each band */
- p->lsp_index[2] = get_bits(&gb, 8);
- p->lsp_index[1] = get_bits(&gb, 8);
- p->lsp_index[0] = get_bits(&gb, 8);
+ p->lsp_index[2] = bitstream_read(&bc, 8);
+ p->lsp_index[1] = bitstream_read(&bc, 8);
+ p->lsp_index[0] = bitstream_read(&bc, 8);
if (info_bits == 2) {
p->cur_frame_type = SID_FRAME;
- p->subframe[0].amp_index = get_bits(&gb, 6);
+ p->subframe[0].amp_index = bitstream_read(&bc, 6);
return 0;
}
@@ -97,23 +97,23 @@ static int unpack_bitstream(G723_1_Context *p, const uint8_t *buf,
p->cur_rate = info_bits ? RATE_5300 : RATE_6300;
p->cur_frame_type = ACTIVE_FRAME;
- p->pitch_lag[0] = get_bits(&gb, 7);
+ p->pitch_lag[0] = bitstream_read(&bc, 7);
if (p->pitch_lag[0] > 123) /* test if forbidden code */
return -1;
p->pitch_lag[0] += PITCH_MIN;
- p->subframe[1].ad_cb_lag = get_bits(&gb, 2);
+ p->subframe[1].ad_cb_lag = bitstream_read(&bc, 2);
- p->pitch_lag[1] = get_bits(&gb, 7);
+ p->pitch_lag[1] = bitstream_read(&bc, 7);
if (p->pitch_lag[1] > 123)
return -1;
p->pitch_lag[1] += PITCH_MIN;
- p->subframe[3].ad_cb_lag = get_bits(&gb, 2);
+ p->subframe[3].ad_cb_lag = bitstream_read(&bc, 2);
p->subframe[0].ad_cb_lag = 1;
p->subframe[2].ad_cb_lag = 1;
for (i = 0; i < SUBFRAMES; i++) {
/* Extract combined gain */
- temp = get_bits(&gb, 12);
+ temp = bitstream_read(&bc, 12);
ad_cb_len = 170;
p->subframe[i].dirac_train = 0;
if (p->cur_rate == RATE_6300 && p->pitch_lag[i >> 1] < SUBFRAME_LEN - 2) {
@@ -130,16 +130,16 @@ static int unpack_bitstream(G723_1_Context *p, const uint8_t *buf,
}
}
- p->subframe[0].grid_index = get_bits(&gb, 1);
- p->subframe[1].grid_index = get_bits(&gb, 1);
- p->subframe[2].grid_index = get_bits(&gb, 1);
- p->subframe[3].grid_index = get_bits(&gb, 1);
+ p->subframe[0].grid_index = bitstream_read(&bc, 1);
+ p->subframe[1].grid_index = bitstream_read(&bc, 1);
+ p->subframe[2].grid_index = bitstream_read(&bc, 1);
+ p->subframe[3].grid_index = bitstream_read(&bc, 1);
if (p->cur_rate == RATE_6300) {
- skip_bits(&gb, 1); /* skip reserved bit */
+ bitstream_skip(&bc, 1); /* skip reserved bit */
/* Compute pulse_pos index using the 13-bit combined position index */
- temp = get_bits(&gb, 13);
+ temp = bitstream_read(&bc, 13);
p->subframe[0].pulse_pos = temp / 810;
temp -= p->subframe[0].pulse_pos * 810;
@@ -150,28 +150,28 @@ static int unpack_bitstream(G723_1_Context *p, const uint8_t *buf,
p->subframe[3].pulse_pos = temp - p->subframe[2].pulse_pos * 9;
p->subframe[0].pulse_pos = (p->subframe[0].pulse_pos << 16) +
- get_bits(&gb, 16);
+ bitstream_read(&bc, 16);
p->subframe[1].pulse_pos = (p->subframe[1].pulse_pos << 14) +
- get_bits(&gb, 14);
+ bitstream_read(&bc, 14);
p->subframe[2].pulse_pos = (p->subframe[2].pulse_pos << 16) +
- get_bits(&gb, 16);
+ bitstream_read(&bc, 16);
p->subframe[3].pulse_pos = (p->subframe[3].pulse_pos << 14) +
- get_bits(&gb, 14);
+ bitstream_read(&bc, 14);
- p->subframe[0].pulse_sign = get_bits(&gb, 6);
- p->subframe[1].pulse_sign = get_bits(&gb, 5);
- p->subframe[2].pulse_sign = get_bits(&gb, 6);
- p->subframe[3].pulse_sign = get_bits(&gb, 5);
+ p->subframe[0].pulse_sign = bitstream_read(&bc, 6);
+ p->subframe[1].pulse_sign = bitstream_read(&bc, 5);
+ p->subframe[2].pulse_sign = bitstream_read(&bc, 6);
+ p->subframe[3].pulse_sign = bitstream_read(&bc, 5);
} else { /* 5300 bps */
- p->subframe[0].pulse_pos = get_bits(&gb, 12);
- p->subframe[1].pulse_pos = get_bits(&gb, 12);
- p->subframe[2].pulse_pos = get_bits(&gb, 12);
- p->subframe[3].pulse_pos = get_bits(&gb, 12);
-
- p->subframe[0].pulse_sign = get_bits(&gb, 4);
- p->subframe[1].pulse_sign = get_bits(&gb, 4);
- p->subframe[2].pulse_sign = get_bits(&gb, 4);
- p->subframe[3].pulse_sign = get_bits(&gb, 4);
+ p->subframe[0].pulse_pos = bitstream_read(&bc, 12);
+ p->subframe[1].pulse_pos = bitstream_read(&bc, 12);
+ p->subframe[2].pulse_pos = bitstream_read(&bc, 12);
+ p->subframe[3].pulse_pos = bitstream_read(&bc, 12);
+
+ p->subframe[0].pulse_sign = bitstream_read(&bc, 4);
+ p->subframe[1].pulse_sign = bitstream_read(&bc, 4);
+ p->subframe[2].pulse_sign = bitstream_read(&bc, 4);
+ p->subframe[3].pulse_sign = bitstream_read(&bc, 4);
}
return 0;
diff --git a/libavcodec/g726.c b/libavcodec/g726.c
index e783e74..007cdb6 100644
--- a/libavcodec/g726.c
+++ b/libavcodec/g726.c
@@ -25,9 +25,10 @@
#include "libavutil/channel_layout.h"
#include "libavutil/opt.h"
+
#include "avcodec.h"
+#include "bitstream.h"
#include "internal.h"
-#include "get_bits.h"
#include "put_bits.h"
/**
@@ -429,7 +430,7 @@ static int g726_decode_frame(AVCodecContext *avctx, void *data,
int buf_size = avpkt->size;
G726Context *c = avctx->priv_data;
int16_t *samples;
- GetBitContext gb;
+ BitstreamContext bc;
int out_samples, ret;
out_samples = buf_size * 8 / c->code_size;
@@ -442,12 +443,12 @@ static int g726_decode_frame(AVCodecContext *avctx, void *data,
}
samples = (int16_t *)frame->data[0];
- init_get_bits(&gb, buf, buf_size * 8);
+ bitstream_init(&bc, buf, buf_size * 8);
while (out_samples--)
- *samples++ = g726_decode(c, get_bits(&gb, c->code_size));
+ *samples++ = g726_decode(c, bitstream_read(&bc, c->code_size));
- if (get_bits_left(&gb) > 0)
+ if (bitstream_bits_left(&bc) > 0)
av_log(avctx, AV_LOG_ERROR, "Frame invalidly split, missing parser?\n");
*got_frame_ptr = 1;
More information about the ffmpeg-cvslog
mailing list