diff mbox series

[FFmpeg-devel,2/2] lavc/dxva: properly namespace public symbols

Message ID 20220217091315.21092-2-anton@khirnov.net
State New
Headers show
Series [FFmpeg-devel,1/2] lavc/dxva2: rename drop AV prefix from AVDXVAContext | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished
andriy/make_aarch64_jetson success Make finished
andriy/make_fate_aarch64_jetson success Make fate finished
andriy/make_armv7_RPi4 success Make finished
andriy/make_fate_armv7_RPi4 success Make fate finished

Commit Message

Anton Khirnov Feb. 17, 2022, 9:13 a.m. UTC
---
 doc/APIchanges              |  6 ++++++
 libavcodec/dxva2.c          |  4 ++--
 libavcodec/dxva2.h          | 18 ++++++++++++++----
 libavcodec/dxva2_h264.c     |  8 ++++----
 libavcodec/dxva2_internal.h |  4 ++--
 libavcodec/version.h        |  3 ++-
 6 files changed, 30 insertions(+), 13 deletions(-)

Comments

Hendrik Leppkes Feb. 17, 2022, 9:46 a.m. UTC | #1
On Thu, Feb 17, 2022 at 10:13 AM Anton Khirnov <anton@khirnov.net> wrote:
>
> ---
>  doc/APIchanges              |  6 ++++++
>  libavcodec/dxva2.c          |  4 ++--
>  libavcodec/dxva2.h          | 18 ++++++++++++++----
>  libavcodec/dxva2_h264.c     |  8 ++++----
>  libavcodec/dxva2_internal.h |  4 ++--
>  libavcodec/version.h        |  3 ++-
>  6 files changed, 30 insertions(+), 13 deletions(-)
>
> diff --git a/doc/APIchanges b/doc/APIchanges
> index ea402f6118..3447872752 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -14,6 +14,12 @@ libavutil:     2021-04-27
>
>  API changes, most recent first:
>
> +2022-02-xx - xxxxxxxxxx - lavc 59.22.100 - dxva2.h
> +  Rename struct dxva_context to (typedeffed) AVDXVA2DecodeContext.
> +  Rename FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG and FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
> +  to AV_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG and AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO,
> +  respectively. The previous names are now deprecated.
> +
>  2022-02-07 - xxxxxxxxxx - lavu 57.21.100 - fifo.h
>    Deprecate AVFifoBuffer and the API around it, namely av_fifo_alloc(),
>    av_fifo_alloc_array(), av_fifo_free(), av_fifo_freep(), av_fifo_reset(),
> diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c
> index c31a71ba3b..ab6995940b 100644
> --- a/libavcodec/dxva2.c
> +++ b/libavcodec/dxva2.c
> @@ -299,7 +299,7 @@ static int dxva_get_decoder_guid(AVCodecContext *avctx, void *service, void *sur
>      }
>
>      if (IsEqualGUID(decoder_guid, &ff_DXVADDI_Intel_ModeH264_E))
> -        sctx->workaround |= FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO;
> +        sctx->workaround |= AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO;
>
>      return 0;
>  }
> @@ -704,7 +704,7 @@ int ff_dxva2_decode_init(AVCodecContext *avctx)
>  #if CONFIG_DXVA2
>      if (sctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD) {
>          AVDXVA2FramesContext *frames_hwctx = frames_ctx->hwctx;
> -        struct dxva_context *dxva_ctx = &sctx->ctx.dxva2;
> +        AVDXVA2DecodeContext *dxva_ctx = &sctx->ctx.dxva2;
>
>          ff_dxva2_lock(avctx);
>          ret = dxva2_create_decoder(avctx);
> diff --git a/libavcodec/dxva2.h b/libavcodec/dxva2.h
> index 22c93992f2..7892da693c 100644
> --- a/libavcodec/dxva2.h
> +++ b/libavcodec/dxva2.h
> @@ -45,8 +45,13 @@
>   * @{
>   */
>
> -#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards
> -#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO    2 ///< Work around for DXVA2 and old Intel GPUs with ClearVideo interface
> +#define AV_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards
> +#define AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO    2 ///< Work around for DXVA2 and old Intel GPUs with ClearVideo interface
> +
> +#if FF_API_DXVA_NAMING
> +#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG AV_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG
> +#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO    AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
> +#endif

Why not rename the constants in d3d11va.h at the same time? they are
the same afterall.

This header likely needs to include version.h now to ensure the
FF_API_ macros are available.

>
>  /**
>   * This structure is used to provides the necessary configurations and data
> @@ -54,7 +59,12 @@
>   *
>   * The application must make it available as AVCodecContext.hwaccel_context.
>   */
> -struct dxva_context {
> +typedef struct
> +#if FF_API_DXVA_NAMING
> +dxva_context
> +#else
> +AVDXVA2DecodeContext

#endif missing here

> +{
>      /**
>       * DXVA2 decoder object
>       */
> @@ -84,7 +94,7 @@ struct dxva_context {
>       * Private to the FFmpeg AVHWAccel implementation
>       */
>      unsigned report_id;
> -};
> +} AVDXVA2DecodeContext;
>
>  /**
>   * @}
> diff --git a/libavcodec/dxva2_h264.c b/libavcodec/dxva2_h264.c
> index 489b9bb0f5..f4d6098e0e 100644
> --- a/libavcodec/dxva2_h264.c
> +++ b/libavcodec/dxva2_h264.c
> @@ -119,9 +119,9 @@ static void fill_picture_parameters(const AVCodecContext *avctx, DXVAContext *ct
>
>      pp->bit_depth_luma_minus8         = sps->bit_depth_luma - 8;
>      pp->bit_depth_chroma_minus8       = sps->bit_depth_chroma - 8;
> -    if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG)
> +    if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & AV_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG)
>          pp->Reserved16Bits            = 0;
> -    else if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO)
> +    else if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO)
>          pp->Reserved16Bits            = 0x34c;
>      else
>          pp->Reserved16Bits            = 3; /* FIXME is there a way to detect the right mode ? */
> @@ -166,7 +166,7 @@ static void fill_scaling_lists(const AVCodecContext *avctx, DXVAContext *ctx, co
>      const PPS *pps = h->ps.pps;
>      unsigned i, j;
>      memset(qm, 0, sizeof(*qm));
> -    if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG) {
> +    if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & AV_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG) {
>          for (i = 0; i < 6; i++)
>              for (j = 0; j < 16; j++)
>                  qm->bScalingLists4x4[i][j] = pps->scaling_matrix4[i][j];
> @@ -249,7 +249,7 @@ static void fill_slice_long(AVCodecContext *avctx, DXVA_Slice_H264_Long *slice,
>                  const H264Picture *r = sl->ref_list[list][i].parent;
>                  unsigned plane;
>                  unsigned index;
> -                if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO)
> +                if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO)
>                      index = ff_dxva2_get_surface_index(avctx, ctx, r->f);
>                  else
>                      index = get_refpic_index(pp, ff_dxva2_get_surface_index(avctx, ctx, r->f));
> diff --git a/libavcodec/dxva2_internal.h b/libavcodec/dxva2_internal.h
> index d14b696a3b..987d89a2cf 100644
> --- a/libavcodec/dxva2_internal.h
> +++ b/libavcodec/dxva2_internal.h
> @@ -60,14 +60,14 @@ typedef union {
>      struct AVD3D11VAContext  d3d11va;
>  #endif
>  #if CONFIG_DXVA2
> -    struct dxva_context      dxva2;
> +    AVDXVA2DecodeContext dxva2;
>  #endif
>  } DXVAContext;
>
>  typedef struct FFDXVASharedContext {
>      AVBufferRef *decoder_ref;
>
> -    // FF_DXVA2_WORKAROUND_* flags
> +    // AV_DXVA2_WORKAROUND_* flags
>      uint64_t workaround;
>
>      // E.g. AV_PIX_FMT_D3D11 (same as AVCodecContext.pix_fmt, except during init)
> diff --git a/libavcodec/version.h b/libavcodec/version.h
> index d900503954..2da6b21497 100644
> --- a/libavcodec/version.h
> +++ b/libavcodec/version.h
> @@ -28,7 +28,7 @@
>  #include "libavutil/version.h"
>
>  #define LIBAVCODEC_VERSION_MAJOR  59
> -#define LIBAVCODEC_VERSION_MINOR  21
> +#define LIBAVCODEC_VERSION_MINOR  22
>  #define LIBAVCODEC_VERSION_MICRO 100
>
>  #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
> @@ -65,5 +65,6 @@
>  #define FF_API_SUB_TEXT_FORMAT     (LIBAVCODEC_VERSION_MAJOR < 60)
>  #define FF_API_MJPEG_PRED          (LIBAVCODEC_VERSION_MAJOR < 60)
>  #define FF_API_IDCT_NONE           (LIBAVCODEC_VERSION_MAJOR < 60)
> +#define FF_API_DXVA_NAMING         (LIBAVCODEC_VERSION_MAJOR < 60)
>
>  #endif /* AVCODEC_VERSION_H */
> --
> 2.34.1
>
> _______________________________________________
> 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".
Michael Niedermayer Feb. 17, 2022, 12:10 p.m. UTC | #2
On Thu, Feb 17, 2022 at 10:13:15AM +0100, Anton Khirnov wrote:
> ---
>  doc/APIchanges              |  6 ++++++
>  libavcodec/dxva2.c          |  4 ++--
>  libavcodec/dxva2.h          | 18 ++++++++++++++----
>  libavcodec/dxva2_h264.c     |  8 ++++----
>  libavcodec/dxva2_internal.h |  4 ++--
>  libavcodec/version.h        |  3 ++-
>  6 files changed, 30 insertions(+), 13 deletions(-)

This doesnt build

CC	libavcodec/dxva2.o
In file included from src/libavcodec/dxva2_internal.h:34:0,
                 from src/libavcodec/dxva2.c:33:
src/libavcodec/dxva2.h:23:0: error: unterminated #ifndef
 #ifndef AVCODEC_DXVA2_H
 
In file included from src/libavcodec/dxva2_internal.h:35:0,
                 from src/libavcodec/dxva2.c:33:
src/libavutil/hwcontext_dxva2.h:39:1: error: duplicate ‘typedef’
 typedef struct AVDXVA2DeviceContext {
 ^~~~~~~
src/libavutil/hwcontext_dxva2.h:39:9: error: two or more data types in declaration specifiers
 typedef struct AVDXVA2DeviceContext {
         ^~~~~~
In file included from src/libavcodec/dxva2_internal.h:38:0,
                 from src/libavcodec/dxva2.c:33:
src/libavcodec/d3d11va.h:48:0: warning: "FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG" redefined
 #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for Direct3D11 and old UVD/UVD+ ATI video cards
 
In file included from src/libavcodec/dxva2_internal.h:34:0,
                 from src/libavcodec/dxva2.c:33:
src/libavcodec/dxva2.h:52:0: note: this is the location of the previous definition
 #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG AV_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG
 
In file included from src/libavcodec/dxva2_internal.h:38:0,
                 from src/libavcodec/dxva2.c:33:
src/libavcodec/d3d11va.h:49:0: warning: "FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO" redefined
 #define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO    2 ///< Work around for Direct3D11 and old Intel GPUs with ClearVideo interface
 
In file included from src/libavcodec/dxva2_internal.h:34:0,
                 from src/libavcodec/dxva2.c:33:
src/libavcodec/dxva2.h:53:0: note: this is the location of the previous definition
 #define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO    AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
 
In file included from src/libavcodec/dxva2.c:33:0:
src/libavcodec/dxva2_internal.h:63:5: error: unknown type name ‘AVDXVA2DecodeContext’
     AVDXVA2DecodeContext dxva2;
     ^~~~~~~~~~~~~~~~~~~~
In file included from src/libavcodec/dxva2.h:39:0,
                 from src/libavcodec/dxva2_internal.h:34,
                 from src/libavcodec/dxva2.c:33:
src/libavcodec/dxva2.c: In function ‘dxva2_create_decoder’:
src/libavcodec/dxva2.c:359:63: error: dereferencing pointer to incomplete type ‘AVDXVA2DeviceContext {aka struct dxva_context}’
     hr = IDirect3DDeviceManager9_OpenDeviceHandle(device_hwctx->devmgr,
                                                               ^
src/libavcodec/dxva2.c: In function ‘ff_dxva2_decode_init’:
src/libavcodec/dxva2.c:707:9: error: unknown type name ‘AVDXVA2DecodeContext’; did you mean ‘AVDXVA2DeviceContext’?
         AVDXVA2DecodeContext *dxva_ctx = &sctx->ctx.dxva2;
         ^~~~~~~~~~~~~~~~~~~~
         AVDXVA2DeviceContext
src/libavcodec/dxva2.c:715:17: error: request for member ‘decoder’ in something not a structure or union
         dxva_ctx->decoder       = sctx->dxva2_decoder;
                 ^~
src/libavcodec/dxva2.c:716:17: error: request for member ‘cfg’ in something not a structure or union
         dxva_ctx->cfg           = &sctx->dxva2_config;
                 ^~
src/libavcodec/dxva2.c:717:17: error: request for member ‘surface’ in something not a structure or union
         dxva_ctx->surface       = frames_hwctx->surfaces;
                 ^~
src/libavcodec/dxva2.c:718:17: error: request for member ‘surface_count’ in something not a structure or union
         dxva_ctx->surface_count = frames_hwctx->nb_surfaces;
                 ^~
src/libavcodec/dxva2.c:719:17: error: request for member ‘workaround’ in something not a structure or union
         dxva_ctx->workaround    = sctx->workaround;
                 ^~
In file included from src/libavcodec/dxva2.c:33:0:
src/libavcodec/dxva2.c: In function ‘ff_dxva2_get_surface_index’:
src/libavcodec/dxva2_internal.h:106:116: error: request for member ‘surface_count’ in something not a structure or union
 #define DXVA_CONTEXT_COUNT(avctx, ctx)          (ff_dxva2_is_d3d11(avctx) ? ctx->d3d11va.surface_count : ctx->dxva2.surface_count)
                                                                                                                    ^
src/libavcodec/dxva2.c:787:21: note: in expansion of macro ‘DXVA_CONTEXT_COUNT’
     for (i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++) {
                     ^
src/libavcodec/dxva2.c:788:65: error: request for member ‘surface’ in something not a structure or union
         if (avctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD && ctx->dxva2.surface[i] == surface)
                                                                 ^
In file included from src/libavcodec/dxva2.h:39:0,
                 from src/libavcodec/dxva2_internal.h:34,
                 from src/libavcodec/dxva2.c:33:
src/libavcodec/dxva2.c: In function ‘ff_dxva2_commit_buffer’:
src/libavcodec/dxva2.c:817:63: error: request for member ‘decoder’ in something not a structure or union
         hr = IDirectXVideoDecoder_GetBuffer(DXVA2_CONTEXT(ctx)->decoder, type,
                                                               ^
src/libavcodec/dxva2.c:817:63: error: request for member ‘decoder’ in something not a structure or union
         hr = IDirectXVideoDecoder_GetBuffer(DXVA2_CONTEXT(ctx)->decoder, type,
                                                               ^
src/libavcodec/dxva2.c:859:67: error: request for member ‘decoder’ in something not a structure or union
         hr = IDirectXVideoDecoder_ReleaseBuffer(DXVA2_CONTEXT(ctx)->decoder, type);
                                                                   ^
src/libavcodec/dxva2.c:859:67: error: request for member ‘decoder’ in something not a structure or union
         hr = IDirectXVideoDecoder_ReleaseBuffer(DXVA2_CONTEXT(ctx)->decoder, type);
                                                                   ^
src/libavcodec/dxva2.c: In function ‘ff_dxva2_common_end_frame’:
src/libavcodec/dxva2.c:923:68: error: request for member ‘decoder’ in something not a structure or union
             hr = IDirectXVideoDecoder_BeginFrame(DXVA2_CONTEXT(ctx)->decoder,
                                                                    ^
src/libavcodec/dxva2.c:923:68: error: request for member ‘decoder’ in something not a structure or union
             hr = IDirectXVideoDecoder_BeginFrame(DXVA2_CONTEXT(ctx)->decoder,
                                                                    ^
src/libavcodec/dxva2.c:1025:61: error: request for member ‘decoder’ in something not a structure or union
         hr = IDirectXVideoDecoder_Execute(DXVA2_CONTEXT(ctx)->decoder, &exec);
                                                             ^
src/libavcodec/dxva2.c:1025:61: error: request for member ‘decoder’ in something not a structure or union
         hr = IDirectXVideoDecoder_Execute(DXVA2_CONTEXT(ctx)->decoder, &exec);
                                                             ^
src/libavcodec/dxva2.c:1040:62: error: request for member ‘decoder’ in something not a structure or union
         hr = IDirectXVideoDecoder_EndFrame(DXVA2_CONTEXT(ctx)->decoder, NULL);
                                                              ^
src/libavcodec/dxva2.c:1040:62: error: request for member ‘decoder’ in something not a structure or union
         hr = IDirectXVideoDecoder_EndFrame(DXVA2_CONTEXT(ctx)->decoder, NULL);
                                                              ^
src/ffbuild/common.mak:78: recipe for target 'libavcodec/dxva2.o' failed
make: *** [libavcodec/dxva2.o] Error 1



[...]
diff mbox series

Patch

diff --git a/doc/APIchanges b/doc/APIchanges
index ea402f6118..3447872752 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -14,6 +14,12 @@  libavutil:     2021-04-27
 
 API changes, most recent first:
 
+2022-02-xx - xxxxxxxxxx - lavc 59.22.100 - dxva2.h
+  Rename struct dxva_context to (typedeffed) AVDXVA2DecodeContext.
+  Rename FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG and FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
+  to AV_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG and AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO,
+  respectively. The previous names are now deprecated.
+
 2022-02-07 - xxxxxxxxxx - lavu 57.21.100 - fifo.h
   Deprecate AVFifoBuffer and the API around it, namely av_fifo_alloc(),
   av_fifo_alloc_array(), av_fifo_free(), av_fifo_freep(), av_fifo_reset(),
diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c
index c31a71ba3b..ab6995940b 100644
--- a/libavcodec/dxva2.c
+++ b/libavcodec/dxva2.c
@@ -299,7 +299,7 @@  static int dxva_get_decoder_guid(AVCodecContext *avctx, void *service, void *sur
     }
 
     if (IsEqualGUID(decoder_guid, &ff_DXVADDI_Intel_ModeH264_E))
-        sctx->workaround |= FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO;
+        sctx->workaround |= AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO;
 
     return 0;
 }
@@ -704,7 +704,7 @@  int ff_dxva2_decode_init(AVCodecContext *avctx)
 #if CONFIG_DXVA2
     if (sctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD) {
         AVDXVA2FramesContext *frames_hwctx = frames_ctx->hwctx;
-        struct dxva_context *dxva_ctx = &sctx->ctx.dxva2;
+        AVDXVA2DecodeContext *dxva_ctx = &sctx->ctx.dxva2;
 
         ff_dxva2_lock(avctx);
         ret = dxva2_create_decoder(avctx);
diff --git a/libavcodec/dxva2.h b/libavcodec/dxva2.h
index 22c93992f2..7892da693c 100644
--- a/libavcodec/dxva2.h
+++ b/libavcodec/dxva2.h
@@ -45,8 +45,13 @@ 
  * @{
  */
 
-#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards
-#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO    2 ///< Work around for DXVA2 and old Intel GPUs with ClearVideo interface
+#define AV_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards
+#define AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO    2 ///< Work around for DXVA2 and old Intel GPUs with ClearVideo interface
+
+#if FF_API_DXVA_NAMING
+#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG AV_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG
+#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO    AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
+#endif
 
 /**
  * This structure is used to provides the necessary configurations and data
@@ -54,7 +59,12 @@ 
  *
  * The application must make it available as AVCodecContext.hwaccel_context.
  */
-struct dxva_context {
+typedef struct
+#if FF_API_DXVA_NAMING
+dxva_context
+#else
+AVDXVA2DecodeContext
+{
     /**
      * DXVA2 decoder object
      */
@@ -84,7 +94,7 @@  struct dxva_context {
      * Private to the FFmpeg AVHWAccel implementation
      */
     unsigned report_id;
-};
+} AVDXVA2DecodeContext;
 
 /**
  * @}
diff --git a/libavcodec/dxva2_h264.c b/libavcodec/dxva2_h264.c
index 489b9bb0f5..f4d6098e0e 100644
--- a/libavcodec/dxva2_h264.c
+++ b/libavcodec/dxva2_h264.c
@@ -119,9 +119,9 @@  static void fill_picture_parameters(const AVCodecContext *avctx, DXVAContext *ct
 
     pp->bit_depth_luma_minus8         = sps->bit_depth_luma - 8;
     pp->bit_depth_chroma_minus8       = sps->bit_depth_chroma - 8;
-    if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG)
+    if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & AV_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG)
         pp->Reserved16Bits            = 0;
-    else if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO)
+    else if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO)
         pp->Reserved16Bits            = 0x34c;
     else
         pp->Reserved16Bits            = 3; /* FIXME is there a way to detect the right mode ? */
@@ -166,7 +166,7 @@  static void fill_scaling_lists(const AVCodecContext *avctx, DXVAContext *ctx, co
     const PPS *pps = h->ps.pps;
     unsigned i, j;
     memset(qm, 0, sizeof(*qm));
-    if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG) {
+    if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & AV_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG) {
         for (i = 0; i < 6; i++)
             for (j = 0; j < 16; j++)
                 qm->bScalingLists4x4[i][j] = pps->scaling_matrix4[i][j];
@@ -249,7 +249,7 @@  static void fill_slice_long(AVCodecContext *avctx, DXVA_Slice_H264_Long *slice,
                 const H264Picture *r = sl->ref_list[list][i].parent;
                 unsigned plane;
                 unsigned index;
-                if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO)
+                if (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & AV_DXVA2_WORKAROUND_INTEL_CLEARVIDEO)
                     index = ff_dxva2_get_surface_index(avctx, ctx, r->f);
                 else
                     index = get_refpic_index(pp, ff_dxva2_get_surface_index(avctx, ctx, r->f));
diff --git a/libavcodec/dxva2_internal.h b/libavcodec/dxva2_internal.h
index d14b696a3b..987d89a2cf 100644
--- a/libavcodec/dxva2_internal.h
+++ b/libavcodec/dxva2_internal.h
@@ -60,14 +60,14 @@  typedef union {
     struct AVD3D11VAContext  d3d11va;
 #endif
 #if CONFIG_DXVA2
-    struct dxva_context      dxva2;
+    AVDXVA2DecodeContext dxva2;
 #endif
 } DXVAContext;
 
 typedef struct FFDXVASharedContext {
     AVBufferRef *decoder_ref;
 
-    // FF_DXVA2_WORKAROUND_* flags
+    // AV_DXVA2_WORKAROUND_* flags
     uint64_t workaround;
 
     // E.g. AV_PIX_FMT_D3D11 (same as AVCodecContext.pix_fmt, except during init)
diff --git a/libavcodec/version.h b/libavcodec/version.h
index d900503954..2da6b21497 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -28,7 +28,7 @@ 
 #include "libavutil/version.h"
 
 #define LIBAVCODEC_VERSION_MAJOR  59
-#define LIBAVCODEC_VERSION_MINOR  21
+#define LIBAVCODEC_VERSION_MINOR  22
 #define LIBAVCODEC_VERSION_MICRO 100
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
@@ -65,5 +65,6 @@ 
 #define FF_API_SUB_TEXT_FORMAT     (LIBAVCODEC_VERSION_MAJOR < 60)
 #define FF_API_MJPEG_PRED          (LIBAVCODEC_VERSION_MAJOR < 60)
 #define FF_API_IDCT_NONE           (LIBAVCODEC_VERSION_MAJOR < 60)
+#define FF_API_DXVA_NAMING         (LIBAVCODEC_VERSION_MAJOR < 60)
 
 #endif /* AVCODEC_VERSION_H */