From ab64222d5b0da93694f5330bd7720dc3493a6d28 Mon Sep 17 00:00:00 2001 From: Manuel de la Pena Date: Fri, 3 Aug 2018 02:29:15 +0200 Subject: [PATCH] [AudioToolbox] Add Xcode 10 beta 5 support. (#4559) --- src/AudioToolbox/AudioSession.cs | 10 +++++++++ src/audiounit.cs | 23 +++++++++++++++++++++ tests/xtro-sharpie/iOS-AudioToolbox.todo | 5 ----- tests/xtro-sharpie/macOS-AudioToolbox.todo | 5 ----- tests/xtro-sharpie/tvOS-AudioToolbox.ignore | 2 ++ tests/xtro-sharpie/tvOS-AudioToolbox.todo | 1 - 6 files changed, 35 insertions(+), 11 deletions(-) delete mode 100644 tests/xtro-sharpie/iOS-AudioToolbox.todo delete mode 100644 tests/xtro-sharpie/macOS-AudioToolbox.todo create mode 100644 tests/xtro-sharpie/tvOS-AudioToolbox.ignore delete mode 100644 tests/xtro-sharpie/tvOS-AudioToolbox.todo diff --git a/src/AudioToolbox/AudioSession.cs b/src/AudioToolbox/AudioSession.cs index f94213e8f8..0d337827a0 100644 --- a/src/AudioToolbox/AudioSession.cs +++ b/src/AudioToolbox/AudioSession.cs @@ -165,6 +165,7 @@ namespace AudioToolbox { } } + [Deprecated (PlatformName.iOS, 7, 0)] public AudioSessionInputRouteKind PreviousInputRoute { get { using (var array = Extract (previous_route_key, AudioSession.AudioRouteKey_Inputs)) @@ -172,6 +173,7 @@ namespace AudioToolbox { } } + [Deprecated (PlatformName.iOS, 7, 0)] public AudioSessionOutputRouteKind [] PreviousOutputRoutes { get { using (var array = Extract (previous_route_key, AudioSession.AudioRouteKey_Outputs)) @@ -179,6 +181,7 @@ namespace AudioToolbox { } } + [Deprecated (PlatformName.iOS, 7, 0)] public AudioSessionInputRouteKind CurrentInputRoute { get { using (var array = Extract (current_route_key, AudioSession.AudioRouteKey_Inputs)) @@ -186,6 +189,7 @@ namespace AudioToolbox { } } + [Deprecated (PlatformName.iOS, 7, 0)] public AudioSessionOutputRouteKind [] CurrentOutputRoutes { get { using (var array = Extract (current_route_key, AudioSession.AudioRouteKey_Outputs)) @@ -440,12 +444,14 @@ namespace AudioToolbox { } } + [Deprecated (PlatformName.iOS, 7, 0)] static public AccessoryInfo[] InputSources { get { return ExtractAccessoryInfo (GetIntPtr (AudioSessionProperty.InputSources), InputSourceKey_ID, InputSourceKey_Description); } } + [Deprecated (PlatformName.iOS, 7, 0)] static public AccessoryInfo[] OutputDestinations { get { return ExtractAccessoryInfo (GetIntPtr (AudioSessionProperty.OutputDestinations), OutputDestinationKey_ID, OutputDestinationKey_Description); @@ -490,6 +496,7 @@ namespace AudioToolbox { */ + [Deprecated (PlatformName.iOS, 7, 0)] static internal AudioSessionInputRouteKind GetInputRoute (NSArray arr) { if (arr == null || arr.Count == 0) @@ -520,6 +527,7 @@ namespace AudioToolbox { } } + [Deprecated (PlatformName.iOS, 7, 0)] static internal AudioSessionOutputRouteKind [] GetOutputRoutes (NSArray arr) { if (arr == null || arr.Count == 0) @@ -563,12 +571,14 @@ namespace AudioToolbox { return result; } + [Deprecated (PlatformName.iOS, 7, 0)] static public AudioSessionInputRouteKind InputRoute { get { return GetInputRoute ((NSArray) AudioRouteDescription [AudioRouteKey_Inputs]); } } + [Deprecated (PlatformName.iOS, 7, 0)] static public AudioSessionOutputRouteKind [] OutputRoutes { get { return GetOutputRoutes ((NSArray) AudioRouteDescription [AudioRouteKey_Outputs]); diff --git a/src/audiounit.cs b/src/audiounit.cs index 4cc122fe4a..d6251d1beb 100644 --- a/src/audiounit.cs +++ b/src/audiounit.cs @@ -18,6 +18,7 @@ using CoreAnimation; using CoreGraphics; #if IOS || MONOMAC using CoreAudioKit; +using CoreMidi; #endif using AudioToolbox; using AVFoundation; @@ -64,6 +65,9 @@ namespace AudioUnit { delegate bool AUHostTransportStateBlock (ref AUHostTransportStateFlags transportStateFlags, ref double currentSamplePosition, ref double cycleStartBeatPosition, ref double cycleEndBeatPosition); delegate void AURenderObserver (AudioUnitRenderActionFlags actionFlags, ref AudioTimeStamp timestamp, uint frameCount, nint outputBusNumber); delegate float AUImplementorValueFromStringCallback (AUParameter param, string str); +#if IOS || MONOMAC + delegate void AUMidiCIProfileChangedCallback (byte cable, byte channel, MidiCIProfile profile, bool enabled); +#endif [iOS (9,0), Mac(10,11, onlyOn64 : true)] [BaseType (typeof(NSObject))] @@ -253,6 +257,25 @@ namespace AudioUnit { [Export ("MIDIOutputBufferSizeHint")] nint MidiOutputBufferSizeHint { get; set; } +#if IOS || MONOMAC + + [Mac (10,14, onlyOn64: true), iOS (12,0)] + [Export ("profileStateForCable:channel:")] + MidiCIProfileState GetProfileState (byte cable, byte channel); + + [Mac (10,14, onlyOn64: true), iOS (12, 0)] + [NullAllowed, Export ("profileChangedBlock", ArgumentSemantic.Assign)] + AUMidiCIProfileChangedCallback ProfileChangedCallback { get; set; } + + [Mac (10,14, onlyOn64: true), iOS (12,0)] + [Export ("disableProfile:cable:onChannel:error:")] + bool Disable (MidiCIProfile profile, byte cable, byte channel, [NullAllowed] out NSError outError); + + [Mac (10,14, onlyOn64: true), iOS (12,0)] + [Export ("enableProfile:cable:onChannel:error:")] + bool Enable (MidiCIProfile profile, byte cable, byte channel, [NullAllowed] out NSError outError); + +#endif } // kept separate from AUAudioUnit, quote: diff --git a/tests/xtro-sharpie/iOS-AudioToolbox.todo b/tests/xtro-sharpie/iOS-AudioToolbox.todo deleted file mode 100644 index 1520743b32..0000000000 --- a/tests/xtro-sharpie/iOS-AudioToolbox.todo +++ /dev/null @@ -1,5 +0,0 @@ -!missing-selector! AUAudioUnit::disableProfile:cable:onChannel:error: not bound -!missing-selector! AUAudioUnit::enableProfile:cable:onChannel:error: not bound -!missing-selector! AUAudioUnit::profileChangedBlock not bound -!missing-selector! AUAudioUnit::profileStateForCable:channel: not bound -!missing-selector! AUAudioUnit::setProfileChangedBlock: not bound diff --git a/tests/xtro-sharpie/macOS-AudioToolbox.todo b/tests/xtro-sharpie/macOS-AudioToolbox.todo deleted file mode 100644 index 1520743b32..0000000000 --- a/tests/xtro-sharpie/macOS-AudioToolbox.todo +++ /dev/null @@ -1,5 +0,0 @@ -!missing-selector! AUAudioUnit::disableProfile:cable:onChannel:error: not bound -!missing-selector! AUAudioUnit::enableProfile:cable:onChannel:error: not bound -!missing-selector! AUAudioUnit::profileChangedBlock not bound -!missing-selector! AUAudioUnit::profileStateForCable:channel: not bound -!missing-selector! AUAudioUnit::setProfileChangedBlock: not bound diff --git a/tests/xtro-sharpie/tvOS-AudioToolbox.ignore b/tests/xtro-sharpie/tvOS-AudioToolbox.ignore new file mode 100644 index 0000000000..a2c0009b28 --- /dev/null +++ b/tests/xtro-sharpie/tvOS-AudioToolbox.ignore @@ -0,0 +1,2 @@ +# already obsoleted and pointed to use ReadPacketData +!unknown-pinvoke! AudioFileReadPackets bound \ No newline at end of file diff --git a/tests/xtro-sharpie/tvOS-AudioToolbox.todo b/tests/xtro-sharpie/tvOS-AudioToolbox.todo deleted file mode 100644 index 429db47e69..0000000000 --- a/tests/xtro-sharpie/tvOS-AudioToolbox.todo +++ /dev/null @@ -1 +0,0 @@ -!unknown-pinvoke! AudioFileReadPackets bound