> Сравнивая с кодом в libsamplerate (пять режимов работы, три из них не
> дают "пилу" в прошлом тесте), больше всего сходства вижу с src_sinc.c,
> - а именно в том модуле реализованы те самые три "корректных"
> алгоритма. Но могу и ошибиться, конечно, так как весьма смутно понимаю,
> что тут на самом деле происходит. :( По коду тип ресемплинга точно не определю, но на свертку (sinc) этот код явно не похож. Там должно быть умножение каждого сэмпла на каждый коэффициент фильтра + сами таблицы фильтров немалого размера (в libsamplerate *_coeffs.h).
> Проверил, конечно. И сейчас ещё раз специально проверил через time aucat, чтобы
> своим ушам не доверять лишний раз. Тик в тик с sndio
> с выставлением на /dev/audio0 как 44,1кГц, так и 48кГц. У меня
> на одном из прошлых ноутбуков кодек вёл себя неадекватно в этом
> плане, так что я уже однажды обжёгшийся. :)
Возможно вам действительно попался не самый плохой кодек ;)
> Попробовал с wav в aucat, ffplay (надеялся увидеть сонограмму), MoC (использует libsamplerate)
> и sox, с sndiod -r 44100 и без оного. По результатам
> - с sndiod звук немного тише (он приглушает звук на 3дБ,
> чтобы реальная громкость клиентов не скакала при изменении их количества в
> разумных пределах), но в обоих случаях слышно только музыку и шум
> (колонок), без призвуков и пропаданий.
Сперва вы должны слышать просто шум колонок, затем после запуска файла шум должен возрасти. Этот шум собственно и есть dithering - он должен быть однородным фоном для музыки.
Если будет завтра время, попробую сделать вариант без dihering'a, что бы было с чем сравнить.