Хе, сделал проще - не стал вообще закачивать нули перед окончанием трека.
Просто прекращаю передавать данные, и жду сотню-другую миллисекунд.
Вуаля - буфер ЦАПов очищается и они автоматически глушатся.
Получается, что при передаче 2048 нулей DSP останавливает ЦАПы до того, как они успевают вывести весь выходной буфер.
И очищает входной.
А что получается, когда мы просто перестаём передавать данные?
Имхо, декодер дочитает байты из входного буфера и остановится, ЦАПы, в свою очередь, тоже выгребут все готовые семплы и отключатся.
Вуаля - всё чистенько, при воспроизведении след. файла никаких хрипов и старых остатков
И не надо никаких нулевых байтов