summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandra Hájková <alexandra@khirnov.net>2016-04-10 20:05:32 +0200
committerAlexandra Hájková <alexandra@khirnov.net>2016-05-22 16:47:58 +0200
commit12c07b9d6d7d0ab995d851b02344027ea75b7dc5 (patch)
tree8a5bdbe8f9179c202c677e1543ca7e0c8be7b528
parent491adf1086b6b90faae7f91ac292264b1ce0d13d (diff)
lagarith: convert to the new bitstream reader
-rw-r--r--libavcodec/lagarith.c22
-rw-r--r--libavcodec/lagarithrac.c11
-rw-r--r--libavcodec/lagarithrac.h4
3 files changed, 18 insertions, 19 deletions
diff --git a/libavcodec/lagarith.c b/libavcodec/lagarith.c
index 55e10bce55..d9667b7afc 100644
--- a/libavcodec/lagarith.c
+++ b/libavcodec/lagarith.c
@@ -28,7 +28,7 @@
#include <inttypes.h>
#include "avcodec.h"
-#include "get_bits.h"
+#include "bitstream.h"
#include "mathops.h"
#include "huffyuvdsp.h"
#include "lagarithrac.h"
@@ -101,7 +101,7 @@ static uint8_t lag_calc_zero_run(int8_t x)
return (x << 1) ^ (x >> 7);
}
-static int lag_decode_prob(GetBitContext *gb, uint32_t *value)
+static int lag_decode_prob(BitstreamContext *bc, uint32_t *value)
{
static const uint8_t series[] = { 1, 2, 3, 5, 8, 13, 21 };
int i;
@@ -114,7 +114,7 @@ static int lag_decode_prob(GetBitContext *gb, uint32_t *value)
if (prevbit && bit)
break;
prevbit = bit;
- bit = get_bits1(gb);
+ bit = bitstream_read_bit(bc);
if (bit && !prevbit)
bits += series[i];
}
@@ -127,7 +127,7 @@ static int lag_decode_prob(GetBitContext *gb, uint32_t *value)
return 0;
}
- val = get_bits_long(gb, bits);
+ val = bitstream_read(bc, bits);
val |= 1 << bits;
*value = val - 1;
@@ -135,7 +135,7 @@ static int lag_decode_prob(GetBitContext *gb, uint32_t *value)
return 0;
}
-static int lag_read_prob_header(lag_rac *rac, GetBitContext *gb)
+static int lag_read_prob_header(lag_rac *rac, BitstreamContext *bc)
{
int i, j, scale_factor;
unsigned prob, cumulative_target;
@@ -146,7 +146,7 @@ static int lag_read_prob_header(lag_rac *rac, GetBitContext *gb)
rac->prob[257] = UINT_MAX;
/* Read probabilities from bitstream */
for (i = 1; i < 257; i++) {
- if (lag_decode_prob(gb, &rac->prob[i]) < 0) {
+ if (lag_decode_prob(bc, &rac->prob[i]) < 0) {
av_log(rac->avctx, AV_LOG_ERROR, "Invalid probability encountered.\n");
return -1;
}
@@ -156,7 +156,7 @@ static int lag_read_prob_header(lag_rac *rac, GetBitContext *gb)
}
cumul_prob += rac->prob[i];
if (!rac->prob[i]) {
- if (lag_decode_prob(gb, &prob)) {
+ if (lag_decode_prob(bc, &prob)) {
av_log(rac->avctx, AV_LOG_ERROR, "Invalid probability run encountered.\n");
return -1;
}
@@ -422,7 +422,7 @@ static int lag_decode_arith_plane(LagarithContext *l, uint8_t *dst,
uint32_t length;
uint32_t offset = 1;
int esc_count = src[0];
- GetBitContext gb;
+ BitstreamContext bc;
lag_rac rac;
const uint8_t *src_end = src + src_size;
@@ -436,12 +436,12 @@ static int lag_decode_arith_plane(LagarithContext *l, uint8_t *dst,
offset += 4;
}
- init_get_bits(&gb, src + offset, src_size * 8);
+ bitstream_init(&bc, src + offset, src_size * 8);
- if (lag_read_prob_header(&rac, &gb) < 0)
+ if (lag_read_prob_header(&rac, &bc) < 0)
return -1;
- ff_lag_rac_init(&rac, &gb, length - stride);
+ ff_lag_rac_init(&rac, &bc, length - stride);
for (i = 0; i < height; i++)
read += lag_decode_line(l, &rac, dst + (i * stride), width,
diff --git a/libavcodec/lagarithrac.c b/libavcodec/lagarithrac.c
index f9e4e5c928..2bc88a92a9 100644
--- a/libavcodec/lagarithrac.c
+++ b/libavcodec/lagarithrac.c
@@ -27,20 +27,19 @@
* @author David Conrad
*/
-#include "get_bits.h"
#include "lagarithrac.h"
-void ff_lag_rac_init(lag_rac *l, GetBitContext *gb, int length)
+void ff_lag_rac_init(lag_rac *l, BitstreamContext *bc, int length)
{
int i, j, left;
/* According to reference decoder "1st byte is garbage",
- * however, it gets skipped by the call to align_get_bits()
+ * however, it gets skipped by the call to bitstream_align()
*/
- align_get_bits(gb);
- left = get_bits_left(gb) >> 3;
+ bitstream_align(bc);
+ left = bitstream_bits_left(bc) >> 3;
l->bytestream_start =
- l->bytestream = gb->buffer + get_bits_count(gb) / 8;
+ l->bytestream = bc->buffer + bitstream_tell(bc) / 8;
l->bytestream_end = l->bytestream_start + FFMIN(length, left);
l->range = 0x80;
diff --git a/libavcodec/lagarithrac.h b/libavcodec/lagarithrac.h
index e4f066e445..9b482a00fb 100644
--- a/libavcodec/lagarithrac.h
+++ b/libavcodec/lagarithrac.h
@@ -34,7 +34,7 @@
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
-#include "get_bits.h"
+#include "bitstream.h"
typedef struct lag_rac {
AVCodecContext *avctx;
@@ -51,7 +51,7 @@ typedef struct lag_rac {
uint8_t range_hash[256]; /**< Hash table mapping upper byte to approximate symbol. */
} lag_rac;
-void ff_lag_rac_init(lag_rac *l, GetBitContext *gb, int length);
+void ff_lag_rac_init(lag_rac *l, BitstreamContext *bc, int length);
/* TODO: Optimize */
static inline void lag_rac_refill(lag_rac *l)