Condividi tramite


Metodo IXAudio2SourceVoice::SubmitSourceBuffer (xaudio2.h)

Aggiunge un nuovo buffer audio alla coda vocale.

Sintassi

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

Parametri

[in] pBuffer

Puntatore a una struttura XAUDIO2_BUFFER da accodare.

[in] pBufferWMA

Puntatore a una struttura di XAUDIO2_BUFFER_WMA aggiuntiva utilizzata per l'invio di dati WMA.

Valore restituito

Restituisce S_OK in caso di esito positivo, in caso contrario, un codice di errore. Per le descrizioni dei codici di errore specifici di XAudio2, vedere Codici di errore XAudio2 .

Commenti

La voce elabora e riproduce i buffer nella relativa coda nell'ordine in cui sono stati inviati.

La struttura XAUDIO2_BUFFER include dettagli sulla posizione e le dimensioni del buffer audio, la parte del buffer che deve essere effettivamente riprodotta, l'area del ciclo (se presente) e il conteggio dei cicli, il puntatore di contesto da usare in qualsiasi callback relativo a questo buffer e un flag di XAUDIO2_END_OF_STREAM facoltativo che indica che è l'ultimo buffer di un suono contiguo.

Se la voce viene avviata e non contiene buffer in coda, il nuovo buffer inizierà immediatamente a essere riprodotto. Se la voce viene arrestata, il buffer viene aggiunto alla coda della voce e verrà riprodotto all'avvio della voce.

Se deve essere riprodotta solo parte del buffer specificato, è possibile usare i campi PlayBegin e PlayLength nel XAUDIO2_BUFFER per specificare l'area da riprodurre. Un valore PlayLength pari a 0 significa riprodurre l'intero buffer (e in questo caso PlayBegin deve anche essere 0).

Se tutto o parte del buffer deve essere riprodotto in un ciclo continuo, è possibile utilizzare i campi LoopBegin, LoopLength e LoopCount in XAUDIO2_BUFFER per specificare le caratteristiche dell'area del ciclo. Un valore LoopBegin di XAUDIO2_NO_LOOP_REGION indica che non deve essere eseguito alcun ciclo e in questo caso LoopLength e LoopCount devono essere specificati come 0. Se viene specificata un'area del ciclo, deve essere non vuota (LoopLength> 0) e il numero di cicli deve essere compreso tra 1 e XAUDIO2_MAX_LOOP_COUNT inclusivo (o XAUDIO2_LOOP_INFINITE per specificare un ciclo infinito che terminerà solo quando viene chiamato IXAudio2SourceVoice::ExitLoop ). Un numero di cicli N significa ignorare N volte indietro, ad esempio per riprodurre l'area del ciclo N+1 volte.

Se viene specificata un'area di riproduzione esplicita, deve iniziare e terminare all'interno del buffer audio specificato (o, nel caso compresso, all'interno del set di campioni in cui verrà decodificato il buffer). Inoltre, l'area del ciclo non può terminare oltre la fine dell'area di riproduzione.

Xbox 360
Per determinati formati audio, potrebbero esserci restrizioni aggiuntive sugli endpoint validi di qualsiasi area di riproduzione o ciclo; Ad esempio, per i buffer XMA, le aree possono iniziare o terminare solo a 128 limiti di esempio nell'audio decodificato.
 

Il puntatore pBuffer può essere riutilizzato o liberato immediatamente dopo aver chiamato questo metodo, ma i dati audio effettivi a cui fa riferimento pBuffer devono rimanere validi fino a quando il buffer non è stato completamente utilizzato da XAudio2 (indicato dal callback IXAudio2VoiceCallback::OnBufferEnd ).

Fino a XAUDIO2_MAX_QUEUED_BUFFERS buffer possono essere accodati in una voce in qualsiasi momento.

SubmitSourceBuffer diventa effettivo immediatamente quando viene chiamato da un callback XAudio2 con un OperationSet di XAUDIO2_COMMIT_NOW.

Xbox 360
Questo metodo può essere chiamato da un thread di sistema Xbox (la maggior parte degli altri metodi XAudio2 non può). Tuttavia, un massimo di due buffer di origine può essere inviato da un thread di sistema alla volta.
 

Requisiti della piattaforma

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

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione xaudio2.h

Vedi anche

Procedura: Creare un grafico di elaborazione audio di base

Procedura: Trasmissione di un suono in un flusso da disco

IXAudio2SourceVoice