| Index: media/filters/ffmpeg_demuxer.cc
|
| diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
|
| index 15e77c6aa03b1795066b28db1e92b8bb352611df..f3f87ac45ed8b794a934f477a807bf849c15932c 100644
|
| --- a/media/filters/ffmpeg_demuxer.cc
|
| +++ b/media/filters/ffmpeg_demuxer.cc
|
| @@ -382,6 +382,12 @@ void FFmpegDemuxerStream::SetEndOfStream() {
|
| void FFmpegDemuxerStream::FlushBuffers() {
|
| DCHECK(task_runner_->BelongsToCurrentThread());
|
| DCHECK(read_cb_.is_null()) << "There should be no pending read";
|
| +
|
| + // H264 requires that we resend the header after flush.
|
| + // Reset its bitstream for converter to do so.
|
| + // This is related to chromium issue 140371 (http://crbug.com/140371).
|
| + ResetBitstreamConverter();
|
| +
|
| buffer_queue_.Clear();
|
| end_of_stream_ = false;
|
| last_packet_timestamp_ = kNoTimestamp();
|
| @@ -434,6 +440,16 @@ void FFmpegDemuxerStream::EnableBitstreamConverter() {
|
| #endif
|
| }
|
|
|
| +void FFmpegDemuxerStream::ResetBitstreamConverter() {
|
| +#if defined(USE_PROPRIETARY_CODECS)
|
| + if (!bitstream_converter_enabled_ || !bitstream_converter_)
|
| + return;
|
| +
|
| + bitstream_converter_.reset(
|
| + new FFmpegH264ToAnnexBBitstreamConverter(stream_->codec));
|
| +#endif // defined(USE_PROPRIETARY_CODECS)
|
| +}
|
| +
|
| bool FFmpegDemuxerStream::SupportsConfigChanges() { return false; }
|
|
|
| AudioDecoderConfig FFmpegDemuxerStream::audio_decoder_config() {
|
|
|