Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH] avcodec/vaapi_encode: skip AVBR if HRD parameters are set (PR #20424)
@ 2025-09-04  1:41 cgutman via ffmpeg-devel
  0 siblings, 0 replies; only message in thread
From: cgutman via ffmpeg-devel @ 2025-09-04  1:41 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: cgutman

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

AVBR does not use `VAEncMiscParameterTypeHRD` (see [line 1212](https://code.ffmpeg.org/FFmpeg/FFmpeg/src/commit/858aa6176b5320e8f648461194a80cfda766de5a/libavcodec/vaapi_encode.c#L1212)), so attempting to set `rc_buffer_size and bit_rate together will cause the `rc_buffer_size` to be ignored if the VAAPI driver supports AVBR. We should prefer regular VBR for that case.




>From 56b2e59e8da1d316a430c7ec0deeb55c7ea3c86a Mon Sep 17 00:00:00 2001
From: Cameron Gutman <aicommander@gmail.com>
Date: Tue, 1 Apr 2025 23:11:20 -0500
Subject: [PATCH] avcodec/vaapi_encode: skip AVBR if HRD parameters are set

AVBR does not use VAEncMiscParameterTypeHRD, so attempting to set
rc_buffer_size and bit_rate together will cause the rc_buffer_size
to be ignored if the VAAPI driver supports AVBR. We should prefer
regular VBR for that case.

Signed-off-by: Cameron Gutman <aicommander@gmail.com>
---
 libavcodec/vaapi_encode.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c
index 8960e6b20a..8bd0701caf 100644
--- a/libavcodec/vaapi_encode.c
+++ b/libavcodec/vaapi_encode.c
@@ -1338,7 +1338,10 @@ static av_cold int vaapi_encode_init_rate_control(AVCodecContext *avctx)
         TRY_RC_MODE(RC_MODE_CBR, 0);
 
     if (avctx->bit_rate > 0) {
-        TRY_RC_MODE(RC_MODE_AVBR, 0);
+        // AVBR does not enforce RC buffer constraints
+        if (!avctx->rc_buffer_size && !avctx->rc_initial_buffer_occupancy)
+            TRY_RC_MODE(RC_MODE_AVBR, 0);
+
         TRY_RC_MODE(RC_MODE_VBR, 0);
         TRY_RC_MODE(RC_MODE_CBR, 0);
     } else {
-- 
2.49.1

_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-09-04  1:41 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-09-04  1:41 [FFmpeg-devel] [PATCH] avcodec/vaapi_encode: skip AVBR if HRD parameters are set (PR #20424) cgutman via ffmpeg-devel

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git