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

Side by Side Diff: media/base/bit_reader_h264_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: Add unit test for the removal of the emulation prevention byte. Created 6 years, 12 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 "media/base/bit_reader_h264.h"
6
5 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
6 8
7 #include "content/common/gpu/media/h264_bit_reader.h" 9 namespace media {
8 10
9 using content::H264BitReader; 11 TEST(BitReaderH264Test, ReadStreamWithoutEscapeAndTrailingZeroBytes) {
10
11 TEST(H264BitReaderTest, ReadStreamWithoutEscapeAndTrailingZeroBytes) {
12 H264BitReader reader;
13 const unsigned char rbsp[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xa0}; 12 const unsigned char rbsp[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xa0};
14 int dummy = 0; 13 int dummy = 0;
15 14 BitReaderH264 reader(rbsp, sizeof(rbsp));
16 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
17 15
18 EXPECT_TRUE(reader.ReadBits(1, &dummy)); 16 EXPECT_TRUE(reader.ReadBits(1, &dummy));
19 EXPECT_EQ(dummy, 0x00); 17 EXPECT_EQ(dummy, 0x00);
20 EXPECT_EQ(reader.NumBitsLeft(), 47); 18 EXPECT_EQ(reader.NumBitsLeft(), 47);
21 EXPECT_TRUE(reader.HasMoreRBSPData()); 19 EXPECT_TRUE(reader.HasMoreRBSPData());
22 20
23 EXPECT_TRUE(reader.ReadBits(8, &dummy)); 21 EXPECT_TRUE(reader.ReadBits(8, &dummy));
24 EXPECT_EQ(dummy, 0x02); 22 EXPECT_EQ(dummy, 0x02);
25 EXPECT_EQ(reader.NumBitsLeft(), 39); 23 EXPECT_EQ(reader.NumBitsLeft(), 39);
26 EXPECT_TRUE(reader.HasMoreRBSPData()); 24 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()); 29 EXPECT_TRUE(reader.HasMoreRBSPData());
32 30
33 EXPECT_TRUE(reader.ReadBits(1, &dummy)); 31 EXPECT_TRUE(reader.ReadBits(1, &dummy));
34 EXPECT_EQ(dummy, 1); 32 EXPECT_EQ(dummy, 1);
35 EXPECT_EQ(reader.NumBitsLeft(), 7); 33 EXPECT_EQ(reader.NumBitsLeft(), 7);
36 EXPECT_TRUE(reader.HasMoreRBSPData()); 34 EXPECT_TRUE(reader.HasMoreRBSPData());
37 35
38 EXPECT_TRUE(reader.ReadBits(1, &dummy)); 36 EXPECT_TRUE(reader.ReadBits(1, &dummy));
39 EXPECT_EQ(dummy, 0); 37 EXPECT_EQ(dummy, 0);
40 EXPECT_EQ(reader.NumBitsLeft(), 6); 38 EXPECT_EQ(reader.NumBitsLeft(), 6);
41 EXPECT_FALSE(reader.HasMoreRBSPData()); 39 EXPECT_FALSE(reader.HasMoreRBSPData());
42 } 40 }
43 41
44 TEST(H264BitReaderTest, SingleByteStream) { 42 TEST(BitReaderH264Test, SingleByteStream) {
45 H264BitReader reader;
46 const unsigned char rbsp[] = {0x18}; 43 const unsigned char rbsp[] = {0x18};
47 int dummy = 0; 44 int dummy = 0;
45 BitReaderH264 reader(rbsp, sizeof(rbsp));
48 46
49 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
50 EXPECT_EQ(reader.NumBitsLeft(), 8); 47 EXPECT_EQ(reader.NumBitsLeft(), 8);
51 EXPECT_TRUE(reader.HasMoreRBSPData()); 48 EXPECT_TRUE(reader.HasMoreRBSPData());
52 49
53 EXPECT_TRUE(reader.ReadBits(4, &dummy)); 50 EXPECT_TRUE(reader.ReadBits(4, &dummy));
54 EXPECT_EQ(dummy, 0x01); 51 EXPECT_EQ(dummy, 0x01);
55 EXPECT_EQ(reader.NumBitsLeft(), 4); 52 EXPECT_EQ(reader.NumBitsLeft(), 4);
56 EXPECT_FALSE(reader.HasMoreRBSPData()); 53 EXPECT_FALSE(reader.HasMoreRBSPData());
57 } 54 }
58 55
59 TEST(H264BitReaderTest, StopBitOccupyFullByte) { 56 TEST(BitReaderH264Test, StopBitOccupyFullByte) {
60 H264BitReader reader;
61 const unsigned char rbsp[] = {0xab, 0x80}; 57 const unsigned char rbsp[] = {0xab, 0x80};
62 int dummy = 0; 58 int dummy = 0;
59 BitReaderH264 reader(rbsp, sizeof(rbsp));
63 60
64 EXPECT_TRUE(reader.Initialize(rbsp, sizeof(rbsp)));
65 EXPECT_EQ(reader.NumBitsLeft(), 16); 61 EXPECT_EQ(reader.NumBitsLeft(), 16);
66 EXPECT_TRUE(reader.HasMoreRBSPData()); 62 EXPECT_TRUE(reader.HasMoreRBSPData());
67 63
68 EXPECT_TRUE(reader.ReadBits(8, &dummy)); 64 EXPECT_TRUE(reader.ReadBits(8, &dummy));
69 EXPECT_EQ(dummy, 0xab); 65 EXPECT_EQ(dummy, 0xab);
70 EXPECT_EQ(reader.NumBitsLeft(), 8); 66 EXPECT_EQ(reader.NumBitsLeft(), 8);
71 EXPECT_FALSE(reader.HasMoreRBSPData()); 67 EXPECT_FALSE(reader.HasMoreRBSPData());
72 } 68 }
69
70 TEST(BitReaderH264Test, EmulationPreventionByte) {
71 const unsigned char rbsp[] = {0xac, 0x00, 0x00, 0x03, 0x01, 0x03, 0xdc};
72 int dummy = 0;
73 BitReaderH264 reader(rbsp, sizeof(rbsp));
74
75 EXPECT_TRUE(reader.ReadBits(4, &dummy));
76 EXPECT_EQ(dummy, 0xa);
77 EXPECT_TRUE(reader.ReadBits(4, &dummy));
78 EXPECT_EQ(dummy, 0xc);
79 EXPECT_TRUE(reader.ReadBits(4, &dummy));
80 EXPECT_EQ(dummy, 0x0);
81 EXPECT_TRUE(reader.ReadBits(4, &dummy));
82 EXPECT_EQ(dummy, 0x0);
83 EXPECT_TRUE(reader.ReadBits(4, &dummy));
84 EXPECT_EQ(dummy, 0x0);
85 EXPECT_TRUE(reader.ReadBits(4, &dummy));
86 EXPECT_EQ(dummy, 0x0);
87 EXPECT_TRUE(reader.ReadBits(4, &dummy));
88 EXPECT_EQ(dummy, 0x0);
89 EXPECT_TRUE(reader.ReadBits(4, &dummy));
90 EXPECT_EQ(dummy, 0x1);
91
92 EXPECT_TRUE(reader.ReadBits(4, &dummy));
93 EXPECT_EQ(dummy, 0x0);
94 EXPECT_TRUE(reader.ReadBits(4, &dummy));
95 EXPECT_EQ(dummy, 0x3);
96 EXPECT_TRUE(reader.ReadBits(4, &dummy));
97 EXPECT_EQ(dummy, 0xd);
98 EXPECT_TRUE(reader.ReadBits(4, &dummy));
99 EXPECT_EQ(dummy, 0xc);
100 }
101
102 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698