[pulseaudio-discuss] Few questions about PA API

Lukasz Marek lukasz.m.luki at gmail.com
Sun Apr 13 16:16:45 PDT 2014


Hi,

I hope this is correct list for general questions about PulseAudio 
development. I devel some stuff for FFmpeg project and I want to update 
pulse output device. I have few questions:

- Is this possible to detect that mute/volume for sink input has changed 
without calling pa_context_get_sink_input_info periodically?
I saw some commits recently that seems to add this, but ubuntu still use 
4.0 for example, so probably not, but I still wanted to ask about it.
- If not, would you judge pa_context_get_sink_input_info to be expensive 
function? I think about calling it every time new data are written or 
something.
- Is it possible to write non-interleaved data?
For example, for stereo instead of
L R L R L R L R... samples
to write:
L L L L L .... R R R R R.... samples
- pa_stream_write has parameter pa_free_cb_t to provide zero-copy.
Unfortunately it doesn't accept user data, in case of FFmpeg, the buffer 
is inside AVBuffer, AVPacket, or AVFrame (AVBuffer technically).
Each of them contains a variable with a buffer that should be passed to 
pa_stream_write, but free function should unref this structure, not 
buffer itself.
It cannot be extracted without copying and this zero-copy is hard to reach.
My question is: do you think it is doable/acceptable to add other 
function that would accept userdata for free callback?
I know there is pa_stream_begin_write, but this is not suitable neither.

-- 
Best Regards,
Lukasz Marek

You can avoid reality, but you cannot avoid the consequences of avoiding 
reality. - Ayn Rand


More information about the pulseaudio-discuss mailing list