OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/base/bit_reader.h" | 5 #include "media/base/bit_reader.h" |
6 | 6 |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 | 8 |
9 namespace media { | 9 namespace media { |
10 | 10 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 EXPECT_TRUE(reader1.ReadBits(8, &value8)); | 57 EXPECT_TRUE(reader1.ReadBits(8, &value8)); |
58 EXPECT_EQ(value8, 3); | 58 EXPECT_EQ(value8, 3); |
59 EXPECT_TRUE(reader1.SkipBits(76)); | 59 EXPECT_TRUE(reader1.SkipBits(76)); |
60 EXPECT_TRUE(reader1.ReadBits(4, &value8)); | 60 EXPECT_TRUE(reader1.ReadBits(4, &value8)); |
61 EXPECT_EQ(value8, 13); | 61 EXPECT_EQ(value8, 13); |
62 EXPECT_FALSE(reader1.SkipBits(100)); | 62 EXPECT_FALSE(reader1.SkipBits(100)); |
63 EXPECT_TRUE(reader1.SkipBits(0)); | 63 EXPECT_TRUE(reader1.SkipBits(0)); |
64 EXPECT_FALSE(reader1.SkipBits(1)); | 64 EXPECT_FALSE(reader1.SkipBits(1)); |
65 } | 65 } |
66 | 66 |
| 67 TEST(BitReaderTest, H264ReadStreamWithoutEscapeAndTrailingZeroBytes) { |
| 68 const unsigned char rbsp[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xa0}; |
| 69 int dummy = 0; |
| 70 BitReader reader(rbsp, sizeof(rbsp), true); |
| 71 |
| 72 EXPECT_TRUE(reader.ReadBits(1, &dummy)); |
| 73 EXPECT_EQ(dummy, 0x00); |
| 74 EXPECT_EQ(reader.bits_available(), 47); |
| 75 EXPECT_TRUE(reader.HasMoreRBSPData()); |
| 76 |
| 77 EXPECT_TRUE(reader.ReadBits(8, &dummy)); |
| 78 EXPECT_EQ(dummy, 0x02); |
| 79 EXPECT_EQ(reader.bits_available(), 39); |
| 80 EXPECT_TRUE(reader.HasMoreRBSPData()); |
| 81 |
| 82 EXPECT_TRUE(reader.ReadBits(31, &dummy)); |
| 83 EXPECT_EQ(dummy, 0x23456789); |
| 84 EXPECT_EQ(reader.bits_available(), 8); |
| 85 EXPECT_TRUE(reader.HasMoreRBSPData()); |
| 86 |
| 87 EXPECT_TRUE(reader.ReadBits(1, &dummy)); |
| 88 EXPECT_EQ(dummy, 1); |
| 89 EXPECT_EQ(reader.bits_available(), 7); |
| 90 EXPECT_TRUE(reader.HasMoreRBSPData()); |
| 91 |
| 92 EXPECT_TRUE(reader.ReadBits(1, &dummy)); |
| 93 EXPECT_EQ(dummy, 0); |
| 94 EXPECT_EQ(reader.bits_available(), 6); |
| 95 EXPECT_FALSE(reader.HasMoreRBSPData()); |
| 96 } |
| 97 |
| 98 TEST(BitReaderTest, H264SingleByteStream) { |
| 99 const unsigned char rbsp[] = {0x18}; |
| 100 int dummy = 0; |
| 101 BitReader reader(rbsp, sizeof(rbsp), true); |
| 102 |
| 103 EXPECT_EQ(reader.bits_available(), 8); |
| 104 EXPECT_TRUE(reader.HasMoreRBSPData()); |
| 105 |
| 106 EXPECT_TRUE(reader.ReadBits(4, &dummy)); |
| 107 EXPECT_EQ(dummy, 0x01); |
| 108 EXPECT_EQ(reader.bits_available(), 4); |
| 109 EXPECT_FALSE(reader.HasMoreRBSPData()); |
| 110 } |
| 111 |
| 112 TEST(BitReaderTest, H264StopBitOccupyFullByte) { |
| 113 const unsigned char rbsp[] = {0xab, 0x80}; |
| 114 int dummy = 0; |
| 115 BitReader reader(rbsp, sizeof(rbsp), true); |
| 116 |
| 117 EXPECT_EQ(reader.bits_available(), 16); |
| 118 EXPECT_TRUE(reader.HasMoreRBSPData()); |
| 119 |
| 120 EXPECT_TRUE(reader.ReadBits(8, &dummy)); |
| 121 EXPECT_EQ(dummy, 0xab); |
| 122 EXPECT_EQ(reader.bits_available(), 8); |
| 123 EXPECT_FALSE(reader.HasMoreRBSPData()); |
| 124 } |
| 125 |
67 } // namespace media | 126 } // namespace media |
OLD | NEW |