| Index: media/formats/mp4/track_run_iterator.cc
|
| diff --git a/media/formats/mp4/track_run_iterator.cc b/media/formats/mp4/track_run_iterator.cc
|
| index 52959f1c738556c9033e2894d07580a1c4281f8b..604074ca727b2b3a4fca1d0d39eab7ade4b3b87c 100644
|
| --- a/media/formats/mp4/track_run_iterator.cc
|
| +++ b/media/formats/mp4/track_run_iterator.cc
|
| @@ -88,13 +88,14 @@ TrackRunIterator::TrackRunIterator(const Movie* moov,
|
|
|
| TrackRunIterator::~TrackRunIterator() {}
|
|
|
| -static void PopulateSampleInfo(const TrackExtends& trex,
|
| +static bool PopulateSampleInfo(const TrackExtends& trex,
|
| const TrackFragmentHeader& tfhd,
|
| const TrackFragmentRun& trun,
|
| const int64 edit_list_offset,
|
| const uint32 i,
|
| SampleInfo* sample_info,
|
| - const SampleDependsOn sdtp_sample_depends_on) {
|
| + const SampleDependsOn sdtp_sample_depends_on,
|
| + const LogCB& log_cb) {
|
| if (i < trun.sample_sizes.size()) {
|
| sample_info->size = trun.sample_sizes[i];
|
| } else if (tfhd.default_sample_size > 0) {
|
| @@ -156,8 +157,10 @@ static void PopulateSampleInfo(const TrackExtends& trex,
|
| break;
|
|
|
| case kSampleDependsOnReserved:
|
| - CHECK(false);
|
| + MEDIA_LOG(log_cb) << "Reserved value used in sample dependency info.";
|
| + return false;
|
| }
|
| + return true;
|
| }
|
|
|
| // In well-structured encrypted media, each track run will be immediately
|
| @@ -300,8 +303,13 @@ bool TrackRunIterator::Init(const MovieFragment& moof) {
|
|
|
| tri.samples.resize(trun.sample_count);
|
| for (size_t k = 0; k < trun.sample_count; k++) {
|
| - PopulateSampleInfo(*trex, traf.header, trun, edit_list_offset,
|
| - k, &tri.samples[k], traf.sdtp.sample_depends_on(k));
|
| + if (!PopulateSampleInfo(*trex, traf.header, trun, edit_list_offset,
|
| + k, &tri.samples[k],
|
| + traf.sdtp.sample_depends_on(k),
|
| + log_cb_)) {
|
| + return false;
|
| + }
|
| +
|
| run_start_dts += tri.samples[k].duration;
|
|
|
| if (!is_sample_to_group_valid) {
|
|
|