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

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

Issue 10832176: Add initial support for edit lists in MSE BMFF. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Counting? Who needs counting? 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 | Annotate | Revision Log
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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "media/mp4/box_definitions.h" 8 #include "media/mp4/box_definitions.h"
9 #include "media/mp4/rcheck.h" 9 #include "media/mp4/rcheck.h"
10 #include "media/mp4/track_run_iterator.h" 10 #include "media/mp4/track_run_iterator.h"
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 iter_.reset(new TrackRunIterator(&moov_)); 254 iter_.reset(new TrackRunIterator(&moov_));
255 MovieFragment moof = CreateFragment(); 255 MovieFragment moof = CreateFragment();
256 moof.tracks[0].decode_time.decode_time = kAudioScale; 256 moof.tracks[0].decode_time.decode_time = kAudioScale;
257 ASSERT_TRUE(iter_->Init(moof)); 257 ASSERT_TRUE(iter_->Init(moof));
258 EXPECT_EQ(TimeDeltaFromRational(moof.tracks[1].decode_time.decode_time, 258 EXPECT_EQ(TimeDeltaFromRational(moof.tracks[1].decode_time.decode_time,
259 kVideoScale), 259 kVideoScale),
260 iter_->GetMinDecodeTimestamp()); 260 iter_->GetMinDecodeTimestamp());
261 } 261 }
262 262
263 TEST_F(TrackRunIteratorTest, ReorderingTest) { 263 TEST_F(TrackRunIteratorTest, ReorderingTest) {
264 // Test frame reordering and edit list support. The frames have the following
265 // decode timestamps:
266 //
267 // 0ms 40ms 120ms 240ms
268 // | 0 | 1 - | 2 - - |
269 //
270 // ...and these composition timestamps, after edit list adjustment:
271 //
272 // 0ms 40ms 160ms 240ms
273 // | 0 | 2 - - | 1 - |
274 //
264 iter_.reset(new TrackRunIterator(&moov_)); 275 iter_.reset(new TrackRunIterator(&moov_));
276 EditListEntry entry;
acolwell GONE FROM CHROMIUM 2012/08/07 20:12:13 I don't really understand what is happening here.
strobe_ 2012/08/07 22:54:39 Done.
277 entry.segment_duration = 0;
278 entry.media_time = 2;
279 entry.media_rate_integer = 1;
280 entry.media_rate_fraction = 0;
281 moov_.tracks[1].edit.list.edits.push_back(entry);
265 MovieFragment moof = CreateFragment(); 282 MovieFragment moof = CreateFragment();
266 std::vector<int32>& cts_offsets = 283 std::vector<int32>& cts_offsets =
267 moof.tracks[1].runs[0].sample_composition_time_offsets; 284 moof.tracks[1].runs[0].sample_composition_time_offsets;
268 cts_offsets.resize(10); 285 cts_offsets.resize(10);
269 cts_offsets[0] = 2; 286 cts_offsets[0] = 2;
acolwell GONE FROM CHROMIUM 2012/08/07 20:12:13 Documenting these values would be nice as well. It
strobe_ 2012/08/07 22:54:39 Done.
270 cts_offsets[1] = -1; 287 cts_offsets[1] = 5;
288 cts_offsets[2] = 0;
271 moof.tracks[1].decode_time.decode_time = 0; 289 moof.tracks[1].decode_time.decode_time = 0;
272 ASSERT_TRUE(iter_->Init(moof)); 290 ASSERT_TRUE(iter_->Init(moof));
273 iter_->AdvanceRun(); 291 iter_->AdvanceRun();
274 EXPECT_EQ(iter_->dts(), TimeDeltaFromRational(0, kVideoScale)); 292 EXPECT_EQ(iter_->dts(), TimeDeltaFromRational(0, kVideoScale));
275 EXPECT_EQ(iter_->cts(), TimeDeltaFromRational(2, kVideoScale)); 293 EXPECT_EQ(iter_->cts(), TimeDeltaFromRational(0, kVideoScale));
276 EXPECT_EQ(iter_->duration(), TimeDeltaFromRational(1, kVideoScale)); 294 EXPECT_EQ(iter_->duration(), TimeDeltaFromRational(1, kVideoScale));
277 iter_->AdvanceSample(); 295 iter_->AdvanceSample();
278 EXPECT_EQ(iter_->dts(), TimeDeltaFromRational(1, kVideoScale)); 296 EXPECT_EQ(iter_->dts(), TimeDeltaFromRational(1, kVideoScale));
279 EXPECT_EQ(iter_->cts(), TimeDeltaFromRational(0, kVideoScale)); 297 EXPECT_EQ(iter_->cts(), TimeDeltaFromRational(4, kVideoScale));
280 EXPECT_EQ(iter_->duration(), TimeDeltaFromRational(2, kVideoScale)); 298 EXPECT_EQ(iter_->duration(), TimeDeltaFromRational(2, kVideoScale));
299 iter_->AdvanceSample();
300 EXPECT_EQ(iter_->dts(), TimeDeltaFromRational(3, kVideoScale));
301 EXPECT_EQ(iter_->cts(), TimeDeltaFromRational(1, kVideoScale));
302 EXPECT_EQ(iter_->duration(), TimeDeltaFromRational(3, kVideoScale));
281 } 303 }
282 304
283 TEST_F(TrackRunIteratorTest, IgnoreUnknownAuxInfoTest) { 305 TEST_F(TrackRunIteratorTest, IgnoreUnknownAuxInfoTest) {
284 iter_.reset(new TrackRunIterator(&moov_)); 306 iter_.reset(new TrackRunIterator(&moov_));
285 MovieFragment moof = CreateFragment(); 307 MovieFragment moof = CreateFragment();
286 moof.tracks[1].auxiliary_offset.offsets.push_back(50); 308 moof.tracks[1].auxiliary_offset.offsets.push_back(50);
287 moof.tracks[1].auxiliary_size.default_sample_info_size = 2; 309 moof.tracks[1].auxiliary_size.default_sample_info_size = 2;
288 moof.tracks[1].auxiliary_size.sample_count = 2; 310 moof.tracks[1].auxiliary_size.sample_count = 2;
289 moof.tracks[1].runs[0].sample_count = 2; 311 moof.tracks[1].runs[0].sample_count = 2;
290 ASSERT_TRUE(iter_->Init(moof)); 312 ASSERT_TRUE(iter_->Init(moof));
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 EXPECT_EQ(iter_->track_id(), 1u); 427 EXPECT_EQ(iter_->track_id(), 1u);
406 EXPECT_EQ(iter_->aux_info_offset(), 201); 428 EXPECT_EQ(iter_->aux_info_offset(), 201);
407 EXPECT_EQ(iter_->sample_offset(), 10000); 429 EXPECT_EQ(iter_->sample_offset(), 10000);
408 EXPECT_EQ(iter_->GetMaxClearOffset(), 201); 430 EXPECT_EQ(iter_->GetMaxClearOffset(), 201);
409 EXPECT_TRUE(iter_->CacheAuxInfo(kAuxInfo, arraysize(kAuxInfo))); 431 EXPECT_TRUE(iter_->CacheAuxInfo(kAuxInfo, arraysize(kAuxInfo)));
410 EXPECT_EQ(iter_->GetMaxClearOffset(), 10000); 432 EXPECT_EQ(iter_->GetMaxClearOffset(), 10000);
411 } 433 }
412 434
413 } // namespace mp4 435 } // namespace mp4
414 } // namespace media 436 } // namespace media
OLDNEW
« media/mp4/track_run_iterator.cc ('K') | « media/mp4/track_run_iterator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698