Index: media/ffmpeg/ffmpeg_common.cc |
=================================================================== |
--- media/ffmpeg/ffmpeg_common.cc (revision 91170) |
+++ media/ffmpeg/ffmpeg_common.cc (working copy) |
@@ -210,19 +210,21 @@ |
DCHECK(format_context); |
// Iterate each stream and destroy each one of them. |
- int streams = format_context->nb_streams; |
- for (int i = 0; i < streams; ++i) { |
- AVStream* stream = format_context->streams[i]; |
+ if (format_context->streams) { |
+ int streams = format_context->nb_streams; |
+ for (int i = 0; i < streams; ++i) { |
+ AVStream* stream = format_context->streams[i]; |
- // The conditions for calling avcodec_close(): |
- // 1. AVStream is alive. |
- // 2. AVCodecContext in AVStream is alive. |
- // 3. AVCodec in AVCodecContext is alive. |
- // Notice that closing a codec context without prior avcodec_open() will |
- // result in a crash in FFmpeg. |
- if (stream && stream->codec && stream->codec->codec) { |
- stream->discard = AVDISCARD_ALL; |
- avcodec_close(stream->codec); |
+ // The conditions for calling avcodec_close(): |
+ // 1. AVStream is alive. |
+ // 2. AVCodecContext in AVStream is alive. |
+ // 3. AVCodec in AVCodecContext is alive. |
+ // Notice that closing a codec context without prior avcodec_open() will |
+ // result in a crash in FFmpeg. |
+ if (stream && stream->codec && stream->codec->codec) { |
+ stream->discard = AVDISCARD_ALL; |
+ avcodec_close(stream->codec); |
+ } |
} |
} |