Compartir a través de


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.

Nota Los búferes XMA enviados a una voz XAudio2 mediante IXAudio2SourceVoice::SubmitSourceBuffer deben contener bloques XMA completos. Un bloque XMA completo debe tener un tamaño igual al XMA2WAVEFORMATEX. Valor bytesPerBlock , excepto el último bloque XMA de un archivo, que puede ser más corto, pero todavía se considerará completo.
 

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

IXAudio2SourceVoice::SubmitSourceBuffer

Estructuras XAudio2