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

Side by Side Diff: media/mp4/box_reader_unittest.cc

Issue 11471006: Log MediaSource parsing errors to the MediaLog so they can appear in chrome:media-internals. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nit. Created 8 years 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 | Annotate | Revision Log
« no previous file with comments | « media/mp4/box_reader.cc ('k') | media/mp4/mp4_stream_parser.h » ('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 <string.h> 5 #include <string.h>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "media/mp4/box_reader.h" 10 #include "media/mp4/box_reader.h"
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 protected: 79 protected:
80 std::vector<uint8> GetBuf() { 80 std::vector<uint8> GetBuf() {
81 return std::vector<uint8>(kSkipBox, kSkipBox + sizeof(kSkipBox)); 81 return std::vector<uint8>(kSkipBox, kSkipBox + sizeof(kSkipBox));
82 } 82 }
83 }; 83 };
84 84
85 TEST_F(BoxReaderTest, ExpectedOperationTest) { 85 TEST_F(BoxReaderTest, ExpectedOperationTest) {
86 std::vector<uint8> buf = GetBuf(); 86 std::vector<uint8> buf = GetBuf();
87 bool err; 87 bool err;
88 scoped_ptr<BoxReader> reader( 88 scoped_ptr<BoxReader> reader(
89 BoxReader::ReadTopLevelBox(&buf[0], buf.size(), &err)); 89 BoxReader::ReadTopLevelBox(&buf[0], buf.size(), LogCB(), &err));
90 EXPECT_FALSE(err); 90 EXPECT_FALSE(err);
91 EXPECT_TRUE(reader.get()); 91 EXPECT_TRUE(reader.get());
92 92
93 SkipBox box; 93 SkipBox box;
94 EXPECT_TRUE(box.Parse(reader.get())); 94 EXPECT_TRUE(box.Parse(reader.get()));
95 EXPECT_EQ(0x01, reader->version()); 95 EXPECT_EQ(0x01, reader->version());
96 EXPECT_EQ(0x020304u, reader->flags()); 96 EXPECT_EQ(0x020304u, reader->flags());
97 EXPECT_EQ(0x05, box.a); 97 EXPECT_EQ(0x05, box.a);
98 EXPECT_EQ(0x06, box.b); 98 EXPECT_EQ(0x06, box.b);
99 EXPECT_EQ(0x0708, box.c); 99 EXPECT_EQ(0x0708, box.c);
100 EXPECT_EQ(static_cast<int32>(0xf90a0b0c), box.d); 100 EXPECT_EQ(static_cast<int32>(0xf90a0b0c), box.d);
101 EXPECT_EQ(static_cast<int32>(0xfd0e0f10), box.e); 101 EXPECT_EQ(static_cast<int32>(0xfd0e0f10), box.e);
102 102
103 EXPECT_EQ(2u, box.kids.size()); 103 EXPECT_EQ(2u, box.kids.size());
104 EXPECT_EQ(0xdeadbeef, box.kids[0].val); 104 EXPECT_EQ(0xdeadbeef, box.kids[0].val);
105 EXPECT_EQ(0xfacecafe, box.kids[1].val); 105 EXPECT_EQ(0xfacecafe, box.kids[1].val);
106 106
107 // Accounting for the extra byte outside of the box above 107 // Accounting for the extra byte outside of the box above
108 EXPECT_EQ(buf.size(), static_cast<uint64>(reader->size() + 1)); 108 EXPECT_EQ(buf.size(), static_cast<uint64>(reader->size() + 1));
109 } 109 }
110 110
111 TEST_F(BoxReaderTest, OuterTooShortTest) { 111 TEST_F(BoxReaderTest, OuterTooShortTest) {
112 std::vector<uint8> buf = GetBuf(); 112 std::vector<uint8> buf = GetBuf();
113 bool err; 113 bool err;
114 114
115 // Create a soft failure by truncating the outer box. 115 // Create a soft failure by truncating the outer box.
116 scoped_ptr<BoxReader> r( 116 scoped_ptr<BoxReader> r(
117 BoxReader::ReadTopLevelBox(&buf[0], buf.size() - 2, &err)); 117 BoxReader::ReadTopLevelBox(&buf[0], buf.size() - 2, LogCB(), &err));
118 118
119 EXPECT_FALSE(err); 119 EXPECT_FALSE(err);
120 EXPECT_FALSE(r.get()); 120 EXPECT_FALSE(r.get());
121 } 121 }
122 122
123 TEST_F(BoxReaderTest, InnerTooLongTest) { 123 TEST_F(BoxReaderTest, InnerTooLongTest) {
124 std::vector<uint8> buf = GetBuf(); 124 std::vector<uint8> buf = GetBuf();
125 bool err; 125 bool err;
126 126
127 // Make an inner box too big for its outer box. 127 // Make an inner box too big for its outer box.
128 buf[25] = 1; 128 buf[25] = 1;
129 scoped_ptr<BoxReader> reader( 129 scoped_ptr<BoxReader> reader(
130 BoxReader::ReadTopLevelBox(&buf[0], buf.size(), &err)); 130 BoxReader::ReadTopLevelBox(&buf[0], buf.size(), LogCB(), &err));
131 131
132 SkipBox box; 132 SkipBox box;
133 EXPECT_FALSE(box.Parse(reader.get())); 133 EXPECT_FALSE(box.Parse(reader.get()));
134 } 134 }
135 135
136 TEST_F(BoxReaderTest, WrongFourCCTest) { 136 TEST_F(BoxReaderTest, WrongFourCCTest) {
137 std::vector<uint8> buf = GetBuf(); 137 std::vector<uint8> buf = GetBuf();
138 bool err; 138 bool err;
139 139
140 // Set an unrecognized top-level FourCC. 140 // Set an unrecognized top-level FourCC.
141 buf[5] = 1; 141 buf[5] = 1;
142 scoped_ptr<BoxReader> reader( 142 scoped_ptr<BoxReader> reader(
143 BoxReader::ReadTopLevelBox(&buf[0], buf.size(), &err)); 143 BoxReader::ReadTopLevelBox(&buf[0], buf.size(), LogCB(), &err));
144 EXPECT_FALSE(reader.get()); 144 EXPECT_FALSE(reader.get());
145 EXPECT_TRUE(err); 145 EXPECT_TRUE(err);
146 } 146 }
147 147
148 TEST_F(BoxReaderTest, ScanChildrenTest) { 148 TEST_F(BoxReaderTest, ScanChildrenTest) {
149 std::vector<uint8> buf = GetBuf(); 149 std::vector<uint8> buf = GetBuf();
150 bool err; 150 bool err;
151 scoped_ptr<BoxReader> reader( 151 scoped_ptr<BoxReader> reader(
152 BoxReader::ReadTopLevelBox(&buf[0], buf.size(), &err)); 152 BoxReader::ReadTopLevelBox(&buf[0], buf.size(), LogCB(), &err));
153 153
154 EXPECT_TRUE(reader->SkipBytes(16) && reader->ScanChildren()); 154 EXPECT_TRUE(reader->SkipBytes(16) && reader->ScanChildren());
155 155
156 FreeBox free; 156 FreeBox free;
157 EXPECT_TRUE(reader->ReadChild(&free)); 157 EXPECT_TRUE(reader->ReadChild(&free));
158 EXPECT_FALSE(reader->ReadChild(&free)); 158 EXPECT_FALSE(reader->ReadChild(&free));
159 EXPECT_TRUE(reader->MaybeReadChild(&free)); 159 EXPECT_TRUE(reader->MaybeReadChild(&free));
160 160
161 std::vector<PsshBox> kids; 161 std::vector<PsshBox> kids;
162 162
163 EXPECT_TRUE(reader->ReadChildren(&kids)); 163 EXPECT_TRUE(reader->ReadChildren(&kids));
164 EXPECT_EQ(2u, kids.size()); 164 EXPECT_EQ(2u, kids.size());
165 kids.clear(); 165 kids.clear();
166 EXPECT_FALSE(reader->ReadChildren(&kids)); 166 EXPECT_FALSE(reader->ReadChildren(&kids));
167 EXPECT_TRUE(reader->MaybeReadChildren(&kids)); 167 EXPECT_TRUE(reader->MaybeReadChildren(&kids));
168 } 168 }
169 169
170 TEST_F(BoxReaderTest, ReadAllChildrenTest) { 170 TEST_F(BoxReaderTest, ReadAllChildrenTest) {
171 std::vector<uint8> buf = GetBuf(); 171 std::vector<uint8> buf = GetBuf();
172 // Modify buffer to exclude its last 'free' box 172 // Modify buffer to exclude its last 'free' box
173 buf[3] = 0x38; 173 buf[3] = 0x38;
174 bool err; 174 bool err;
175 scoped_ptr<BoxReader> reader( 175 scoped_ptr<BoxReader> reader(
176 BoxReader::ReadTopLevelBox(&buf[0], buf.size(), &err)); 176 BoxReader::ReadTopLevelBox(&buf[0], buf.size(), LogCB(), &err));
177 177
178 std::vector<PsshBox> kids; 178 std::vector<PsshBox> kids;
179 EXPECT_TRUE(reader->SkipBytes(16) && reader->ReadAllChildren(&kids)); 179 EXPECT_TRUE(reader->SkipBytes(16) && reader->ReadAllChildren(&kids));
180 EXPECT_EQ(2u, kids.size()); 180 EXPECT_EQ(2u, kids.size());
181 EXPECT_EQ(kids[0].val, 0xdeadbeef); // Ensure order is preserved 181 EXPECT_EQ(kids[0].val, 0xdeadbeef); // Ensure order is preserved
182 } 182 }
183 183
184 } // namespace mp4 184 } // namespace mp4
185 } // namespace media 185 } // namespace media
OLDNEW
« no previous file with comments | « media/mp4/box_reader.cc ('k') | media/mp4/mp4_stream_parser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698