OLD | NEW |
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 "media/mp4/track_run_iterator.h" | 5 #include "media/mp4/track_run_iterator.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "media/base/stream_parser_buffer.h" | 9 #include "media/base/stream_parser_buffer.h" |
10 #include "media/mp4/rcheck.h" | 10 #include "media/mp4/rcheck.h" |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 } | 55 } |
56 TrackRunInfo::~TrackRunInfo() {} | 56 TrackRunInfo::~TrackRunInfo() {} |
57 | 57 |
58 TimeDelta TimeDeltaFromRational(int64 numer, int64 denom) { | 58 TimeDelta TimeDeltaFromRational(int64 numer, int64 denom) { |
59 DCHECK_LT((numer > 0 ? numer : -numer), | 59 DCHECK_LT((numer > 0 ? numer : -numer), |
60 kint64max / base::Time::kMicrosecondsPerSecond); | 60 kint64max / base::Time::kMicrosecondsPerSecond); |
61 return TimeDelta::FromMicroseconds( | 61 return TimeDelta::FromMicroseconds( |
62 base::Time::kMicrosecondsPerSecond * numer / denom); | 62 base::Time::kMicrosecondsPerSecond * numer / denom); |
63 } | 63 } |
64 | 64 |
65 TrackRunIterator::TrackRunIterator(const Movie* moov) | 65 TrackRunIterator::TrackRunIterator(const Movie* moov, |
66 : moov_(moov), sample_offset_(0) { | 66 const LogCB& log_cb) |
| 67 : moov_(moov), log_cb_(log_cb), sample_offset_(0) { |
67 CHECK(moov); | 68 CHECK(moov); |
68 } | 69 } |
| 70 |
69 TrackRunIterator::~TrackRunIterator() {} | 71 TrackRunIterator::~TrackRunIterator() {} |
70 | 72 |
71 static void PopulateSampleInfo(const TrackExtends& trex, | 73 static void PopulateSampleInfo(const TrackExtends& trex, |
72 const TrackFragmentHeader& tfhd, | 74 const TrackFragmentHeader& tfhd, |
73 const TrackFragmentRun& trun, | 75 const TrackFragmentRun& trun, |
74 const int64 edit_list_offset, | 76 const int64 edit_list_offset, |
75 const uint32 i, | 77 const uint32 i, |
76 SampleInfo* sample_info) { | 78 SampleInfo* sample_info) { |
77 if (i < trun.sample_sizes.size()) { | 79 if (i < trun.sample_sizes.size()) { |
78 sample_info->size = trun.sample_sizes[i]; | 80 sample_info->size = trun.sample_sizes[i]; |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 | 425 |
424 scoped_ptr<DecryptConfig> TrackRunIterator::GetDecryptConfig() { | 426 scoped_ptr<DecryptConfig> TrackRunIterator::GetDecryptConfig() { |
425 size_t sample_idx = sample_itr_ - run_itr_->samples.begin(); | 427 size_t sample_idx = sample_itr_ - run_itr_->samples.begin(); |
426 DCHECK(sample_idx < cenc_info_.size()); | 428 DCHECK(sample_idx < cenc_info_.size()); |
427 const FrameCENCInfo& cenc_info = cenc_info_[sample_idx]; | 429 const FrameCENCInfo& cenc_info = cenc_info_[sample_idx]; |
428 DCHECK(is_encrypted() && !AuxInfoNeedsToBeCached()); | 430 DCHECK(is_encrypted() && !AuxInfoNeedsToBeCached()); |
429 | 431 |
430 if (!cenc_info.subsamples.empty() && | 432 if (!cenc_info.subsamples.empty() && |
431 (cenc_info.GetTotalSizeOfSubsamples() != | 433 (cenc_info.GetTotalSizeOfSubsamples() != |
432 static_cast<size_t>(sample_size()))) { | 434 static_cast<size_t>(sample_size()))) { |
433 DVLOG(1) << "Incorrect CENC subsample size."; | 435 MEDIA_LOG(log_cb_) << "Incorrect CENC subsample size."; |
434 return scoped_ptr<DecryptConfig>(); | 436 return scoped_ptr<DecryptConfig>(); |
435 } | 437 } |
436 | 438 |
437 const std::vector<uint8>& kid = track_encryption().default_kid; | 439 const std::vector<uint8>& kid = track_encryption().default_kid; |
438 return scoped_ptr<DecryptConfig>(new DecryptConfig( | 440 return scoped_ptr<DecryptConfig>(new DecryptConfig( |
439 std::string(reinterpret_cast<const char*>(&kid[0]), kid.size()), | 441 std::string(reinterpret_cast<const char*>(&kid[0]), kid.size()), |
440 std::string(reinterpret_cast<const char*>(cenc_info.iv), | 442 std::string(reinterpret_cast<const char*>(cenc_info.iv), |
441 arraysize(cenc_info.iv)), | 443 arraysize(cenc_info.iv)), |
442 0, // No offset to start of media data in MP4 using CENC. | 444 0, // No offset to start of media data in MP4 using CENC. |
443 cenc_info.subsamples)); | 445 cenc_info.subsamples)); |
444 } | 446 } |
445 | 447 |
446 } // namespace mp4 | 448 } // namespace mp4 |
447 } // namespace media | 449 } // namespace media |
OLD | NEW |