Método IXAudio2SourceVoice::SubmitSourceBuffer (xaudio2.h)

Agrega un nuevo búfer de audio a la cola de voz.

Sintaxis

HRESULT SubmitSourceBuffer(
  [in] const XAUDIO2_BUFFER     *pBuffer,
  [in] const XAUDIO2_BUFFER_WMA *pBufferWMA
);

Parámetros

[in] pBuffer

Puntero a una estructura de XAUDIO2_BUFFER que se va a poner en cola.

[in] pBufferWMA

Puntero a una estructura de XAUDIO2_BUFFER_WMA adicional que se usa al enviar datos WMA.

Valor devuelto

Devuelve S_OK si se ejecuta correctamente, de lo contrario, un código de error. Consulte Códigos de error XAudio2 para obtener descripciones de códigos de error específicos de XAudio2.

Comentarios

La voz procesa y reproduce los búferes en su cola en el orden en que se enviaron.

La estructura de XAUDIO2_BUFFER incluye detalles sobre la ubicación y el tamaño del búfer de audio, la parte del búfer que se debe reproducir realmente, la región del bucle (si existe) y el recuento de bucles, el puntero de contexto que se usará en las devoluciones de llamada relacionadas con este búfer y una marca de XAUDIO2_END_OF_STREAM opcional que indica que es el último búfer de un sonido contiguo.

Si la voz se inicia y no tiene búferes en cola, el nuevo búfer comenzará a reproducirse inmediatamente. Si se detiene la voz, el búfer se agrega a la cola de voz y se reproducirá cuando se inicie la voz.

Si solo se debe reproducir parte del búfer especificado, se pueden usar los campos PlayBegin y PlayLength del XAUDIO2_BUFFER para especificar la región que se va a reproducir. Un valor playLength de 0 significa reproducir todo el búfer (y en este caso PlayBegin también debe ser 0).

Si todos o parte del búfer deben reproducirse en un bucle continuo, los campos LoopBegin, LoopLength y LoopCount de XAUDIO2_BUFFER se pueden usar para especificar las características de la región del bucle. Un valor LoopBegin de XAUDIO2_NO_LOOP_REGION significa que no se debe realizar ningún bucle y, en este caso , LoopLength y LoopCount se deben proporcionar como 0. Si se especifica una región de bucle, debe no estar vacía (LoopLength> 0) y el recuento de bucles debe estar comprendido entre 1 y XAUDIO2_MAX_LOOP_COUNT inclusivo (o XAUDIO2_LOOP_INFINITE para especificar un bucle sin fin que solo finalizará cuando se llame a IXAudio2SourceVoice::ExitLoop ). Un recuento de bucles de N significa omitir las N veces anteriores, es decir, reproducir la región de bucle N+1 veces.

Si se especifica una región de reproducción explícita, debe comenzar y finalizar dentro del búfer de audio especificado (o, en el caso comprimido, dentro del conjunto de muestras en las que se descodificará el búfer). Además, la región del bucle no puede terminar más allá del final de la región de reproducción.

Xbox 360
Para determinados formatos de audio, puede haber restricciones adicionales en los puntos de conexión válidos de cualquier región de reproducción o bucle; Por ejemplo, para los búferes XMA, las regiones solo pueden comenzar o terminar en límites de 128 muestras en el audio descodificado.
 

El puntero pBuffer se puede reutilizar o liberar inmediatamente después de llamar a este método, pero los datos de audio reales a los que hace referencia pBuffer deben permanecer válidos hasta que XAudio2 haya consumido completamente el búfer (que se indica mediante la devolución de llamada IXAudio2VoiceCallback::OnBufferEnd ).

Hasta XAUDIO2_MAX_QUEUED_BUFFERS búferes se pueden poner en cola en una voz en cualquier momento.

SubmitSourceBuffer surte efecto inmediatamente cuando se llama desde una devolución de llamada XAudio2 con un OperationSet de XAUDIO2_COMMIT_NOW.

Xbox 360
Se puede llamar a este método desde un subproceso del sistema Xbox (la mayoría de los otros métodos XAudio2 no pueden). Sin embargo, se puede enviar un máximo de dos búferes de origen desde un subproceso del sistema a la vez.
 

Requisitos de la plataforma

Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); SDK de DirectX (XAudio 2.7)

Requisitos

   
Plataforma de destino Windows
Encabezado xaudio2.h

Consulte también

Cómo: crear un gráfico de procesamiento de audio básico

Cómo: transmitir un sonido de un disco

IXAudio2SourceVoice