From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 1F52347F96 for ; Sun, 5 May 2024 19:02:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8B94D68D5B4; Sun, 5 May 2024 22:01:48 +0300 (EEST) Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 007A168D56B for ; Sun, 5 May 2024 22:01:40 +0300 (EEST) Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-41ba1ba55e8so7714305e9.1 for ; Sun, 05 May 2024 12:01:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20230601.gappssmtp.com; s=20230601; t=1714935700; x=1715540500; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=TcPy6sjaNsgjaqb33Lamfx0nfgyxtFQTw62cPyrgvhQ=; b=Lefzopog+FfIO5vtN5aaIO0CGVCerFnZZC6I/LfeeFhaPc5rYtoUO2SOi7FyrXvowU kFHmbmwlj1Hs2Sym4eSI/rDOP+zzSfEwTX0/LAeTViCd4FhL8JtfrbwzsOHHGUCjXWbl GSrquRzhRWhOU9b+UU2UpTFqmPsGR/BVohABFFMVNtFdJyW8+2VVV4BHeC+lJfGZSquj xE1yjG8jfOoi5pMFZZfpeBqI6Hv8V8TEUUOlp4Hk8nUt9wlkhBLB1ZovDSQfkMpuX/Ly WLMnthx8Wz08owSb8SZpwcEUl6o6ARAO2l0zwc7dTpuw/euSAY1Dy3DJdTl45oU4HoY/ KB7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714935700; x=1715540500; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TcPy6sjaNsgjaqb33Lamfx0nfgyxtFQTw62cPyrgvhQ=; b=hg14gWPZWxKQ9LMH3xDbI7oI1UpD0gZS2itGlg9xQp/b94EDABwvfAhNrksrFOLSK8 qhO3yqhfUF3HJj9FdbG6IAbBmvMRXLOnqhME9vzaGBbeJckswWvmG0rmTwNUiJyFWJ8p bE4+Zyt6gTelRDWSufRQWBRSYvmAWZhYXt1pD04tvBhXSpA9+PB3g6u7K1bEC68G7q2O rnyPs0F18BiuhZrWMtG8Iq/SscBwhkTZ/rHb/ggHj2pS7c/n1WDd+hw7xA6WdnKz6pYL pssl2HciqCUP69psW3ojf18F3WEJ5+W2rz7LvUhWq3DGyHHiJE3SJB9AnuEV/RfUsZQe Lvug== X-Gm-Message-State: AOJu0YzbLRs/Nf94pIj5W8kyugbiFmz6+nOwQXMqvIU/UTdxX4babu6b +fGiP+vPmfWshJDGOhyuMa+ktJoWxZZH9R4r9UozzxDHG0ot04HFekx43AZumesn5FobUMkaodz T X-Google-Smtp-Source: AGHT+IHI4WXACIHk6k1YELFxCNP4JhxgDnUXeDxDM9q0mMFbmcGyVcj44P9LkoINm8qSaAsvWPWaiQ== X-Received: by 2002:a05:600c:45cc:b0:418:fe93:22d0 with SMTP id s12-20020a05600c45cc00b00418fe9322d0mr6251468wmo.11.1714935700335; Sun, 05 May 2024 12:01:40 -0700 (PDT) Received: from localhost.localdomain (cpc92302-cmbg19-2-0-cust1183.5-4.cable.virginm.net. [82.1.212.160]) by smtp.gmail.com with ESMTPSA id s14-20020adfe00e000000b0034e553f6174sm7292523wrh.98.2024.05.05.12.01.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 May 2024 12:01:39 -0700 (PDT) From: Mark Thompson To: ffmpeg-devel@ffmpeg.org Date: Sun, 5 May 2024 20:01:45 +0100 Message-ID: <20240505190154.90781-3-sw@jkqxz.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240505190154.90781-1-sw@jkqxz.net> References: <20240505190154.90781-1-sw@jkqxz.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 3/5] lavc: Remove libva 1.x support X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: libva 2.0 was released in 2017 and the 2.x versions are included in all supported distributions nowadays. --- libavcodec/vaapi_decode.c | 39 ++--------------- libavcodec/vaapi_encode.c | 78 ++++++---------------------------- libavcodec/vaapi_encode.h | 9 ---- libavcodec/vaapi_encode_h264.c | 18 -------- libavcodec/vaapi_encode_h265.c | 2 - 5 files changed, 15 insertions(+), 131 deletions(-) diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c index 21b273cd0f..ef1ea27a08 100644 --- a/libavcodec/vaapi_decode.c +++ b/libavcodec/vaapi_decode.c @@ -191,16 +191,10 @@ int ff_vaapi_decode_issue(AVCodecContext *avctx, av_log(avctx, AV_LOG_ERROR, "Failed to end picture decode " "issue: %d (%s).\n", vas, vaErrorStr(vas)); err = AVERROR(EIO); - if (CONFIG_VAAPI_1 || ctx->hwctx->driver_quirks & - AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS) - goto fail; - else - goto fail_at_end; + goto fail; } - if (CONFIG_VAAPI_1 || ctx->hwctx->driver_quirks & - AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS) - ff_vaapi_decode_destroy_buffers(avctx, pic); + ff_vaapi_decode_destroy_buffers(avctx, pic); err = 0; goto exit; @@ -213,7 +207,6 @@ fail_with_picture: } fail: ff_vaapi_decode_destroy_buffers(avctx, pic); -fail_at_end: exit: pic->nb_param_buffers = 0; pic->nb_slices = 0; @@ -406,12 +399,10 @@ static const struct { H264ConstrainedBaseline), MAP(H264, H264_MAIN, H264Main ), MAP(H264, H264_HIGH, H264High ), -#if VA_CHECK_VERSION(0, 37, 0) MAP(HEVC, HEVC_MAIN, HEVCMain ), MAP(HEVC, HEVC_MAIN_10, HEVCMain10 ), MAP(HEVC, HEVC_MAIN_STILL_PICTURE, HEVCMain ), -#endif #if VA_CHECK_VERSION(1, 2, 0) && CONFIG_HEVC_VAAPI_HWACCEL MAP(HEVC, HEVC_REXT, None, ff_vaapi_parse_hevc_rext_scc_profile ), @@ -429,14 +420,10 @@ static const struct { MAP(VC1, VC1_COMPLEX, VC1Advanced ), MAP(VC1, VC1_ADVANCED, VC1Advanced ), MAP(VP8, UNKNOWN, VP8Version0_3 ), -#if VA_CHECK_VERSION(0, 38, 0) MAP(VP9, VP9_0, VP9Profile0 ), -#endif -#if VA_CHECK_VERSION(0, 39, 0) MAP(VP9, VP9_1, VP9Profile1 ), MAP(VP9, VP9_2, VP9Profile2 ), MAP(VP9, VP9_3, VP9Profile3 ), -#endif #if VA_CHECK_VERSION(1, 8, 0) MAP(AV1, AV1_MAIN, AV1Profile0), MAP(AV1, AV1_HIGH, AV1Profile1), @@ -599,27 +586,7 @@ static int vaapi_decode_make_config(AVCodecContext *avctx, if (err < 0) goto fail; - if (CONFIG_VAAPI_1) - frames->initial_pool_size = 0; - else { - frames->initial_pool_size = 1; - // Add per-codec number of surfaces used for storing reference frames. - switch (avctx->codec_id) { - case AV_CODEC_ID_H264: - case AV_CODEC_ID_HEVC: - case AV_CODEC_ID_AV1: - frames->initial_pool_size += 16; - break; - case AV_CODEC_ID_VP9: - frames->initial_pool_size += 8; - break; - case AV_CODEC_ID_VP8: - frames->initial_pool_size += 3; - break; - default: - frames->initial_pool_size += 2; - } - } + frames->initial_pool_size = 0; } av_hwframe_constraints_free(&constraints); diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index f54b2579ec..6f062e8277 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -530,7 +530,6 @@ static int vaapi_encode_issue(AVCodecContext *avctx, } } -#if VA_CHECK_VERSION(1, 0, 0) sd = av_frame_get_side_data(pic->input_image, AV_FRAME_DATA_REGIONS_OF_INTEREST); if (sd && ctx->roi_allowed) { @@ -593,7 +592,6 @@ static int vaapi_encode_issue(AVCodecContext *avctx, if (err < 0) goto fail; } -#endif vas = vaBeginPicture(ctx->hwctx->display, ctx->va_context, pic->input_surface); @@ -618,26 +616,17 @@ static int vaapi_encode_issue(AVCodecContext *avctx, av_log(avctx, AV_LOG_ERROR, "Failed to end picture encode issue: " "%d (%s).\n", vas, vaErrorStr(vas)); err = AVERROR(EIO); - // vaRenderPicture() has been called here, so we should not destroy - // the parameter buffers unless separate destruction is required. - if (CONFIG_VAAPI_1 || ctx->hwctx->driver_quirks & - AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS) - goto fail; - else - goto fail_at_end; - } - - if (CONFIG_VAAPI_1 || ctx->hwctx->driver_quirks & - AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS) { - for (i = 0; i < pic->nb_param_buffers; i++) { - vas = vaDestroyBuffer(ctx->hwctx->display, - pic->param_buffers[i]); - if (vas != VA_STATUS_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to destroy " - "param buffer %#x: %d (%s).\n", - pic->param_buffers[i], vas, vaErrorStr(vas)); - // And ignore. - } + goto fail; + } + + for (i = 0; i < pic->nb_param_buffers; i++) { + vas = vaDestroyBuffer(ctx->hwctx->display, + pic->param_buffers[i]); + if (vas != VA_STATUS_SUCCESS) { + av_log(avctx, AV_LOG_ERROR, "Failed to destroy " + "param buffer %#x: %d (%s).\n", + pic->param_buffers[i], vas, vaErrorStr(vas)); + // And ignore. } } @@ -654,7 +643,6 @@ fail: for (i = 0; i < pic->nb_slices; i++) av_freep(&pic->slices[i].codec_slice_params); } -fail_at_end: av_freep(&pic->codec_picture_params); av_freep(&pic->param_buffers); av_freep(&pic->slices); @@ -1530,25 +1518,19 @@ static const VAAPIEncodeRTFormat vaapi_encode_rt_formats[] = { { "YUV444", VA_RT_FORMAT_YUV444, 8, 3, 0, 0 }, { "XYUV", VA_RT_FORMAT_YUV444, 8, 3, 0, 0 }, { "YUV411", VA_RT_FORMAT_YUV411, 8, 3, 2, 0 }, -#if VA_CHECK_VERSION(0, 38, 1) { "YUV420_10", VA_RT_FORMAT_YUV420_10BPP, 10, 3, 1, 1 }, -#endif }; static const VAEntrypoint vaapi_encode_entrypoints_normal[] = { VAEntrypointEncSlice, VAEntrypointEncPicture, -#if VA_CHECK_VERSION(0, 39, 2) VAEntrypointEncSliceLP, -#endif 0 }; -#if VA_CHECK_VERSION(0, 39, 2) static const VAEntrypoint vaapi_encode_entrypoints_low_power[] = { VAEntrypointEncSliceLP, 0 }; -#endif static av_cold int vaapi_encode_profile_entrypoint(AVCodecContext *avctx) { @@ -1566,13 +1548,7 @@ static av_cold int vaapi_encode_profile_entrypoint(AVCodecContext *avctx) if (ctx->low_power) { -#if VA_CHECK_VERSION(0, 39, 2) usable_entrypoints = vaapi_encode_entrypoints_low_power; -#else - av_log(avctx, AV_LOG_ERROR, "Low-power encoding is not " - "supported with this VAAPI version.\n"); - return AVERROR(EINVAL); -#endif } else { usable_entrypoints = vaapi_encode_entrypoints_normal; } @@ -1623,11 +1599,7 @@ static av_cold int vaapi_encode_profile_entrypoint(AVCodecContext *avctx) avctx->profile != AV_PROFILE_UNKNOWN) continue; -#if VA_CHECK_VERSION(1, 0, 0) profile_string = vaProfileStr(profile->va_profile); -#else - profile_string = "(no profile names)"; -#endif for (j = 0; j < n; j++) { if (va_profiles[j] == profile->va_profile) @@ -1686,11 +1658,7 @@ static av_cold int vaapi_encode_profile_entrypoint(AVCodecContext *avctx) } ctx->va_entrypoint = va_entrypoints[i]; -#if VA_CHECK_VERSION(1, 0, 0) entrypoint_string = vaEntrypointStr(ctx->va_entrypoint); -#else - entrypoint_string = "(no entrypoint names)"; -#endif av_log(avctx, AV_LOG_VERBOSE, "Using VAAPI entrypoint %s (%d).\n", entrypoint_string, ctx->va_entrypoint); @@ -1807,16 +1775,10 @@ static av_cold int vaapi_encode_init_rate_control(AVCodecContext *avctx) supported_va_rc_modes = rc_attr.value; if (ctx->blbrc) { -#if VA_CHECK_VERSION(0, 39, 2) if (!(supported_va_rc_modes & VA_RC_MB)) { ctx->blbrc = 0; av_log(avctx, AV_LOG_WARNING, "Driver does not support BLBRC.\n"); } -#else - ctx->blbrc = 0; - av_log(avctx, AV_LOG_WARNING, "Please consider to update to VAAPI 0.39.2 " - "or above, which can support BLBRC.\n"); -#endif } for (i = 0; i < FF_ARRAY_ELEMS(vaapi_encode_rc_modes); i++) { @@ -2044,11 +2006,7 @@ rc_mode_found: ctx->config_attributes[ctx->nb_config_attributes++] = (VAConfigAttrib) { .type = VAConfigAttribRateControl, -#if VA_CHECK_VERSION(0, 39, 2) .value = ctx->blbrc ? ctx->va_rc_mode | VA_RC_MB : ctx->va_rc_mode, -#else - .value = ctx->va_rc_mode, -#endif }; } @@ -2081,9 +2039,7 @@ rc_mode_found: #if VA_CHECK_VERSION(1, 3, 0) .quality_factor = rc_quality, #endif -#if VA_CHECK_VERSION(0, 39, 2) .rc_flags.bits.mb_rate_control = ctx->blbrc ? 1 : 2, -#endif }; vaapi_encode_add_global_param(avctx, VAEncMiscParameterTypeRateControl, @@ -2119,12 +2075,10 @@ rc_mode_found: ctx->fr_params = (VAEncMiscParameterFrameRate) { .framerate = (unsigned int)fr_den << 16 | fr_num, }; -#if VA_CHECK_VERSION(0, 40, 0) vaapi_encode_add_global_param(avctx, VAEncMiscParameterTypeFrameRate, &ctx->fr_params, sizeof(ctx->fr_params)); -#endif return 0; } @@ -2338,11 +2292,9 @@ static av_cold int vaapi_encode_init_row_slice_structure(AVCodecContext *avctx, } ctx->nb_slices = (ctx->slice_block_rows + k - 1) / k; ctx->slice_size = k; -#if VA_CHECK_VERSION(1, 0, 0) } else if (slice_structure & VA_ENC_SLICE_STRUCTURE_EQUAL_ROWS) { ctx->nb_slices = ctx->slice_block_rows; ctx->slice_size = 1; -#endif } else { av_log(avctx, AV_LOG_ERROR, "Driver does not support any usable " "slice structure modes (%#x).\n", slice_structure); @@ -2566,7 +2518,6 @@ static av_cold int vaapi_encode_init_packed_headers(AVCodecContext *avctx) static av_cold int vaapi_encode_init_quality(AVCodecContext *avctx) { -#if VA_CHECK_VERSION(0, 36, 0) VAAPIEncodeContext *ctx = avctx->priv_data; VAStatus vas; VAConfigAttrib attr = { VAConfigAttribEncQualityRange }; @@ -2603,17 +2554,12 @@ static av_cold int vaapi_encode_init_quality(AVCodecContext *avctx) &ctx->quality_params, sizeof(ctx->quality_params)); } -#else - av_log(avctx, AV_LOG_WARNING, "The encode quality option is " - "not supported with this VAAPI version.\n"); -#endif return 0; } static av_cold int vaapi_encode_init_roi(AVCodecContext *avctx) { -#if VA_CHECK_VERSION(1, 0, 0) VAAPIEncodeContext *ctx = avctx->priv_data; VAStatus vas; VAConfigAttrib attr = { VAConfigAttribEncROI }; @@ -2640,7 +2586,7 @@ static av_cold int vaapi_encode_init_roi(AVCodecContext *avctx) (ctx->va_rc_mode == VA_RC_CQP || roi.bits.roi_rc_qp_delta_support); } -#endif + return 0; } diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h index 0eed9691ca..43f3b8cf82 100644 --- a/libavcodec/vaapi_encode.h +++ b/libavcodec/vaapi_encode.h @@ -22,10 +22,7 @@ #include #include - -#if VA_CHECK_VERSION(1, 0, 0) #include -#endif #include "libavutil/hwcontext.h" #include "libavutil/hwcontext_vaapi.h" @@ -82,12 +79,8 @@ typedef struct VAAPIEncodePicture { void *opaque; AVBufferRef *opaque_ref; -#if VA_CHECK_VERSION(1, 0, 0) // ROI regions. VAEncROI *roi; -#else - void *roi; -#endif int type; int b_depth; @@ -293,9 +286,7 @@ typedef struct VAAPIEncodeContext { VAEncMiscParameterHRD hrd_params; VAEncMiscParameterFrameRate fr_params; VAEncMiscParameterBufferMaxFrameSize mfs_params; -#if VA_CHECK_VERSION(0, 36, 0) VAEncMiscParameterBufferQualityLevel quality_params; -#endif // Per-sequence parameter structure (VAEncSequenceParameterBuffer*). void *codec_sequence_params; diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c index d656b1020f..bb4c250bb4 100644 --- a/libavcodec/vaapi_encode_h264.c +++ b/libavcodec/vaapi_encode_h264.c @@ -106,7 +106,6 @@ typedef struct VAAPIEncodeH264Context { int aud_needed; int sei_needed; - int sei_cbr_workaround_needed; } VAAPIEncodeH264Context; @@ -271,19 +270,6 @@ static int vaapi_encode_h264_write_extra_header(AVCodecContext *avctx, *type = VAEncPackedHeaderRawData; return 0; - -#if !CONFIG_VAAPI_1 - } else if (priv->sei_cbr_workaround_needed) { - // Insert a zero-length header using the old SEI type. This is - // required to avoid triggering broken behaviour on Intel platforms - // in CBR mode where an invalid SEI message is generated by the - // driver and inserted into the stream. - *data_len = 0; - *type = VAEncPackedHeaderH264_SEI; - priv->sei_cbr_workaround_needed = 0; - return 0; -#endif - } else { return AVERROR_EOF; } @@ -681,10 +667,6 @@ static int vaapi_encode_h264_init_picture_params(AVCodecContext *avctx, if (priv->sei & SEI_IDENTIFIER && pic->encode_order == 0) priv->sei_needed |= SEI_IDENTIFIER; -#if !CONFIG_VAAPI_1 - if (ctx->va_rc_mode == VA_RC_CBR) - priv->sei_cbr_workaround_needed = 1; -#endif if (priv->sei & SEI_TIMING) { priv->sei_pic_timing = (H264RawSEIPicTiming) { diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c index 2f59161346..a85b514715 100644 --- a/libavcodec/vaapi_encode_h265.c +++ b/libavcodec/vaapi_encode_h265.c @@ -1302,10 +1302,8 @@ static av_cold int vaapi_encode_h265_configure(AVCodecContext *avctx) static const VAAPIEncodeProfile vaapi_encode_h265_profiles[] = { { AV_PROFILE_HEVC_MAIN, 8, 3, 1, 1, VAProfileHEVCMain }, { AV_PROFILE_HEVC_REXT, 8, 3, 1, 1, VAProfileHEVCMain }, -#if VA_CHECK_VERSION(0, 37, 0) { AV_PROFILE_HEVC_MAIN_10, 10, 3, 1, 1, VAProfileHEVCMain10 }, { AV_PROFILE_HEVC_REXT, 10, 3, 1, 1, VAProfileHEVCMain10 }, -#endif #if VA_CHECK_VERSION(1, 2, 0) { AV_PROFILE_HEVC_REXT, 12, 3, 1, 1, VAProfileHEVCMain12 }, { AV_PROFILE_HEVC_REXT, 8, 3, 1, 0, VAProfileHEVCMain422_10 }, -- 2.43.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".