Привет, dsp для меня хобби, и скорее всего мне нужно лучше разобраться в теории, тем не менее спрошу.
Есть задача, по данному синтезирующему банку фильтров (
https://github.com/FFmpeg/FFmpeg/blob/master/libav... написать анализирующий. В ATRAC3plus мы имеем разложение на 16 полос. Попробовал адаптировать код из musepack энкодера (
https://github.com/Voskrese/libmpc-msvc/blob/maste... на случай произвольного количества полос и произвольной длины прототипа - получил выбросы на прямоугольном сигнале
и некоторый алиасинг от 0hz на частоту кратную удвоенной частоте раздела (2756.25 = 2 * 22050 / 16)
Для частот 1000 hz и 1378.125 hz картинка такая:
Хотя само разложение более менее похоже на правду.
Можно было бы списать на не perfect reconstruction. Однако ffmpeg без подобных искажений декодирует сигнал после кодирования оригинальным atrac3plus кодировщиком.
Буду благодарен советам как локализовать проблему, или ссылкам что почитать по реализации pqf в коде.