| 1068 | } |
| 1069 | |
| 1070 | int ff_vulkan_encode_create_session_params(AVCodecContext *avctx, FFVulkanEncodeContext *ctx, |
| 1071 | void *codec_params_pnext) |
| 1072 | { |
| 1073 | VkResult ret; |
| 1074 | FFVulkanFunctions *vk = &ctx->s.vkfn; |
| 1075 | FFVulkanContext *s = &ctx->s; |
| 1076 | |
| 1077 | VkVideoEncodeQualityLevelInfoKHR q_info; |
| 1078 | VkVideoSessionParametersCreateInfoKHR session_params_create; |
| 1079 | |
| 1080 | q_info = (VkVideoEncodeQualityLevelInfoKHR) { |
| 1081 | .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR, |
| 1082 | .pNext = codec_params_pnext, |
| 1083 | .qualityLevel = ctx->opts.quality, |
| 1084 | }; |
| 1085 | session_params_create = (VkVideoSessionParametersCreateInfoKHR) { |
| 1086 | .sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR, |
| 1087 | .pNext = &q_info, |
| 1088 | .videoSession = ctx->common.session, |
| 1089 | .videoSessionParametersTemplate = VK_NULL_HANDLE, |
| 1090 | }; |
| 1091 | |
| 1092 | /* Create session parameters */ |
| 1093 | ret = vk->CreateVideoSessionParametersKHR(s->hwctx->act_dev, &session_params_create, |
| 1094 | s->hwctx->alloc, &ctx->session_params); |
| 1095 | if (ret != VK_SUCCESS) { |
| 1096 | av_log(avctx, AV_LOG_ERROR, "Unable to create Vulkan video session parameters: %s!\n", |
| 1097 | ff_vk_ret2str(ret)); |
| 1098 | return AVERROR_EXTERNAL; |
| 1099 | } |
| 1100 | |
| 1101 | return 0; |
| 1102 | } |
no test coverage detected