ffmpeg | branch: master | Anton Khirnov <an...@khirnov.net> | Tue Jul 12 10:30:58 2022 +0200| [8789720d28f55ed72721cb4fe4c20c73e73114fc] | committer: Anton Khirnov
lavc/encode: generalize a check for setting dts=pts DTS may be different from PTS only if both of these are true: - the codec supports reordering - the encoder has delay > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8789720d28f55ed72721cb4fe4c20c73e73114fc --- libavcodec/encode.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libavcodec/encode.c b/libavcodec/encode.c index b275344bd1..72b92d2548 100644 --- a/libavcodec/encode.c +++ b/libavcodec/encode.c @@ -211,7 +211,7 @@ int ff_encode_encode_cb(AVCodecContext *avctx, AVPacket *avpkt, if (avctx->codec->type == AVMEDIA_TYPE_VIDEO && !(avctx->codec->capabilities & AV_CODEC_CAP_DELAY)) - avpkt->pts = avpkt->dts = frame->pts; + avpkt->pts = frame->pts; if (!(avctx->codec->capabilities & AV_CODEC_CAP_DELAY)) { if (avctx->codec->type == AVMEDIA_TYPE_AUDIO) { if (avpkt->pts == AV_NOPTS_VALUE) @@ -221,9 +221,12 @@ int ff_encode_encode_cb(AVCodecContext *avctx, AVPacket *avpkt, frame->nb_samples); } } - if (avctx->codec->type == AVMEDIA_TYPE_AUDIO) { + + // dts equals pts unless there is reordering + // there can be no reordering if there is no encoder delay + if (!(avctx->codec_descriptor->props & AV_CODEC_PROP_REORDER) || + !(avctx->codec->capabilities & AV_CODEC_CAP_DELAY)) avpkt->dts = avpkt->pts; - } } else { unref: av_packet_unref(avpkt); _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".