diff options
author | Anton Khirnov <anton@khirnov.net> | 2022-07-12 14:37:15 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2022-08-23 16:50:33 +0200 |
commit | ec8bd87d8d858457c9d3d4327ced170eda6c6c70 (patch) | |
tree | 11e7231a2c03fb56d793d48ff52778e062208682 | |
parent | 64189c1c4ebec2362ac8d0b9bbcedd0230af928f (diff) |
lavc/libx264: pass through frame durations to encoded packets
-rw-r--r-- | libavcodec/libx264.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index 6afa3cdadb..34ba3408aa 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -51,6 +51,7 @@ typedef struct X264Opaque { int64_t reordered_opaque; int64_t wallclock; + int64_t duration; } X264Opaque; typedef struct X264Context { @@ -372,6 +373,7 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame, x4->reordered_opaque[x4->next_reordered_opaque].wallclock = wallclock; if (ctx->export_side_data & AV_CODEC_EXPORT_DATA_PRFT) x4->reordered_opaque[x4->next_reordered_opaque].wallclock = av_gettime(); + x4->reordered_opaque[x4->next_reordered_opaque].duration = frame->duration; x4->pic.opaque = &x4->reordered_opaque[x4->next_reordered_opaque]; x4->next_reordered_opaque++; x4->next_reordered_opaque %= x4->nb_reordered_opaque; @@ -561,6 +563,7 @@ static int X264_frame(AVCodecContext *ctx, AVPacket *pkt, const AVFrame *frame, out_opaque < &x4->reordered_opaque[x4->nb_reordered_opaque]) { ctx->reordered_opaque = out_opaque->reordered_opaque; wallclock = out_opaque->wallclock; + pkt->duration = out_opaque->duration; } else { // Unexpected opaque pointer on picture output ctx->reordered_opaque = 0; |