[pulseaudio-discuss] General Pulse audio async api questions

Forwind info forward at forwind.net
Sat Jan 16 09:39:03 PST 2010


Hi Lennart,

>Note that only very few audio devices actually have independant
>headphone and speaker volumes. PA supports different mixer paths by
>means of the device port functionality, but you may not assume that a
>particular path is available. Also, PA will not allow you to control
>the volume of a path that is currently not active. The reason for that
>is that this is often not even possible since multiple paths might not
>be independant of each other.

Understood. One question re headphone operation - when is jack-sensing
expected in PA ?

>If you want to control this the best way is probably to write a little
>module that lives inside of PA and can flag this synchrnously instead
>of doing that out-of-process asynchronously.

Would hope to get around to doing this in the near future. Time or lack of
 being the only factor ... Will get back to you on this.

>I'd be happy to merge a patch that would treat
>pa_context_set_sink_mute_by_index() with an index of PA_INVALID_INDEX
>as a request to mute all sinks, and similarly for sources.

That would be very useful for me. thanks.

>muting and volume changing is orthogonal. PA treats them completely
>indendantly. (Note however that some client programs do apply some
>connection here: i.e. gnome-volume-control mutes the device if you
>pull the volume to minimum)

>PA_VOLUME_NORM really means max hw amplification. As tanuk pointed >out
>the 0dB value of the hw is at the "base" volume. And if you want
>digital amp you can even go > PA_VOLUME_NORM which is even louder.

Understood.

Thanks for the clarifications.

Conor



On Wed, Jan 13, 2010 at 7:56 PM, Lennart Poettering
<lennart at poettering.net>wrote:

> On Tue, 12.01.10 11:48, Forwind info (forward at forwind.net) wrote:
>
> A few comments on top of those tanuk already provided:
>
> > 1.  To obtain the volume of primary Output Device.
> >     ans: Fetch the sink info via pa_context_get_sink_info_by_index(). The
> > return value will  contain volume data type (pa_cvolume).
> >
> > 2.Differentiate between headphone volume if plugged in and speaker volume
> >     ans: Detect headphone connection - PulseAudio intend to expose
> > jack-sensing once it becomes available to them from below. Its in the
> > pipeline apparently. I need to do some more investigation around this.
> Some
> > devices expose individual headphone volumes as opposed to speaker volumes
> > others don't.
>
> Note that only very few audio devices actually have independant
> headphone and speaker volumes. PA supports different mixer paths by
> means of the device port functionality, but you may not assume that a
> particular path is available. Also, PA will not allow you to control
> the volume of a path that is currently not active. The reason for that
> is that this is often not even possible since multiple paths might not
> be independant of each other.
>
> > 4. If the sound is muted and some exterior application attempts to play
> > sound then flag it
> >     ans: Subscribe to the PA_SUBSCRIPTION_EVENT_SINK_INPUT event and on
> the
> > callback check to see if that sink is muted (boolean). Note if the client
> > application is paused, the sink is then muted and the client app is
> restart
> > the event will not be triggered. This might be not satisfy UI spec
> > requirements. Check with MPT.
>
> If you want to control this the best way is probably to write a little
> module that lives inside of PA and can flag this synchrnously instead
> of doing that out-of-process asynchronously.
>
> > 5. Ability to mute all output sinks.
> >     ans: pa_context_set_sink_mute_by_index()- iterate through all sinks
> > returned via pa_context_get_sink_info_list().         Maybe there is a
> mute
> > all switch - could not see it in the docs right now - will ask on #pa on
> > freenode.
>
> I'd be happy to merge a patch that would treat
> pa_context_set_sink_mute_by_index() with an index of PA_INVALID_INDEX
> as a request to mute all sinks, and similarly for sources.
>
> > 6. Unmute all outputs and return to previous volumes.
> >    ans: PA's module-stream-restore - more investigation. Apparently this
> > will store previous volumes of all sinks and restore them when required.
>
> muting and volume changing is orthogonal. PA treats them completely
> indendantly. (Note however that some client programs do apply some
> connection here: i.e. gnome-volume-control mutes the device if you
> pull the volume to minimum)
>
> > 8. Set individual outputs volumes to max.
> >    ans: Set the sink (output device) in question to PA_VOLUME_NORM.
> >    pa_cvolume_reset() - should do this for the sink in question.
> > PA_VOLUME_NORM roughly corresponds to 0DB => MAX volume without clipping.
>
> PA_VOLUME_NORM really means max hw amplification. As tanuk pointed out
> the 0dB value of the hw is at the "base" volume. And if you want
> digital amp you can even go > PA_VOLUME_NORM which is even louder.
>
> Also see:
>
> http://pulseaudio.org/wiki/WritingVolumeControlUIs#Volumes
>
> Lennart
>
> --
> Lennart Poettering                        Red Hat, Inc.
> lennart [at] poettering [dot] net
> http://0pointer.net/lennart/           GnuPG 0x1A015CC4
> _______________________________________________
> pulseaudio-discuss mailing list
> pulseaudio-discuss at mail.0pointer.de
> https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20100116/6e13aeca/attachment.htm>


More information about the pulseaudio-discuss mailing list