Index: media/filters/ffmpeg_demuxer.cc |
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc |
index 6b8027164bd5a43d1744e862e6ff1159b8f5d411..5ab7c21f0dbdd2fe1a638e7b6948249367d989d9 100644 |
--- a/media/filters/ffmpeg_demuxer.cc |
+++ b/media/filters/ffmpeg_demuxer.cc |
@@ -12,7 +12,7 @@ |
#include "base/callback.h" |
#include "base/callback_helpers.h" |
#include "base/memory/scoped_ptr.h" |
-#include "base/message_loop/message_loop.h" |
+#include "base/message_loop/message_loop_proxy.h" |
#include "base/metrics/sparse_histogram.h" |
#include "base/strings/string_util.h" |
#include "base/strings/stringprintf.h" |
@@ -41,7 +41,7 @@ FFmpegDemuxerStream::FFmpegDemuxerStream( |
FFmpegDemuxer* demuxer, |
AVStream* stream) |
: demuxer_(demuxer), |
- message_loop_(base::MessageLoopProxy::current()), |
+ task_runner_(base::MessageLoopProxy::current()), |
stream_(stream), |
type_(UNKNOWN), |
end_of_stream_(false), |
@@ -99,7 +99,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"; |
@@ -201,13 +201,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; |
@@ -215,7 +215,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( |
@@ -231,12 +231,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); |
@@ -254,19 +254,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_; |
} |
@@ -286,7 +286,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( |
@@ -348,12 +348,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), |
@@ -365,17 +365,17 @@ FFmpegDemuxer::FFmpegDemuxer( |
audio_disabled_(false), |
text_enabled_(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_, |
@@ -384,7 +384,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_|, |
@@ -410,7 +410,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) { |
@@ -423,7 +423,7 @@ void FFmpegDemuxer::OnAudioRendererDisabled() { |
void FFmpegDemuxer::Initialize(DemuxerHost* host, |
const PipelineStatusCB& status_cb, |
bool enable_text_tracks) { |
- DCHECK(message_loop_->BelongsToCurrentThread()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
host_ = host; |
weak_this_ = weak_factory_.GetWeakPtr(); |
text_enabled_ = enable_text_tracks; |
@@ -450,7 +450,7 @@ void FFmpegDemuxer::Initialize(DemuxerHost* host, |
} |
DemuxerStream* FFmpegDemuxer::GetStream(DemuxerStream::Type type) { |
- DCHECK(message_loop_->BelongsToCurrentThread()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
return GetFFmpegStream(type); |
} |
@@ -466,12 +466,12 @@ FFmpegDemuxerStream* FFmpegDemuxer::GetFFmpegStream( |
} |
base::TimeDelta FFmpegDemuxer::GetStartTime() const { |
- DCHECK(message_loop_->BelongsToCurrentThread()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
return start_time_; |
} |
void FFmpegDemuxer::AddTextStreams() { |
- DCHECK(message_loop_->BelongsToCurrentThread()); |
+ DCHECK(task_runner_->BelongsToCurrentThread()); |
for (StreamVector::size_type idx = 0; idx < streams_.size(); ++idx) { |
FFmpegDemuxerStream* stream = streams_[idx]; |
@@ -527,7 +527,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; |
@@ -550,7 +550,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; |
@@ -728,7 +728,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; |
@@ -759,7 +759,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() || |
@@ -783,7 +783,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; |
@@ -871,7 +871,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; |
@@ -884,7 +884,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()) { |
@@ -895,7 +895,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 || |
@@ -914,12 +914,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); |