static AudioChannelLayout GetChannelLayout(AudioFormatProperty property, int value) { int size; AudioFormatPropertyNative.AudioFormatGetPropertyInfo(property, sizeof(AudioFormatProperty), ref value, out size); AudioChannelLayout layout; IntPtr ptr = Marshal.AllocHGlobal(size); if (AudioFormatPropertyNative.AudioFormatGetProperty(property, sizeof(AudioFormatProperty), ref value, ref size, ptr) == 0) { layout = new AudioChannelLayout(ptr); } else { layout = null; } Marshal.FreeHGlobal(ptr); return(layout); }
public unsafe static float[,] GetMatrixMixMap(AudioChannelLayout inputLayout, AudioChannelLayout outputLayout) { if (inputLayout == null) { throw new ArgumentNullException("inputLayout"); } if (outputLayout == null) { throw new ArgumentNullException("outputLayout"); } var channels_count_output = GetNumberOfChannels(outputLayout); if (channels_count_output == null) { throw new ArgumentException("outputLayout"); } var channels_count_input = GetNumberOfChannels(inputLayout); if (channels_count_input == null) { throw new ArgumentException("inputLayout"); } int ptr_size; var input_ptr = inputLayout.ToBlock(out ptr_size); var output_ptr = outputLayout.ToBlock(out ptr_size); var array = new IntPtr[] { input_ptr, output_ptr }; ptr_size = sizeof(IntPtr) * array.Length; float[,] value; AudioFormatError res; fixed(IntPtr *ptr = &array[0]) { value = new float[channels_count_input.Value, channels_count_output.Value]; var size = sizeof(float) * channels_count_input.Value * channels_count_output.Value; fixed(float *value_ptr = &value[0, 0]) { res = AudioFormatPropertyNative.AudioFormatGetProperty(AudioFormatProperty.MatrixMixMap, ptr_size, ptr, ref size, value_ptr); } } Marshal.FreeHGlobal(input_ptr); Marshal.FreeHGlobal(output_ptr); return(res == 0 ? value : null); }
public static unsafe float[,] GetMatrixMixMap(AudioChannelLayout inputLayout, AudioChannelLayout outputLayout) { if (inputLayout == null) throw new ArgumentNullException ("inputLayout"); if (outputLayout == null) throw new ArgumentNullException ("outputLayout"); var channels_count_output = GetNumberOfChannels (outputLayout); if (channels_count_output == null) throw new ArgumentException ("outputLayout"); var channels_count_input = GetNumberOfChannels (inputLayout); if (channels_count_input == null) throw new ArgumentException ("inputLayout"); int ptr_size; var input_ptr = inputLayout.ToBlock (out ptr_size); var output_ptr = outputLayout.ToBlock (out ptr_size); var array = new IntPtr[] { input_ptr, output_ptr }; ptr_size = sizeof (IntPtr) * array.Length; float[,] value; AudioFormatError res; fixed (IntPtr* ptr = &array[0]) { value = new float[channels_count_input.Value, channels_count_output.Value]; var size = sizeof (float) * channels_count_input.Value * channels_count_output.Value; fixed (float* value_ptr = &value[0, 0]) { res = AudioFormatPropertyNative.AudioFormatGetProperty (AudioFormatProperty.MatrixMixMap, ptr_size, ptr, ref size, value_ptr); } } Marshal.FreeHGlobal (input_ptr); Marshal.FreeHGlobal (output_ptr); return res == 0 ? value : null; }
static AudioChannelLayout GetChannelLayout(AudioFormatProperty property, int value) { int size; AudioFormatPropertyNative.AudioFormatGetPropertyInfo (property, sizeof (AudioFormatProperty), ref value, out size); AudioChannelLayout layout; IntPtr ptr = Marshal.AllocHGlobal (size); if (AudioFormatPropertyNative.AudioFormatGetProperty (property, sizeof (AudioFormatProperty), ref value, ref size, ptr) == 0) layout = new AudioChannelLayout (ptr); else layout = null; Marshal.FreeHGlobal (ptr); return layout; }
public static AudioFormatError Validate(AudioChannelLayout layout) { if (layout == null) throw new ArgumentNullException ("layout"); int ptr_size; var ptr = layout.ToBlock (out ptr_size); var res = AudioFormatPropertyNative.AudioFormatGetProperty (AudioFormatProperty.ValidateChannelLayout, ptr_size, ptr, IntPtr.Zero, IntPtr.Zero); Marshal.FreeHGlobal (ptr); return res; }
public static AudioChannelLayoutTag? GetTagForChannelLayout(AudioChannelLayout layout) { if (layout == null) throw new ArgumentNullException ("layout"); int ptr_size; var ptr = layout.ToBlock (out ptr_size); int size = sizeof (AudioChannelLayoutTag); int value; var res = AudioFormatPropertyNative.AudioFormatGetProperty (AudioFormatProperty.TagForChannelLayout, ptr_size, ptr, ref size, out value); Marshal.FreeHGlobal (ptr); return res != 0 ? null : (AudioChannelLayoutTag?) value; }
static IntPtr CreateLayoutPtr(AudioChannelLayout layout) { int size; handleToLayout = layout.ToBlock (out size); return handleToLayout; }
public AVAudioChannelLayout(AudioChannelLayout layout) : this((nint) CreateLayoutPtr (layout)) { Marshal.FreeHGlobal (handleToLayout); }
public AudioPanningInfo(AudioChannelLayout outputChannelMap) { if (outputChannelMap == null) throw new ArgumentNullException ("outputChannelMap"); this.OutputChannelMap = outputChannelMap; }
public AudioBalanceFade(AudioChannelLayout channelLayout) { if (channelLayout == null) throw new ArgumentNullException ("channelLayout"); this.ChannelLayout = channelLayout; }