IXAudio2SourceVoice::SubmitSourceBuffer-Methode (xaudio2.h)
Fügt der Sprachwarteschlange einen neuen Audiopuffer hinzu.
Syntax
HRESULT SubmitSourceBuffer(
[in] const XAUDIO2_BUFFER *pBuffer,
[in] const XAUDIO2_BUFFER_WMA *pBufferWMA
);
Parameter
[in] pBuffer
Zeiger auf eine XAUDIO2_BUFFER Struktur in die Warteschlange.
[in] pBufferWMA
Zeiger auf eine zusätzliche XAUDIO2_BUFFER_WMA Struktur, die beim Übermitteln von WMA-Daten verwendet wird.
Rückgabewert
Gibt bei erfolgreicher Ausführung S_OK zurück, andernfalls einen Fehlercode. Beschreibungen von XAudio2-spezifischen Fehlercodes finden Sie unter XAudio2-Fehlercodes.
Hinweise
Die Stimme verarbeitet und gibt die Puffer in der Warteschlange in der Reihenfolge ab, in der sie übermittelt wurden.
Die XAUDIO2_BUFFER-Struktur enthält Details zur Position und Größe des Audiopuffers, dem Teil des Puffers, der tatsächlich wiedergegeben werden soll, dem Schleifenbereich (falls vorhanden) und der Anzahl der Schleifen, dem Kontextzeiger, der in allen Rückrufen verwendet werden soll, die sich auf diesen Puffer beziehen, und ein optionales XAUDIO2_END_OF_STREAM Flag, das angibt, dass es sich um den letzten Puffer eines zusammenhängenden Sounds handelt.
Wenn die Stimme gestartet wurde und keine Puffer in die Warteschlange eingereiht sind, beginnt der neue Puffer sofort mit der Wiedergabe. Wenn die Stimme beendet wird, wird der Puffer der Warteschlange der Stimme hinzugefügt und beim Starten der Stimme wiedergegeben.
Wenn nur ein Teil des angegebenen Puffers wiedergegeben werden soll, können die Felder PlayBegin und PlayLength im XAUDIO2_BUFFER verwendet werden, um die region anzugeben, die wiedergegeben werden soll. Ein PlayLength-Wert von 0 bedeutet, dass der gesamte Puffer wiedergegeben wird (und in diesem Fall muss PlayBegin ebenfalls 0 sein).
Wenn der Puffer ganz oder teilweise in einer endlosen Schleife wiedergegeben werden soll, können die Felder LoopBegin, LoopLength und LoopCount in XAUDIO2_BUFFER verwendet werden, um die Merkmale des Schleifenbereichs anzugeben. Ein LoopBegin-Wert von XAUDIO2_NO_LOOP_REGION bedeutet, dass keine Schleifen ausgeführt werden sollen. In diesem Fall müssen LoopLength und LoopCount als 0 angegeben werden. Wenn ein Schleifenbereich angegeben wird, muss er nicht leer sein (LoopLength> 0), und die Schleifenanzahl muss zwischen 1 und XAUDIO2_MAX_LOOP_COUNT einschließlich liegen (oder XAUDIO2_LOOP_INFINITE, um eine Endlosschleife anzugeben, die nur endet, wenn IXAudio2SourceVoice::ExitLoop aufgerufen wird). Eine Schleifenanzahl von N bedeutet, N-Mal rückwärts zu überspringen, d. h. den Schleifenbereich N+1 mal wiederzugeben.
Wenn ein expliziter Wiedergabebereich angegeben wird, muss er innerhalb des angegebenen Audiopuffers beginnen und enden (oder, im komprimierten Fall, innerhalb der Gruppe von Beispielen, in die der Puffer decodiert wird). Darüber hinaus kann der Schleifenbereich nicht über das Ende der Wiedergaberegion hinaus enden.
Xbox 360 |
---|
Für bestimmte Audioformate kann es zusätzliche Einschränkungen für die gültigen Endpunkte beliebiger Wiedergabe- oder Schleifenregionen geben. z. B. bei XMA-Puffern können die Regionen nur bei 128-Sample-Grenzen im decodierten Audio beginnen oder enden. |
Der pBuffer-Zeiger kann sofort nach dem Aufrufen dieser Methode wiederverwendet oder freigegeben werden, aber die tatsächlichen Audiodaten, auf die von pBuffer verwiesen wird, müssen gültig bleiben, bis der Puffer von XAudio2 vollständig verbraucht wurde (was durch den IXAudio2VoiceCallback::OnBufferEnd-Rückruf angegeben wird).
Bis zu XAUDIO2_MAX_QUEUED_BUFFERS Puffer können jederzeit für eine Stimme in die Warteschlange gestellt werden.
SubmitSourceBuffer wird sofort wirksam, wenn von einem XAudio2-Rückruf mit einem OperationSet XAUDIO2_COMMIT_NOW aufgerufen wird.
Xbox 360 |
---|
Diese Methode kann über einen Xbox-Systemthread aufgerufen werden (die meisten anderen XAudio2-Methoden können dies nicht). Es können jedoch maximal zwei Quellpuffer gleichzeitig von einem Systemthread übermittelt werden. |
Plattformanforderungen
Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); DirectX SDK (XAudio 2.7)Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | xaudio2.h |
Weitere Informationen
So wird's gemacht: Erstellen eines grundlegenden Audioverarbeitungsdiagramms