예제 #1
0
        public int[] GetVolume(Gst.Interfaces.MixerTrack track)
        {
            if (track == null)
            {
                return(null);
            }

            IntPtr native_volumes = GLib.Marshaller.Malloc((ulong)(4 * track.NumChannels));

            gst_mixer_get_volume(Handle, track.Handle, ref native_volumes);

            int[] volumes = new int[track.NumChannels];
            Marshal.Copy(native_volumes, volumes, 0, track.NumChannels);
            GLib.Marshaller.Free(native_volumes);
            return(volumes);
        }
예제 #2
0
        public void SetVolume(Gst.Interfaces.MixerTrack track, int[] volumes)
        {
            if (track == null)
            {
                return;
            }

            if (volumes.Length != track.NumChannels)
            {
                throw new ArgumentOutOfRangeException();
            }
            IntPtr volumes_native = GLib.Marshaller.Malloc((ulong)(4 * track.NumChannels));

            Marshal.Copy(volumes, 0, volumes_native, track.NumChannels);
            gst_mixer_set_volume(Handle, track.Handle, volumes_native);
            GLib.Marshaller.Free(volumes_native);
        }
예제 #3
0
 public void SetMute(Gst.Interfaces.MixerTrack track, bool mute)
 {
     gst_mixer_set_mute(Handle, track == null ? IntPtr.Zero : track.Handle, mute);
 }
예제 #4
0
 public void MuteToggled(Gst.Interfaces.MixerTrack track, bool mute)
 {
     gst_mixer_mute_toggled(Handle, track == null ? IntPtr.Zero : track.Handle, mute);
 }
예제 #5
0
 public void RecordToggled(Gst.Interfaces.MixerTrack track, bool record)
 {
     gst_mixer_record_toggled(Handle, track == null ? IntPtr.Zero : track.Handle, record);
 }
예제 #6
0
 public void SetRecord(Gst.Interfaces.MixerTrack track, bool record)
 {
     gst_mixer_set_record(Handle, track == null ? IntPtr.Zero : track.Handle, record);
 }