summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-01-06 15:59:02 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-01-06 15:59:02 +0000
commitd2f67bee5996ce95084e46de16cfc5bd32b81814 (patch)
treee884e4e4a75530ed0b0ab90cf3e7805a3ee4fe8c /sys
parent4ac14e757e3cae93a10f0c70d54bb985b0ddd413 (diff)
ext/shout/gstshout.c: fix for new caps system.
Original commit message from CVS: 2004-01-06 Ronald Bultje <rbultje@ronald.bitfreak.net> * ext/shout/gstshout.c: (gst_icecastsend_base_init), (gst_icecastsend_init): fix for new caps system. * gst-libs/gst/mixer/mixertrack.h: * sys/oss/gstossmixer.c: (gst_ossmixer_build_list): Add 'master track' flag (for tools like ACME that only want to change the main volume).
Diffstat (limited to 'sys')
-rw-r--r--sys/oss/gstossmixer.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/sys/oss/gstossmixer.c b/sys/oss/gstossmixer.c
index c4d1b0f1..ccdf6e19 100644
--- a/sys/oss/gstossmixer.c
+++ b/sys/oss/gstossmixer.c
@@ -401,7 +401,7 @@ gst_ossmixer_set_record (GstMixer *mixer,
void
gst_ossmixer_build_list (GstOssElement *oss)
{
- gint i, devmask;
+ gint i, devmask, master = -1;
const GList *pads = gst_element_get_pad_list (GST_ELEMENT (oss));
GstPadDirection dir = GST_PAD_UNKNOWN;
#ifdef SOUND_MIXER_INFO
@@ -443,6 +443,15 @@ gst_ossmixer_build_list (GstOssElement *oss)
oss->device_name = g_strdup ("Unknown");
#endif
+ /* find master volume */
+ if (devmask & SOUND_MASK_VOLUME)
+ master = SOUND_MIXER_VOLUME;
+ else if (devmask & SOUND_MASK_PCM)
+ master = SOUND_MIXER_PCM;
+ else if (devmask & SOUND_MASK_SPEAKER)
+ master = SOUND_MIXER_SPEAKER; /* doubtful... */
+ /* else: no master, so we won't set any */
+
/* build track list */
for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) {
if (devmask & (1 << i)) {
@@ -466,7 +475,9 @@ gst_ossmixer_build_list (GstOssElement *oss)
track = gst_ossmixer_track_new (oss, i, stereo ? 2 : 1,
(record ? GST_MIXER_TRACK_RECORD : 0) |
(input ? GST_MIXER_TRACK_INPUT :
- GST_MIXER_TRACK_OUTPUT));
+ GST_MIXER_TRACK_OUTPUT) |
+ ((master != i) ? 0 :
+ GST_MIXER_TRACK_MASTER));
oss->tracklist = g_list_append (oss->tracklist, track);
}
}