[FFmpeg-cvslog] lagarith: Convert to the new bitstream reader

Alexandra Hájková git at videolan.org
Sun Apr 9 16:09:07 EEST 2017


ffmpeg | branch: master | Alexandra Hájková <alexandra at khirnov.net> | Sun Apr 10 20:05:32 2016 +0200| [6fad5abcadd4373dc8ba900491a5a3c1a91851e4] | committer: Diego Biurrun

lagarith: Convert to the new bitstream reader

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6fad5abcadd4373dc8ba900491a5a3c1a91851e4
---

 libavcodec/lagarith.c    | 22 +++++++++++-----------
 libavcodec/lagarithrac.c | 12 ++++++------
 libavcodec/lagarithrac.h |  6 ++++--
 3 files changed, 21 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..7441dc7e83 100644
--- a/libavcodec/lagarithrac.c
+++ b/libavcodec/lagarithrac.c
@@ -27,20 +27,20 @@
  * @author David Conrad
  */
 
-#include "get_bits.h"
+#include "bitstream.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..3b30b15e12 100644
--- a/libavcodec/lagarithrac.h
+++ b/libavcodec/lagarithrac.h
@@ -31,10 +31,12 @@
 #define AVCODEC_LAGARITHRAC_H
 
 #include <stdint.h>
+
 #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 +53,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)



More information about the ffmpeg-cvslog mailing list