| Index: media/filters/ffmpeg_demuxer.cc
|
| diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
|
| index 6a5aa09f6386c931465ac5ef3478e71c662ae82d..081bcbf1a452be23ee45adb6a080e11bd5b55c77 100644
|
| --- a/media/filters/ffmpeg_demuxer.cc
|
| +++ b/media/filters/ffmpeg_demuxer.cc
|
| @@ -49,6 +49,15 @@
|
|
|
| namespace media {
|
|
|
| +namespace {
|
| +
|
| +void SetAVStreamDiscard(AVStream* stream, AVDiscard discard) {
|
| + DCHECK(stream);
|
| + stream->discard = discard;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| static base::Time ExtractTimelineOffset(AVFormatContext* format_context) {
|
| if (strstr(format_context->iformat->name, "webm") ||
|
| strstr(format_context->iformat->name, "matroska")) {
|
| @@ -736,11 +745,15 @@ bool FFmpegDemuxerStream::IsEnabled() const {
|
|
|
| void FFmpegDemuxerStream::SetEnabled(bool enabled, base::TimeDelta timestamp) {
|
| DCHECK(task_runner_->BelongsToCurrentThread());
|
| + DCHECK(demuxer_);
|
| + DCHECK(demuxer_->ffmpeg_task_runner());
|
| if (enabled == is_enabled_)
|
| return;
|
|
|
| is_enabled_ = enabled;
|
| - av_stream()->discard = enabled ? AVDISCARD_DEFAULT : AVDISCARD_ALL;
|
| + demuxer_->ffmpeg_task_runner()->PostTask(
|
| + FROM_HERE, base::Bind(&SetAVStreamDiscard, av_stream(),
|
| + enabled ? AVDISCARD_DEFAULT : AVDISCARD_ALL));
|
| if (is_enabled_) {
|
| waiting_for_keyframe_ = true;
|
| }
|
|
|