MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / create_session_params

Function create_session_params

libavcodec/vulkan_encode_h264.c:1006–1048  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1004}
1005
1006static int create_session_params(AVCodecContext *avctx)
1007{
1008 int err;
1009 VulkanEncodeH264Context *enc = avctx->priv_data;
1010 FFVulkanEncodeContext *ctx = &enc->common;
1011 FFVulkanContext *s = &ctx->s;
1012 FFVulkanFunctions *vk = &ctx->s.vkfn;
1013
1014 VulkanH264Units vk_units = { 0 };
1015
1016 VkVideoEncodeH264SessionParametersAddInfoKHR h264_params_info;
1017 VkVideoEncodeH264SessionParametersCreateInfoKHR h264_params;
1018
1019 /* Convert it to Vulkan */
1020 err = base_unit_to_vk(avctx, &vk_units);
1021 if (err < 0) {
1022 av_log(avctx, AV_LOG_ERROR, "Unable to convert SPS/PPS units to Vulkan: %s\n",
1023 av_err2str(err));
1024 return err;
1025 }
1026
1027 /* Destroy the session params */
1028 if (ctx->session_params)
1029 vk->DestroyVideoSessionParametersKHR(s->hwctx->act_dev,
1030 ctx->session_params,
1031 s->hwctx->alloc);
1032
1033 h264_params_info = (VkVideoEncodeH264SessionParametersAddInfoKHR) {
1034 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
1035 .pStdSPSs = &vk_units.vksps,
1036 .stdSPSCount = 1,
1037 .pStdPPSs = &vk_units.vkpps,
1038 .stdPPSCount = 1,
1039 };
1040 h264_params = (VkVideoEncodeH264SessionParametersCreateInfoKHR) {
1041 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR,
1042 .maxStdSPSCount = 1,
1043 .maxStdPPSCount = 1,
1044 .pParametersAddInfo = &h264_params_info,
1045 };
1046
1047 return ff_vulkan_encode_create_session_params(avctx, ctx, &h264_params);
1048}
1049
1050static int parse_feedback_units(AVCodecContext *avctx,
1051 const uint8_t *data, size_t size,

Callers 1

init_base_unitsFunction · 0.70

Calls 3

av_logFunction · 0.85
base_unit_to_vkFunction · 0.70

Tested by

no test coverage detected