public unsafe AudioFormat[] GetOutputFormatList(byte[] magicCookie = null) { var afi = new AudioFormatInfo(); afi.AudioStreamBasicDescription = this; var type_size = sizeof(AudioFormat); uint size; if (AudioFormatPropertyNative.AudioFormatGetPropertyInfo(AudioFormatProperty.OutputFormatList, type_size, ref afi, out size) != 0) { return(null); } Debug.Assert(sizeof(AudioFormat) == type_size); var data = new AudioFormat[size / type_size]; fixed(AudioFormat *ptr = &data[0]) { var res = AudioFormatPropertyNative.AudioFormatGetProperty(AudioFormatProperty.OutputFormatList, type_size, ref afi, ref size, ptr); if (res != 0) { return(null); } Array.Resize(ref data, (int)size / type_size); return(data); } }
public unsafe AudioFormat[] GetFormatList(byte[] magicCookie) { if (magicCookie == null) throw new ArgumentNullException ("magicCookie"); var afi = new AudioFormatInfo (); afi.AudioStreamBasicDescription = this; fixed (byte* b = magicCookie) { afi.MagicCookieWeak = b; afi.MagicCookieSize = magicCookie.Length; var type_size = sizeof (AudioFormat); uint size; if (AudioFormatPropertyNative.AudioFormatGetPropertyInfo (AudioFormatProperty.FormatList, type_size, ref afi, out size) != 0) return null; Debug.Assert (sizeof (AudioFormat) == type_size); var data = new AudioFormat[size / type_size]; fixed (AudioFormat* ptr = &data[0]) { var res = AudioFormatPropertyNative.AudioFormatGetProperty (AudioFormatProperty.FormatList, type_size, ref afi, ref size, ptr); if (res != 0) return null; Array.Resize (ref data, (int)size / type_size); return data; } } }