| 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/mp4_stream_parser.h" | 5 #include "media/formats/mp4/mp4_stream_parser.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 #include "media/formats/mp4/box_reader.h" | 28 #include "media/formats/mp4/box_reader.h" |
| 29 #include "media/formats/mp4/es_descriptor.h" | 29 #include "media/formats/mp4/es_descriptor.h" |
| 30 #include "media/formats/mp4/rcheck.h" | 30 #include "media/formats/mp4/rcheck.h" |
| 31 #include "media/formats/mpeg/adts_constants.h" | 31 #include "media/formats/mpeg/adts_constants.h" |
| 32 | 32 |
| 33 namespace media { | 33 namespace media { |
| 34 namespace mp4 { | 34 namespace mp4 { |
| 35 | 35 |
| 36 namespace { | 36 namespace { |
| 37 const int kMaxEmptySampleLogs = 20; | 37 const int kMaxEmptySampleLogs = 20; |
| 38 } | 38 } // namespace |
| 39 | 39 |
| 40 MP4StreamParser::MP4StreamParser(const std::set<int>& audio_object_types, | 40 MP4StreamParser::MP4StreamParser(const std::set<int>& audio_object_types, |
| 41 bool has_sbr) | 41 bool has_sbr) |
| 42 : state_(kWaitingForInit), | 42 : state_(kWaitingForInit), |
| 43 moof_head_(0), | 43 moof_head_(0), |
| 44 mdat_tail_(0), | 44 mdat_tail_(0), |
| 45 highest_end_offset_(0), | 45 highest_end_offset_(0), |
| 46 has_audio_(false), | 46 has_audio_(false), |
| 47 has_video_(false), | 47 has_video_(false), |
| 48 audio_object_types_(audio_object_types), | 48 audio_object_types_(audio_object_types), |
| 49 has_sbr_(has_sbr), | 49 has_sbr_(has_sbr), |
| 50 num_top_level_box_skipped_(0), | 50 num_empty_samples_skipped_(0) {} |
| 51 num_emtpy_samples_skipped_(0) {} | |
| 52 | 51 |
| 53 MP4StreamParser::~MP4StreamParser() {} | 52 MP4StreamParser::~MP4StreamParser() {} |
| 54 | 53 |
| 55 void MP4StreamParser::Init( | 54 void MP4StreamParser::Init( |
| 56 const InitCB& init_cb, | 55 const InitCB& init_cb, |
| 57 const NewConfigCB& config_cb, | 56 const NewConfigCB& config_cb, |
| 58 const NewBuffersCB& new_buffers_cb, | 57 const NewBuffersCB& new_buffers_cb, |
| 59 bool /* ignore_text_tracks */, | 58 bool /* ignore_text_tracks */, |
| 60 const EncryptedMediaInitDataCB& encrypted_media_init_data_cb, | 59 const EncryptedMediaInitDataCB& encrypted_media_init_data_cb, |
| 61 const NewMediaSegmentCB& new_segment_cb, | 60 const NewMediaSegmentCB& new_segment_cb, |
| (...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 557 *err = !runs_->CacheAuxInfo(buf, buf_size); | 556 *err = !runs_->CacheAuxInfo(buf, buf_size); |
| 558 return !*err; | 557 return !*err; |
| 559 } | 558 } |
| 560 | 559 |
| 561 queue_.PeekAt(runs_->sample_offset() + moof_head_, &buf, &buf_size); | 560 queue_.PeekAt(runs_->sample_offset() + moof_head_, &buf, &buf_size); |
| 562 if (buf_size < runs_->sample_size()) return false; | 561 if (buf_size < runs_->sample_size()) return false; |
| 563 | 562 |
| 564 if (runs_->sample_size() == 0) { | 563 if (runs_->sample_size() == 0) { |
| 565 // Generally not expected, but spec allows it. Code below this block assumes | 564 // Generally not expected, but spec allows it. Code below this block assumes |
| 566 // the current sample is not empty. | 565 // the current sample is not empty. |
| 567 LIMITED_MEDIA_LOG(DEBUG, media_log_, num_emtpy_samples_skipped_, | 566 LIMITED_MEDIA_LOG(DEBUG, media_log_, num_empty_samples_skipped_, |
| 568 kMaxEmptySampleLogs) | 567 kMaxEmptySampleLogs) |
| 569 << " Skipping 'trun' sample with size of 0."; | 568 << " Skipping 'trun' sample with size of 0."; |
| 570 runs_->AdvanceSample(); | 569 runs_->AdvanceSample(); |
| 571 return true; | 570 return true; |
| 572 } | 571 } |
| 573 | 572 |
| 574 std::unique_ptr<DecryptConfig> decrypt_config; | 573 std::unique_ptr<DecryptConfig> decrypt_config; |
| 575 std::vector<SubsampleEntry> subsamples; | 574 std::vector<SubsampleEntry> subsamples; |
| 576 if (runs_->is_encrypted()) { | 575 if (runs_->is_encrypted()) { |
| 577 decrypt_config = runs_->GetDecryptConfig(); | 576 decrypt_config = runs_->GetDecryptConfig(); |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 718 runs.AdvanceSample(); | 717 runs.AdvanceSample(); |
| 719 } | 718 } |
| 720 runs.AdvanceRun(); | 719 runs.AdvanceRun(); |
| 721 } | 720 } |
| 722 | 721 |
| 723 return true; | 722 return true; |
| 724 } | 723 } |
| 725 | 724 |
| 726 } // namespace mp4 | 725 } // namespace mp4 |
| 727 } // namespace media | 726 } // namespace media |
| OLD | NEW |