LINUX.ORG.RU

resample-method в PulseAudio

 ,


0

1

Что там за auto понять нe могу.

https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/310#note_494307

Вроде оно не дефолтом

https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/blob/master/src/daemon/daemon.conf.in

Тут тоже как-то отписались по типу «а мы и сами не знаем»

https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1741045

Коммиты мельком за год посмотрел, что-то не заметил. В документации тоже.

https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/blob/master/man/pulse-daemon.conf.5.xml.in

Что и как?

★★★★★

Если я правильно понял в исходниках https://freedesktop.org/software/pulseaudio/releases/pulseaudio-13.99.1.tar.xz там проверяется скомпилировано ли с поддержкой float и в зависимости от формата и условий выбирается speex-1. Для каких-то странных форматов с variable rate применяется Trivial resampler (или это при смешивании нескольких потоков?). Короче, от auto зависит тип ресемплинга, но не его качество.

/src/pulsecore/resampler.c

static pa_resample_method_t choose_auto_resampler(pa_resample_flags_t flags) {
    pa_resample_method_t method;

    if (pa_resample_method_supported(PA_RESAMPLER_SPEEX_FLOAT_BASE + 1))
        method = PA_RESAMPLER_SPEEX_FLOAT_BASE + 1;
    else if (flags & PA_RESAMPLER_VARIABLE_RATE)
        method = PA_RESAMPLER_TRIVIAL;
    else
        method = PA_RESAMPLER_FFMPEG;

    return method;
}
Support for resampler '%s' not compiled in, reverting to 'auto'
Resampler '%s' cannot do variable rate, reverting to resampler 'auto'
The 'peaks' resampler only supports downsampling, reverting to resampler 'auto'

В /src/pulsecore/resampler.h сказано:

PA_RESAMPLER_AUTO, /* automatic select based on sample format */

Ты можешь сам прикинуть тип ресемплера по тестовым файлам:
https://forum.audacityteam.org/download/file.php?id=18385
https://forum.audacityteam.org/download/file.php?id=18386
До speex-float-5 слышны небольшие артефакты. Еще есть хороший и быстрый ресемплер sox, но говорят, с ним есть рассинхрон до 20 мс.

anonymous ()