avdevice/decklink: fix build on macOS by defining IID_IUnknown

Commits 0cd75dbfa0 and 27e94281d1 added QueryInterface()
implementations that compare the requested interface against
IID_IUnknown. The Linux SDK defines it in LinuxCOM.h and the Windows
SDK gets it from the platform COM headers, but the macOS SDK uses
CoreFoundation's COM types from <CoreFoundation/CFPlugInCOM.h>, which
only provide IUnknownUUID as a CFUUIDRef. Since then, building with
--enable-decklink on macOS fails:

  libavdevice/decklink_dec.cpp:138:43: error: use of undeclared
  identifier 'IID_IUnknown'
  libavdevice/decklink_dec.cpp:603:43: error: use of undeclared
  identifier 'IID_IUnknown'
  libavdevice/decklink_enc.cpp:120:39: error: use of undeclared
  identifier 'IID_IUnknown'
  libavdevice/decklink_enc.cpp:181:39: error: use of undeclared
  identifier 'IID_IUnknown'

On macOS, REFIID is CFUUIDBytes, so derive IID_IUnknown from
IUnknownUUID with CFUUIDGetUUIDBytes(), the same definition used by
the macOS samples shipped with the DeckLink SDK. This avoids
duplicating the GUID bytes, and CFUUIDGetConstantUUIDWithBytes()
returns a constant that must not be released. The definition is
limited to __APPLE__, so Linux and Windows builds are unchanged.

Tested with DeckLink SDK 16.0 and Apple clang 21 on macOS arm64.

Signed-off-by: Jake Fineman <jake@wave.online>
This commit is contained in:
Jake Fineman authored and Kacper Michajłow committed 2026-10-27 18:06:45 +00:00
1 parent 86444dd368
commit 215351c1c3
1 file changed
+5
+5
View File
@@ -103,6 +103,11 @@ static inline bool DECKLINK_IsEqualIID(const REFIID& riid1, const REFIID& riid2)
}
#endif
#ifdef __APPLE__
/* The macOS SDK only provides IUnknownUUID. */
#define IID_IUnknown CFUUIDGetUUIDBytes(IUnknownUUID)
#endif
class decklink_output_callback;
class decklink_input_callback;