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

Unified Diff: media/filters/ffmpeg_demuxer.cc

Issue 65803002: Replace MessageLoopProxy with SingleThreadTaskRunner for media/filters/ + associated code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: media/filters/ffmpeg_demuxer.cc
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index 2ba0c54074524bc84f8ebe6cfbbf83742d439a70..f946d9909a4f38ce58cdb3c22d62b7d684cfef00 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -13,7 +13,6 @@
#include "base/callback_helpers.h"
#include "base/command_line.h"
#include "base/memory/scoped_ptr.h"
-#include "base/message_loop/message_loop.h"
#include "base/metrics/sparse_histogram.h"
#include "base/stl_util.h"
#include "base/strings/string_util.h"
@@ -41,9 +40,10 @@ namespace media {
//
FFmpegDemuxerStream::FFmpegDemuxerStream(
FFmpegDemuxer* demuxer,
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
AVStream* stream)
: demuxer_(demuxer),
- message_loop_(base::MessageLoopProxy::current()),
+ task_runner_(task_runner),
Ami GONE FROM CHROMIUM 2013/11/08 16:54:46 I find this version slightly implying that task_ru
scherkus (not reviewing) 2013/11/08 21:51:39 This change was induced by globally removing all m
stream_(stream),
type_(UNKNOWN),
end_of_stream_(false),
@@ -98,7 +98,7 @@ FFmpegDemuxerStream::FFmpegDemuxerStream(
}
void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
if (!demuxer_ || end_of_stream_) {
NOTREACHED() << "Attempted to enqueue packet on a stopped stream";
@@ -177,13 +177,13 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
}
void FFmpegDemuxerStream::SetEndOfStream() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
end_of_stream_ = true;
SatisfyPendingRead();
}
void FFmpegDemuxerStream::FlushBuffers() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
DCHECK(read_cb_.is_null()) << "There should be no pending read";
buffer_queue_.Clear();
end_of_stream_ = false;
@@ -191,7 +191,7 @@ void FFmpegDemuxerStream::FlushBuffers() {
}
void FFmpegDemuxerStream::Stop() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
buffer_queue_.Clear();
if (!read_cb_.is_null()) {
base::ResetAndReturn(&read_cb_).Run(
@@ -207,12 +207,12 @@ base::TimeDelta FFmpegDemuxerStream::duration() {
}
DemuxerStream::Type FFmpegDemuxerStream::type() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
return type_;
}
void FFmpegDemuxerStream::Read(const ReadCB& read_cb) {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
CHECK(read_cb_.is_null()) << "Overlapping reads are not supported";
read_cb_ = BindToCurrentLoop(read_cb);
@@ -230,19 +230,19 @@ void FFmpegDemuxerStream::Read(const ReadCB& read_cb) {
}
void FFmpegDemuxerStream::EnableBitstreamConverter() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
CHECK(bitstream_converter_.get());
bitstream_converter_enabled_ = true;
}
AudioDecoderConfig FFmpegDemuxerStream::audio_decoder_config() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
CHECK_EQ(type_, AUDIO);
return audio_config_;
}
VideoDecoderConfig FFmpegDemuxerStream::video_decoder_config() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
CHECK_EQ(type_, VIDEO);
return video_config_;
}
@@ -262,7 +262,7 @@ Ranges<base::TimeDelta> FFmpegDemuxerStream::GetBufferedRanges() const {
}
void FFmpegDemuxerStream::SatisfyPendingRead() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
if (!read_cb_.is_null()) {
if (!buffer_queue_.IsEmpty()) {
base::ResetAndReturn(&read_cb_).Run(
@@ -303,12 +303,12 @@ base::TimeDelta FFmpegDemuxerStream::ConvertStreamTimestamp(
// FFmpegDemuxer
//
FFmpegDemuxer::FFmpegDemuxer(
- const scoped_refptr<base::MessageLoopProxy>& message_loop,
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
DataSource* data_source,
const NeedKeyCB& need_key_cb,
const scoped_refptr<MediaLog>& media_log)
: host_(NULL),
- message_loop_(message_loop),
+ task_runner_(task_runner),
weak_factory_(this),
blocking_thread_("FFmpegDemuxer"),
pending_read_(false),
@@ -319,17 +319,17 @@ FFmpegDemuxer::FFmpegDemuxer(
start_time_(kNoTimestamp()),
audio_disabled_(false),
duration_known_(false),
- url_protocol_(data_source, BindToLoop(message_loop_, base::Bind(
+ url_protocol_(data_source, BindToLoop(task_runner_, base::Bind(
&FFmpegDemuxer::OnDataSourceError, base::Unretained(this)))),
need_key_cb_(need_key_cb) {
- DCHECK(message_loop_.get());
+ DCHECK(task_runner_.get());
DCHECK(data_source_);
}
FFmpegDemuxer::~FFmpegDemuxer() {}
void FFmpegDemuxer::Stop(const base::Closure& callback) {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
url_protocol_.Abort();
data_source_->Stop(BindToCurrentLoop(base::Bind(
&FFmpegDemuxer::OnDataSourceStopped, weak_this_,
@@ -338,7 +338,7 @@ void FFmpegDemuxer::Stop(const base::Closure& callback) {
}
void FFmpegDemuxer::Seek(base::TimeDelta time, const PipelineStatusCB& cb) {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
CHECK(!pending_seek_);
// TODO(scherkus): Inspect |pending_read_| and cancel IO via |blocking_url_|,
@@ -364,7 +364,7 @@ void FFmpegDemuxer::Seek(base::TimeDelta time, const PipelineStatusCB& cb) {
}
void FFmpegDemuxer::OnAudioRendererDisabled() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
audio_disabled_ = true;
StreamVector::iterator iter;
for (iter = streams_.begin(); iter != streams_.end(); ++iter) {
@@ -376,7 +376,7 @@ void FFmpegDemuxer::OnAudioRendererDisabled() {
void FFmpegDemuxer::Initialize(DemuxerHost* host,
const PipelineStatusCB& status_cb) {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
host_ = host;
weak_this_ = weak_factory_.GetWeakPtr();
@@ -402,7 +402,7 @@ void FFmpegDemuxer::Initialize(DemuxerHost* host,
}
DemuxerStream* FFmpegDemuxer::GetStream(DemuxerStream::Type type) {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
return GetFFmpegStream(type);
}
@@ -418,7 +418,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::GetFFmpegStream(
}
base::TimeDelta FFmpegDemuxer::GetStartTime() const {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
return start_time_;
}
@@ -460,7 +460,7 @@ static int CalculateBitrate(
void FFmpegDemuxer::OnOpenContextDone(const PipelineStatusCB& status_cb,
bool result) {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
if (!blocking_thread_.IsRunning()) {
status_cb.Run(PIPELINE_ERROR_ABORT);
return;
@@ -483,7 +483,7 @@ void FFmpegDemuxer::OnOpenContextDone(const PipelineStatusCB& status_cb,
void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb,
int result) {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
if (!blocking_thread_.IsRunning() || !data_source_) {
status_cb.Run(PIPELINE_ERROR_ABORT);
return;
@@ -544,7 +544,7 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb,
continue;
}
- streams_[i] = new FFmpegDemuxerStream(this, stream);
+ streams_[i] = new FFmpegDemuxerStream(this, task_runner_, stream);
max_duration = std::max(max_duration, streams_[i]->duration());
if (stream->first_dts != static_cast<int64_t>(AV_NOPTS_VALUE)) {
@@ -654,7 +654,7 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb,
}
void FFmpegDemuxer::OnSeekFrameDone(const PipelineStatusCB& cb, int result) {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
CHECK(pending_seek_);
pending_seek_ = false;
@@ -685,7 +685,7 @@ void FFmpegDemuxer::OnSeekFrameDone(const PipelineStatusCB& cb, int result) {
}
void FFmpegDemuxer::ReadFrameIfNeeded() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
// Make sure we have work to do before reading.
if (!blocking_thread_.IsRunning() || !StreamsHaveAvailableCapacity() ||
@@ -709,7 +709,7 @@ void FFmpegDemuxer::ReadFrameIfNeeded() {
}
void FFmpegDemuxer::OnReadFrameDone(ScopedAVPacket packet, int result) {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
DCHECK(pending_read_);
pending_read_ = false;
@@ -784,7 +784,7 @@ void FFmpegDemuxer::OnDataSourceStopped(const base::Closure& callback) {
// possible for reply tasks (e.g., OnReadFrameDone()) to be queued on this
// thread. Each of the reply task methods must check whether we've stopped the
// thread and drop their results on the floor.
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
blocking_thread_.Stop();
StreamVector::iterator iter;
@@ -797,7 +797,7 @@ void FFmpegDemuxer::OnDataSourceStopped(const base::Closure& callback) {
}
bool FFmpegDemuxer::StreamsHaveAvailableCapacity() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
StreamVector::iterator iter;
for (iter = streams_.begin(); iter != streams_.end(); ++iter) {
if (*iter && (*iter)->HasAvailableCapacity()) {
@@ -808,7 +808,7 @@ bool FFmpegDemuxer::StreamsHaveAvailableCapacity() {
}
void FFmpegDemuxer::StreamHasEnded() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
StreamVector::iterator iter;
for (iter = streams_.begin(); iter != streams_.end(); ++iter) {
if (!*iter ||
@@ -827,12 +827,12 @@ void FFmpegDemuxer::FireNeedKey(const std::string& init_data_type,
}
void FFmpegDemuxer::NotifyCapacityAvailable() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
ReadFrameIfNeeded();
}
void FFmpegDemuxer::NotifyBufferingChanged() {
- DCHECK(message_loop_->BelongsToCurrentThread());
+ DCHECK(task_runner_->BelongsToCurrentThread());
Ranges<base::TimeDelta> buffered;
FFmpegDemuxerStream* audio =
audio_disabled_ ? NULL : GetFFmpegStream(DemuxerStream::AUDIO);

Powered by Google App Engine
This is Rietveld 408576698