[FFmpeg-devel] [PATCH 2/2] lavc/dxva: properly namespace public symbols
Anton Khirnov
anton at khirnov.net
Thu Feb 17 11:13:15 EET 2022
---
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
/**
* 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 */
--
2.34.1
More information about the ffmpeg-devel
mailing list