vl/vlc: add remove bits function
authorChristian König <christian.koenig@amd.com>
Tue, 17 Sep 2013 13:22:34 +0000 (07:22 -0600)
committerChristian König <christian.koenig@amd.com>
Thu, 6 Feb 2014 15:16:33 +0000 (16:16 +0100)
Signed-off-by: Christian König <christian.koenig@amd.com>
src/gallium/auxiliary/vl/vl_vlc.h

index 451fd5edb789b6f66a9ed3770cdb64d2e6b2716c..401b50e2563347cbc161ba7e184b7e2bb0f8d077 100644 (file)
@@ -338,4 +338,16 @@ vl_vlc_search_byte(struct vl_vlc *vlc, unsigned num_bits, uint8_t value)
    }
 }
 
+/**
+ * remove num_bits bits starting at pos from the bitbuffer
+ */
+static INLINE void
+vl_vlc_removebits(struct vl_vlc *vlc, unsigned pos, unsigned num_bits)
+{
+   uint64_t lo = (vlc->buffer & (~0UL >> (pos + num_bits))) << num_bits;
+   uint64_t hi = (vlc->buffer & (~0UL << (64 - pos)));
+   vlc->buffer = lo | hi;
+   vlc->invalid_bits += num_bits;
+}
+
 #endif /* vl_vlc_h */