From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> To: ffmpeg-devel@ffmpeg.org Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/vdpau: Deprecate redundandt allocators and getter/setter Date: Tue, 5 Mar 2024 17:32:48 +0100 Message-ID: <AS8P250MB07441A4FFB25CA5DCFD3FEFB8F222@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> (raw) In-Reply-To: <AS8P250MB0744337ECF111CBC10BC8A9F8F222@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> The allocators have been superseded by av_vdpau_bind_context(). The latter have only been added "to allow multiple forks to add fields to the structure without breaking ABI" [1], but libav is no more, so this is not needed any longer. [1]: https://ffmpeg.org/pipermail/ffmpeg-devel/2013-August/146954.html Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- doc/APIchanges | 6 ++++++ libavcodec/vdpau.c | 6 ++++++ libavcodec/vdpau.h | 24 +++++++++++++++++++----- libavcodec/version_major.h | 1 + 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 523945e511..16098fce90 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,12 @@ The last version increases of all libraries were on 2023-02-09 API changes, most recent first: +2024-03-05 - xxxxxxxxxx - lavc 60.xx.100 - vdpau.h + Deprecate av_vdpau_alloc_context(), av_alloc_vdpaucontext(), + av_vdpau_hwaccel_get_render2() and av_vdpau_hwaccel_set_render2(). + The former are superseded by av_vdpau_bind_context(), the latter + are unneeded as the relevant field is public and can be accessed directly. + 2024-03-05 - xxxxxxxxxx - lavf 60.24.100 - avformat.h Add avformat_stream_group_name(). diff --git a/libavcodec/vdpau.c b/libavcodec/vdpau.c index c56ee1f44c..538c57f9e8 100644 --- a/libavcodec/vdpau.c +++ b/libavcodec/vdpau.c @@ -64,15 +64,19 @@ static int vdpau_error(VdpStatus status) } } +#if FF_API_VDPAU_ALLOC_GET_SET AVVDPAUContext *av_alloc_vdpaucontext(void) { +FF_DISABLE_DEPRECATION_WARNINGS return av_vdpau_alloc_context(); +FF_ENABLE_DEPRECATION_WARNINGS } #define MAKE_ACCESSORS(str, name, type, field) \ type av_##name##_get_##field(const str *s) { return s->field; } \ void av_##name##_set_##field(str *s, type v) { s->field = v; } MAKE_ACCESSORS(AVVDPAUContext, vdpau_hwaccel, AVVDPAU_Render2, render2) +#endif int av_vdpau_get_surface_parameters(AVCodecContext *avctx, VdpChromaType *type, @@ -400,10 +404,12 @@ int ff_vdpau_add_buffer(struct vdpau_picture_context *pic_ctx, return 0; } +#if FF_API_VDPAU_ALLOC_GET_SET AVVDPAUContext *av_vdpau_alloc_context(void) { return av_mallocz(sizeof(VDPAUHWContext)); } +#endif int av_vdpau_bind_context(AVCodecContext *avctx, VdpDevice device, VdpGetProcAddress *get_proc, unsigned flags) diff --git a/libavcodec/vdpau.h b/libavcodec/vdpau.h index 35c4b1096b..8021c25761 100644 --- a/libavcodec/vdpau.h +++ b/libavcodec/vdpau.h @@ -66,16 +66,14 @@ typedef int (*AVVDPAU_Render2)(struct AVCodecContext *, struct AVFrame *, /** * This structure is used to share data between the libavcodec library and * the client video application. - * The user shall allocate the structure via the av_alloc_vdpau_hwaccel - * function and make it available as - * AVCodecContext.hwaccel_context. Members can be set by the user once + * This structure will be allocated and stored in AVCodecContext.hwaccel_context + * by av_vdpau_bind_context(). Members can be set by the user once * during initialization or through each AVCodecContext.get_buffer() * function call. In any case, they must be valid prior to calling * decoding functions. * * The size of this structure is not a part of the public ABI and must not - * be used outside of libavcodec. Use av_vdpau_alloc_context() to allocate an - * AVVDPAUContext. + * be used outside of libavcodec. */ typedef struct AVVDPAUContext { /** @@ -95,15 +93,27 @@ typedef struct AVVDPAUContext { AVVDPAU_Render2 render2; } AVVDPAUContext; +#if FF_API_VDPAU_ALLOC_GET_SET /** * @brief allocation function for AVVDPAUContext * * Allows extending the struct without breaking API/ABI + * @deprecated use av_vdpau_bind_context() instead */ +attribute_deprecated AVVDPAUContext *av_alloc_vdpaucontext(void); +/** + * @deprecated render2 is public and can be accessed directly + */ +attribute_deprecated AVVDPAU_Render2 av_vdpau_hwaccel_get_render2(const AVVDPAUContext *); +/** + * @deprecated render2 is public and can be accessed directly + */ +attribute_deprecated void av_vdpau_hwaccel_set_render2(AVVDPAUContext *, AVVDPAU_Render2); +#endif /** * Associate a VDPAU device with a codec context for hardware acceleration. @@ -145,12 +155,16 @@ int av_vdpau_bind_context(AVCodecContext *avctx, VdpDevice device, int av_vdpau_get_surface_parameters(AVCodecContext *avctx, VdpChromaType *type, uint32_t *width, uint32_t *height); +#if FF_API_VDPAU_ALLOC_GET_SET /** * Allocate an AVVDPAUContext. * * @return Newly-allocated AVVDPAUContext or NULL on failure. + * @deprecated use av_vdpau_bind_context() instead */ +attribute_deprecated AVVDPAUContext *av_vdpau_alloc_context(void); +#endif /** @} */ diff --git a/libavcodec/version_major.h b/libavcodec/version_major.h index 161442df95..9e75303ed6 100644 --- a/libavcodec/version_major.h +++ b/libavcodec/version_major.h @@ -54,6 +54,7 @@ #define FF_API_FF_PROFILE_LEVEL (LIBAVCODEC_VERSION_MAJOR < 62) #define FF_API_AVCODEC_CLOSE (LIBAVCODEC_VERSION_MAJOR < 62) #define FF_API_BUFFER_MIN_SIZE (LIBAVCODEC_VERSION_MAJOR < 62) +#define FF_API_VDPAU_ALLOC_GET_SET (LIBAVCODEC_VERSION_MAJOR < 62) // reminder to remove CrystalHD decoders on next major bump #define FF_CODEC_CRYSTAL_HD (LIBAVCODEC_VERSION_MAJOR < 61) -- 2.40.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".
next prev parent reply other threads:[~2024-03-05 16:33 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-03-05 16:32 [FFmpeg-devel] [PATCH 1/2] avcodec/vdpau: Remove outdated comment Andreas Rheinhardt 2024-03-05 16:32 ` Andreas Rheinhardt [this message] 2024-03-05 16:34 ` [FFmpeg-devel] [PATCH 2/2] avcodec/vdpau: Deprecate redundandt allocators and getter/setter Andreas Rheinhardt 2024-03-07 8:12 ` [FFmpeg-devel] [PATCH 1/2] avcodec/vdpau: Remove outdated comment Andreas Rheinhardt
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=AS8P250MB07441A4FFB25CA5DCFD3FEFB8F222@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM \ --to=andreas.rheinhardt@outlook.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git