diff options
author | Marvin Scholz <epirat07@gmail.com> | 2024-07-09 16:46:47 +0200 |
---|---|---|
committer | Zhao Zhili <zhilizhao@tencent.com> | 2024-07-16 19:51:45 +0800 |
commit | 2fc37c42391a38bfe0aea248f2fe75c9033f98e5 (patch) | |
tree | 73eeb5da9c74c9f862edc9b9549da3e84b47dbe7 | |
parent | 5d74dcf0e3ed2b48d66ff16d32e27b2cbe9b2da5 (diff) | |
download | ffmpeg-2fc37c42391a38bfe0aea248f2fe75c9033f98e5.tar.gz |
avutil/hwcontext_videotoolbox: Fix build with older SDKs
I've accidentally used API not available on the checked version.
Additionally check for the SDK to be new enough to even have the
CVImageBufferCreateColorSpaceFromAttachments API to not fail
the build.
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
-rw-r--r-- | libavutil/hwcontext_videotoolbox.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/libavutil/hwcontext_videotoolbox.c b/libavutil/hwcontext_videotoolbox.c index dd89edfa08..ab7556936d 100644 --- a/libavutil/hwcontext_videotoolbox.c +++ b/libavutil/hwcontext_videotoolbox.c @@ -588,13 +588,26 @@ static int vt_pixbuf_set_colorspace(void *log_ctx, } else CVBufferRemoveAttachment(pixbuf, kCVImageBufferGammaLevelKey); - if (__builtin_available(macOS 12.0, iOS 15.0, *)) { - CFDictionaryRef attachments = CVBufferCopyAttachments(pixbuf, kCVAttachmentMode_ShouldPropagate); +#if (TARGET_OS_OSX && __MAC_OS_X_VERSION_MAX_ALLOWED >= 100800) || \ + (TARGET_OS_IOS && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) + if (__builtin_available(macOS 10.8, iOS 10, *)) { + CFDictionaryRef attachments = NULL; + if (__builtin_available(macOS 12.0, iOS 15.0, *)) + attachments = CVBufferCopyAttachments(pixbuf, kCVAttachmentMode_ShouldPropagate); +#if (TARGET_OS_OSX && __MAC_OS_X_VERSION_MIN_REQUIRED <= 120000) || \ + (TARGET_OS_IOS && __IPHONE_OS_VERSION_MIN_REQUIRED <= 150000) + else { + CFDictionaryRef tmp = CVBufferGetAttachments(pixbuf, kCVAttachmentMode_ShouldPropagate); + if (tmp) + attachments = CFDictionaryCreateCopy(NULL, tmp); + } +#endif if (attachments) { colorspace = CVImageBufferCreateColorSpaceFromAttachments(attachments); CFRelease(attachments); } } +#endif if (colorspace) { CVBufferSetAttachment(pixbuf, kCVImageBufferCGColorSpaceKey, |