diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2025-08-13 00:59:20 +0200 |
---|---|---|
committer | michaelni <michael@niedermayer.cc> | 2025-08-14 00:36:29 +0000 |
commit | cdbb5f1b93352f9e7eceb1562ad283a78b546091 (patch) | |
tree | 69b611aa949374ce69730dd19eb05bd3ad45638b | |
parent | 589b93441741b4ee2b65dd10405bdc44ebd0e8fd (diff) | |
download | ffmpeg-cdbb5f1b93352f9e7eceb1562ad283a78b546091.tar.gz |
fftools/ffmpeg_mux_init: Use 64bit for score computation in map_auto_video()
Fixes: signed integer overflow: 10 * 1952737655 cannot be represented in type 'int'
Fixes: PoC_avi_demux
Found-by: 2ourc3 (Salim LARGO)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | fftools/ffmpeg_mux_init.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c index 4a973e5286..17977eb07f 100644 --- a/fftools/ffmpeg_mux_init.c +++ b/fftools/ffmpeg_mux_init.c @@ -1593,7 +1593,7 @@ static int map_auto_video(Muxer *mux, const OptionsContext *o) { AVFormatContext *oc = mux->fc; InputStream *best_ist = NULL; - int best_score = 0; + int64_t best_score = 0; int qcr; /* video: highest resolution */ @@ -1604,16 +1604,16 @@ static int map_auto_video(Muxer *mux, const OptionsContext *o) for (int j = 0; j < nb_input_files; j++) { InputFile *ifile = input_files[j]; InputStream *file_best_ist = NULL; - int file_best_score = 0; + int64_t file_best_score = 0; for (int i = 0; i < ifile->nb_streams; i++) { InputStream *ist = ifile->streams[i]; - int score; + int64_t score; if (ist->user_set_discard == AVDISCARD_ALL || ist->st->codecpar->codec_type != AVMEDIA_TYPE_VIDEO) continue; - score = ist->st->codecpar->width * ist->st->codecpar->height + score = ist->st->codecpar->width * (int64_t)ist->st->codecpar->height + 100000000 * !!(ist->st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS) + 5000000*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT); if((qcr!=MKTAG('A', 'P', 'I', 'C')) && (ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC)) |