Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Unified Diff: media/base/bit_reader_unittest.cc

Issue 112343011: Split the bit reader functionalities from the byte stream provider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Import the H264BitReader unit tests. Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/bit_reader_unittest.cc
diff --git a/media/base/bit_reader_unittest.cc b/media/base/bit_reader_unittest.cc
index 3dca9c632da77b509e432ff708e38a14d386f712..f3e92b0919e6ad1a727667563e86b4112d21b844 100644
--- a/media/base/bit_reader_unittest.cc
+++ b/media/base/bit_reader_unittest.cc
@@ -64,4 +64,63 @@ TEST(BitReaderTest, SkipBitsTest) {
EXPECT_FALSE(reader1.SkipBits(1));
}
+TEST(BitReaderTest, H264ReadStreamWithoutEscapeAndTrailingZeroBytes) {
+ const unsigned char rbsp[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xa0};
+ int dummy = 0;
+ BitReader reader(rbsp, sizeof(rbsp), true);
+
+ EXPECT_TRUE(reader.ReadBits(1, &dummy));
+ EXPECT_EQ(dummy, 0x00);
+ EXPECT_EQ(reader.bits_available(), 47);
+ EXPECT_TRUE(reader.HasMoreRBSPData());
+
+ EXPECT_TRUE(reader.ReadBits(8, &dummy));
+ EXPECT_EQ(dummy, 0x02);
+ EXPECT_EQ(reader.bits_available(), 39);
+ EXPECT_TRUE(reader.HasMoreRBSPData());
+
+ EXPECT_TRUE(reader.ReadBits(31, &dummy));
+ EXPECT_EQ(dummy, 0x23456789);
+ EXPECT_EQ(reader.bits_available(), 8);
+ EXPECT_TRUE(reader.HasMoreRBSPData());
+
+ EXPECT_TRUE(reader.ReadBits(1, &dummy));
+ EXPECT_EQ(dummy, 1);
+ EXPECT_EQ(reader.bits_available(), 7);
+ EXPECT_TRUE(reader.HasMoreRBSPData());
+
+ EXPECT_TRUE(reader.ReadBits(1, &dummy));
+ EXPECT_EQ(dummy, 0);
+ EXPECT_EQ(reader.bits_available(), 6);
+ EXPECT_FALSE(reader.HasMoreRBSPData());
+}
+
+TEST(BitReaderTest, H264SingleByteStream) {
+ const unsigned char rbsp[] = {0x18};
+ int dummy = 0;
+ BitReader reader(rbsp, sizeof(rbsp), true);
+
+ EXPECT_EQ(reader.bits_available(), 8);
+ EXPECT_TRUE(reader.HasMoreRBSPData());
+
+ EXPECT_TRUE(reader.ReadBits(4, &dummy));
+ EXPECT_EQ(dummy, 0x01);
+ EXPECT_EQ(reader.bits_available(), 4);
+ EXPECT_FALSE(reader.HasMoreRBSPData());
+}
+
+TEST(BitReaderTest, H264StopBitOccupyFullByte) {
+ const unsigned char rbsp[] = {0xab, 0x80};
+ int dummy = 0;
+ BitReader reader(rbsp, sizeof(rbsp), true);
+
+ EXPECT_EQ(reader.bits_available(), 16);
+ EXPECT_TRUE(reader.HasMoreRBSPData());
+
+ EXPECT_TRUE(reader.ReadBits(8, &dummy));
+ EXPECT_EQ(dummy, 0xab);
+ EXPECT_EQ(reader.bits_available(), 8);
+ EXPECT_FALSE(reader.HasMoreRBSPData());
+}
+
} // namespace media
« media/base/bit_reader.cc ('K') | « media/base/bit_reader_core.cc ('k') | media/media.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698