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

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

Issue 827013005: Avoid double task trampoline for Pipeline state transitions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix MojoRendererImpl. Created 5 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
OLDNEW
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/filters/ffmpeg_demuxer.h" 5 #include "media/filters/ffmpeg_demuxer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 // don't use. FFmpeg will only read ID3v1 tags if no other metadata is 686 // don't use. FFmpeg will only read ID3v1 tags if no other metadata is
687 // available, so add a metadata entry to ensure some is always present. 687 // available, so add a metadata entry to ensure some is always present.
688 av_dict_set(&format_context->metadata, "skip_id3v1_tags", "", 0); 688 av_dict_set(&format_context->metadata, "skip_id3v1_tags", "", 0);
689 689
690 // Ensure ffmpeg doesn't give up too early while looking for stream params; 690 // Ensure ffmpeg doesn't give up too early while looking for stream params;
691 // this does not increase the amount of data downloaded. The default value 691 // this does not increase the amount of data downloaded. The default value
692 // is 5 AV_TIME_BASE units (1 second each), which prevents some oddly muxed 692 // is 5 AV_TIME_BASE units (1 second each), which prevents some oddly muxed
693 // streams from being detected properly; this value was chosen arbitrarily. 693 // streams from being detected properly; this value was chosen arbitrarily.
694 format_context->max_analyze_duration2 = 60 * AV_TIME_BASE; 694 format_context->max_analyze_duration2 = 60 * AV_TIME_BASE;
695 695
696 // Always post the callback because |this| could be destroyed upon failure.
697 PipelineStatusCB bound_status_cb = BindToCurrentLoop(status_cb);
698
696 // Open the AVFormatContext using our glue layer. 699 // Open the AVFormatContext using our glue layer.
697 CHECK(blocking_thread_.Start()); 700 CHECK(blocking_thread_.Start());
698 base::PostTaskAndReplyWithResult( 701 base::PostTaskAndReplyWithResult(
699 blocking_thread_.message_loop_proxy().get(), 702 blocking_thread_.message_loop_proxy().get(),
700 FROM_HERE, 703 FROM_HERE,
701 base::Bind(&FFmpegGlue::OpenContext, base::Unretained(glue_.get())), 704 base::Bind(&FFmpegGlue::OpenContext, base::Unretained(glue_.get())),
702 base::Bind(&FFmpegDemuxer::OnOpenContextDone, 705 base::Bind(&FFmpegDemuxer::OnOpenContextDone,
703 weak_factory_.GetWeakPtr(), 706 weak_factory_.GetWeakPtr(),
704 status_cb)); 707 bound_status_cb));
705 } 708 }
706 709
707 base::Time FFmpegDemuxer::GetTimelineOffset() const { 710 base::Time FFmpegDemuxer::GetTimelineOffset() const {
708 return timeline_offset_; 711 return timeline_offset_;
709 } 712 }
710 713
711 DemuxerStream* FFmpegDemuxer::GetStream(DemuxerStream::Type type) { 714 DemuxerStream* FFmpegDemuxer::GetStream(DemuxerStream::Type type) {
712 DCHECK(task_runner_->BelongsToCurrentThread()); 715 DCHECK(task_runner_->BelongsToCurrentThread());
713 return GetFFmpegStream(type); 716 return GetFFmpegStream(type);
714 } 717 }
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after
1293 1296
1294 void FFmpegDemuxer::SetLiveness(DemuxerStream::Liveness liveness) { 1297 void FFmpegDemuxer::SetLiveness(DemuxerStream::Liveness liveness) {
1295 DCHECK(task_runner_->BelongsToCurrentThread()); 1298 DCHECK(task_runner_->BelongsToCurrentThread());
1296 for (const auto& stream : streams_) { // |stream| is a ref to a pointer. 1299 for (const auto& stream : streams_) { // |stream| is a ref to a pointer.
1297 if (stream) 1300 if (stream)
1298 stream->SetLiveness(liveness); 1301 stream->SetLiveness(liveness);
1299 } 1302 }
1300 } 1303 }
1301 1304
1302 } // namespace media 1305 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698