| 113 | } |
| 114 | |
| 115 | static int init_pic_rc(AVCodecContext *avctx, FFHWBaseEncodePicture *pic, |
| 116 | VkVideoEncodeRateControlInfoKHR *rc_info, |
| 117 | VkVideoEncodeRateControlLayerInfoKHR *rc_layer /* Goes in ^ */) |
| 118 | { |
| 119 | FFVulkanEncodeContext *ctx = avctx->priv_data; |
| 120 | |
| 121 | *rc_info = (VkVideoEncodeRateControlInfoKHR) { |
| 122 | .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR, |
| 123 | .rateControlMode = ctx->opts.rc_mode, |
| 124 | }; |
| 125 | |
| 126 | if (ctx->opts.rc_mode > VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR) { |
| 127 | *rc_layer = (VkVideoEncodeRateControlLayerInfoKHR) { |
| 128 | .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR, |
| 129 | .averageBitrate = avctx->bit_rate, |
| 130 | .maxBitrate = avctx->rc_max_rate ? avctx->rc_max_rate : avctx->bit_rate, |
| 131 | .frameRateNumerator = avctx->framerate.num, |
| 132 | .frameRateDenominator = avctx->framerate.den, |
| 133 | }; |
| 134 | rc_info->layerCount++; |
| 135 | rc_info->pLayers = rc_layer; |
| 136 | } |
| 137 | |
| 138 | return ctx->codec->init_pic_rc(avctx, pic, rc_info, rc_layer); |
| 139 | } |
| 140 | |
| 141 | static int vulkan_encode_issue(AVCodecContext *avctx, |
| 142 | FFHWBaseEncodePicture *base_pic) |
no outgoing calls
no test coverage detected