wasapi: Fix build with Windows 8.1 SDK
authorNirbheek Chauhan <nirbheek@centricular.com>
Tue, 7 Aug 2018 19:01:51 +0000 (00:31 +0530)
committerNirbheek Chauhan <nirbheek@centricular.com>
Tue, 7 Aug 2018 19:33:53 +0000 (01:03 +0530)
With the Windows 8.1 SDK, the v1 of the AUDCLNT_STREAMOPTIONS enum is
defined which only has NONE and RAW, so it's not only defined when
AudioClient3 is available.

Add a meson check for the symbol. This is not needed for Autotools
because there we build against the MinGW audioclient.h which is still
at v1 of the AudioClient interface.

sys/wasapi/gstaudioclient3.h
sys/wasapi/meson.build

index a9f240a..784f478 100644 (file)
@@ -16,13 +16,14 @@ typedef interface IAudioClient3 IAudioClient3;
 #ifndef __IAudioClient3_INTERFACE_DEFINED__
 #define __IAudioClient3_INTERFACE_DEFINED__
 
-/* This is only available with IAudioClient3 */
+#ifndef HAVE_AUDCLNT_STREAMOPTIONS
 typedef enum AUDCLNT_STREAMOPTIONS
 {
     AUDCLNT_STREAMOPTIONS_NONE         = 0,
     AUDCLNT_STREAMOPTIONS_RAW          = 0x1,
     AUDCLNT_STREAMOPTIONS_MATCH_FORMAT = 0x2
 } AUDCLNT_STREAMOPTIONS;
+#endif
 
 /* These should be available when the IAudioClient2 interface is defined */
 #ifndef __IAudioClient2_FWD_DEFINED__
index cf57d87..e426743 100644 (file)
@@ -22,9 +22,14 @@ if not have_audioclient_h and get_option('wasapi').enabled()
 endif
 
 if ole32_dep.found() and ksuser_dep.found() and have_audioclient_h
+  wasapi_args = ['-DCOBJMACROS']
+  if cc.has_header_symbol('audioclient.h', 'AUDCLNT_STREAMOPTIONS_NONE')
+    wasapi_args += ['-DHAVE_AUDCLNT_STREAMOPTIONS']
+  endif
+
   gstwasapi = library('gstwasapi',
     wasapi_sources,
-    c_args : gst_plugins_bad_args + ['-DCOBJMACROS'],
+    c_args : gst_plugins_bad_args + wasapi_args,
     include_directories : [configinc],
     dependencies : [gstaudio_dep, ole32_dep, ksuser_dep],
     install : true,