PR #21375 opened by cgutman
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21375
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21375.patch

Plumb `avctx->refs` to the corresponding 
[CODECAPI_AVEncVideoMaxNumRefFrame](https://learn.microsoft.com/en-us/windows/win32/medfound/codecapi-avencvideomaxnumrefframe)
 option used by MediaFoundation encoders.


>From 9ffa433b2f7f97a29f69adbd134cf7fb4dc9b6a6 Mon Sep 17 00:00:00 2001
From: Cameron Gutman <[email protected]>
Date: Sun, 4 Jan 2026 13:02:38 -0600
Subject: [PATCH] avcodec/mfenc: limit reference frames when requested

Signed-off-by: Cameron Gutman <[email protected]>
---
 libavcodec/mf_utils.h | 1 +
 libavcodec/mfenc.c    | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/libavcodec/mf_utils.h b/libavcodec/mf_utils.h
index ecebb6fcdf..f376c2ac2b 100644
--- a/libavcodec/mf_utils.h
+++ b/libavcodec/mf_utils.h
@@ -109,6 +109,7 @@ DEFINE_GUID(ff_CODECAPI_AVEncCommonMaxBitRate, 0x9651eae4, 
0x39b9, 0x4ebf, 0x85,
 DEFINE_GUID(ff_CODECAPI_AVEncCommonQualityVsSpeed, 0x98332df8, 0x03cd, 0x476b, 
0x89, 0xfa, 0x3f, 0x9e, 0x44, 0x2d, 0xec, 0x9f);
 DEFINE_GUID(ff_CODECAPI_AVEncMPVGOPSize, 0x95f31b26, 0x95a4, 0x41aa, 0x93, 
0x03, 0x24, 0x6a, 0x7f, 0xc6, 0xee, 0xf1);
 DEFINE_GUID(ff_CODECAPI_AVEncVideoEncodeQP, 0x2cb5696b, 0x23fb, 0x4ce1, 0xa0, 
0xf9, 0xef, 0x5b, 0x90, 0xfd, 0x55, 0xca);
+DEFINE_GUID(ff_CODECAPI_AVEncVideoMaxNumRefFrame, 0x964829ed, 0x94f9, 0x43b4, 
0xb7, 0x4d, 0xef, 0x40, 0x94, 0x4b, 0x69, 0xa0);
 
 DEFINE_GUID(ff_MF_SA_D3D11_BINDFLAGS, 0xeacf97ad, 0x065c, 0x4408, 0xbe, 0xe3, 
0xfd, 0xcb, 0xfd, 0x12, 0x8b, 0xe2);
 DEFINE_GUID(ff_MF_SA_D3D11_USAGE, 0xe85fe442, 0x2ca3, 0x486e, 0xa9, 0xc7, 
0x10, 0x9d, 0xda, 0x60, 0x98, 0x80);
diff --git a/libavcodec/mfenc.c b/libavcodec/mfenc.c
index 541f7fb961..2d3f510a60 100644
--- a/libavcodec/mfenc.c
+++ b/libavcodec/mfenc.c
@@ -874,6 +874,9 @@ static int mf_encv_output_adjust(AVCodecContext *avctx, 
IMFMediaType *type)
 
         ICodecAPI_SetValue(c->codec_api, &ff_CODECAPI_AVEncH264CABACEnable, 
FF_VAL_VT_BOOL(1));
 
+        if (avctx->refs > 0)
+            ICodecAPI_SetValue(c->codec_api, 
&ff_CODECAPI_AVEncVideoMaxNumRefFrame, FF_VAL_VT_UI4(avctx->refs));
+
         if (c->opt_enc_scenario >= 0)
             ICodecAPI_SetValue(c->codec_api, &ff_CODECAPI_AVScenarioInfo, 
FF_VAL_VT_UI4(c->opt_enc_scenario));
 
-- 
2.49.1

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to