From 1447fbab25e54cf2a4aa5adae28e96d71eb637a7 Mon Sep 17 00:00:00 2001 From: TJ Lambert Date: Tue, 17 Aug 2021 11:09:38 -0500 Subject: [PATCH 1/6] initial changes --- src/AudioUnit/AudioUnit.cs | 4 ++-- ...acCatalyst-CoreAudio.todo => MacCatalyst-CoreAudio.ignore} | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) rename tests/xtro-sharpie/{MacCatalyst-CoreAudio.todo => MacCatalyst-CoreAudio.ignore} (96%) diff --git a/src/AudioUnit/AudioUnit.cs b/src/AudioUnit/AudioUnit.cs index 940e471ceeb3..3976384511de 100644 --- a/src/AudioUnit/AudioUnit.cs +++ b/src/AudioUnit/AudioUnit.cs @@ -392,7 +392,7 @@ public uint GetCurrentDevice (AudioUnitScopeType scope, uint audioUnitElement = #endif public static uint GetCurrentInputDevice () { -#if MONOMAC +#if MONOMAC || __MACCATALYST__ // We need to replace AudioHardwareGetProperty since it has been deprecated since OS X 10.6 and iOS 2.0 // Replacing with the following implementation recommended in the following doc // See Listing 4 New - Getting the default input device. @@ -864,7 +864,7 @@ static extern AudioUnitStatus AudioUnitSetParameter (IntPtr inUnit, AudioUnitPar [DllImport (Constants.AudioUnitLibrary)] static extern AudioUnitStatus AudioUnitScheduleParameters (IntPtr inUnit, AudioUnitParameterEvent inParameterEvent, uint inNumParamEvents); -#if MONOMAC +#if MONOMAC || __MACCATALYST__ [DllImport (Constants.AudioUnitLibrary)] static extern int AudioObjectGetPropertyData ( uint inObjectID, diff --git a/tests/xtro-sharpie/MacCatalyst-CoreAudio.todo b/tests/xtro-sharpie/MacCatalyst-CoreAudio.ignore similarity index 96% rename from tests/xtro-sharpie/MacCatalyst-CoreAudio.todo rename to tests/xtro-sharpie/MacCatalyst-CoreAudio.ignore index f0153f063bac..51da5b923286 100644 --- a/tests/xtro-sharpie/MacCatalyst-CoreAudio.todo +++ b/tests/xtro-sharpie/MacCatalyst-CoreAudio.ignore @@ -21,7 +21,6 @@ !missing-pinvoke! AudioHardwareUnload is not bound !missing-pinvoke! AudioObjectAddPropertyListener is not bound !missing-pinvoke! AudioObjectAddPropertyListenerBlock is not bound -!missing-pinvoke! AudioObjectGetPropertyData is not bound !missing-pinvoke! AudioObjectGetPropertyDataSize is not bound !missing-pinvoke! AudioObjectHasProperty is not bound !missing-pinvoke! AudioObjectIsPropertySettable is not bound From 76e5722d5eb0685cf81c1734ea7b91680b599a33 Mon Sep 17 00:00:00 2001 From: TJ Lambert Date: Tue, 17 Aug 2021 14:31:06 -0500 Subject: [PATCH 2/6] Adding manual changes --- src/AudioUnit/AUEnums.cs | 5 +++++ src/AudioUnit/AudioUnit.cs | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/AudioUnit/AUEnums.cs b/src/AudioUnit/AUEnums.cs index 470f2101c5b5..373782257654 100644 --- a/src/AudioUnit/AUEnums.cs +++ b/src/AudioUnit/AUEnums.cs @@ -187,7 +187,9 @@ public enum AudioObjectPropertySelector : uint TranslateUIDToBox = 1969841250, // 'uidb' ClockDeviceList = 1668049699, //'clk#' TranslateUidToClockDevice = 1969841251, // 'uidc', + [Obsolete ("Use the 'ProcessIsMain' element instead.")] ProcessIsMaster = 1835103092, // 'mast' + ProcessIsMain = 1835100526, // 'main' IsInitingOrExiting = 1768845172, // 'inot' UserIDChanged = 1702193508, // 'euid' ProcessIsAudible = 1886221684, // 'pmut' @@ -200,6 +202,7 @@ public enum AudioObjectPropertySelector : uint ActualSampleRate = 1634955892,// 'asrt', ClockDevice = 1634755428, // 'apcd', IOThreadOSWorkgroup = 1869838183, // 'oswg' + ProcessMute = 1634758765, // 'appm' } public enum AudioObjectPropertyScope : uint @@ -212,7 +215,9 @@ public enum AudioObjectPropertyScope : uint public enum AudioObjectPropertyElement : uint { + [Obsolete ("Use the 'Main' element instead.")] Master = 0, // 0 + Main = 0, // 0 } #endif // !XAMCORE_3_0 || MONOMAC diff --git a/src/AudioUnit/AudioUnit.cs b/src/AudioUnit/AudioUnit.cs index 3976384511de..4a9b9e120f93 100644 --- a/src/AudioUnit/AudioUnit.cs +++ b/src/AudioUnit/AudioUnit.cs @@ -38,6 +38,7 @@ using ObjCRuntime; using CoreFoundation; using Foundation; +using System.Runtime.Versioning; namespace AudioUnit { @@ -389,6 +390,11 @@ public uint GetCurrentDevice (AudioUnitScopeType scope, uint audioUnitElement = #if !XAMCORE_3_0 || MONOMAC #if !MONOMAC [Obsolete ("This API is not available on iOS.")] +#endif +#if NET + [SupportedOSPlatform ("maccatalyst15.0")] +#else + [MacCatalyst (15,0)] #endif public static uint GetCurrentInputDevice () { @@ -403,7 +409,7 @@ public static uint GetCurrentInputDevice () var theAddress = new AudioObjectPropertyAddress ( AudioObjectPropertySelector.DefaultInputDevice, AudioObjectPropertyScope.Global, - AudioObjectPropertyElement.Master); + AudioObjectPropertyElement.Main); uint inQualifierDataSize = 0; IntPtr inQualifierData = IntPtr.Zero; @@ -865,6 +871,11 @@ static extern AudioUnitStatus AudioUnitSetParameter (IntPtr inUnit, AudioUnitPar static extern AudioUnitStatus AudioUnitScheduleParameters (IntPtr inUnit, AudioUnitParameterEvent inParameterEvent, uint inNumParamEvents); #if MONOMAC || __MACCATALYST__ +#if !NET + [MacCatalyst (15,0)] +#else + [SupportedOSPlatform ("maccatalyst15.0")] +#endif [DllImport (Constants.AudioUnitLibrary)] static extern int AudioObjectGetPropertyData ( uint inObjectID, From 6baedc28735c669c2200344db797098bf4c2f981 Mon Sep 17 00:00:00 2001 From: TJ Lambert Date: Wed, 18 Aug 2021 22:55:03 -0500 Subject: [PATCH 3/6] Manual changes --- src/AudioUnit/AUEnums.cs | 16 ++++++++++++++++ src/AudioUnit/AudioUnit.cs | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/AudioUnit/AUEnums.cs b/src/AudioUnit/AUEnums.cs index 373782257654..53fd04b78bc3 100644 --- a/src/AudioUnit/AUEnums.cs +++ b/src/AudioUnit/AUEnums.cs @@ -187,8 +187,14 @@ public enum AudioObjectPropertySelector : uint TranslateUIDToBox = 1969841250, // 'uidb' ClockDeviceList = 1668049699, //'clk#' TranslateUidToClockDevice = 1969841251, // 'uidc', + [Deprecated (PlatformName.iOS, 15,0, message : "Use the 'ProcessIsMain' element instead.")] + [Deprecated (PlatformName.TvOS, 15,0, message : "Use the 'ProcessIsMain' element instead.")] + [Deprecated (PlatformName.WatchOS, 8,0, message : "Use the 'ProcessIsMain' element instead.")] + [Deprecated (PlatformName.MacCatalyst, 15,0, message : "Use the 'ProcessIsMain' element instead.")] + [Deprecated (PlatformName.MacOSX, 12,0, message : "Use the 'ProcessIsMain' element instead.")] [Obsolete ("Use the 'ProcessIsMain' element instead.")] ProcessIsMaster = 1835103092, // 'mast' + // ProcessIsMain - added Xcode13 Beta 1 ProcessIsMain = 1835100526, // 'main' IsInitingOrExiting = 1768845172, // 'inot' UserIDChanged = 1702193508, // 'euid' @@ -202,6 +208,14 @@ public enum AudioObjectPropertySelector : uint ActualSampleRate = 1634955892,// 'asrt', ClockDevice = 1634755428, // 'apcd', IOThreadOSWorkgroup = 1869838183, // 'oswg' +#if !NET + [iOS (15,0), TV (15,0), MacCatalyst (15,0), Mac (12,0), Watch (8,0)] +#else + [SupportedOSPlatform ("ios15.0")] + [SupportedOSPlatform ("tvos15.0")] + [SupportedOSPlatform ("maccatalyst15.0")] + [SupportedOSPlatform ("macos12.0")] +#endif ProcessMute = 1634758765, // 'appm' } @@ -215,8 +229,10 @@ public enum AudioObjectPropertyScope : uint public enum AudioObjectPropertyElement : uint { +#if !XAMCORE_4_0 [Obsolete ("Use the 'Main' element instead.")] Master = 0, // 0 +#endif Main = 0, // 0 } #endif // !XAMCORE_3_0 || MONOMAC diff --git a/src/AudioUnit/AudioUnit.cs b/src/AudioUnit/AudioUnit.cs index 4a9b9e120f93..7cc602278b34 100644 --- a/src/AudioUnit/AudioUnit.cs +++ b/src/AudioUnit/AudioUnit.cs @@ -392,9 +392,9 @@ public uint GetCurrentDevice (AudioUnitScopeType scope, uint audioUnitElement = [Obsolete ("This API is not available on iOS.")] #endif #if NET - [SupportedOSPlatform ("maccatalyst15.0")] + [SupportedOSPlatform ("maccatalyst15.0")] #else - [MacCatalyst (15,0)] + [MacCatalyst (15,0)] #endif public static uint GetCurrentInputDevice () { From 7583f579544b04260c990bd79a55436eef35935a Mon Sep 17 00:00:00 2001 From: TJ Lambert Date: Fri, 20 Aug 2021 09:44:16 -0500 Subject: [PATCH 4/6] removing types not available in --- src/AudioUnit/AUEnums.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/AudioUnit/AUEnums.cs b/src/AudioUnit/AUEnums.cs index 53fd04b78bc3..cc2a0e7da760 100644 --- a/src/AudioUnit/AUEnums.cs +++ b/src/AudioUnit/AUEnums.cs @@ -188,13 +188,17 @@ public enum AudioObjectPropertySelector : uint ClockDeviceList = 1668049699, //'clk#' TranslateUidToClockDevice = 1969841251, // 'uidc', [Deprecated (PlatformName.iOS, 15,0, message : "Use the 'ProcessIsMain' element instead.")] - [Deprecated (PlatformName.TvOS, 15,0, message : "Use the 'ProcessIsMain' element instead.")] - [Deprecated (PlatformName.WatchOS, 8,0, message : "Use the 'ProcessIsMain' element instead.")] [Deprecated (PlatformName.MacCatalyst, 15,0, message : "Use the 'ProcessIsMain' element instead.")] [Deprecated (PlatformName.MacOSX, 12,0, message : "Use the 'ProcessIsMain' element instead.")] [Obsolete ("Use the 'ProcessIsMain' element instead.")] ProcessIsMaster = 1835103092, // 'mast' - // ProcessIsMain - added Xcode13 Beta 1 +#if !NET + [iOS (15,0), MacCatalyst (15,0), Mac (12,0)] +#else + [SupportedOSPlatform ("ios15.0")] + [SupportedOSPlatform ("maccatalyst15.0")] + [SupportedOSPlatform ("macos12.0")] +#endif ProcessIsMain = 1835100526, // 'main' IsInitingOrExiting = 1768845172, // 'inot' UserIDChanged = 1702193508, // 'euid' @@ -209,10 +213,9 @@ public enum AudioObjectPropertySelector : uint ClockDevice = 1634755428, // 'apcd', IOThreadOSWorkgroup = 1869838183, // 'oswg' #if !NET - [iOS (15,0), TV (15,0), MacCatalyst (15,0), Mac (12,0), Watch (8,0)] + [iOS (15,0), MacCatalyst (15,0), Mac (12,0)] #else [SupportedOSPlatform ("ios15.0")] - [SupportedOSPlatform ("tvos15.0")] [SupportedOSPlatform ("maccatalyst15.0")] [SupportedOSPlatform ("macos12.0")] #endif From 1a79ecd9d839323c1e74895ffb34e94a46771c9a Mon Sep 17 00:00:00 2001 From: TJ Lambert Date: Mon, 23 Aug 2021 21:36:01 -0500 Subject: [PATCH 5/6] Sebastien changes --- src/AudioUnit/AUEnums.cs | 6 ++++-- src/AudioUnit/AudioUnit.cs | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/AudioUnit/AUEnums.cs b/src/AudioUnit/AUEnums.cs index cc2a0e7da760..a328d5118c8a 100644 --- a/src/AudioUnit/AUEnums.cs +++ b/src/AudioUnit/AUEnums.cs @@ -193,11 +193,12 @@ public enum AudioObjectPropertySelector : uint [Obsolete ("Use the 'ProcessIsMain' element instead.")] ProcessIsMaster = 1835103092, // 'mast' #if !NET - [iOS (15,0), MacCatalyst (15,0), Mac (12,0)] + [iOS (15,0), MacCatalyst (15,0), Mac (12,0), NoTV, NoWatch] #else [SupportedOSPlatform ("ios15.0")] [SupportedOSPlatform ("maccatalyst15.0")] [SupportedOSPlatform ("macos12.0")] + [UnsupportedOSPlatform ("tvos")] #endif ProcessIsMain = 1835100526, // 'main' IsInitingOrExiting = 1768845172, // 'inot' @@ -213,11 +214,12 @@ public enum AudioObjectPropertySelector : uint ClockDevice = 1634755428, // 'apcd', IOThreadOSWorkgroup = 1869838183, // 'oswg' #if !NET - [iOS (15,0), MacCatalyst (15,0), Mac (12,0)] + [iOS (15,0), MacCatalyst (15,0), Mac (12,0), NoTV, NoWatch] #else [SupportedOSPlatform ("ios15.0")] [SupportedOSPlatform ("maccatalyst15.0")] [SupportedOSPlatform ("macos12.0")] + [UnsupportedOSPlatform ("tvos")] #endif ProcessMute = 1634758765, // 'appm' } diff --git a/src/AudioUnit/AudioUnit.cs b/src/AudioUnit/AudioUnit.cs index 7cc602278b34..235286735d56 100644 --- a/src/AudioUnit/AudioUnit.cs +++ b/src/AudioUnit/AudioUnit.cs @@ -392,9 +392,9 @@ public uint GetCurrentDevice (AudioUnitScopeType scope, uint audioUnitElement = [Obsolete ("This API is not available on iOS.")] #endif #if NET - [SupportedOSPlatform ("maccatalyst15.0")] + [SupportedOSPlatform ("maccatalyst15.0")] #else - [MacCatalyst (15,0)] + [MacCatalyst (15,0)] #endif public static uint GetCurrentInputDevice () { From 6b3b8fbb0c3ad59d50737bee677f1d596df71e43 Mon Sep 17 00:00:00 2001 From: Manuel de la Pena Date: Thu, 26 Aug 2021 11:19:18 -0400 Subject: [PATCH 6/6] Fix compilation issues. --- src/AudioUnit/AUEnums.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/AudioUnit/AUEnums.cs b/src/AudioUnit/AUEnums.cs index 6b75495d79b1..7157cc1ddac8 100644 --- a/src/AudioUnit/AUEnums.cs +++ b/src/AudioUnit/AUEnums.cs @@ -33,6 +33,7 @@ using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; +using System.Runtime.Versioning; using System.Threading; using AudioToolbox; using ObjCRuntime;