| 1523 | }; |
| 1524 | |
| 1525 | static av_cold int vulkan_encode_h265_init(AVCodecContext *avctx) |
| 1526 | { |
| 1527 | int err, ref_l0, ref_l1; |
| 1528 | VulkanEncodeH265Context *enc = avctx->priv_data; |
| 1529 | FFVulkanEncodeContext *ctx = &enc->common; |
| 1530 | FFHWBaseEncodeContext *base_ctx = &ctx->base; |
| 1531 | int flags; |
| 1532 | |
| 1533 | if (avctx->profile == AV_PROFILE_UNKNOWN) |
| 1534 | avctx->profile = enc->common.opts.profile; |
| 1535 | |
| 1536 | enc->caps = (VkVideoEncodeH265CapabilitiesKHR) { |
| 1537 | .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR, |
| 1538 | }; |
| 1539 | |
| 1540 | enc->quality_props = (VkVideoEncodeH265QualityLevelPropertiesKHR) { |
| 1541 | .sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR, |
| 1542 | }; |
| 1543 | |
| 1544 | err = ff_vulkan_encode_init(avctx, &enc->common, |
| 1545 | &ff_vk_enc_h265_desc, &enc_cb, |
| 1546 | &enc->caps, &enc->quality_props); |
| 1547 | if (err < 0) |
| 1548 | return err; |
| 1549 | |
| 1550 | av_log(avctx, AV_LOG_VERBOSE, "H265 encoder capabilities:\n"); |
| 1551 | av_log(avctx, AV_LOG_VERBOSE, " Standard capability flags:\n"); |
| 1552 | av_log(avctx, AV_LOG_VERBOSE, " separate_color_plane: %i\n", |
| 1553 | !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR)); |
| 1554 | av_log(avctx, AV_LOG_VERBOSE, " sample_adaptive_offset: %i\n", |
| 1555 | !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR)); |
| 1556 | av_log(avctx, AV_LOG_VERBOSE, " scaling_lists: %i\n", |
| 1557 | !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR)); |
| 1558 | av_log(avctx, AV_LOG_VERBOSE, " pcm: %i\n", |
| 1559 | !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR)); |
| 1560 | av_log(avctx, AV_LOG_VERBOSE, " temporal_mvp: %i\n", |
| 1561 | !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR)); |
| 1562 | av_log(avctx, AV_LOG_VERBOSE, " init_qp: %i\n", |
| 1563 | !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR)); |
| 1564 | av_log(avctx, AV_LOG_VERBOSE, " weighted:%s%s\n", |
| 1565 | enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR ? |
| 1566 | " pred" : "", |
| 1567 | enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR ? |
| 1568 | " bipred" : ""); |
| 1569 | av_log(avctx, AV_LOG_VERBOSE, " parallel_merge_level: %i\n", |
| 1570 | !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR)); |
| 1571 | av_log(avctx, AV_LOG_VERBOSE, " sign_data_hiding: %i\n", |
| 1572 | !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR)); |
| 1573 | av_log(avctx, AV_LOG_VERBOSE, " transform_skip:%s%s\n", |
| 1574 | enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR ? |
| 1575 | " set" : "", |
| 1576 | enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR ? |
| 1577 | " unset" : ""); |
| 1578 | av_log(avctx, AV_LOG_VERBOSE, " slice_chroma_qp_offsets: %i\n", |
| 1579 | !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR)); |
| 1580 | av_log(avctx, AV_LOG_VERBOSE, " transquant_bypass: %i\n", |
| 1581 | !!(enc->caps.stdSyntaxFlags & VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR)); |
| 1582 | av_log(avctx, AV_LOG_VERBOSE, " constrained_intra_pred: %i\n", |
nothing calls this directly
no test coverage detected