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

Function vulkan_encode_h264_init

libavcodec/vulkan_encode_h264.c:1363–1559  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1361};
1362
1363static av_cold int vulkan_encode_h264_init(AVCodecContext *avctx)
1364{
1365 int err, ref_l0, ref_l1;
1366 VulkanEncodeH264Context *enc = avctx->priv_data;
1367 FFVulkanEncodeContext *ctx = &enc->common;
1368 FFVulkanContext *s = &ctx->s;
1369 FFHWBaseEncodeContext *base_ctx = &ctx->base;
1370 int flags;
1371
1372 if (avctx->profile == AV_PROFILE_UNKNOWN)
1373 avctx->profile = enc->common.opts.profile;
1374
1375 enc->caps = (VkVideoEncodeH264CapabilitiesKHR) {
1376 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR,
1377 };
1378
1379 enc->quality_props = (VkVideoEncodeH264QualityLevelPropertiesKHR) {
1380 .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR,
1381 };
1382
1383 err = ff_vulkan_encode_init(avctx, &enc->common,
1384 &ff_vk_enc_h264_desc, &enc_cb,
1385 &enc->caps, &enc->quality_props);
1386 if (err < 0)
1387 return err;
1388
1389 av_log(avctx, AV_LOG_VERBOSE, "H264 encoder capabilities:\n");
1390 av_log(avctx, AV_LOG_VERBOSE, " Standard capability flags:\n");
1391 av_log(avctx, AV_LOG_VERBOSE, " separate_color_plane: %i\n",
1392 !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR));
1393 av_log(avctx, AV_LOG_VERBOSE, " qprime_y_zero_transform_bypass: %i\n",
1394 !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR));
1395 av_log(avctx, AV_LOG_VERBOSE, " scaling_lists: %i\n",
1396 !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR));
1397 av_log(avctx, AV_LOG_VERBOSE, " chroma_qp_index_offset: %i\n",
1398 !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR));
1399 av_log(avctx, AV_LOG_VERBOSE, " second_chroma_qp_index_offset: %i\n",
1400 !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR));
1401 av_log(avctx, AV_LOG_VERBOSE, " pic_init_qp: %i\n",
1402 !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR));
1403 av_log(avctx, AV_LOG_VERBOSE, " weighted:%s%s%s\n",
1404 enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR ?
1405 " pred" : "",
1406 enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR ?
1407 " bipred_explicit" : "",
1408 enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR ?
1409 " bipred_implicit" : "");
1410 av_log(avctx, AV_LOG_VERBOSE, " 8x8_transforms: %i\n",
1411 !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR));
1412 av_log(avctx, AV_LOG_VERBOSE, " disable_direct_spatial_mv_pred: %i\n",
1413 !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR));
1414 av_log(avctx, AV_LOG_VERBOSE, " coder:%s%s\n",
1415 enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR ?
1416 " cabac" : "",
1417 enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR ?
1418 " cavlc" : "");
1419 av_log(avctx, AV_LOG_VERBOSE, " direct_8x8_inference: %i\n",
1420 !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR));

Callers

nothing calls this directly

Calls 7

ff_vulkan_encode_initFunction · 0.85
av_logFunction · 0.85
init_enc_optionsFunction · 0.70
init_base_unitsFunction · 0.70
av_mallocFunction · 0.50

Tested by

no test coverage detected