Я использую звуковые функции ядра Windows, в основном WASAPI, для создания эксклюзивного потока, следуя примеру в потоках Exclusive Mode.Событие буферизации буфера основного звука (WASAPI)
Это создает два чередующихся буфера, которые воспроизводятся и заполняются поочередно. Существует событие, связанное с завершением буфера, которое пробуждает поток, чтобы он мог пополнить заполненный буфер. GETPOSITION показывает, что поток просвечивается, когда текущий буфер находится в кадре 147 буфера кадров 160. Это оставляет мне 13/160 буфера, чтобы получить новый буфер, заполнить его и отпустить. У меня много вычислений, это мало времени. Я полагаю, что я мог бы контролировать процессор вместо того, чтобы спать, когда буфер заполнен, но это не похоже на правильное решение.
Кроме того, хотя мой процесс является «PRO AUDIO» и имеет приоритет 25, иногда событие завершения буфера откладывается еще дальше, поэтому система запускает воспроизведение незаполненного буфера. Я не нашел никакого обсуждения того, как это время должно работать, или как его можно контролировать. Я ожидал, что событие завершения буфера поступит в небольшое количество кадров в следующий буфер. Кто-нибудь знаком с этим материалом? Либо с решением, либо с пониманием того, где его искать?