gst_all_1.gst-plugins-bad: add patch for macOS < 12 SDK

This now references `kVTVideoDecoderReferenceMissingErr`, which was
added in the macOS 12 SDK. Unfortunately, our 12.3 SDK doesn’t work
to build this package currently. This should hopefully be fixed after
the SDK rework.
This commit is contained in:
Emily
2024-09-02 19:41:24 +01:00
parent c129df75b6
commit 69b18ff3ea
2 changed files with 54 additions and 0 deletions
@@ -0,0 +1,49 @@
From 816f2ccad16413a4961a0001fc02d8874d4fde47 Mon Sep 17 00:00:00 2001
From: Alessandro Bono <alessandro.bono369@gmail.com>
Date: Wed, 10 Jul 2024 15:33:34 +0200
Subject: [PATCH] vtdec: Use kVTVideoDecoderReferenceMissingErr only when
defined
The enum value is declared present since macOS 10.8+[1]. Howerver,
the compilation now fails with the 10.15 SDK:
```
../sys/applemedia/vtdec.c:1219:12: error: use of undeclared identifier 'kVTVideoDecoderReferenceMissingErr'; did you mean 'kVTVideoDecoderMalfunctionErr'?
case kVTVideoDecoderReferenceMissingErr:
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kVTVideoDecoderMalfunctionErr
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/VideoToolbox.framework/Headers/VTErrors.h:40:2: note: 'kVTVideoDecoderMalfunctionErr' declared here
kVTVideoDecoderMalfunctionErr = -12911, // c.f. -8960
^
1 error generated.
```
Put the enum usage under #ifdef. When missing, the behavior will be
the same as before commit a5c437c6430cdce603e46e09400beb4c5b9f5374.
[1] https://developer.apple.com/documentation/videotoolbox/kvtvideodecoderreferencemissingerr?language=objc
---
sys/applemedia/vtdec.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sys/applemedia/vtdec.c b/sys/applemedia/vtdec.c
index 57fcbf9928a5..517c15365b52 100644
--- a/sys/applemedia/vtdec.c
+++ b/sys/applemedia/vtdec.c
@@ -1216,12 +1216,14 @@ gst_vtdec_session_output_callback (void *decompression_output_ref_con,
if (status != noErr) {
switch (status) {
+#ifdef kVTVideoDecoderReferenceMissingErr
case kVTVideoDecoderReferenceMissingErr:
/* ReferenceMissingErr is not critical, when it occurs the frame
* usually has the kVTDecodeInfo_FrameDropped flag set. Log only for debugging purposes. */
GST_DEBUG_OBJECT (vtdec, "ReferenceMissingErr when decoding frame %d",
frame->decode_frame_number);
break;
+#endif
#ifndef HAVE_IOS
case codecBadDataErr: /* SW decoder on macOS uses a different code from the hardware one... */
#endif
--
GitLab
@@ -129,6 +129,11 @@ stdenv.mkDerivation rec {
src = ./fix-paths.patch;
inherit (addDriverRunpath) driverLink;
})
# vtdec: Use kVTVideoDecoderReferenceMissingErr only when defined
# <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7157>
# TODO: Remove this when the build with the newer SDK works.
./darwin-old-sdk-fix.patch
];
nativeBuildInputs = [