OLD | NEW |
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 "media/formats/mp4/track_run_iterator.h" | 5 #include "media/formats/mp4/track_run_iterator.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <iomanip> | 8 #include <iomanip> |
9 #include <limits> | 9 #include <limits> |
10 #include <memory> | 10 #include <memory> |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 DCHECK((timeb_in_us > 0) || | 87 DCHECK((timeb_in_us > 0) || |
88 (timea_in_us >= std::numeric_limits<int64_t>::min() - timeb_in_us)); | 88 (timea_in_us >= std::numeric_limits<int64_t>::min() - timeb_in_us)); |
89 return base::TimeDelta::FromMicroseconds(timea_in_us + timeb_in_us); | 89 return base::TimeDelta::FromMicroseconds(timea_in_us + timeb_in_us); |
90 } | 90 } |
91 | 91 |
92 DecodeTimestamp DecodeTimestampFromRational(int64_t numer, int64_t denom) { | 92 DecodeTimestamp DecodeTimestampFromRational(int64_t numer, int64_t denom) { |
93 return DecodeTimestamp::FromPresentationTime( | 93 return DecodeTimestamp::FromPresentationTime( |
94 TimeDeltaFromRational(numer, denom)); | 94 TimeDeltaFromRational(numer, denom)); |
95 } | 95 } |
96 | 96 |
97 TrackRunIterator::TrackRunIterator(const Movie* moov, | 97 TrackRunIterator::TrackRunIterator(const Movie* moov, MediaLog* media_log) |
98 const scoped_refptr<MediaLog>& media_log) | |
99 : moov_(moov), media_log_(media_log), sample_offset_(0) { | 98 : moov_(moov), media_log_(media_log), sample_offset_(0) { |
100 CHECK(moov); | 99 CHECK(moov); |
101 } | 100 } |
102 | 101 |
103 TrackRunIterator::~TrackRunIterator() {} | 102 TrackRunIterator::~TrackRunIterator() {} |
104 | 103 |
105 static std::string HexFlags(uint32_t flags) { | 104 static std::string HexFlags(uint32_t flags) { |
106 std::stringstream stream; | 105 std::stringstream stream; |
107 stream << std::setfill('0') << std::setw(sizeof(flags)*2) << std::hex | 106 stream << std::setfill('0') << std::setw(sizeof(flags)*2) << std::hex |
108 << flags; | 107 << flags; |
109 return stream.str(); | 108 return stream.str(); |
110 } | 109 } |
111 | 110 |
112 static bool PopulateSampleInfo(const TrackExtends& trex, | 111 static bool PopulateSampleInfo(const TrackExtends& trex, |
113 const TrackFragmentHeader& tfhd, | 112 const TrackFragmentHeader& tfhd, |
114 const TrackFragmentRun& trun, | 113 const TrackFragmentRun& trun, |
115 const int64_t edit_list_offset, | 114 const int64_t edit_list_offset, |
116 const uint32_t i, | 115 const uint32_t i, |
117 SampleInfo* sample_info, | 116 SampleInfo* sample_info, |
118 const SampleDependsOn sdtp_sample_depends_on, | 117 const SampleDependsOn sdtp_sample_depends_on, |
119 bool is_audio, | 118 bool is_audio, |
120 const scoped_refptr<MediaLog>& media_log) { | 119 MediaLog* media_log) { |
121 if (i < trun.sample_sizes.size()) { | 120 if (i < trun.sample_sizes.size()) { |
122 sample_info->size = trun.sample_sizes[i]; | 121 sample_info->size = trun.sample_sizes[i]; |
123 } else if (tfhd.default_sample_size > 0) { | 122 } else if (tfhd.default_sample_size > 0) { |
124 sample_info->size = tfhd.default_sample_size; | 123 sample_info->size = tfhd.default_sample_size; |
125 } else { | 124 } else { |
126 sample_info->size = trex.default_sample_size; | 125 sample_info->size = trex.default_sample_size; |
127 } | 126 } |
128 | 127 |
129 if (i < trun.sample_durations.size()) { | 128 if (i < trun.sample_durations.size()) { |
130 sample_info->duration = trun.sample_durations[i]; | 129 sample_info->duration = trun.sample_durations[i]; |
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
712 index == 0 ? track_encryption().default_constant_iv | 711 index == 0 ? track_encryption().default_constant_iv |
713 : GetSampleEncryptionInfoEntry(*run_itr_, index)->constant_iv; | 712 : GetSampleEncryptionInfoEntry(*run_itr_, index)->constant_iv; |
714 RCHECK(constant_iv != nullptr); | 713 RCHECK(constant_iv != nullptr); |
715 memcpy(entry->initialization_vector, constant_iv, kInitializationVectorSize); | 714 memcpy(entry->initialization_vector, constant_iv, kInitializationVectorSize); |
716 return true; | 715 return true; |
717 } | 716 } |
718 #endif | 717 #endif |
719 | 718 |
720 } // namespace mp4 | 719 } // namespace mp4 |
721 } // namespace media | 720 } // namespace media |
OLD | NEW |