Добавление звуковых эффектов (реверберации и т. Д.) В приложение потокового аудио, управляемое BackgroundAudioPlayer
У меня есть приложение для Windows Phone 8, которое воспроизводит аудиопотоки из удаленного местоположения или из локальных файлов, используя BackgroundAudioPlayer. Теперь я хочу добавить звуковые эффекты, например, реверберацию или эхо и т. Д.
Пожалуйста, не могли бы вы посоветовать мне, как это сделать? Мне не удалось найти способ подключить дополнительный код обработки звука к конвейеру обработки звука, даже после того, как я много читал о WASAPI, XAudio2 и просмотрел множество примеров кода.
Обратите внимание, что приложение написано на C#, но из моего предыдущего опыта написания кода для обработки аудио я знаю, что должен писать аудио-код на родном C++. Грубо говоря, мне нужно найти точку, в которой есть аудиобуфер, содержащий необработанные данные PCM, которые я могу использовать в качестве входных данных для моего кода обработки звука, который затем будет записывать либо обратно в тот же буфер, либо в другой буфер, который читается следующий этап обработки звука. Должны быть способы синхронизации того, что происходит в моем коде с остальными механизмами обработки звука телефона, и, конечно, процесс должен быть очень быстрым, чтобы не вызывать сбои звука. Или что-то типа того; Я привык к тому, как работает VST, а не к тому, как такие вещи могут работать в мире Windows Phone.
Будем рады видеть то, что вы предлагаете...
С уважением,
Мэтт Дейли
1 ответ
Мне нужно найти точку, в которой есть аудио-буфер, содержащий необработанные данные PCM
AFAIK нет такой точки. На этой странице MSDN указывается, что декодирование аудио / видео выполняется не ОС, а самим чипом Qualcomm.
Вы можете использовать что-то вроде Mp3Sharp для декодирования. Таким образом, mp3 будет декодироваться на CPU вашим управляемым кодом, вы можете вмешиваться / обрабатывать, как вам нравится, а затем подавать PCM в источник медиа потока. Главный недостаток - срок службы батареи: аппаратные кодеки должны быть намного более энергоэффективными.