Сегодня я реализовал хоть какую-нибудь асинхронность в дополнении к уже существующим синхронным методам. Отчасти потому что функция dse_decode_audio2 считывает каждый кадр последовательно.

Функция dse_is_busy теперь передает информацию о том, занят ли хотя бы один кадр прежде чем корректно освобождать буфер. Если да, то ждем определенное время, пока мы еще раз не узнаем, занято или нет.

Плюс к этому: аудиодвижок стал поддерживать воспроизведение звука в CD-качестве.

Для этого пришлось пожертвовать размером кадра, поскольку аудиобуфер выделяется в кучку памяти - это известные системные функции HeapCreate, HeapAlloc и HeapFree. И судя по документации Microsoft, лимиты очень скромные - 512 кБ для 32-битных версий Windows и 1 МБ для 64-битных версий.

Можно было, конечно, прописать еще один параметр в Makefile, но поскольку упор делается именно на старых версиях Windows, этого делать мы не будем. Теперь вместо 1024 сэмплов стало 384 сэмпла на один кадр, размер буфера - все те же 32 кадра.

А действительно полезным украшением стал индикатор завершения с счетчиком прочитанных байт и процентами, причем скорость обновления консоли напрямую зависит от частоты дискретизации, так как размер одного кадра фиксированный для всех WAV-файлов.

Удивительно, движку с натянутой программой не холодно, не жарко - 532 кБ в оперативной памяти. Разве это не здорово?

Сегодня я реализовал хоть какую-нибудь асинхронность в дополнении к уже существующим синхронным методам. Отчасти потому что функция dse\decode\audio2 считывает каждый кадр последовательно | Сетка — социальная сеть от hh.ru Сегодня я реализовал хоть какую-нибудь асинхронность в дополнении к уже существующим синхронным методам. Отчасти потому что функция dse\decode\audio2 считывает каждый кадр последовательно | Сетка — социальная сеть от hh.ru Сегодня я реализовал хоть какую-нибудь асинхронность в дополнении к уже существующим синхронным методам. Отчасти потому что функция dse\decode\audio2 считывает каждый кадр последовательно | Сетка — социальная сеть от hh.ru Сегодня я реализовал хоть какую-нибудь асинхронность в дополнении к уже существующим синхронным методам. Отчасти потому что функция dse\decode\audio2 считывает каждый кадр последовательно | Сетка — социальная сеть от hh.ru