| Index: media/filters/ffmpeg_demuxer.cc
|
| diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
|
| index 7c4f763c19650319f2e4ca3fd82832b431f6ab91..17248c6c5ed46eb77ac32815dc8c118636dcc64a 100644
|
| --- a/media/filters/ffmpeg_demuxer.cc
|
| +++ b/media/filters/ffmpeg_demuxer.cc
|
| @@ -239,12 +239,14 @@ base::TimeDelta FFmpegDemuxerStream::ConvertStreamTimestamp(
|
| //
|
| // FFmpegDemuxer
|
| //
|
| -FFmpegDemuxer::FFmpegDemuxer()
|
| - : format_context_(NULL),
|
| +FFmpegDemuxer::FFmpegDemuxer(MessageLoop* message_loop)
|
| + : message_loop_(message_loop),
|
| + format_context_(NULL),
|
| read_event_(false, false),
|
| read_has_failed_(false),
|
| last_read_bytes_(0),
|
| read_position_(0) {
|
| + DCHECK(message_loop_);
|
| }
|
|
|
| FFmpegDemuxer::~FFmpegDemuxer() {
|
| @@ -279,13 +281,13 @@ FFmpegDemuxer::~FFmpegDemuxer() {
|
| }
|
|
|
| void FFmpegDemuxer::PostDemuxTask() {
|
| - message_loop()->PostTask(FROM_HERE,
|
| + message_loop_->PostTask(FROM_HERE,
|
| NewRunnableMethod(this, &FFmpegDemuxer::DemuxTask));
|
| }
|
|
|
| void FFmpegDemuxer::Stop(FilterCallback* callback) {
|
| // Post a task to notify the streams to stop as well.
|
| - message_loop()->PostTask(FROM_HERE,
|
| + message_loop_->PostTask(FROM_HERE,
|
| NewRunnableMethod(this, &FFmpegDemuxer::StopTask, callback));
|
|
|
| // Then wakes up the thread from reading.
|
| @@ -297,18 +299,18 @@ void FFmpegDemuxer::Seek(base::TimeDelta time, FilterCallback* callback) {
|
| // operation is completed and filters behind the demuxer is good to issue
|
| // more reads, but we are posting a task here, which makes the seek operation
|
| // asynchronous, should change how seek works to make it fully asynchronous.
|
| - message_loop()->PostTask(FROM_HERE,
|
| + message_loop_->PostTask(FROM_HERE,
|
| NewRunnableMethod(this, &FFmpegDemuxer::SeekTask, time, callback));
|
| }
|
|
|
| void FFmpegDemuxer::OnAudioRendererDisabled() {
|
| - message_loop()->PostTask(FROM_HERE,
|
| + message_loop_->PostTask(FROM_HERE,
|
| NewRunnableMethod(this, &FFmpegDemuxer::DisableAudioStreamTask));
|
| }
|
|
|
| void FFmpegDemuxer::Initialize(DataSource* data_source,
|
| FilterCallback* callback) {
|
| - message_loop()->PostTask(
|
| + message_loop_->PostTask(
|
| FROM_HERE,
|
| NewRunnableMethod(this,
|
| &FFmpegDemuxer::InitializeTask,
|
| @@ -391,9 +393,13 @@ bool FFmpegDemuxer::IsStreaming() {
|
| return data_source_->IsStreaming();
|
| }
|
|
|
| +MessageLoop* FFmpegDemuxer::message_loop() {
|
| + return message_loop_;
|
| +}
|
| +
|
| void FFmpegDemuxer::InitializeTask(DataSource* data_source,
|
| FilterCallback* callback) {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop());
|
| + DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| scoped_ptr<FilterCallback> c(callback);
|
|
|
| data_source_ = data_source;
|
| @@ -477,7 +483,7 @@ void FFmpegDemuxer::InitializeTask(DataSource* data_source,
|
| }
|
|
|
| void FFmpegDemuxer::SeekTask(base::TimeDelta time, FilterCallback* callback) {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop());
|
| + DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| scoped_ptr<FilterCallback> c(callback);
|
|
|
| // Tell streams to flush buffers due to seeking.
|
| @@ -504,7 +510,7 @@ void FFmpegDemuxer::SeekTask(base::TimeDelta time, FilterCallback* callback) {
|
| }
|
|
|
| void FFmpegDemuxer::DemuxTask() {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop());
|
| + DCHECK_EQ(MessageLoop::current(), message_loop_);
|
|
|
| // Make sure we have work to do before demuxing.
|
| if (!StreamsHavePendingReads()) {
|
| @@ -556,7 +562,7 @@ void FFmpegDemuxer::DemuxTask() {
|
| }
|
|
|
| void FFmpegDemuxer::StopTask(FilterCallback* callback) {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop());
|
| + DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| StreamVector::iterator iter;
|
| for (iter = streams_.begin(); iter != streams_.end(); ++iter) {
|
| (*iter)->Stop();
|
| @@ -568,7 +574,7 @@ void FFmpegDemuxer::StopTask(FilterCallback* callback) {
|
| }
|
|
|
| void FFmpegDemuxer::DisableAudioStreamTask() {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop());
|
| + DCHECK_EQ(MessageLoop::current(), message_loop_);
|
|
|
| StreamVector::iterator iter;
|
| for (size_t i = 0; i < packet_streams_.size(); ++i) {
|
| @@ -586,7 +592,7 @@ void FFmpegDemuxer::DisableAudioStreamTask() {
|
| }
|
|
|
| bool FFmpegDemuxer::StreamsHavePendingReads() {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop());
|
| + DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| StreamVector::iterator iter;
|
| for (iter = streams_.begin(); iter != streams_.end(); ++iter) {
|
| if ((*iter)->HasPendingReads()) {
|
| @@ -597,7 +603,7 @@ bool FFmpegDemuxer::StreamsHavePendingReads() {
|
| }
|
|
|
| void FFmpegDemuxer::StreamHasEnded() {
|
| - DCHECK_EQ(MessageLoop::current(), message_loop());
|
| + DCHECK_EQ(MessageLoop::current(), message_loop_);
|
| StreamVector::iterator iter;
|
| for (iter = streams_.begin(); iter != streams_.end(); ++iter) {
|
| AVPacket* packet = new AVPacket();
|
|
|