| 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);
|
| + }
|
| }
|
| }
|
|
|
|
|