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

Function init_base_units

libavcodec/vulkan_encode_av1.c:979–1057  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

977}
978
979static int init_base_units(AVCodecContext *avctx)
980{
981 int err;
982 VkResult ret;
983 VulkanEncodeAV1Context *enc = avctx->priv_data;
984 FFVulkanEncodeContext *ctx = &enc->common;
985 FFVulkanContext *s = &ctx->s;
986 FFVulkanFunctions *vk = &ctx->s.vkfn;
987
988 VkVideoEncodeSessionParametersGetInfoKHR params_info;
989 VkVideoEncodeSessionParametersFeedbackInfoKHR params_feedback;
990
991 void *data = NULL;
992 size_t data_size = 0;
993
994 /* Generate SPS/PPS unit info */
995 err = init_sequence_headers(avctx);
996 if (err < 0) {
997 av_log(avctx, AV_LOG_ERROR, "Unable to initialize sequence header: %s\n",
998 av_err2str(err));
999 return err;
1000 }
1001
1002 /* Create session parameters from them */
1003 err = create_session_params(avctx);
1004 if (err < 0)
1005 return err;
1006
1007 params_info = (VkVideoEncodeSessionParametersGetInfoKHR) {
1008 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR,
1009 .videoSessionParameters = ctx->session_params,
1010 };
1011 params_feedback = (VkVideoEncodeSessionParametersFeedbackInfoKHR) {
1012 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
1013 };
1014
1015 ret = vk->GetEncodedVideoSessionParametersKHR(s->hwctx->act_dev, &params_info,
1016 &params_feedback,
1017 &data_size, data);
1018 if (ret == VK_INCOMPLETE ||
1019 (ret == VK_SUCCESS) && (data_size > 0)) {
1020 data = av_mallocz(data_size);
1021 if (!data)
1022 return AVERROR(ENOMEM);
1023 } else {
1024 av_log(avctx, AV_LOG_ERROR, "Unable to get feedback for AV1 sequence header = %zu\n",
1025 data_size);
1026 return err;
1027 }
1028
1029 ret = vk->GetEncodedVideoSessionParametersKHR(s->hwctx->act_dev, &params_info,
1030 &params_feedback,
1031 &data_size, data);
1032 if (ret != VK_SUCCESS) {
1033 av_log(avctx, AV_LOG_ERROR, "Error writing feedback units\n");
1034 return err;
1035 }
1036

Callers 1

vulkan_encode_av1_initFunction · 0.70

Calls 5

av_logFunction · 0.85
init_sequence_headersFunction · 0.70
create_session_paramsFunction · 0.70
parse_feedback_unitsFunction · 0.70
av_malloczFunction · 0.50

Tested by

no test coverage detected