[pulseaudio-discuss] pulseaudio bug in resampler.c method src-linear

Maarten Bosmans mkbosmans at gmail.com
Tue Nov 15 02:58:33 PST 2011


2011/11/7 Ray Walker <ray.rwalk2730 at gmail.com>:
> There is a bug in resampler.c (version 1.0) with an assert at line 1230.  It
> only occurs with the resampler method of src-linear.
> Here is the output.  I worked with mkbosmans in #pulseaudio on this and he
> suggested I send this email.

Yup, please keep poking us untill you have a solution.

> The bug and subsequent data is reported here:
>  https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/885347
> I have experienced this bug for over a year through many Ubuntu upgrades
> (assuming each upgrade, which I do every April and October, comes with a new
> version of pulseaudio) and prevented me from playing certain tracks on
> websites and causes Exaile to not function at all.  So, it's not something
> new with pulseaudio 1.0 but has been there for a long time.

Just to be clear: src-linear is a really bad choice for a resampler.
So you probably found the bug because hardly anybody else is using it
except for some incidental testing.

I sent an email to the libsamplerate list explaining the problem and
got a reply from the author of libsamplerate.

===============================================
Maarten Bosmans wrote:
> The problem is that pulseaudio asserts that after calling
> src_process() the field data.input_frames_used is equal to the value
> it set in data.input_frames[2]. Is this an correct assumption, given
> that the the number of available frames in data.output_frames is large
> enough to hold all the resampled frames?

No guarantees. Certainly not something to put an assert on.

In fact, I would say that any software that has such as assert
has a bug :-).
===============================================

So it seems that we should alter our code and do the right thing
instead of just asserting that everything went as we (wronly)
expected.

Maarten


More information about the pulseaudio-discuss mailing list