Introducción a XAPO

La API de XAPO permite crear objetos de procesamiento de audio multiplataforma (XAPO) para su uso en XAudio2 en Windows y Xbox 360. Un XAPO es un objeto que toma datos de audio entrantes y realiza alguna operación en los datos antes de pasarlos. Puede usar un XAPO para realizar diversas tareas, incluida la adición de reverberación a una secuencia de audio y la supervisión de los niveles máximos de volumen.

Creación de nuevos XAPOs

La API de XAPO proporciona la interfaz IXAPO y la clase CXAPOBase para crear nuevos tipos de XAPO. La interfaz IXAPO contiene todos los métodos que deben implementarse para crear un nuevo XAPO. La clase CXAPOBase proporciona una implementación básica de la interfaz IXAPO . CXAPOBase implementa todos los métodos de interfaz IXAPO excepto el método IXAPO::P rocess , que es único para cada XAPO.

Para obtener un ejemplo de cómo crear un nuevo XAPO, consulte How to: Create an XAPO.

Para obtener un ejemplo de creación de un XAPO que acepta parámetros en tiempo de ejecución, vea How to: Add Run-time Parameter Support to an XAPO.

XAPOs y COM

Los XAPOs implementan la interfaz IUnknown . Las interfaces IXAPO e IXAPOParameters incluyen los tres métodos IUnknown : QueryInterface, AddRef y Release. CXAPOBase proporciona implementaciones de los tres métodos IUnknown. Una nueva instancia de CXAPOBase tendrá un recuento de referencias de 1. Se destruirá cuando su recuento de referencias se convierta en 0. Las implementaciones de IXAPO e IXAPOParameters deben seguir el mismo patrón para permitir su administración adecuada cuando se usa con XAudio2.

Las instancias de XAPO se pasan a XAudio2 como interfaces IUnknown . XAudio2 usa QueryInterface para adquirir una interfaz IXAPO y para detectar si el XAPO implementa la interfaz IXAPOParameters . Las implementaciones de IXAPO deben aceptar solicitudes de __uuidof(IXAPO). Si se implementa IXAPOParameters, también debe aceptar solicitudes de __uuidof(IXAPOParameters).

Uso de un XAPO en XAudio2

Los XAPOs se usan en XAudio2 mediante su asociación a voces. Cada voz XAudio2 tiene una cadena de efectos que contiene cero o más efectos de audio. Los datos de audio enviados a una voz se pasan a través de cada efecto de la cadena antes de enviarlos a los destinos de salida de la voz. Los datos se pasan de la voz a cada efecto mediante el parámetro pInputProcessParameters del método IXAPO::P rocess . A continuación, se devuelve a la voz mediante el parámetro pOutputProcessParameters . La voz toma la salida de cada efecto y la introduce en el siguiente efecto de la cadena hasta que no quedan efectos en la cadena.

Para obtener más información sobre las cadenas de efectos XAudio2, vea Efectos de audio XAudio2.

Para obtener un ejemplo del uso de un XAPO en XAudio2, vea Cómo: Usar un XAPO en XAudio2.

Bibliotecas de efectos

La biblioteca de efectos XAPO contiene varios XAPOs y un método común para crear instancias de ellos. Consulte XAPOFX Overview (Información general de XAPOFX ) para obtener información sobre XAPOFX. Además, XAudio2 tiene efectos integrados de reverberación y medidor de volumen. Consulta Efectos de audio XAudio2 para obtener más información sobre los efectos XAudio2 integrados.

Efectos de audio

Efectos de audio de XAudio2