[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Audio output in libao and Pulse (was: the libao driver)
From: |
Hynek Hanke |
Subject: |
Audio output in libao and Pulse (was: the libao driver) |
Date: |
Mon, 11 Oct 2010 13:07:32 +0200 |
On 20.9.2010 11:24, Hynek Hanke wrote:
> On 14.9.2010 14:34, Chris Brannon wrote:
>> There's a serious deficiency in the libao library: it doesn't have
>> any sort of stop function.
> Well, this seems to be a bigger problem. I don't understand
> though why did libao decide not to implement stop(), given
> that most of its backends support it.
It's been pointed out that neither the current Pulse Audio
backend uses any kind of stop() functions, so there is
not really any difference.
In both cases, very small amount of data is being sent
to the audio backend and stoping is handled simply
as not sending any more data. The buffers have a fixed
size of 256 bytes.
This seems to me as very suboptimal. The former Pulse
Audio backend used to try to send as much data as available,
but I was never very familiar with it, so I can't explain exactly
how does stopping work in the asynchronous API.
Perhaps, if the audio backend is doing its own buffering
to prevent dropouts, we are not thinking about network
transport and CPU usage is not a big concern, this solution
might be good enough and it makes code simpler and more
stable. In the result, when we consider the end user experience,
the current pulse backend seems better.
I'm however still a bit concerned about the implications the
current solution could have and whether we can rely on it.
If somebody could explain, why that actually is not any
problem, we should re-consider libao as the primary audio
backend.
Best regards,
Hynek Hanke
- Audio output in libao and Pulse (was: the libao driver),
Hynek Hanke <=