summaryrefslogtreecommitdiff
path: root/vp9/decoder/vp9_read_bit_buffer.h
diff options
context:
space:
mode:
authorDmitry Kovalev <dkovalev@google.com>2013-05-24 13:43:19 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2013-05-24 13:43:19 -0700
commit0b2b81249b5f9874aa62d5d1e7be9da7d5864a85 (patch)
treeacab7a2da41fdf919e527d4ab6b6a660080d1d69 /vp9/decoder/vp9_read_bit_buffer.h
parentd09302779137db3cb315d433192d3d10fdbb046e (diff)
parentdf037b615fcc0196386977faae060fdfd9a887a8 (diff)
downloadlibvpx-0b2b81249b5f9874aa62d5d1e7be9da7d5864a85.tar
libvpx-0b2b81249b5f9874aa62d5d1e7be9da7d5864a85.tar.gz
libvpx-0b2b81249b5f9874aa62d5d1e7be9da7d5864a85.tar.bz2
libvpx-0b2b81249b5f9874aa62d5d1e7be9da7d5864a85.zip
Merge "Adding API to read/write uncompressed frame header bits." into experimental
Diffstat (limited to 'vp9/decoder/vp9_read_bit_buffer.h')
-rw-r--r--vp9/decoder/vp9_read_bit_buffer.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/vp9/decoder/vp9_read_bit_buffer.h b/vp9/decoder/vp9_read_bit_buffer.h
new file mode 100644
index 000000000..7141722f3
--- /dev/null
+++ b/vp9/decoder/vp9_read_bit_buffer.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef VP9_READ_BIT_BUFFER_
+#define VP9_READ_BIT_BUFFER_
+
+struct vp9_read_bit_buffer {
+ const uint8_t *const bit_buffer;
+ size_t bit_offset;
+};
+
+static int vp9_rb_read_bit(struct vp9_read_bit_buffer *rb) {
+ const int off = rb->bit_offset;
+ const int p = off / CHAR_BIT;
+ const int q = /*CHAR_BIT - 1 -*/ off % CHAR_BIT;
+ const int bit = (rb->bit_buffer[p] & (1 << q)) >> q;
+ rb->bit_offset = off + 1;
+ return bit;
+}
+
+static int vp9_rb_read_literal(struct vp9_read_bit_buffer *rb, int bits) {
+ int value = 0, bit;
+ for (bit = bits - 1; bit >= 0; bit--)
+ value |= vp9_rb_read_bit(rb) << bit;
+ return value;
+}
+
+#endif // VP9_READ_BIT_BUFFER_