Index: media/filters/vp9_raw_bits_reader.cc |
diff --git a/media/filters/vp9_raw_bits_reader.cc b/media/filters/vp9_raw_bits_reader.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a3d7353b90c412bc097af580a53b7204e823599c |
--- /dev/null |
+++ b/media/filters/vp9_raw_bits_reader.cc |
@@ -0,0 +1,48 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "media/filters/vp9_raw_bits_reader.h" |
+ |
+#include <limits.h> |
+ |
+#include "base/logging.h" |
+#include "media/base/bit_reader.h" |
+ |
+namespace media { |
+ |
+Vp9RawBitsReader::Vp9RawBitsReader() : out_of_buffer_(false) {} |
+ |
+Vp9RawBitsReader::~Vp9RawBitsReader() {} |
+ |
+void Vp9RawBitsReader::Initialize(const uint8_t* data, size_t size) { |
+ DCHECK(data); |
+ reader_.reset(new BitReader(data, size)); |
+ out_of_buffer_ = false; |
+} |
+ |
+int Vp9RawBitsReader::ReadBit() { |
+ DCHECK(reader_); |
+ int value = 0; |
+ out_of_buffer_ = !reader_->ReadBits(1, &value); |
+ return value; |
+} |
+ |
+int Vp9RawBitsReader::ReadLiteral(int bits) { |
+ DCHECK(reader_); |
+ int value = 0; |
+ out_of_buffer_ = !reader_->ReadBits(bits, &value); |
Owen Lin
2015/08/01 11:35:37
Use out_of_buffer |= !reader_->ReadBits ...
It loo
Pawel Osciak
2015/08/02 10:46:11
Good idea, and you could also instead of out_of_bu
kcwu
2015/08/03 07:10:13
Done.
|
+ return value; |
+} |
+ |
+int Vp9RawBitsReader::ReadSignedLiteral(int bits) { |
+ int value = ReadLiteral(bits); |
+ return ReadBit() ? -value : value; |
+} |
+ |
+size_t Vp9RawBitsReader::GetBytesRead() const { |
+ DCHECK(reader_); |
+ return (reader_->bits_read() + 7) / 8; |
+} |
+ |
+} // namespace media |