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

Function init_base_units

libavcodec/vulkan_encode_h264.c:1090–1187  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1088}
1089
1090static int init_base_units(AVCodecContext *avctx)
1091{
1092 int err;
1093 VkResult ret;
1094 VulkanEncodeH264Context *enc = avctx->priv_data;
1095 FFVulkanEncodeContext *ctx = &enc->common;
1096 FFVulkanContext *s = &ctx->s;
1097 FFVulkanFunctions *vk = &ctx->s.vkfn;
1098
1099 VkVideoEncodeH264SessionParametersGetInfoKHR h264_params_info;
1100 VkVideoEncodeSessionParametersGetInfoKHR params_info;
1101 VkVideoEncodeH264SessionParametersFeedbackInfoKHR h264_params_feedback;
1102 VkVideoEncodeSessionParametersFeedbackInfoKHR params_feedback;
1103
1104 void *data = NULL;
1105 size_t data_size = 0;
1106
1107 /* Generate SPS/PPS unit info */
1108 err = init_sequence_headers(avctx);
1109 if (err < 0) {
1110 av_log(avctx, AV_LOG_ERROR, "Unable to initialize SPS/PPS units: %s\n",
1111 av_err2str(err));
1112 return err;
1113 }
1114
1115 /* Create session parameters from them */
1116 err = create_session_params(avctx);
1117 if (err < 0)
1118 return err;
1119
1120 h264_params_info = (VkVideoEncodeH264SessionParametersGetInfoKHR) {
1121 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR,
1122 .writeStdSPS = 1,
1123 .writeStdPPS = 1,
1124 .stdSPSId = enc->units.raw_sps.seq_parameter_set_id,
1125 .stdPPSId = enc->units.raw_pps.pic_parameter_set_id,
1126 };
1127 params_info = (VkVideoEncodeSessionParametersGetInfoKHR) {
1128 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR,
1129 .pNext = &h264_params_info,
1130 .videoSessionParameters = ctx->session_params,
1131 };
1132
1133 h264_params_feedback = (VkVideoEncodeH264SessionParametersFeedbackInfoKHR) {
1134 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
1135 };
1136 params_feedback = (VkVideoEncodeSessionParametersFeedbackInfoKHR) {
1137 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
1138 .pNext = &h264_params_feedback,
1139 };
1140
1141 ret = vk->GetEncodedVideoSessionParametersKHR(s->hwctx->act_dev, &params_info,
1142 &params_feedback,
1143 &data_size, data);
1144 if (ret == VK_INCOMPLETE ||
1145 (ret == VK_SUCCESS) && (data_size > 0)) {
1146 data = av_mallocz(data_size);
1147 if (!data)

Callers 1

vulkan_encode_h264_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