From 934be0ff50fbe58aa44bc8a876f07195846d15ea Mon Sep 17 00:00:00 2001 From: Lynne Date: Fri, 27 Sep 2024 09:49:35 +0200 Subject: [PATCH] vulkan_encode_h264: fix rate control VBV values The values must be in milliseconds, not bytes. --- libavcodec/vulkan_encode_h264.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/vulkan_encode_h264.c b/libavcodec/vulkan_encode_h264.c index 9964ba5b8b..a0a00a3db2 100644 --- a/libavcodec/vulkan_encode_h264.c +++ b/libavcodec/vulkan_encode_h264.c @@ -130,12 +130,12 @@ static int init_pic_rc(AVCodecContext *avctx, FFHWBaseEncodePicture *pic, .consecutiveBFrameCount = FFMAX(ctx->base.b_per_p - 1, 0), .temporalLayerCount = 0, }; - rc_info->pNext = &hp->vkrc_info; - rc_info->virtualBufferSizeInMs = enc->unit_opts.hrd_buffer_size; - rc_info->initialVirtualBufferSizeInMs = enc->unit_opts.initial_buffer_fullness; if (rc_info->rateControlMode > VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR) { + rc_info->virtualBufferSizeInMs = (enc->unit_opts.hrd_buffer_size * 1000LL) / avctx->bit_rate; + rc_info->initialVirtualBufferSizeInMs = (enc->unit_opts.initial_buffer_fullness * 1000LL) / avctx->bit_rate; + hp->vkrc_layer_info = (VkVideoEncodeH264RateControlLayerInfoKHR) { .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR,