<div dir="ltr"><div dir="ltr"><div>From b9a23076ec4033f2ae7f03d7124b4add78f15502 Mon Sep 17 00:00:00 2001</div><div>From: Monica Nandakumar <<a href="mailto:monica@multicorewareinc.com">monica@multicorewareinc.com</a>></div><div>Date: Thu, 3 Oct 2024 17:42:24 +0530</div><div>Subject: [PATCH] Support for VBV-End feature</div><div><br></div><div>---</div><div> fftools/ffmpeg_enc.c | 2 ++</div><div> libavcodec/avcodec.h | 1 +</div><div> libavcodec/libx265.c | 2 ++</div><div> 3 files changed, 5 insertions(+)</div><div><br></div><div>diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c</div><div>index a46af4dce1..080e44f2df 100644</div><div>--- a/fftools/ffmpeg_enc.c</div><div>+++ b/fftools/ffmpeg_enc.c</div><div>@@ -187,7 +187,9 @@ int enc_open(void *opaque, const AVFrame *frame)</div><div>     InputStream *ist = ost->ist;</div><div>     Encoder              *e = ost->enc;</div><div>     EncoderPriv         *ep = ep_from_enc(e);</div><div>+    AVFormatContext* ic = input_files[ost->file->index]->ctx;</div><div>     AVCodecContext *enc_ctx = e->enc_ctx;</div><div>+    enc_ctx->duration = (double)(ic->duration);</div><div>     Decoder            *dec = NULL;</div><div>     const AVCodec      *enc = enc_ctx->codec;</div><div>     OutputFile          *of = ost->file;</div><div>diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h</div><div>index 77ca8dee1f..e6ca5babee 100644</div><div>--- a/libavcodec/avcodec.h</div><div>+++ b/libavcodec/avcodec.h</div><div>@@ -2086,6 +2086,7 @@ typedef struct AVCodecContext {</div><div>      */</div><div>     AVFrameSideData  **decoded_side_data;</div><div>     int             nb_decoded_side_data;</div><div>+    double duration;</div><div> } AVCodecContext;</div><div> </div><div> /**</div><div>diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c</div><div>index 513f473307..4d0da86930 100644</div><div>--- a/libavcodec/libx265.c</div><div>+++ b/libavcodec/libx265.c</div><div>@@ -693,6 +693,7 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt,</div><div>         }</div><div> </div><div>         x265pic.pts      = pic->pts;</div><div>+        x265pic.poc      = pic->pts;</div><div>         x265pic.bitDepth = av_pix_fmt_desc_get(avctx->pix_fmt)->comp[0].depth;</div><div> </div><div>         x265pic.sliceType = pic->pict_type == AV_PICTURE_TYPE_I ?</div><div>@@ -786,6 +787,7 @@ static int libx265_encode_frame(AVCodecContext *avctx, AVPacket *pkt,</div><div>         }</div><div> </div><div> #if X265_BUILD >= 167</div><div>+        ctx->api->configure_vbv_end(ctx->encoder,&x265pic,(avctx->duration/1000000));</div><div>         sd = av_frame_get_side_data(pic, AV_FRAME_DATA_DOVI_METADATA);</div><div>         if (ctx->dovi.cfg.dv_profile && sd) {</div><div>             const AVDOVIMetadata *metadata = (const AVDOVIMetadata *)sd->data;</div><div>-- </div><div>2.17.1</div><div><br></div></div></div>