Как я могу обрабатывать фрагменты звуковых данных из потока WASAPI, не записывая их в файл?

Я новичок в WASAPI, и я пытаюсь написать программу на C++, которая просматривает аудиопоток на основном воспроизводящем устройстве и выполняет БПФ для каждого фрагмента через fftw3, что-то делает с результатом и отбрасывает фрагмент . Каждый пример, который мне удалось найти на WASAPI и fftw3, включает в себя запись в файл и последующее открытие этого файла. Можно ли обрабатывать фрагменты WAVE напрямую?


person user2977512    schedule 11.11.2013    source источник
comment
Похоже, ваш вопрос касается FFTW и ничего общего с WASAPI?   -  person Cory Nelson    schedule 11.11.2013
comment
Думаю, мне интересно, как WASAPI возвращает фрагменты RIFF и что мне нужно знать для их обработки.   -  person user2977512    schedule 11.11.2013


Ответы (1)


Захват аудио WASAPI обычно заполняет буферы памяти «только что захваченными» аудиоданными и передает их обратно управляющему приложению. "Без записи в файл" - так оно и работает в первую очередь. Требуются дополнительные усилия для записи данных в медиафайл со сжатием или без него.

Вам могут быть интересны следующие Примеры Windows SDK:

  • CaptureSharedEventDriven — этот образец приложения использует API-интерфейсы Core Audio для захвата аудиоданных с устройства ввода, указанного пользователем, и записи их в WAV-файл с уникальным именем в текущем каталоге. В этом образце демонстрируется буферизация, управляемая событиями.
  • CaptureSharedTimerDriven — этот пример приложения использует API-интерфейсы Core Audio для захвата аудиоданных с устройства ввода, указанного пользователем, и записи их в WAV-файл с уникальным именем в текущем каталоге. В этом образце демонстрируется буферизация, управляемая таймером.

Оба показывают, как данные передаются из API через буферы памяти в файлы. Вы можете применить БПФ в тот момент, когда у вас есть данные, полученные из API, до того, как они попадут в файлы в примерах.

person Roman R.    schedule 06.01.2014