[pulseaudio-discuss] PulseAudio <-> ALSA issues
Colin Guthrie
gmane at colin.guthr.ie
Tue Jul 8 10:49:55 PDT 2008
Wolfgang Rosenauer wrote:
> Hi,
>
> I have an application (which is not OSS unfortunately) using ALSA output.
> Sound works fine on systems where no pulseaudio is running but doesn't
> work at all as soon as PA is running (Gnome desktops on latest Ubuntu
> and openSUSE versions were tested).
> I've also opened a bug here:
> https://bugzilla.novell.com/show_bug.cgi?id=405354
>
> I've rewritten some of the Alsa-using code to fix some issues which were
> in the application but in its current state I can't think of a major
> issue in the app which would cause PA to fail.
> alsa lib doesn't return an error in any of it's calls but sound simply
> doesn't start while it should.
>
> The device seems to be initialized correctly and PCM stream is written
> to the buffer but stream never starts. The pulse audio config thingy is
> showing the application and offers a volume control for it but that's it.
>
> Anyone has any hints for me please?
While I don't see anything in the bug report's attachment about calls to
snd_pcm_delay(), you do mention it in a comment.
I suspect you are making the same mistake that the wine people have made
with regards to this function. It should return a delay that the
application should expect before a sample played now is actually heard.
It has been used incorrectly by some implementations to check whether a
queued sample has been fully output: i.e. when the function returns 0,
the sample has finished playing as there is no delay left. This is not
actually a correct use of the function. Wine people got this wrong, as
have several others. This is in part due to the high level documentation
of the function in the alsa docs mentioned in the implementation details
with reference to frame pointers. From this implementation (used for
hardware devices) it is only a small logical step to assume that it will
eventually return 0.
When used with a pulseaudio, advanced latency information is included in
the return value and it will rarely (if ever) return 0.
I believe this assumption also does not hold true for other plugins and
perhaps even USB audio devices.
If you think this is the problem, you can have a look at the very long
thread over on the alsa-dev mailing list:
http://comments.gmane.org/gmane.linux.alsa.devel/53841
It doesn't give a solution but highlights the problem and proposes a
solution for the future. Hopefully if this is the problem you can alter
the implementation accordingly.
HTHs
Col
More information about the pulseaudio-discuss
mailing list