Skip to content

Commit

Permalink
gst_all_1.gst-plugins-bad: add patch for macOS < 12 SDK
Browse files Browse the repository at this point in the history
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.

(cherry picked from commit 69b18ff)
  • Loading branch information
emilazy authored and LeSuisse committed Dec 14, 2024
1 parent 63a44b9 commit 20b4096
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
49 changes: 49 additions & 0 deletions pkgs/development/libraries/gstreamer/bad/darwin-old-sdk-fix.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
From 816f2ccad16413a4961a0001fc02d8874d4fde47 Mon Sep 17 00:00:00 2001
From: Alessandro Bono <[email protected]>
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

5 changes: 5 additions & 0 deletions pkgs/development/libraries/gstreamer/bad/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,11 @@ stdenv.mkDerivation rec {
src = ./fix-paths.patch;
inherit (addOpenGLRunpath) 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 = [
Expand Down

0 comments on commit 20b4096

Please sign in to comment.