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

Function init_base_units

libavcodec/vulkan_encode_h265.c:1257–1358  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1255}
1256
1257static int init_base_units(AVCodecContext *avctx)
1258{
1259 int err;
1260 VkResult ret;
1261 VulkanEncodeH265Context *enc = avctx->priv_data;
1262 FFVulkanEncodeContext *ctx = &enc->common;
1263 FFVulkanContext *s = &ctx->s;
1264 FFVulkanFunctions *vk = &ctx->s.vkfn;
1265
1266 VkVideoEncodeH265SessionParametersGetInfoKHR h265_params_info;
1267 VkVideoEncodeSessionParametersGetInfoKHR params_info;
1268 VkVideoEncodeH265SessionParametersFeedbackInfoKHR h265_params_feedback;
1269 VkVideoEncodeSessionParametersFeedbackInfoKHR params_feedback;
1270
1271 void *data = NULL;
1272 size_t data_size = 0;
1273
1274 /* Generate SPS/PPS unit info */
1275 err = init_sequence_headers(avctx);
1276 if (err < 0) {
1277 av_log(avctx, AV_LOG_ERROR, "Unable to initialize SPS/PPS units: %s\n",
1278 av_err2str(err));
1279 return err;
1280 }
1281
1282 /* Create session parameters from them */
1283 err = create_session_params(avctx);
1284 if (err < 0)
1285 return err;
1286
1287 h265_params_info = (VkVideoEncodeH265SessionParametersGetInfoKHR) {
1288 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR,
1289 .writeStdSPS = 1,
1290 .writeStdPPS = 1,
1291 .writeStdVPS = 1,
1292 .stdSPSId = enc->units.raw_sps.sps_seq_parameter_set_id,
1293 .stdPPSId = enc->units.raw_pps.pps_pic_parameter_set_id,
1294 .stdVPSId = enc->units.raw_vps.vps_video_parameter_set_id,
1295 };
1296 params_info = (VkVideoEncodeSessionParametersGetInfoKHR) {
1297 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR,
1298 .pNext = &h265_params_info,
1299 .videoSessionParameters = ctx->session_params,
1300 };
1301
1302 h265_params_feedback = (VkVideoEncodeH265SessionParametersFeedbackInfoKHR) {
1303 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
1304 };
1305 params_feedback = (VkVideoEncodeSessionParametersFeedbackInfoKHR) {
1306 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR,
1307 .pNext = &h265_params_feedback,
1308 };
1309
1310 ret = vk->GetEncodedVideoSessionParametersKHR(s->hwctx->act_dev, &params_info,
1311 &params_feedback,
1312 &data_size, data);
1313 if (ret == VK_INCOMPLETE ||
1314 (ret == VK_SUCCESS) && (data_size > 0)) {

Callers 1

vulkan_encode_h265_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