Pulseaudio in F12

Michal Schmidt mschmidt at redhat.com
Mon Nov 30 10:36:01 UTC 2009


Dne Mon, 30 Nov 2009 11:12:38 +0100 Michael Schwendt napsal(a):
> On Mon, 30 Nov 2009 10:38:15 +0100, Michal wrote:
> 
> > Dne Mon, 30 Nov 2009 07:05:28 -0200 Paulo Cavalcanti napsal(a):
> > > Thanks for the explanation.
> > > 
> > > At least 3 applications are not restoring the volumes:
> > > 
> > > xmms, mplayer and audacious.
> > 
> > Interesting. Maybe these programs try to be too clever and force the
> > volume themselves.
> 
> It's not an attempt at being "too clever", but several upstream
> developers feel lost in what they have to do or what they have not to
> do to get something right. Temporarily, Audacious devlopers have
> dropped their "pulse_audio" driver (originally from XMMS) even, since
> they were of the impression that "it didn't work anyway". Ubuntu
> users currently feel punished with Pulse Audio. With a first bunch of
> fixes [for volume issues in Fedora 12 Rawhide, volume decreased for
> every new song], the driver was restored again for Audacious 2.2
> development. With more recent changes in Pulse Audio, it seems, more
> changes are necessary. But Audacious 2.1 cannot reflect external
> volume level changes in its UI anyway. Its volume slider cannot move
> for volume level changes made with external tools. Only the next
> release can do that, and it suffers from new bugs (such as a bug in
> alsa-lib that will require an update in Fedora, too).

Thanks for the explanation. Before I saw your reply, I played with
audacious-plugins and made a kludge to prevent it from forcing 100 %
volume on startup. It probably breaks something else, I haven't really
tested it too much.

Notice that the documentation for pa_stream_connect_playback strongly
recommends passing NULL as volume.

Index: audacious-plugins-fedora-2.1/src/pulse_audio/pulse_audio.c
===================================================================
--- audacious-plugins-fedora-2.1.orig/src/pulse_audio/pulse_audio.c
+++ audacious-plugins-fedora-2.1/src/pulse_audio/pulse_audio.c
@@ -666,7 +666,7 @@ static int pulse_open(AFormat fmt, int r
     pa_stream_set_write_callback(stream, stream_request_cb, NULL);
     pa_stream_set_latency_update_callback(stream, stream_latency_update_cb, NULL);
 
-    if (pa_stream_connect_playback(stream, NULL, NULL, PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE, &volume, NULL) < 0) {
+    if (pa_stream_connect_playback(stream, NULL, NULL, PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE, NULL, NULL) < 0) {
         AUDDBG("Failed to connect stream: %s", pa_strerror(pa_context_errno(context)));
         goto unlock_and_fail;
     }
@@ -715,6 +715,7 @@ static int pulse_open(AFormat fmt, int r
     }
 
     pa_operation_unref(o);
+#if 0
     /* set initial volume */
     if (!(o = pa_context_set_sink_input_volume(context, pa_stream_get_index(stream), &volume, NULL, NULL))) {
         g_warning("pa_context_set_sink_input_volume() failed: %s", pa_strerror(pa_context_errno(context)));
@@ -725,6 +726,7 @@ static int pulse_open(AFormat fmt, int r
         pa_threaded_mainloop_wait(mainloop);
     }
     pa_operation_unref(o);
+#endif
 
     do_trigger = 0;
     written = 0;




More information about the fedora-devel-list mailing list