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

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

Issue 540503003: Fix TrackRunIterator to generate a parse error when it encounters a reserved dependency value. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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 | « media/formats/mp4/track_run_iterator.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/strings/string_split.h" 8 #include "base/strings/string_split.h"
9 #include "media/formats/mp4/box_definitions.h" 9 #include "media/formats/mp4/box_definitions.h"
10 #include "media/formats/mp4/rcheck.h" 10 #include "media/formats/mp4/rcheck.h"
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 switch(str[0]) { 101 switch(str[0]) {
102 case 'U': 102 case 'U':
103 sample_depends_on = kSampleDependsOnUnknown; 103 sample_depends_on = kSampleDependsOnUnknown;
104 break; 104 break;
105 case 'O': 105 case 'O':
106 sample_depends_on = kSampleDependsOnOthers; 106 sample_depends_on = kSampleDependsOnOthers;
107 break; 107 break;
108 case 'N': 108 case 'N':
109 sample_depends_on = kSampleDependsOnNoOther; 109 sample_depends_on = kSampleDependsOnNoOther;
110 break; 110 break;
111 case 'R':
112 sample_depends_on = kSampleDependsOnReserved;
113 break;
111 default: 114 default:
112 CHECK(false) << "Invalid sample dependency character '" 115 CHECK(false) << "Invalid sample dependency character '"
113 << str[0] << "'"; 116 << str[0] << "'";
114 break; 117 break;
115 } 118 }
116 119
117 switch(str[1]) { 120 switch(str[1]) {
118 case 'S': 121 case 'S':
119 is_non_sync_sample = false; 122 is_non_sync_sample = false;
120 break; 123 break;
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 moof.tracks[1].header.default_sample_flags = ToSampleFlags("UN"); 365 moof.tracks[1].header.default_sample_flags = ToSampleFlags("UN");
363 SetFlagsOnSamples("US", &moof.tracks[1].runs[0]); 366 SetFlagsOnSamples("US", &moof.tracks[1].runs[0]);
364 367
365 ASSERT_TRUE(iter_->Init(moof)); 368 ASSERT_TRUE(iter_->Init(moof));
366 EXPECT_EQ("1 KR KR KR KR KR KR KR KR KR KR", KeyframeAndRAPInfo(iter_.get())); 369 EXPECT_EQ("1 KR KR KR KR KR KR KR KR KR KR", KeyframeAndRAPInfo(iter_.get()));
367 370
368 iter_->AdvanceRun(); 371 iter_->AdvanceRun();
369 EXPECT_EQ("2 KR P P P P P P P P P", KeyframeAndRAPInfo(iter_.get())); 372 EXPECT_EQ("2 KR P P P P P P P P P", KeyframeAndRAPInfo(iter_.get()));
370 } 373 }
371 374
375 // Verify that parsing fails if a reserved value is in the sample flags.
376 TEST_F(TrackRunIteratorTest, SampleInfoTest_ReservedInSampleFlags) {
377 iter_.reset(new TrackRunIterator(&moov_, log_cb_));
378 MovieFragment moof = CreateFragment();
379 // Change the "depends on" field on one of the samples to a
380 // reserved value.
381 moof.tracks[1].runs[0].sample_flags[0] = ToSampleFlags("RS");
382 ASSERT_FALSE(iter_->Init(moof));
383 }
384
385 // Verify that parsing fails if a reserved value is in the default sample flags.
386 TEST_F(TrackRunIteratorTest, SampleInfoTest_ReservedInDefaultSampleFlags) {
387 iter_.reset(new TrackRunIterator(&moov_, log_cb_));
388 MovieFragment moof = CreateFragment();
389 // Set the default flag to contain a reserved "depends on" value.
390 moof.tracks[0].header.default_sample_flags = ToSampleFlags("RN");
391 ASSERT_FALSE(iter_->Init(moof));
392 }
393
372 TEST_F(TrackRunIteratorTest, ReorderingTest) { 394 TEST_F(TrackRunIteratorTest, ReorderingTest) {
373 // Test frame reordering and edit list support. The frames have the following 395 // Test frame reordering and edit list support. The frames have the following
374 // decode timestamps: 396 // decode timestamps:
375 // 397 //
376 // 0ms 40ms 120ms 240ms 398 // 0ms 40ms 120ms 240ms
377 // | 0 | 1 - | 2 - - | 399 // | 0 | 1 - | 2 - - |
378 // 400 //
379 // ...and these composition timestamps, after edit list adjustment: 401 // ...and these composition timestamps, after edit list adjustment:
380 // 402 //
381 // 0ms 40ms 160ms 240ms 403 // 0ms 40ms 160ms 240ms
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 679
658 iter_->AdvanceRun(); 680 iter_->AdvanceRun();
659 681
660 // Verify that nothing is marked as a random access point. 682 // Verify that nothing is marked as a random access point.
661 EXPECT_EQ("2 KR P PR P KR K", KeyframeAndRAPInfo(iter_.get())); 683 EXPECT_EQ("2 KR P PR P KR K", KeyframeAndRAPInfo(iter_.get()));
662 } 684 }
663 685
664 686
665 } // namespace mp4 687 } // namespace mp4
666 } // namespace media 688 } // namespace media
OLDNEW
« no previous file with comments | « media/formats/mp4/track_run_iterator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698