Index: media/filters/ffmpeg_demuxer.cc |
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc |
index 093e4f539b13847a1f7f6beb0e140674af037f69..eab193e465a4188e0e1fba6c9c2ae4735a78e78a 100644 |
--- a/media/filters/ffmpeg_demuxer.cc |
+++ b/media/filters/ffmpeg_demuxer.cc |
@@ -275,6 +275,7 @@ FFmpegDemuxerStream::FFmpegDemuxerStream( |
video_rotation_(VIDEO_ROTATION_0), |
is_enabled_(true), |
waiting_for_keyframe_(false), |
+ aborted_(false), |
fixup_negative_timestamps_(false) { |
DCHECK(demuxer_); |
@@ -591,9 +592,11 @@ void FFmpegDemuxerStream::FlushBuffers() { |
end_of_stream_ = false; |
last_packet_timestamp_ = kNoTimestamp; |
last_packet_duration_ = kNoTimestamp; |
+ aborted_ = false; |
} |
void FFmpegDemuxerStream::Abort() { |
+ aborted_ = true; |
if (!read_cb_.is_null()) |
base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kAborted, nullptr); |
} |
@@ -641,6 +644,11 @@ void FFmpegDemuxerStream::Read(const ReadCB& read_cb) { |
return; |
} |
+ if (aborted_) { |
+ base::ResetAndReturn(&read_cb_).Run(kAborted, nullptr); |
+ return; |
+ } |
+ |
SatisfyPendingRead(); |
} |