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

Side by Side Diff: media/filters/media_source_state.cc

Issue 1637213002: Revert of MSE: Relax the 'media segment must begin with keyframe' requirement (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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/filters/media_source_state.h ('k') | media/filters/source_buffer_stream.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2016 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/filters/media_source_state.h" 5 #include "media/filters/media_source_state.h"
6 6
7 #include "base/callback_helpers.h" 7 #include "base/callback_helpers.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "media/filters/chunk_demuxer.h" 9 #include "media/filters/chunk_demuxer.h"
10 #include "media/filters/frame_processor.h" 10 #include "media/filters/frame_processor.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 return intersection_ranges; 83 return intersection_ranges;
84 } 84 }
85 85
86 MediaSourceState::MediaSourceState( 86 MediaSourceState::MediaSourceState(
87 scoped_ptr<StreamParser> stream_parser, 87 scoped_ptr<StreamParser> stream_parser,
88 scoped_ptr<FrameProcessor> frame_processor, 88 scoped_ptr<FrameProcessor> frame_processor,
89 const CreateDemuxerStreamCB& create_demuxer_stream_cb, 89 const CreateDemuxerStreamCB& create_demuxer_stream_cb,
90 const scoped_refptr<MediaLog>& media_log) 90 const scoped_refptr<MediaLog>& media_log)
91 : create_demuxer_stream_cb_(create_demuxer_stream_cb), 91 : create_demuxer_stream_cb_(create_demuxer_stream_cb),
92 timestamp_offset_during_append_(NULL), 92 timestamp_offset_during_append_(NULL),
93 new_media_segment_(false),
93 parsing_media_segment_(false), 94 parsing_media_segment_(false),
94 media_segment_contained_audio_frame_(false), 95 media_segment_contained_audio_frame_(false),
95 media_segment_contained_video_frame_(false), 96 media_segment_contained_video_frame_(false),
96 stream_parser_(stream_parser.release()), 97 stream_parser_(stream_parser.release()),
97 audio_(NULL), 98 audio_(NULL),
98 video_(NULL), 99 video_(NULL),
99 frame_processor_(frame_processor.release()), 100 frame_processor_(frame_processor.release()),
100 media_log_(media_log), 101 media_log_(media_log),
101 auto_update_timestamp_offset_(false) { 102 auto_update_timestamp_offset_(false) {
102 DCHECK(!create_demuxer_stream_cb_.is_null()); 103 DCHECK(!create_demuxer_stream_cb_.is_null());
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 DVLOG(1) << "OnNewConfigs() : " << (success ? "success" : "failed"); 640 DVLOG(1) << "OnNewConfigs() : " << (success ? "success" : "failed");
640 if (success) 641 if (success)
641 init_segment_received_cb_.Run(); 642 init_segment_received_cb_.Run();
642 643
643 return success; 644 return success;
644 } 645 }
645 646
646 void MediaSourceState::OnNewMediaSegment() { 647 void MediaSourceState::OnNewMediaSegment() {
647 DVLOG(2) << "OnNewMediaSegment()"; 648 DVLOG(2) << "OnNewMediaSegment()";
648 parsing_media_segment_ = true; 649 parsing_media_segment_ = true;
650 new_media_segment_ = true;
649 media_segment_contained_audio_frame_ = false; 651 media_segment_contained_audio_frame_ = false;
650 media_segment_contained_video_frame_ = false; 652 media_segment_contained_video_frame_ = false;
651 } 653 }
652 654
653 void MediaSourceState::OnEndOfMediaSegment() { 655 void MediaSourceState::OnEndOfMediaSegment() {
654 DVLOG(2) << "OnEndOfMediaSegment()"; 656 DVLOG(2) << "OnEndOfMediaSegment()";
655 parsing_media_segment_ = false; 657 parsing_media_segment_ = false;
658 new_media_segment_ = false;
656 659
657 const bool missing_audio = audio_ && !media_segment_contained_audio_frame_; 660 const bool missing_audio = audio_ && !media_segment_contained_audio_frame_;
658 const bool missing_video = video_ && !media_segment_contained_video_frame_; 661 const bool missing_video = video_ && !media_segment_contained_video_frame_;
659 if (!missing_audio && !missing_video) 662 if (!missing_audio && !missing_video)
660 return; 663 return;
661 664
662 LIMITED_MEDIA_LOG(DEBUG, media_log_, num_missing_track_logs_, 665 LIMITED_MEDIA_LOG(DEBUG, media_log_, num_missing_track_logs_,
663 kMaxMissingTrackInSegmentLogs) 666 kMaxMissingTrackInSegmentLogs)
664 << "Media segment did not contain any " 667 << "Media segment did not contain any "
665 << (missing_audio && missing_video ? "audio or video" 668 << (missing_audio && missing_video ? "audio or video"
(...skipping 26 matching lines...) Expand all
692 if (have_audio_buffers && have_video_buffers) { 695 if (have_audio_buffers && have_video_buffers) {
693 new_timestamp_offset += 696 new_timestamp_offset +=
694 std::min(EndTimestamp(audio_buffers), EndTimestamp(video_buffers)); 697 std::min(EndTimestamp(audio_buffers), EndTimestamp(video_buffers));
695 } else if (have_audio_buffers) { 698 } else if (have_audio_buffers) {
696 new_timestamp_offset += EndTimestamp(audio_buffers); 699 new_timestamp_offset += EndTimestamp(audio_buffers);
697 } else if (have_video_buffers) { 700 } else if (have_video_buffers) {
698 new_timestamp_offset += EndTimestamp(video_buffers); 701 new_timestamp_offset += EndTimestamp(video_buffers);
699 } 702 }
700 } 703 }
701 704
702 if (!frame_processor_->ProcessFrames(audio_buffers, video_buffers, text_map, 705 if (!frame_processor_->ProcessFrames(
703 append_window_start_during_append_, 706 audio_buffers, video_buffers, text_map,
704 append_window_end_during_append_, 707 append_window_start_during_append_, append_window_end_during_append_,
705 timestamp_offset_during_append_)) { 708 &new_media_segment_, timestamp_offset_during_append_)) {
706 return false; 709 return false;
707 } 710 }
708 711
709 // Only update the timestamp offset if the frame processor hasn't already. 712 // Only update the timestamp offset if the frame processor hasn't already.
710 if (auto_update_timestamp_offset_ && 713 if (auto_update_timestamp_offset_ &&
711 timestamp_offset_before_processing == *timestamp_offset_during_append_) { 714 timestamp_offset_before_processing == *timestamp_offset_during_append_) {
712 *timestamp_offset_during_append_ = new_timestamp_offset; 715 *timestamp_offset_during_append_ = new_timestamp_offset;
713 } 716 }
714 717
715 return true; 718 return true;
716 } 719 }
717 720
718 void MediaSourceState::OnSourceInitDone( 721 void MediaSourceState::OnSourceInitDone(
719 const StreamParser::InitParameters& params) { 722 const StreamParser::InitParameters& params) {
720 auto_update_timestamp_offset_ = params.auto_update_timestamp_offset; 723 auto_update_timestamp_offset_ = params.auto_update_timestamp_offset;
721 base::ResetAndReturn(&init_cb_).Run(params); 724 base::ResetAndReturn(&init_cb_).Run(params);
722 } 725 }
723 726
724 } // namespace media 727 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/media_source_state.h ('k') | media/filters/source_buffer_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698