diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2011-08-04 13:06:43 +0400 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2011-08-04 13:06:43 +0400 |
commit | 31fe5d9825a050ca319ab9ddbe502d84ac3a576e (patch) | |
tree | 0887c1b51fc0c8b8f3c62b8bfb2151220e384f7b /ffmpeg.c | |
parent | 64160ef39216b2d40eb34c13421febe045ddcf8a (diff) |
Fix possible crash when decoding mpeg streams.
This reverts 2cf8355f98681bdd726b739008acd5483f82f8d7,
fixes ticket 329.
Diffstat (limited to 'ffmpeg.c')
-rw-r--r-- | ffmpeg.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -335,6 +335,7 @@ typedef struct InputFile { int eof_reached; /* true if eof reached */ int ist_index; /* index of first stream in ist_table */ int buffer_size; /* current total buffer size */ + int nb_streams; int64_t ts_offset; } InputFile; @@ -2063,7 +2064,7 @@ static int transcode(AVFormatContext **output_files, int si = stream_maps[i].stream_index; if (fi < 0 || fi > nb_input_files - 1 || - si < 0 || si > input_files[fi].ctx->nb_streams - 1) { + si < 0 || si > input_files[fi].nb_streams - 1) { fprintf(stderr,"Could not find input stream #%d.%d\n", fi, si); ret = AVERROR(EINVAL); goto fail; @@ -2769,7 +2770,7 @@ static int transcode(AVFormatContext **output_files, } /* the following test is needed in case new streams appear dynamically in stream : we ignore them */ - if (pkt.stream_index >= input_files[file_index].ctx->nb_streams) + if (pkt.stream_index >= input_files[file_index].nb_streams) goto discard_packet; ist_index = input_files[file_index].ist_index + pkt.stream_index; ist = &input_streams[ist_index]; @@ -3490,6 +3491,7 @@ static int opt_input_file(const char *opt, const char *filename) input_files[nb_input_files - 1].ctx = ic; input_files[nb_input_files - 1].ist_index = nb_input_streams - ic->nb_streams; input_files[nb_input_files - 1].ts_offset = input_ts_offset - (copy_ts ? 0 : timestamp); + input_files[nb_input_files - 1].nb_streams = ic->nb_streams; top_field_first = -1; frame_rate = (AVRational){0, 0}; |