[pulseaudio-discuss] [PATCH 2/4] Enabled libsoxr resampler backend.

Peter Meerwald pmeerw at pmeerw.net
Tue Jan 13 08:32:55 PST 2015


Hello,

On Mon, 12 Jan 2015, Andrey Semashev wrote:

re-posting to list, hope that is OK

> On Monday 12 January 2015 17:36:19 you wrote:
> > > Added ID and names for the resampler presets and also updated the working
> > > sample rate deduction to take the new resampler into account.
> > what to do with PA_RESAMPLER_VARIABLE_RATE?
> > 
> > resampler_soxr_update_rates() just recreates the context, I guess this
> > will lead to crackling sound (not tested)
> 
> Not crackling, but the quality will degrade.

_update_rates() is used e.g. by module-rtp-recv to adjust the sample rate
in tiny increments, i.e. while the stream is running, without stopping the 
stream

there is a flag SOXR_VR which may provide variable-rate resampling, but 
this is currently not used; not sure if it would work, the code is called 
experimental

> > probably SOXR should be added to the clause in fix_method() which checks
> > for PA_RESAMPLER_VARIABLE_RATE?
> 
> Ok, but I see that by default it uses speex-float-1, which is significantly 
> lower quality than any soxr mode. As I understand variable rate can be used by 
> applications transparently for the user, and there is no way to influence this 
> selection. Can I choose at least speex-float-5 as a fallback? Ideally, this 
> should be a configurable option, though.

I suggest do declare soxr to not support PA_RESAMPLER_VARIABLE_RATE in 
fix_method() for now and commit this work to -next (if there are no 
objections); fixups can be done later-on

one more comment; in
int pa_resampler_soxr_init(pa_resampler *r) {
...
        default:
            pa_assert_not_reached();
            return -1;
the return statement can be removed

and I have some nitpicking on the documentation patch in a separate mail

looking at choose_auto_resampler(), I agree that this could be a bit 
smarter; e.g.
* if our default resampler (resample-method= in daemon.conf) is 
speex-fixed- or speex-float- with a higher quality, we could probably set 
that instead of speex-float-1
* if the default resampler is speex-fixed-, probably we should not 
auto-switch to speex-float-
but this can be done as a separate patch in the future

regards, p.

-- 

Peter Meerwald
+43-664-2444418 (mobile)


More information about the pulseaudio-discuss mailing list