PR #22714 opened by Timo Rothenpieler (BtbN) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/22714 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/22714.patch
The missing Vulkan one breaks build of ffplay in case of --disable-vulkan. The other ones cause no known issues, but they're public API that vanishes based on configure options nevertheless. Fixes #22711 >From 2dd07b406342dec313b828e0b8fbb41f1a453e39 Mon Sep 17 00:00:00 2001 From: Timo Rothenpieler <[email protected]> Date: Sat, 4 Apr 2026 20:01:13 +0200 Subject: [PATCH 1/2] avutil/hwcontext_stub: add stubs for new public Vulkan APIs --- libavutil/hwcontext_stub.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libavutil/hwcontext_stub.c b/libavutil/hwcontext_stub.c index 8683f07fc7..0adf774ba0 100644 --- a/libavutil/hwcontext_stub.c +++ b/libavutil/hwcontext_stub.c @@ -26,6 +26,8 @@ typedef enum VkFormat VkFormat; typedef struct AVVkFrame AVVkFrame; const VkFormat *av_vkfmt_from_pixfmt(enum AVPixelFormat p); AVVkFrame *av_vk_frame_alloc(void); +const char **av_vk_get_optional_instance_extensions(int *count); +const char **av_vk_get_optional_device_extensions(int *count); const VkFormat *av_vkfmt_from_pixfmt(enum AVPixelFormat p) { @@ -36,4 +38,16 @@ AVVkFrame *av_vk_frame_alloc(void) { return NULL; } + +const char **av_vk_get_optional_instance_extensions(int *count) +{ + *count = -1; + return NULL; +} + +const char **av_vk_get_optional_device_extensions(int *count) +{ + *count = -1; + return NULL; +} #endif /* CONFIG_VULKAN */ -- 2.52.0 >From 8f5c0cdafb2af2b2c6dc7576ba1a15e7639a8671 Mon Sep 17 00:00:00 2001 From: Timo Rothenpieler <[email protected]> Date: Sat, 4 Apr 2026 20:26:29 +0200 Subject: [PATCH 2/2] avutil/hwcontext_stub: add stubs for public AMF and VT APIs as well --- libavutil/Makefile | 2 + libavutil/hwcontext_stub.c | 118 +++++++++++++++++++++++++++++++++++-- 2 files changed, 116 insertions(+), 4 deletions(-) diff --git a/libavutil/Makefile b/libavutil/Makefile index 1647952f8f..45656e2f19 100644 --- a/libavutil/Makefile +++ b/libavutil/Makefile @@ -219,6 +219,8 @@ OBJS-$(CONFIG_VIDEOTOOLBOX) += hwcontext_videotoolbox.o OBJS-$(CONFIG_VDPAU) += hwcontext_vdpau.o OBJS-$(CONFIG_VULKAN) += hwcontext_vulkan.o vulkan.o +OBJS-$(!CONFIG_AMF) += hwcontext_stub.o +OBJS-$(!CONFIG_VIDEOTOOLBOX) += hwcontext_stub.o OBJS-$(!CONFIG_VULKAN) += hwcontext_stub.o OBJS += $(COMPAT_OBJS:%=../compat/%) diff --git a/libavutil/hwcontext_stub.c b/libavutil/hwcontext_stub.c index 0adf774ba0..061db70662 100644 --- a/libavutil/hwcontext_stub.c +++ b/libavutil/hwcontext_stub.c @@ -16,14 +16,67 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "config.h" - -#if !CONFIG_VULKAN #include <stddef.h> #include "pixfmt.h" +#include "config.h" + + +#if !CONFIG_AMF +#include "mastering_display_metadata.h" + +typedef struct AMFHDRMetadata AMFHDRMetadata; +typedef enum AMF_SURFACE_FORMAT { AMF_SURFACE_UNKNOWN = 0 } AMF_SURFACE_FORMAT; +typedef enum AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM { AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN = -1 } AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM; + +enum AMF_SURFACE_FORMAT av_av_to_amf_format(enum AVPixelFormat fmt); +enum AVPixelFormat av_amf_to_av_format(enum AMF_SURFACE_FORMAT fmt); +enum AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM av_amf_get_color_profile(enum AVColorRange color_range, enum AVColorSpace color_space); +int av_amf_display_mastering_meta_to_hdrmeta(const AVMasteringDisplayMetadata *display_meta, AMFHDRMetadata *hdrmeta); +int av_amf_light_metadata_to_hdrmeta(const AVContentLightMetadata *light_meta, AMFHDRMetadata *hdrmeta); +int av_amf_extract_hdr_metadata(const AVFrame *frame, AMFHDRMetadata *hdrmeta); +int av_amf_attach_hdr_metadata(AVFrame *frame, const AMFHDRMetadata *hdrmeta); + +enum AMF_SURFACE_FORMAT av_av_to_amf_format(enum AVPixelFormat fmt) +{ + return AMF_SURFACE_UNKNOWN; +} + +enum AVPixelFormat av_amf_to_av_format(enum AMF_SURFACE_FORMAT fmt) +{ + return AV_PIX_FMT_NONE; +} + +enum AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM av_amf_get_color_profile(enum AVColorRange color_range, enum AVColorSpace color_space) +{ + return AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN; +} + +int av_amf_display_mastering_meta_to_hdrmeta(const AVMasteringDisplayMetadata *display_meta, AMFHDRMetadata *hdrmeta) +{ + return AVERROR(ENOSYS); +} + +int av_amf_light_metadata_to_hdrmeta(const AVContentLightMetadata *light_meta, AMFHDRMetadata *hdrmeta) +{ + return AVERROR(ENOSYS); +} + +int av_amf_extract_hdr_metadata(const AVFrame *frame, AMFHDRMetadata *hdrmeta) +{ + return AVERROR(ENOSYS); +} + +int av_amf_attach_hdr_metadata(AVFrame *frame, const AMFHDRMetadata *hdrmeta) +{ + return AVERROR(ENOSYS); +} +#endif /* !CONFIG_AMF */ + +#if !CONFIG_VULKAN typedef enum VkFormat VkFormat; typedef struct AVVkFrame AVVkFrame; + const VkFormat *av_vkfmt_from_pixfmt(enum AVPixelFormat p); AVVkFrame *av_vk_frame_alloc(void); const char **av_vk_get_optional_instance_extensions(int *count); @@ -50,4 +103,61 @@ const char **av_vk_get_optional_device_extensions(int *count) *count = -1; return NULL; } -#endif /* CONFIG_VULKAN */ +#endif /* !CONFIG_VULKAN */ + +#if !CONFIG_VIDEOTOOLBOX +#include <stdbool.h> +#include "colorspace.h" + +typedef void *CFStringRef; +typedef void *CVPixelBufferRef; + +enum AVPixelFormat av_map_videotoolbox_format_to_pixfmt(uint32_t cv_fmt); +uint32_t av_map_videotoolbox_format_from_pixfmt(enum AVPixelFormat pix_fmt); +uint32_t av_map_videotoolbox_format_from_pixfmt2(enum AVPixelFormat pix_fmt, bool full_range); +CFStringRef av_map_videotoolbox_chroma_loc_from_av(enum AVChromaLocation loc); +CFStringRef av_map_videotoolbox_color_matrix_from_av(enum AVColorSpace space); +CFStringRef av_map_videotoolbox_color_primaries_from_av(enum AVColorPrimaries pri); +CFStringRef av_map_videotoolbox_color_trc_from_av(enum AVColorTransferCharacteristic trc); +int av_vt_pixbuf_set_attachments(void *log_ctx, CVPixelBufferRef pixbuf, const struct AVFrame *src); + +enum AVPixelFormat av_map_videotoolbox_format_to_pixfmt(uint32_t cv_fmt) +{ + return AV_PIX_FMT_NONE; +} + +uint32_t av_map_videotoolbox_format_from_pixfmt(enum AVPixelFormat pix_fmt) +{ + return 0; +} + +uint32_t av_map_videotoolbox_format_from_pixfmt2(enum AVPixelFormat pix_fmt, bool full_range) +{ + return 0; +} + +CFStringRef av_map_videotoolbox_chroma_loc_from_av(enum AVChromaLocation loc) +{ + return NULL; +} + +CFStringRef av_map_videotoolbox_color_matrix_from_av(enum AVColorSpace space) +{ + return NULL; +} + +CFStringRef av_map_videotoolbox_color_primaries_from_av(enum AVColorPrimaries pri) +{ + return NULL; +} + +CFStringRef av_map_videotoolbox_color_trc_from_av(enum AVColorTransferCharacteristic trc) +{ + return NULL; +} + +int av_vt_pixbuf_set_attachments(void *log_ctx, CVPixelBufferRef pixbuf, const struct AVFrame *src) +{ + return AVERROR(ENOSYS); +} +#endif /* !CONFIG_VIDEOTOOLBOX */ -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
