diff options
author | Michael Niedermayer <[email protected]> | 2018-05-01 22:44:07 +0200 |
---|---|---|
committer | Michael Niedermayer <[email protected]> | 2018-10-23 01:44:40 +0200 |
commit | 963915a4b416e944c8f01bc3d635d6b64d8b0022 (patch) | |
tree | e88bd632acdce93cf799cb4e5f1b85f68cb5b9c3 | |
parent | ff75dc10fd27d97b789f6d8df179e6f82580c586 (diff) |
fftools/ffmpeg: Fallback to duration if sample rate is unavailable
Regression since: af1761f7
Fixes: Division by 0
Fixes: ffmpeg_crash_1
Found-by: Thuan Pham, Marcel Böhme, Andrew Santosa and Alexandru Razvan Caciulescu with AFLSmart
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 16d8b13b3b26c19d7f8856e039fe6662d96b4ff3)
Signed-off-by: Michael Niedermayer <[email protected]>
-rw-r--r-- | ffmpeg.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -2382,8 +2382,12 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo ist->dts = ist->next_dts; switch (ist->dec_ctx->codec_type) { case AVMEDIA_TYPE_AUDIO: - ist->next_dts += ((int64_t)AV_TIME_BASE * ist->dec_ctx->frame_size) / - ist->dec_ctx->sample_rate; + if (ist->dec_ctx->sample_rate) { + ist->next_dts += ((int64_t)AV_TIME_BASE * ist->dec_ctx->frame_size) / + ist->dec_ctx->sample_rate; + } else { + ist->next_dts += av_rescale_q(pkt->duration, ist->st->time_base, AV_TIME_BASE_Q); + } break; case AVMEDIA_TYPE_VIDEO: if (ist->framerate.num) { |