| 896 | } |
| 897 | |
| 898 | static int create_session_params(AVCodecContext *avctx) |
| 899 | { |
| 900 | int err; |
| 901 | VulkanEncodeAV1Context *enc = avctx->priv_data; |
| 902 | FFVulkanEncodeContext *ctx = &enc->common; |
| 903 | FFVulkanContext *s = &ctx->s; |
| 904 | FFVulkanFunctions *vk = &ctx->s.vkfn; |
| 905 | |
| 906 | VulkanAV1Units vk_units = { 0 }; |
| 907 | |
| 908 | VkVideoEncodeAV1SessionParametersCreateInfoKHR av1_params; |
| 909 | |
| 910 | /* Convert it to Vulkan */ |
| 911 | err = base_unit_to_vk(avctx, &vk_units); |
| 912 | if (err < 0) { |
| 913 | av_log(avctx, AV_LOG_ERROR, "Unable to convert sequence header to Vulkan: %s\n", |
| 914 | av_err2str(err)); |
| 915 | return err; |
| 916 | } |
| 917 | |
| 918 | /* Destroy the session params */ |
| 919 | if (ctx->session_params) |
| 920 | vk->DestroyVideoSessionParametersKHR(s->hwctx->act_dev, |
| 921 | ctx->session_params, |
| 922 | s->hwctx->alloc); |
| 923 | |
| 924 | av1_params = (VkVideoEncodeAV1SessionParametersCreateInfoKHR) { |
| 925 | .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR, |
| 926 | .pStdSequenceHeader = &vk_units.seq_hdr, |
| 927 | .pStdDecoderModelInfo = &vk_units.decoder_model, |
| 928 | .pStdOperatingPoints = vk_units.operating_points, |
| 929 | .stdOperatingPointCount = vk_units.nb_operating_points, |
| 930 | }; |
| 931 | |
| 932 | return ff_vulkan_encode_create_session_params(avctx, ctx, &av1_params); |
| 933 | } |
| 934 | |
| 935 | static int parse_feedback_units(AVCodecContext *avctx, |
| 936 | const uint8_t *data, size_t size) |
no test coverage detected