summaryrefslogtreecommitdiffstats
path: root/sys/sunaudio/gstsunaudiomixertrack.c
diff options
context:
space:
mode:
authorJan Schmidt <jan.schmidt@sun.com>2009-06-04 12:27:19 +0100
committerJan Schmidt <jan.schmidt@sun.com>2009-06-05 10:47:53 +0100
commit0fc43060e5e10e5a9fc24487d9fcb3e2865c0895 (patch)
treea3b2d302dcefdd91a26a55609351525a3ad4a6d5 /sys/sunaudio/gstsunaudiomixertrack.c
parent29111fa1f8208c3ae1896d5934e5a2ff5839aa98 (diff)
sunaudio: Support new flags for options and actions
Use new audio mixer flags added in Base 0.10.23 to expose flags and options on the SunAudio devices. Fixes: #583593 Patch By: Brian Cameron <brian.cameron@sun.com> Patch By: Garrett D'Amore <garrett.damore@sun.com>
Diffstat (limited to 'sys/sunaudio/gstsunaudiomixertrack.c')
-rw-r--r--sys/sunaudio/gstsunaudiomixertrack.c88
1 files changed, 75 insertions, 13 deletions
diff --git a/sys/sunaudio/gstsunaudiomixertrack.c b/sys/sunaudio/gstsunaudiomixertrack.c
index 41275626..bee77043 100644
--- a/sys/sunaudio/gstsunaudiomixertrack.c
+++ b/sys/sunaudio/gstsunaudiomixertrack.c
@@ -1,7 +1,9 @@
/*
* GStreamer
- * Copyright (C) 2005,2008 Sun Microsystems, Inc.,
+ * Copyright (C) 2005,2008, 2009 Sun Microsystems, Inc.,
* Brian Cameron <brian.cameron@sun.com>
+ * Copyright (C) 2009 Sun Microsystems, Inc.,
+ * Garrett D'Amore <garrett.damore@sun.com>
*
* gstsunaudiomixer.c: mixer interface implementation for OSS
*
@@ -59,10 +61,19 @@ gst_sunaudiomixer_track_init (GstSunAudioMixerTrack * track)
}
GstMixerTrack *
-gst_sunaudiomixer_track_new (GstSunAudioTrackType track_num,
- gint max_chans, gint flags)
+gst_sunaudiomixer_track_new (GstSunAudioTrackType track_num)
{
- const gchar *labels[] = { N_("Volume"), N_("Gain"), N_("Monitor") };
+ const gchar *labels[] = { N_("Volume"),
+ N_("Gain"),
+ N_("Monitor"),
+ N_("Built-in Speaker"),
+ N_("Headphone"),
+ N_("Line Out"),
+ N_("SPDIF Out"),
+ N_("AUX 1 Out"),
+ N_("AUX 2 Out"),
+ };
+
GstSunAudioMixerTrack *sunaudiotrack;
GstMixerTrack *track;
@@ -84,15 +95,66 @@ gst_sunaudiomixer_track_new (GstSunAudioTrackType track_num,
}
g_type_class_unref (klass);
- track = GST_MIXER_TRACK (sunaudiotrack);
- track->label = g_strdup (_(untranslated_label));
- track->num_channels = max_chans;
- track->flags = flags;
- track->min_volume = 0;
- track->max_volume = 255;
- sunaudiotrack->track_num = track_num;
- sunaudiotrack->gain = (0 & 0xff);
- sunaudiotrack->balance = AUDIO_MID_BALANCE;
+ switch (track_num) {
+ case GST_SUNAUDIO_TRACK_OUTPUT:
+ /* these are sliders */
+ track = GST_MIXER_TRACK (sunaudiotrack);
+ track->label = g_strdup (_(untranslated_label));
+ track->num_channels = 2;
+ track->flags = GST_MIXER_TRACK_OUTPUT | GST_MIXER_TRACK_WHITELIST |
+ GST_MIXER_TRACK_MASTER;
+ track->min_volume = 0;
+ track->max_volume = 255;
+ sunaudiotrack->track_num = track_num;
+ sunaudiotrack->gain = (0 & 0xff);
+ sunaudiotrack->balance = AUDIO_MID_BALANCE;
+ break;
+ case GST_SUNAUDIO_TRACK_RECORD:
+ /* these are sliders */
+ track = GST_MIXER_TRACK (sunaudiotrack);
+ track->label = g_strdup (_(untranslated_label));
+ track->num_channels = 2;
+ track->flags = GST_MIXER_TRACK_INPUT | GST_MIXER_TRACK_NO_RECORD |
+ GST_MIXER_TRACK_WHITELIST;
+ track->min_volume = 0;
+ track->max_volume = 255;
+ sunaudiotrack->track_num = track_num;
+ sunaudiotrack->gain = (0 & 0xff);
+ sunaudiotrack->balance = AUDIO_MID_BALANCE;
+ break;
+ case GST_SUNAUDIO_TRACK_MONITOR:
+ /* these are sliders */
+ track = GST_MIXER_TRACK (sunaudiotrack);
+ track->label = g_strdup (_(untranslated_label));
+ track->num_channels = 2;
+ track->flags = GST_MIXER_TRACK_INPUT | GST_MIXER_TRACK_NO_RECORD;
+ track->min_volume = 0;
+ track->max_volume = 255;
+ sunaudiotrack->track_num = track_num;
+ sunaudiotrack->gain = (0 & 0xff);
+ sunaudiotrack->balance = AUDIO_MID_BALANCE;
+ break;
+ case GST_SUNAUDIO_TRACK_SPEAKER:
+ case GST_SUNAUDIO_TRACK_HP:
+ case GST_SUNAUDIO_TRACK_LINEOUT:
+ case GST_SUNAUDIO_TRACK_SPDIFOUT:
+ case GST_SUNAUDIO_TRACK_AUX1OUT:
+ case GST_SUNAUDIO_TRACK_AUX2OUT:
+ /* these are switches */
+ track = GST_MIXER_TRACK (sunaudiotrack);
+ track->label = g_strdup (_(untranslated_label));
+ track->num_channels = 0;
+ track->flags = GST_MIXER_TRACK_OUTPUT | GST_MIXER_TRACK_WHITELIST;
+ track->min_volume = 0;
+ track->max_volume = 255;
+ sunaudiotrack->track_num = track_num;
+ sunaudiotrack->gain = (0 & 0xff);
+ sunaudiotrack->balance = AUDIO_MID_BALANCE;
+ break;
+ default:
+ g_warning ("Unknown sun audio track num %d", track_num);
+ track = NULL;
+ }
return track;
}