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

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: Add back tests after merge from master. Created 8 years, 3 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
« no previous file with comments | « content/common/gpu/media/h264_bit_reader.cc ('k') | content/common/gpu/media/h264_parser.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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()); 37 }
38
39 TEST(H264BitReaderTest, EmptyStream) {
40 H264BitReader reader;
41 const unsigned char rbsp[] = {0x80, 0x00, 0x00};
42
43 EXPECT_FALSE(reader.Initialize(rbsp, 0));
44 EXPECT_FALSE(reader.Initialize(rbsp, 1));
45 EXPECT_FALSE(reader.Initialize(rbsp, sizeof(rbsp)));
42 } 46 }
43 47
44 TEST(H264BitReaderTest, SingleByteStream) { 48 TEST(H264BitReaderTest, SingleByteStream) {
45 H264BitReader reader; 49 H264BitReader reader;
46 const unsigned char rbsp[] = {0x18}; 50 const unsigned char rbsp[] = {0x18};
47 int dummy = 0; 51 int dummy = 0;
48 52
49 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp))); 53 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
50 EXPECT_EQ(reader.NumBitsLeft(), 8); 54 EXPECT_EQ(reader.NumBitsLeft(), 8);
51 EXPECT_TRUE(reader.HasMoreRBSPData());
52 55
53 EXPECT_TRUE(reader.ReadBits(4, &dummy)); 56 EXPECT_TRUE(reader.ReadBits(4, &dummy));
54 EXPECT_EQ(dummy, 0x01); 57 EXPECT_EQ(dummy, 0x01);
55 EXPECT_EQ(reader.NumBitsLeft(), 4); 58 EXPECT_EQ(reader.NumBitsLeft(), 4);
56 EXPECT_FALSE(reader.HasMoreRBSPData());
57 } 59 }
58 60
59 TEST(H264BitReaderTest, StopBitOccupyFullByte) { 61 TEST(H264BitReaderTest, StopBitOccupyFullByte) {
60 H264BitReader reader; 62 H264BitReader reader;
61 const unsigned char rbsp[] = {0xab, 0x80}; 63 const unsigned char rbsp[] = {0xab, 0x80};
62 int dummy = 0; 64 int dummy = 0;
63 65
64 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp))); 66 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
65 EXPECT_EQ(reader.NumBitsLeft(), 16); 67 EXPECT_EQ(reader.NumBitsLeft(), 16);
66 EXPECT_TRUE(reader.HasMoreRBSPData());
67 68
68 EXPECT_TRUE(reader.ReadBits(8, &dummy)); 69 EXPECT_TRUE(reader.ReadBits(8, &dummy));
69 EXPECT_EQ(dummy, 0xab); 70 EXPECT_EQ(dummy, 0xab);
70 EXPECT_EQ(reader.NumBitsLeft(), 8); 71 EXPECT_EQ(reader.NumBitsLeft(), 8);
71 EXPECT_FALSE(reader.HasMoreRBSPData());
72 } 72 }
73
74 TEST(H264BitReaderTest, ReadFailure) {
75 H264BitReader reader;
76 const unsigned char rbsp[] = {0x18};
77 int dummy = 0;
78
79 EXPECT_TRUE(reader.Initialize(rbsp, 1));
80 EXPECT_FALSE(reader.ReadBits(5, &dummy));
81 }
82
83 TEST(H264BitReaderTest, MalformedStream) {
84 const unsigned char rbsp[] = {0x00, 0x00, 0x03, 0x00, 0x00};
85 H264BitReader reader;
86
87 EXPECT_FALSE(reader.Initialize(rbsp, 1));
88 EXPECT_FALSE(reader.Initialize(rbsp, sizeof(rbsp)));
89 }
90
91 TEST(H264BitReaderTest, EscapeSequence) {
92 H264BitReader reader;
93 const unsigned char rbsp[] =
94 {0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x03};
95 int dummy = 0;
96
97 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
98
99 EXPECT_TRUE(reader.ReadBits(8, &dummy));
100 EXPECT_EQ(dummy, 0x00);
101 EXPECT_EQ(reader.NumBitsLeft(), 80);
102
103 EXPECT_TRUE(reader.ReadBits(24, &dummy));
104 EXPECT_EQ(dummy, 0x00);
105 EXPECT_EQ(reader.NumBitsLeft(), 48);
106
107 EXPECT_TRUE(reader.ReadBits(15, &dummy));
108 EXPECT_EQ(dummy, 0x01);
109 EXPECT_EQ(reader.NumBitsLeft(), 25);
110 }
111
112 TEST(H264BitReaderTest, NonEscapeFollowedByStopBit) {
113 H264BitReader reader;
114 const unsigned char rbsp[] = {0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00};
115 int dummy = 0;
116
117 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
118 EXPECT_TRUE(reader.ReadBits(23, &dummy));
119 EXPECT_EQ(dummy, 0x03);
120 EXPECT_EQ(reader.NumBitsLeft(), 33);
121 }
122
123 TEST(H264BitReaderTest, TrailingZero) {
124 H264BitReader reader;
125 const unsigned char rbsp[] = {0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00};
126 int dummy = 0;
127
128 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
129 EXPECT_TRUE(reader.ReadBits(8, &dummy));
130 EXPECT_EQ(dummy, 0x01);
131 EXPECT_TRUE(reader.ReadBits(15, &dummy));
132 EXPECT_EQ(dummy, 0x01);
133 }
OLDNEW
« no previous file with comments | « content/common/gpu/media/h264_bit_reader.cc ('k') | content/common/gpu/media/h264_parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698