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

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

Issue 10834071: Add unittest for H264BitReader. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Add empty line between common and specific headers. 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "testing/gtest/include/gtest/gtest.h"
6
7 #include "content/common/gpu/media/h264_bit_reader.h"
8
9 using content::H264BitReader;
10
11 TEST(H264BitReaderTest, ReadStreamWithoutEscapeAndTrailingZeroBytes) {
12 H264BitReader reader;
13 const unsigned char rbsp[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xa0};
14 int dummy = 0;
15
16 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
17
18 EXPECT_TRUE(reader.ReadBits(1, &dummy));
19 EXPECT_EQ(dummy, 0x00);
20 EXPECT_EQ(reader.NumBitsLeft(), 47);
21 EXPECT_TRUE(reader.HasMoreRBSPData());
22
23 EXPECT_TRUE(reader.ReadBits(8, &dummy));
24 EXPECT_EQ(dummy, 0x02);
25 EXPECT_EQ(reader.NumBitsLeft(), 39);
26 EXPECT_TRUE(reader.HasMoreRBSPData());
27
28 EXPECT_TRUE(reader.ReadBits(31, &dummy));
29 EXPECT_EQ(dummy, 0x23456789);
30 EXPECT_EQ(reader.NumBitsLeft(), 8);
31 EXPECT_TRUE(reader.HasMoreRBSPData());
32
33 EXPECT_TRUE(reader.ReadBits(1, &dummy));
34 EXPECT_EQ(dummy, 1);
35 EXPECT_EQ(reader.NumBitsLeft(), 7);
36 EXPECT_TRUE(reader.HasMoreRBSPData());
37
38 EXPECT_TRUE(reader.ReadBits(1, &dummy));
39 EXPECT_EQ(dummy, 0);
40 EXPECT_EQ(reader.NumBitsLeft(), 6);
41 EXPECT_FALSE(reader.HasMoreRBSPData());
42 }
43
44 TEST(H264BitReaderTest, EmptyStream) {
45 H264BitReader reader;
46 const unsigned char rbsp[] = {0x80, 0x00, 0x00};
47
48 EXPECT_FALSE(reader.Initialize(rbsp, 0));
49 EXPECT_FALSE(reader.Initialize(rbsp, 1));
Pawel Osciak 2012/08/01 02:04:37 Why should this be false?
Ami GONE FROM CHROMIUM 2012/09/01 13:32:45 How did this test ever pass?? AFAICT from this CL
50 EXPECT_FALSE(reader.Initialize(rbsp, sizeof(rbsp)));
Pawel Osciak 2012/08/01 02:04:37 And this?
51 }
52
53 TEST(H264BitReaderTest, SingleByteStream) {
54 H264BitReader reader;
55 const unsigned char rbsp[] = {0x18};
56 int dummy = 0;
57
58 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
59 EXPECT_EQ(reader.NumBitsLeft(), 8);
60 EXPECT_TRUE(reader.HasMoreRBSPData());
61
62 EXPECT_TRUE(reader.ReadBits(4, &dummy));
63 EXPECT_EQ(dummy, 0x01);
64 EXPECT_EQ(reader.NumBitsLeft(), 4);
65 EXPECT_FALSE(reader.HasMoreRBSPData());
66 }
67
68 TEST(H264BitReaderTest, StopBitOccupyFullByte) {
69 H264BitReader reader;
70 const unsigned char rbsp[] = {0xab, 0x80};
71 int dummy = 0;
72
73 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
74 EXPECT_EQ(reader.NumBitsLeft(), 16);
75 EXPECT_TRUE(reader.HasMoreRBSPData());
76
77 EXPECT_TRUE(reader.ReadBits(8, &dummy));
78 EXPECT_EQ(dummy, 0xab);
79 EXPECT_EQ(reader.NumBitsLeft(), 8);
80 EXPECT_FALSE(reader.HasMoreRBSPData());
81 }
82
83 TEST(H264BitReaderTest, ReadFailure) {
84 H264BitReader reader;
85 const unsigned char rbsp[] = {0x18};
86 int dummy = 0;
87
88 EXPECT_TRUE(reader.Initialize(rbsp, 1));
89 EXPECT_FALSE(reader.ReadBits(5, &dummy));
90 }
91
92 TEST(H264BitReaderTest, MalformedStream) {
93 const unsigned char rbsp[] = {0x00, 0x00, 0x03, 0x00, 0x00};
94 H264BitReader reader;
95
96 EXPECT_FALSE(reader.Initialize(rbsp, 1));
97 EXPECT_FALSE(reader.Initialize(rbsp, sizeof(rbsp)));
98 }
99
100 TEST(H264BitReaderTest, EscapeSequence) {
101 H264BitReader reader;
102 const unsigned char rbsp[] =
103 {0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x03};
104 int dummy = 0;
105
106 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
107
108 EXPECT_TRUE(reader.ReadBits(8, &dummy));
109 EXPECT_EQ(dummy, 0x00);
110 EXPECT_EQ(reader.NumBitsLeft(), 80);
111 EXPECT_TRUE(reader.HasMoreRBSPData());
112
113 EXPECT_TRUE(reader.ReadBits(24, &dummy));
114 EXPECT_EQ(dummy, 0x00);
115 EXPECT_EQ(reader.NumBitsLeft(), 48);
116 EXPECT_TRUE(reader.HasMoreRBSPData());
117
118 EXPECT_TRUE(reader.ReadBits(15, &dummy));
119 EXPECT_EQ(dummy, 0x01);
120 EXPECT_EQ(reader.NumBitsLeft(), 25);
121 EXPECT_FALSE(reader.HasMoreRBSPData());
Pawel Osciak 2012/08/01 02:04:37 This I'm assuming is where the current parser woul
122 }
123
124 TEST(H264BitReaderTest, NonEscapeFollowedByStopBit) {
125 H264BitReader reader;
126 const unsigned char rbsp[] = {0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00};
127 int dummy = 0;
128
129 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
130 EXPECT_TRUE(reader.ReadBits(23, &dummy));
131 EXPECT_EQ(dummy, 0x03);
132 EXPECT_EQ(reader.NumBitsLeft(), 33);
133 EXPECT_FALSE(reader.HasMoreRBSPData());
Pawel Osciak 2012/08/01 02:04:37 And here.
134 }
135
136 TEST(H264BitReaderTest, TrailingZero) {
137 H264BitReader reader;
138 const unsigned char rbsp[] = {0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00};
139 int dummy = 0;
140
141 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
142 EXPECT_TRUE(reader.ReadBits(8, &dummy));
143 EXPECT_EQ(dummy, 0x01);
144 EXPECT_TRUE(reader.HasMoreRBSPData());
145 EXPECT_TRUE(reader.ReadBits(15, &dummy));
146 EXPECT_EQ(dummy, 0x01);
147 EXPECT_FALSE(reader.HasMoreRBSPData());
Pawel Osciak 2012/08/01 02:04:37 Here as well.
148 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698