[pulseaudio-discuss] Expand the simple API?
david.henningsson at canonical.com
Wed Mar 20 03:29:28 PDT 2013
(Please don't remove the list from CC. Re-added.)
On 03/20/2013 11:21 AM, Thomas Martitz wrote:
> Am 20.03.2013 10:06, schrieb David Henningsson:
>> Sure. You said "pa_simple_read/write() is expected to be done from the
>> main thread", but you meant more like "pa_simple_read/write() is
>> expected to be done from any other thread than the callback context"?
>> A pa_simple callback API, if implemented, I would envision would
>> supply a data pointer and length, and ask for the callback function to
>> either read that out (record) or fill it in (playback), and to do so
>> without calling into the PulseAudio API at all.
> Or return a pointer (which is expected to point to a buffer of bytes
> length) in the playback case, to enable zero-copy?
The pointer sent to the callback function would be in SHM, shared memory
between client and server, which is allocated by PulseAudio. That's the
way to achieve zero-copy.
In the callback function you would generate your audio data straight
into this buffer.
(Or one-copy, really, because there is a later copy from the shared
memory into the DMA buffers of the sound card, which is done inside the
PulseAudio daemon process.)
David Henningsson, Canonical Ltd.
More information about the pulseaudio-discuss