2016-04-13 13 views
0

Ich habe eine Frage über die interne Operation des ScriptProcessorNode. Während das Onaudioprozess-Ereignis von unserem Javascript behandelt wird, behält der ScriptProcessorNode selbst einige interne Puffer bei, um weiterhin Audio aufzunehmen und wiederzugeben? Wenn es internen Pufferraum hat, wie groß? Kann das Onaudioprozess-Ereignis auch durch ein Benutzerereignis ausgelöst werden?ScriptProcessorNode Interna

Antwort

1

Das Audiosystem verwaltet diese Puffer, ja, weil es das Audio vom Audio-Thread (und zurück) asynchron übertragen muss. Es wird die Hauptverarbeitung des Audiosystems nicht ersticken, aber wenn Sie nicht schnell genug vom Hauptthread eines Audioprozesses antworten, wird es einen Fehler machen.

Die Puffer sind ... doppelt gepuffert, denke ich? Ich kann mich nicht genau erinnern. Die Blockgröße, die Sie an den ScriptProcessorNode übergeben, bestimmt deren Größe.

Schließlich können Sie keinen Onaudioprozess durch ein Benutzerereignis auslösen (ich meine, Sie könnten dies zu Testzwecken, denke ich) - es wird ausgelöst, wenn das Audiosystem mehr Daten vom Skriptprozessorknoten benötigt.

+0

Wenn es nicht durch ein Benutzerereignis ausgelöst werden kann, können Sie ihm weitere Daten senden, wenn sie ankommen. Wenn ein Puffer voller Daten nicht verfügbar ist, wenn das Onaudioprozess-Ereignis eintritt, sollten wir in der Ereignisverarbeitung auf die Daten warten oder einfach ohne die Daten zurückkehren und auf das nächste Ereignis warten. – user2600798

+0

Hat noch mehr Tests gemacht. Es sieht so aus, als wenn das Onaudioprozess-Ereignis ausgelöst wird, müssen Sie den Puffer füllen. Der ScriptProcessorNode scheint in einem festen Intervall von der Größe des Puffers ausgelöst zu werden. – user2600798