Обзор протокола XAPO
API XAPO позволяет создавать кроссплатформенные объекты обработки звука (XAPO) для использования в XAudio2 в Windows и Xbox 360. XAPO — это объект, который принимает входящие звуковые данные и выполняет некоторые операции с данными перед их передачей. XAPO можно использовать для выполнения различных задач, включая добавление реверберации в звуковой поток и мониторинг пиковых уровней громкости.
Создание новых XAPOS
API XAPO предоставляет интерфейс IXAPO и класс CXAPOBase для создания новых типов XAPO. Интерфейс IXAPO содержит все методы, которые необходимо реализовать для создания нового объекта XAPO. Класс CXAPOBase предоставляет базовую реализацию интерфейса IXAPO . CXAPOBase реализует все методы интерфейса IXAPO , за исключением метода IXAPO::P rocess , уникального для каждого XAPO.
Пример создания нового объекта XAPO см. в разделе Практическое руководство. Создание XAPO.
Пример создания XAPO, который принимает параметры времени выполнения, см. в разделе Практическое руководство. Добавление поддержки параметров времени выполнения в XAPO.
XAPOs и COM
XAPOs реализуют интерфейс IUnknown . Интерфейсы IXAPO и IXAPOParameters включают три метода IUnknown : QueryInterface, AddRef и Release. CXAPOBase предоставляет реализации всех трех методов IUnknown. Новый экземпляр CXAPOBase будет иметь число ссылок 1. Он будет уничтожен, когда количество ссылок станет 0. Реализации IXAPO и IXAPOParameters должны следовать одному и тому же шаблону, чтобы обеспечить надлежащее управление ими при использовании с XAudio2.
Экземпляры XAPO передаются в XAudio2 как интерфейсы IUnknown . XAudio2 использует QueryInterface для получения интерфейса IXAPO и определения того, реализует ли XAPO интерфейс IXAPOParameters . Реализации IXAPO должны принимать запросы на __uuidof (IXAPO). Если реализован параметр IXAPOParameters , он также должен принимать запросы на __uuidof(IXAPOParameters).
Использование XAPO в XAudio2
XAPOs используются в XAudio2 путем их присоединения к голосам. Каждый голос XAudio2 имеет цепочку эффектов, содержащую ноль или более звуковых эффектов. Звуковые данные, отправляемые в голос, передаются через каждый эффект в цепочке перед их отправкой в целевые объекты вывода голоса. Данные передаются из голоса в каждый эффект с помощью параметра pInputProcessParameters метода IXAPO::P rocess . Затем он возвращается в голос с помощью параметра pOutputProcessParameters . Голос принимает выходные данные каждого эффекта и передает их в следующий эффект в цепочке, пока в цепочке не останется никаких эффектов.
Дополнительные сведения о цепочках эффектов XAudio2 см. в разделе Звуковые эффекты XAudio2.
Пример использования XAPO в XAudio2 см. в разделе Практическое руководство. Использование XAPO в XAudio2.
Библиотеки эффектов
Библиотека эффектов XAPO содержит несколько XAPOs и общий метод создания их экземпляров. Сведения о XAPOFX см. в разделе Обзор XAPOFX . Кроме того, XAudio2 имеет встроенные эффекты реверберации и измерения объема. Дополнительные сведения о встроенных эффектах XAudio2 см. в разделе Звуковые эффекты XAudio2 .
Связанные темы