estructura XAUDIO2_BUFFER (xaudio2.h)
Representa un búfer de datos de audio, usado con IXAudio2SourceVoice::SubmitSourceBuffer.
Sintaxis
typedef struct XAUDIO2_BUFFER {
UINT32 Flags;
UINT32 AudioBytes;
const BYTE *pAudioData;
UINT32 PlayBegin;
UINT32 PlayLength;
UINT32 LoopBegin;
UINT32 LoopLength;
UINT32 LoopCount;
void *pContext;
} XAUDIO2_BUFFER;
Miembros
Flags
Marcas que proporcionan información adicional sobre el búfer de audio. Puede ser 0 o el valor siguiente.
Value | Descripción |
---|---|
XAUDIO2_END_OF_STREAM | Indica que no puede haber ningún búfer en la cola después de este búfer. El único efecto de esta marca es suprimir las advertencias de salida de depuración causadas por el colapso de la cola del búfer. |
AudioBytes
Tamaño de los datos de audio, en bytes. No debe ser mayor que XAUDIO2_MAX_BUFFER_BYTES (definido en xaudio2.h) para los datos PCM y no mayor que XMA_READBUFFER_MAX_BYTES (definido en xma2defs.h) para los datos XMA.
pAudioData
Puntero a los datos de audio.
Xbox 360 |
---|
La memoria asignada para un búfer que contiene datos XMA debe tener una alineación de bloque de 2048. Esto se logra mediante XPhysicalAlloc con el argumento ulAlignment establecido en 2048. |
PlayBegin
Primer ejemplo del búfer que se debe reproducir.
Para los búferes XMA, este valor debe ser un múltiplo de 128 muestras.
PlayLength
Longitud de la región que se va a reproducir, en ejemplos. Un valor de cero significa reproducir todo el búfer y, en este caso, PlayBegin también debe ser cero. Para los datos de ADPCM, este valor debe ser un múltiplo de wSamplesPerBlock en la estructura ADPCMWAVEFORMAT que contiene esta estructura de XAUDIO2_BUFFER .
LoopBegin
Primer ejemplo de la región que se va a recorrer en bucle. El valor de LoopBegin debe ser menor que PlayBegin + PlayLength. LoopBegin puede ser menor que PlayBegin. LoopBegin debe ser 0 si LoopCount es 0.
LoopLength
Longitud de la región del bucle, en ejemplos. El valor de LoopBegin+LoopLength debe ser mayor que PlayBegin y menor que PlayBegin + PlayLength. LoopLength debe ser cero si LoopCount es 0. Si LoopCount no es 0, una longitud de bucle de cero indica que se debe bucle toda la muestra. Para los datos de ADPCM, este valor debe ser un múltiplo de wSamplesPerBlock en la estructura ADPCMWAVEFORMAT que contiene esta estructura de XAUDIO2_BUFFER .
LoopCount
Número de veces que se recorre la región del bucle. Este valor puede estar comprendido entre 0 y XAUDIO2_MAX_LOOP_COUNT. Si LoopCount es cero, no se realiza ningún bucle y LoopBegin y LoopLength deben ser 0. Para bucle para siempre, establezca LoopCount en XAUDIO2_LOOP_INFINITE.
pContext
Valor de contexto que se va a devolver en devoluciones de llamada al cliente. Puede ser NULL.
Observaciones
Los datos de audio XAudio2 se intercalan, los datos de cada canal son adyacentes para un número de muestra determinado. Por ejemplo, si hubiera una onda de 4 canales reproduciendo en una voz de origen XAudio2, los datos de audio serían una muestra del canal 0, una muestra del canal 1, una muestra del canal 2, una muestra del canal 3 y, a continuación, la siguiente muestra de canales 0, 1, 2, 3, etc.
Los miembros AudioBytes y pAudioData de XAUDIO2_BUFFER corresponden al tamaño en bytes y el contenido del fragmento RIFF de "datos" del archivo que se reproduce. Es posible que el contenido del fragmento deba intercambiarse por bytes al cargar el archivo en Xbox 360.
La memoria asignada para contener una estructura de XAUDIO2_BUFFER o XAUDIO2_BUFFER_WMA se puede liberar tan pronto como la llamada IXAudio2SourceVoice::SubmitSourceBuffer se pasa a devoluciones. Los datos a los que apunta la estructura (pAudioData y pDecodedPacketCumulativeBytes, respectivamente) no se pueden liberar hasta que se complete el búfer (tal y como indica la devolución de llamada IXAudio2VoiceCallback::OnBufferEnd ) o la voz se detiene o destruye.
Requisitos de la plataforma
Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); SDK de DirectX (XAudio 2.7)Requisitos
Encabezado | xaudio2.h |
Consulte también
Cómo: crear un gráfico de procesamiento de audio básico