| Index: media/filters/ffmpeg_demuxer.cc
|
| diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
|
| index 0a4dad5c54666414aeb0227aec7e57c5206f9fd5..06f5b940d8075505238d7d5263181460a1c9ecc5 100644
|
| --- a/media/filters/ffmpeg_demuxer.cc
|
| +++ b/media/filters/ffmpeg_demuxer.cc
|
| @@ -267,6 +267,7 @@ FFmpegDemuxerStream::FFmpegDemuxerStream(
|
| last_packet_timestamp_(kNoTimestamp()),
|
| last_packet_duration_(kNoTimestamp()),
|
| video_rotation_(VIDEO_ROTATION_0),
|
| + is_enabled_(true),
|
| fixup_negative_timestamps_(false) {
|
| DCHECK(demuxer_);
|
|
|
| @@ -613,6 +614,12 @@ void FFmpegDemuxerStream::Read(const ReadCB& read_cb) {
|
| return;
|
| }
|
|
|
| + if (!is_enabled_) {
|
| + DVLOG(1) << "Read from disabled stream, returning EOS";
|
| + base::ResetAndReturn(&read_cb_).Run(kOk, DecoderBuffer::CreateEOSBuffer());
|
| + return;
|
| + }
|
| +
|
| SatisfyPendingRead();
|
| }
|
|
|
| @@ -676,6 +683,22 @@ VideoRotation FFmpegDemuxerStream::video_rotation() {
|
| return video_rotation_;
|
| }
|
|
|
| +bool FFmpegDemuxerStream::enabled() const {
|
| + return is_enabled_;
|
| +}
|
| +
|
| +void FFmpegDemuxerStream::set_enabled(bool enabled, base::TimeDelta timestamp) {
|
| + if (enabled == is_enabled_)
|
| + return;
|
| +
|
| + is_enabled_ = enabled;
|
| + if (!is_enabled_ && !read_cb_.is_null()) {
|
| + DVLOG(1) << "Read from disabled stream, returning EOS";
|
| + base::ResetAndReturn(&read_cb_).Run(kOk, DecoderBuffer::CreateEOSBuffer());
|
| + return;
|
| + }
|
| +}
|
| +
|
| void FFmpegDemuxerStream::SetLiveness(Liveness liveness) {
|
| DCHECK(task_runner_->BelongsToCurrentThread());
|
| DCHECK_EQ(liveness_, LIVENESS_UNKNOWN);
|
| @@ -1538,7 +1561,8 @@ void FFmpegDemuxer::OnReadFrameDone(ScopedAVPacket packet, int result) {
|
| }
|
|
|
| FFmpegDemuxerStream* demuxer_stream = streams_[packet->stream_index];
|
| - demuxer_stream->EnqueuePacket(std::move(packet));
|
| + if (demuxer_stream->enabled())
|
| + demuxer_stream->EnqueuePacket(std::move(packet));
|
| }
|
|
|
| // Keep reading until we've reached capacity.
|
|
|