[gstreamer-bugs] [Bug 336075] New: ALSA emu10k1 mixer tracks are wrongly classified as playback tracks
GStreamer (bugzilla.gnome.org)
bugzilla-daemon at bugzilla.gnome.org
Sun Mar 26 05:17:13 PST 2006
Do not reply to this via email (we are currently unable to handle email
responses and they get discarded). You can add comments to this bug at
http://bugzilla.gnome.org/show_bug.cgi?id=336075
GStreamer | gst-plugins | Ver: 0.10.x
Summary: ALSA emu10k1 mixer tracks are wrongly classified as
playback tracks
Product: GStreamer
Version: 0.10.x
Platform: Other
OS/Version: Linux
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: gst-plugins
AssignedTo: gstreamer-bugs at lists.sourceforge.net
ReportedBy: viktor.peters at gmail.com
QAContact: gstreamer-bugs at lists.sourceforge.net
GNOME version: Unspecified
GNOME milestone: Unspecified
I have a Creative Audigy 1 Live!. Since GNOME 2.10 (or so) gnome-volume-control
aka gst-mixer classifies all capture mixer tracks as playback tracks. As a
result there are two PCM channels, two Microphone channels, and so on in the
playback panel.
This confuses the volume-control-applet, because I cannot select the right PCM
track of the two. If I select PCM it only controls the capture (because it was
added first to the track list?) but not the playback track.
So I decided to have a closer look at the gstreamer alsa plugin. I have written
a little utility, which outputs the results of the used alsa functions in
gstalsamixer.c:
Here the output of the one problematic tracks:
6: PCM
has_common_volume=0
has_capture_switch=0
has_playback_switch=0
has_capture_volume=1
has_playback_volume=1
In gstalsamixer.c:gst_alsa_mixer_ensure_track_list is a loop which adds all
alsa mixer tracks. In this loop the gst flags are initialized to:
gint flags = GST_MIXER_TRACK_OUTPUT;
Then there is an if-statement which uses snd_mixer_selem_has_capture_switch
to classify between playback and capture (I guess this is the meaning) and sets
flags to GST_MIXER_TRACK_INPUT, if snd_mixer_selem_has_capture_switch is true.
But as you can see in the output above ALSA reports has_capture_switch==false
for the PCM channel. The gst flags are never changed to GST_MIXER_TRACK_INPUT
at this point, thou this track can control both capture and playback volume.
At later point an if-statement uses snd_mixer_selem_has_capture_volume to
decide if the track should be added to the capture list. Since this is true for
the PCM channel a new gst mixer track is created:
track = gst_alsa_mixer_track_new (element, samename, i, channels, flags,
GST_ALSA_MIXER_TRACK_CAPTURE);
Here is the discrepancy: (gst) 'flags' is still GST_MIXER_TRACK_OUTPUT. ('alsa
flags' are set correctly to capture.)
Later a playback mixer track is added the same way. Therefore "duplicate" mixer
tracks are displayed in gst-mixer playback panel.
--
Configure bugmail: http://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the Gstreamer-bugs
mailing list