Я пишу аудио приложение в реальном времени, которое запускает поток в эксклюзивном режиме. Чтобы правильно представить данные на устройстве, оно должно быть в формате, который я не выбрал. Вся моя обработка звука выполняется с помощью сэмплов с плавающей запятой перед отправкой на устройство, и волновой формат устройства не может быть (и, вероятно, не) установлен в WAVE_FORMAT_IEEE_FLOAT
— например, это может быть WAVE_FORMAT_EXTENSIBLE
или же WAVE_FORMAT_PCM
,
Есть ли API, который позволяет легко конвертировать между одним волновым форматом (с плавающей запятой) и другим (формат устройства)?
Используйте поток преобразования Audio Compression Manager (ACM):
Преобразование данных из одного формата в другой
Если вы не можете создать один поток из вашего формата в формат устройства, вам придется создать два потока — один из вашего формата в WAVE_FORMAT_PCM
и другой из WAVE_FORMAT_PCM
в формат устройства (все потоки / устройства должны поддерживать преобразование в / из PCM).
Других решений пока нет …