IXAPO::P rocess-Methode (xapo.h)

Führt den DSP-Code (Digital Signal Processing) des XAPO auf den angegebenen Eingabe- und Ausgabepuffern aus.

Syntax

void Process(
  [in]      UINT32                               InputProcessParameterCount,
  [in]      const XAPO_PROCESS_BUFFER_PARAMETERS *pInputProcessParameters,
  [in]      UINT32                               OutputProcessParameterCount,
  [in, out] XAPO_PROCESS_BUFFER_PARAMETERS       *pOutputProcessParameters,
            BOOL                                 IsEnabled
);

Parameter

[in] InputProcessParameterCount

Anzahl der Elemente in pInputProcessParameters.

Hinweis XAudio2 unterstützt derzeit nur einen Eingabe- und einen Ausgabestream.
 

[in] pInputProcessParameters

Eingabearray von XAPO_PROCESS_BUFFER_PARAMETERS Strukturen.

[in] OutputProcessParameterCount

Anzahl der Elemente in pOutputProcessParameters.

Hinweis XAudio2 unterstützt derzeit nur einen Eingabe- und einen Ausgabestream.
 

[in, out] pOutputProcessParameters

Ausgabearray von XAPO_PROCESS_BUFFER_PARAMETERS Strukturen. Bei der Eingabe XAPO_PROCESS_BUFFER_PARAMETERS. ValidFrameCount gibt die Anzahl der Frames an, die der XAPO in den Ausgabepuffer schreiben soll. Bei der Ausgabe wird der Wert von XAPO_PROCESS_BUFFER_PARAMETERS. ValidFrameCount gibt die tatsächliche Anzahl der geschriebenen Frames an.

IsEnabled

TRUE, um normal zu verarbeiten; FALSE, um thru zu verarbeiten. Weitere Informationen finden Sie unter Hinweise.

Rückgabewert

Keine

Bemerkungen

Implementierungen dieser Funktion sollten nicht blockiert werden, da die Funktion aus dem Echtzeit-Audioverarbeitungsthread aufgerufen wird.

Der gesamte Code, der zu einer Verzögerung führen könnte, z. B. Formatüberprüfung und Speicherzuordnung, sollte in die IXAPO::LockForProcess-Methode eingefügt werden, die nicht aus dem Echtzeit-Audioverarbeitungsthread aufgerufen wird.

Bei der direkten Verarbeitung ist der pInputProcessParameters-Parameter nicht unbedingt mit pOutputProcessParameters identisch. Stattdessen zeigen ihre pBuffer-Member auf denselben Arbeitsspeicher.

Mehrere Eingabe- und Ausgabepuffer können mit direkten XAPOs verwendet werden, obwohl die Anzahl des Eingabepuffers der Anzahl des Ausgabepuffers entsprechen muss. Bei der direkten Verarbeitung, wenn mehrere Eingabe- und Ausgabepuffer verwendet werden, kann das XAPO davon ausgehen, dass die Anzahl der Eingabepuffer der Anzahl der Ausgabepuffer entspricht.

Zusätzlich zum Schreiben in den Ausgabepuffer ist ein XAPO für das Festlegen der Pufferflags des Ausgabestreams und der gültigen Frameanzahl verantwortlich.

Wenn IsEnabled FALSE ist, sollte der XAPO seine normale Verarbeitung nicht auf die angegebenen Eingabe-/Ausgabepuffer anwenden. Stattdessen sollten Daten so wenig wie möglich von der Eingabe an die Ausgabe übergeben werden. Effekte, die die Formatkonvertierung durchführen, sollten dies weiterhin tun. Effekte müssen sicherstellen, dass Übergänge zwischen Normal- und Durchlaufverarbeitung keine Diskontinuitäten in das Signal einführen.

Beim Schreiben einer Process-Methode ist es wichtig zu beachten, dass XAudio2-Audiodaten verschachtelt sind, was bedeutet, dass Daten aus jedem Kanal für eine bestimmte Beispielnummer nebeneinander stehen. Wenn beispielsweise eine 4-Kanal-Welle in einer XAudio2-Quellstimme wiedergegeben wird, sind die Audiodaten ein Beispiel für Kanal 0, ein Beispiel für Kanal 1, ein Beispiel für Kanal 2, ein Beispiel für Kanal 3 und dann das nächste Beispiel der Kanäle 0, 1, 2, 3 usw.

Plattformanforderungen

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

Requirements (Anforderungen)

   
Zielplattform Windows
Kopfzeile xapo.h

Weitere Informationen

IXAPO