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

Side by Side Diff: content/common/gpu/media/h264_bit_reader_unittest.cc

Issue 10837058: Make H264BitReader ignore trailing zero bytes and stop bit. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Address CR comments. Created 8 years, 4 months 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 unified diff | Download patch
OLDNEW
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 "testing/gtest/include/gtest/gtest.h" 5 #include "testing/gtest/include/gtest/gtest.h"
6 6
7 #include "content/common/gpu/media/h264_bit_reader.h" 7 #include "content/common/gpu/media/h264_bit_reader.h"
8 8
9 using content::H264BitReader; 9 using content::H264BitReader;
10 10
11 TEST(H264BitReaderTest, ReadStreamWithoutEscapeAndTrailingZeroBytes) { 11 TEST(H264BitReaderTest, ReadStreamWithoutEscapeAndTrailingZeroBytes) {
12 H264BitReader reader; 12 H264BitReader reader;
13 const unsigned char rbsp[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xa0}; 13 const unsigned char rbsp[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xa0};
14 int dummy = 0; 14 int dummy = 0;
15 15
16 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp))); 16 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
17 17
18 EXPECT_TRUE(reader.ReadBits(1, &dummy)); 18 EXPECT_TRUE(reader.ReadBits(1, &dummy));
19 EXPECT_EQ(dummy, 0x00); 19 EXPECT_EQ(dummy, 0x00);
20 EXPECT_EQ(reader.NumBitsLeft(), 47); 20 EXPECT_EQ(reader.NumBitsLeft(), 47);
21 EXPECT_TRUE(reader.HasMoreRBSPData());
22 21
23 EXPECT_TRUE(reader.ReadBits(8, &dummy)); 22 EXPECT_TRUE(reader.ReadBits(8, &dummy));
24 EXPECT_EQ(dummy, 0x02); 23 EXPECT_EQ(dummy, 0x02);
25 EXPECT_EQ(reader.NumBitsLeft(), 39); 24 EXPECT_EQ(reader.NumBitsLeft(), 39);
26 EXPECT_TRUE(reader.HasMoreRBSPData());
27 25
28 EXPECT_TRUE(reader.ReadBits(31, &dummy)); 26 EXPECT_TRUE(reader.ReadBits(31, &dummy));
29 EXPECT_EQ(dummy, 0x23456789); 27 EXPECT_EQ(dummy, 0x23456789);
30 EXPECT_EQ(reader.NumBitsLeft(), 8); 28 EXPECT_EQ(reader.NumBitsLeft(), 8);
31 EXPECT_TRUE(reader.HasMoreRBSPData());
32 29
33 EXPECT_TRUE(reader.ReadBits(1, &dummy)); 30 EXPECT_TRUE(reader.ReadBits(1, &dummy));
34 EXPECT_EQ(dummy, 1); 31 EXPECT_EQ(dummy, 1);
35 EXPECT_EQ(reader.NumBitsLeft(), 7); 32 EXPECT_EQ(reader.NumBitsLeft(), 7);
36 EXPECT_TRUE(reader.HasMoreRBSPData());
37 33
38 EXPECT_TRUE(reader.ReadBits(1, &dummy)); 34 EXPECT_TRUE(reader.ReadBits(1, &dummy));
39 EXPECT_EQ(dummy, 0); 35 EXPECT_EQ(dummy, 0);
40 EXPECT_EQ(reader.NumBitsLeft(), 6); 36 EXPECT_EQ(reader.NumBitsLeft(), 6);
41 EXPECT_FALSE(reader.HasMoreRBSPData());
42 } 37 }
43 38
44 TEST(H264BitReaderTest, EmptyStream) { 39 TEST(H264BitReaderTest, EmptyStream) {
45 H264BitReader reader; 40 H264BitReader reader;
46 const unsigned char rbsp[] = {0x80, 0x00, 0x00}; 41 const unsigned char rbsp[] = {0x80, 0x00, 0x00};
47 42
48 EXPECT_FALSE(reader.Initialize(rbsp, 0)); 43 EXPECT_FALSE(reader.Initialize(rbsp, 0));
49 EXPECT_FALSE(reader.Initialize(rbsp, 1)); 44 EXPECT_FALSE(reader.Initialize(rbsp, 1));
50 EXPECT_FALSE(reader.Initialize(rbsp, sizeof(rbsp))); 45 EXPECT_FALSE(reader.Initialize(rbsp, sizeof(rbsp)));
51 } 46 }
52 47
53 TEST(H264BitReaderTest, SingleByteStream) { 48 TEST(H264BitReaderTest, SingleByteStream) {
54 H264BitReader reader; 49 H264BitReader reader;
55 const unsigned char rbsp[] = {0x18}; 50 const unsigned char rbsp[] = {0x18};
56 int dummy = 0; 51 int dummy = 0;
57 52
58 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp))); 53 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
59 EXPECT_EQ(reader.NumBitsLeft(), 8); 54 EXPECT_EQ(reader.NumBitsLeft(), 8);
60 EXPECT_TRUE(reader.HasMoreRBSPData());
61 55
62 EXPECT_TRUE(reader.ReadBits(4, &dummy)); 56 EXPECT_TRUE(reader.ReadBits(4, &dummy));
63 EXPECT_EQ(dummy, 0x01); 57 EXPECT_EQ(dummy, 0x01);
64 EXPECT_EQ(reader.NumBitsLeft(), 4); 58 EXPECT_EQ(reader.NumBitsLeft(), 4);
65 EXPECT_FALSE(reader.HasMoreRBSPData());
66 } 59 }
67 60
68 TEST(H264BitReaderTest, StopBitOccupyFullByte) { 61 TEST(H264BitReaderTest, StopBitOccupyFullByte) {
69 H264BitReader reader; 62 H264BitReader reader;
70 const unsigned char rbsp[] = {0xab, 0x80}; 63 const unsigned char rbsp[] = {0xab, 0x80};
71 int dummy = 0; 64 int dummy = 0;
72 65
73 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp))); 66 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
74 EXPECT_EQ(reader.NumBitsLeft(), 16); 67 EXPECT_EQ(reader.NumBitsLeft(), 16);
75 EXPECT_TRUE(reader.HasMoreRBSPData());
76 68
77 EXPECT_TRUE(reader.ReadBits(8, &dummy)); 69 EXPECT_TRUE(reader.ReadBits(8, &dummy));
78 EXPECT_EQ(dummy, 0xab); 70 EXPECT_EQ(dummy, 0xab);
79 EXPECT_EQ(reader.NumBitsLeft(), 8); 71 EXPECT_EQ(reader.NumBitsLeft(), 8);
80 EXPECT_FALSE(reader.HasMoreRBSPData());
81 } 72 }
82 73
83 TEST(H264BitReaderTest, ReadFailure) { 74 TEST(H264BitReaderTest, ReadFailure) {
84 H264BitReader reader; 75 H264BitReader reader;
85 const unsigned char rbsp[] = {0x18}; 76 const unsigned char rbsp[] = {0x18};
86 int dummy = 0; 77 int dummy = 0;
87 78
88 EXPECT_TRUE(reader.Initialize(rbsp, 1)); 79 EXPECT_TRUE(reader.Initialize(rbsp, 1));
89 EXPECT_FALSE(reader.ReadBits(5, &dummy)); 80 EXPECT_FALSE(reader.ReadBits(5, &dummy));
90 } 81 }
(...skipping 10 matching lines...) Expand all
101 H264BitReader reader; 92 H264BitReader reader;
102 const unsigned char rbsp[] = 93 const unsigned char rbsp[] =
103 {0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x03}; 94 {0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x03};
104 int dummy = 0; 95 int dummy = 0;
105 96
106 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp))); 97 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
107 98
108 EXPECT_TRUE(reader.ReadBits(8, &dummy)); 99 EXPECT_TRUE(reader.ReadBits(8, &dummy));
109 EXPECT_EQ(dummy, 0x00); 100 EXPECT_EQ(dummy, 0x00);
110 EXPECT_EQ(reader.NumBitsLeft(), 80); 101 EXPECT_EQ(reader.NumBitsLeft(), 80);
111 EXPECT_TRUE(reader.HasMoreRBSPData());
112 102
113 EXPECT_TRUE(reader.ReadBits(24, &dummy)); 103 EXPECT_TRUE(reader.ReadBits(24, &dummy));
114 EXPECT_EQ(dummy, 0x00); 104 EXPECT_EQ(dummy, 0x00);
115 EXPECT_EQ(reader.NumBitsLeft(), 48); 105 EXPECT_EQ(reader.NumBitsLeft(), 48);
116 EXPECT_TRUE(reader.HasMoreRBSPData());
117 106
118 EXPECT_TRUE(reader.ReadBits(15, &dummy)); 107 EXPECT_TRUE(reader.ReadBits(15, &dummy));
119 EXPECT_EQ(dummy, 0x01); 108 EXPECT_EQ(dummy, 0x01);
120 EXPECT_EQ(reader.NumBitsLeft(), 25); 109 EXPECT_EQ(reader.NumBitsLeft(), 25);
121 EXPECT_FALSE(reader.HasMoreRBSPData());
122 } 110 }
123 111
124 TEST(H264BitReaderTest, NonEscapeFollowedByStopBit) { 112 TEST(H264BitReaderTest, NonEscapeFollowedByStopBit) {
125 H264BitReader reader; 113 H264BitReader reader;
126 const unsigned char rbsp[] = {0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00}; 114 const unsigned char rbsp[] = {0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00};
127 int dummy = 0; 115 int dummy = 0;
128 116
129 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp))); 117 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
130 EXPECT_TRUE(reader.ReadBits(23, &dummy)); 118 EXPECT_TRUE(reader.ReadBits(23, &dummy));
131 EXPECT_EQ(dummy, 0x03); 119 EXPECT_EQ(dummy, 0x03);
132 EXPECT_EQ(reader.NumBitsLeft(), 33); 120 EXPECT_EQ(reader.NumBitsLeft(), 33);
133 EXPECT_FALSE(reader.HasMoreRBSPData());
134 } 121 }
135 122
136 TEST(H264BitReaderTest, TrailingZero) { 123 TEST(H264BitReaderTest, TrailingZero) {
137 H264BitReader reader; 124 H264BitReader reader;
138 const unsigned char rbsp[] = {0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00}; 125 const unsigned char rbsp[] = {0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00};
139 int dummy = 0; 126 int dummy = 0;
140 127
141 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp))); 128 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
142 EXPECT_TRUE(reader.ReadBits(8, &dummy)); 129 EXPECT_TRUE(reader.ReadBits(8, &dummy));
143 EXPECT_EQ(dummy, 0x01); 130 EXPECT_EQ(dummy, 0x01);
144 EXPECT_TRUE(reader.HasMoreRBSPData());
145 EXPECT_TRUE(reader.ReadBits(15, &dummy)); 131 EXPECT_TRUE(reader.ReadBits(15, &dummy));
146 EXPECT_EQ(dummy, 0x01); 132 EXPECT_EQ(dummy, 0x01);
147 EXPECT_FALSE(reader.HasMoreRBSPData());
148 } 133 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698