| Index: media/filters/ffmpeg_demuxer.cc
|
| diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
|
| index abe8fe1d63dccd062cea2d18a16d72ec7384350b..56929bcf05172823e0aab9b2ba7d8fe64e4c81b2 100644
|
| --- a/media/filters/ffmpeg_demuxer.cc
|
| +++ b/media/filters/ffmpeg_demuxer.cc
|
| @@ -588,6 +588,26 @@ void FFmpegDemuxer::OnReadFrameDone(ScopedAVPacket packet, int result) {
|
| streams_[packet->stream_index] &&
|
| (!audio_disabled_ ||
|
| streams_[packet->stream_index]->type() != DemuxerStream::AUDIO)) {
|
| +
|
| + // TODO(scherkus): Fix demuxing upstream to never return packets w/o data
|
| + // when av_read_frame() returns success code. See bug comment for ideas:
|
| + //
|
| + // https://code.google.com/p/chromium/issues/detail?id=169133#c10
|
| + if (!packet->data) {
|
| + ScopedAVPacket new_packet(new AVPacket());
|
| + av_new_packet(new_packet.get(), 0);
|
| +
|
| + new_packet->pts = packet->pts;
|
| + new_packet->dts = packet->dts;
|
| + new_packet->pos = packet->pos;
|
| + new_packet->duration = packet->duration;
|
| + new_packet->convergence_duration = packet->convergence_duration;
|
| + new_packet->flags = packet->flags;
|
| + new_packet->stream_index = packet->stream_index;
|
| +
|
| + packet.swap(new_packet);
|
| + }
|
| +
|
| FFmpegDemuxerStream* demuxer_stream = streams_[packet->stream_index];
|
| demuxer_stream->EnqueuePacket(packet.Pass());
|
| }
|
|
|