Ich benutze die Windows-Multimedia-APIs zur Aufzeichnung und Verarbeitung von Wave-Audio (waveInOpen
und Freunde). Ich möchte eine kleine Anzahl von Puffern in einer Round-Robin-Mode verwenden.Können Sie Puffer mit Windows-Wave-Audioeingang wiederverwenden?
Ich weiß, dass Sie angeblich waveInPrepareHeader
verwenden, bevor ein Puffer zum Gerät hinzufügen, und dass man eigentlich waveInUnprepareHeader
nennen, nachdem die Welle Gerät „die Puffer an die Anwendung zurückgegeben“ und bevor Sie es freigeben.
Meine Frage ist, muss ich unvorbereitet und neu vorbereiten, um einen Puffer wieder zu verwenden? Oder kann ich einfach einen zuvor verwendeten Puffer zum Gerät hinzufügen?
Ist es auch wichtig, in welchem Thread ich das mache? Ich verwende die Callback-Funktion, die scheinbar auf einem Worker-Thread aufgerufen wird, der zum Audiosystem gehört. Kann ich während des Rückrufs waveInUnprepareHeader
, waveInPrepareHeader
und waveInAddBuffer
anrufen?
Danke. Es sieht so aus, als ob der Versuch, waveInUnprepare während des Callbacks aufzurufen, ein Problem während eines waveInReset ist - es verursacht einen Deadlock. –
Ja, Deadlocks in waveInReset (und waveOutReset) sind ein Problem und variieren je nachdem, welchen Soundkartentreiber Sie haben. –