diff mbox series

[FFmpeg-devel,v2,2/4] lavc: Remove libva 1.x support

Message ID b5cca440-918b-42b3-b601-af2fd24d702e@jkqxz.net
State New
Headers show
Series [FFmpeg-devel,v2,1/4] lavu: Remove libva 1.x support | expand

Checks

Context Check Description
andriy/configure_x86 warning Failed to apply patch

Commit Message

Mark Thompson April 3, 2024, 10:09 p.m. UTC
libva 2.0 was released in 2017 and the 2.x versions are included in all
supported distributions nowadays.
---
Now removing lots of VA_CHECK_VERSION as well.

  libavcodec/vaapi_decode.c      | 16 +------
  libavcodec/vaapi_encode.c      | 77 ++++++----------------------------
  libavcodec/vaapi_encode.h      |  9 ----
  libavcodec/vaapi_encode_h264.c | 18 --------
  libavcodec/vaapi_encode_h265.c |  2 -
  5 files changed, 14 insertions(+), 108 deletions(-)
diff mbox series

Patch

diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c
index 5665639dd7..1f923a414a 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;
@@ -406,12 +400,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 +421,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),
diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c
index f54b2579ec..2f02a7a2e1 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.
          }
      }

@@ -1530,25 +1519,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 +1549,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 +1600,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 +1659,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 +1776,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 +2007,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 +2040,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 +2076,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 +2293,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 +2519,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 +2555,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 +2587,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 <stdint.h>

  #include <va/va.h>
-
-#if VA_CHECK_VERSION(1, 0, 0)
  #include <va/va_str.h>
-#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 bf51df0f51..4f4191e23b 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 2777632fb6..008e573efc 100644
--- a/libavcodec/vaapi_encode_h265.c
+++ b/libavcodec/vaapi_encode_h265.c
@@ -1305,10 +1305,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 },