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); |