Index: media/filters/ffmpeg_demuxer.cc |
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc |
index 56981e4710f59e92d4139c7421d9860bbf6e9546..f59c665a0ed35d73fea6e9fa8c34e02b86108bd6 100644 |
--- a/media/filters/ffmpeg_demuxer.cc |
+++ b/media/filters/ffmpeg_demuxer.cc |
@@ -10,6 +10,7 @@ |
#include "base/stl_util.h" |
#include "base/string_util.h" |
#include "base/time.h" |
+#include "media/base/data_buffer.h" |
#include "media/base/filter_host.h" |
#include "media/base/limits.h" |
#include "media/base/media_switches.h" |
@@ -139,6 +140,10 @@ void FFmpegDemuxerStream::Stop() { |
DCHECK_EQ(MessageLoop::current(), demuxer_->message_loop()); |
base::AutoLock auto_lock(lock_); |
buffer_queue_.clear(); |
+ for (ReadQueue::iterator it = read_queue_.begin(); |
+ it != read_queue_.end(); ++it) { |
+ it->Run(new DataBuffer(0)); |
+ } |
read_queue_.clear(); |
stopped_ = true; |
} |
@@ -289,13 +294,13 @@ FFmpegDemuxer::~FFmpegDemuxer() { |
void FFmpegDemuxer::PostDemuxTask() { |
message_loop_->PostTask(FROM_HERE, |
- base::Bind(&FFmpegDemuxer::DemuxTask, this)); |
+ base::Bind(&FFmpegDemuxer::DemuxTask, this)); |
} |
void FFmpegDemuxer::Stop(const base::Closure& callback) { |
// Post a task to notify the streams to stop as well. |
message_loop_->PostTask(FROM_HERE, |
- base::Bind(&FFmpegDemuxer::StopTask, this, callback)); |
+ base::Bind(&FFmpegDemuxer::StopTask, this, callback)); |
// Then wakes up the thread from reading. |
SignalReadCompleted(DataSource::kReadError); |
@@ -303,7 +308,7 @@ void FFmpegDemuxer::Stop(const base::Closure& callback) { |
void FFmpegDemuxer::Seek(base::TimeDelta time, const FilterStatusCB& cb) { |
message_loop_->PostTask(FROM_HERE, |
- base::Bind(&FFmpegDemuxer::SeekTask, this, time, cb)); |
+ base::Bind(&FFmpegDemuxer::SeekTask, this, time, cb)); |
} |
void FFmpegDemuxer::SetPlaybackRate(float playback_rate) { |
@@ -317,8 +322,8 @@ void FFmpegDemuxer::SetPreload(Preload preload) { |
} |
void FFmpegDemuxer::OnAudioRendererDisabled() { |
- message_loop_->PostTask(FROM_HERE, |
- base::Bind(&FFmpegDemuxer::DisableAudioStreamTask, this)); |
+ message_loop_->PostTask(FROM_HERE, base::Bind( |
+ &FFmpegDemuxer::DisableAudioStreamTask, this)); |
} |
void FFmpegDemuxer::set_host(FilterHost* filter_host) { |
@@ -473,7 +478,7 @@ void FFmpegDemuxer::InitializeTask(DataSource* data_source, |
AVStream* stream = format_context_->streams[i]; |
// WebM is currently strictly VP8 and Vorbis. |
if (kDemuxerIsWebm && (stream->codec->codec_id != CODEC_ID_VP8 && |
- stream->codec->codec_id != CODEC_ID_VORBIS)) { |
+ stream->codec->codec_id != CODEC_ID_VORBIS)) { |
packet_streams_.push_back(NULL); |
continue; |
} |
@@ -487,7 +492,7 @@ void FFmpegDemuxer::InitializeTask(DataSource* data_source, |
if (stream->first_dts != static_cast<int64_t>(AV_NOPTS_VALUE)) { |
const base::TimeDelta first_dts = ConvertFromTimeBase( |
- stream->time_base, stream->first_dts); |
+ stream->time_base, stream->first_dts); |
if (start_time_ == kNoTimestamp || first_dts < start_time_) |
start_time_ = first_dts; |
} |