public static void ParseRecordToggled(Gst.Message message, out Gst.Interfaces.MixerTrack track, out bool record)
        {
            IntPtr native_ptr;

            gst_mixer_message_parse_record_toggled(message == null ? IntPtr.Zero : message.Handle, out native_ptr, out record);
            track = (MixerTrack)GLib.Object.GetObject(native_ptr, false);
        }
        public static void ParseVolumeChanged(Gst.Message message, out Gst.Interfaces.MixerTrack track, out int[] volumes)
        {
            IntPtr native_track;
            IntPtr native_volumes;
            int    n_native_volumes;

            gst_mixer_message_parse_volume_changed(message == null ? IntPtr.Zero : message.Handle, out native_track, out native_volumes, out n_native_volumes);

            track   = (MixerTrack)GLib.Object.GetObject(native_track, false);
            volumes = new int[n_native_volumes];
            for (int i = 0; i < n_native_volumes; i++)
            {
                volumes[i] = Marshal.ReadInt32(native_volumes, i * 4);
            }
            GLib.Marshaller.Free(native_volumes);
        }