summaryrefslogtreecommitdiff
path: root/fftools/ffmpeg.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2023-05-07 15:24:01 +0200
committerAnton Khirnov <anton@khirnov.net>2023-05-15 10:56:48 +0200
commita238ba9c3c9987bccb27e9d37fcef2ae8b355aeb (patch)
treef1abb0131bba98dee6235a7a0d39b3e69d72d25e /fftools/ffmpeg.c
parent7d1d61cc5f57708434ba720b03234b3dd93a4d1e (diff)
downloadffmpeg-a238ba9c3c9987bccb27e9d37fcef2ae8b355aeb.tar.gz
fftools/ffmpeg: stop using deprecated ticks_per_frame
Diffstat (limited to 'fftools/ffmpeg.c')
-rw-r--r--fftools/ffmpeg.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index 9920f946dc..e2ada7a352 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -1498,12 +1498,13 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
} else if (pkt->duration) {
ist->next_dts += av_rescale_q(pkt->duration, pkt->time_base, AV_TIME_BASE_Q);
} else if(ist->dec_ctx->framerate.num != 0) {
- int ticks = ist->last_pkt_repeat_pict >= 0 ?
- ist->last_pkt_repeat_pict + 1 :
- ist->dec_ctx->ticks_per_frame;
- ist->next_dts += ((int64_t)AV_TIME_BASE *
- ist->dec_ctx->framerate.den * ticks) /
- ist->dec_ctx->framerate.num / ist->dec_ctx->ticks_per_frame;
+ int fields = (ist->codec_desc &&
+ (ist->codec_desc->props & AV_CODEC_PROP_FIELDS)) ?
+ ist->last_pkt_repeat_pict + 1 : 2;
+ AVRational field_rate = av_mul_q(ist->dec_ctx->framerate,
+ (AVRational){ 2, 1 });
+
+ ist->next_dts += av_rescale_q(fields, av_inv_q(field_rate), AV_TIME_BASE_Q);
}
break;
}