Einzelnen Beitrag anzeigen

HHick123

Registriert seit: 23. Jul 2007
73 Beiträge
 
#5

Re: WaveIn-Problem bei grossen Buffern (Waveform Audio API)

  Alt 12. Feb 2008, 17:23
Zitat:
dass dein Puffer so dimensioniert sein muss, dass er mit deiner gewählten "Qualität" teilbar ist.
Ist OK bei mir. Anders formuliert: Der Buffer muss eine ganze Anzahl an "Blocks" aufnehmen können, wobei ein "Block" aus den Bytes für die Samples aller Channels zu einem Zeitpunkt besteht. Ich verwende in erster Linie ganz einfaches 16bit, mono, das hiesse dann, dass die Buffergröße eine gerade Anzahl an bytes sein muss. Kein Problem.

Zitat:
Dein Problem könnte am CallBack-Event liegen. Der Event in dem Fall ist nichts anderes als eine WindowsMessage. Ich habe mal gelesen, dass der CallBack über Thread auf jeden Fall die Beste Methode sein soll.
Inwiefern ist "der Event eine Windowsmessage"? Meiner Meinung nach sind die Events, auf die ich mit WaitForMultipleObjects warte einfach Events (CreateEvent etc..). Oder steckt da doch irgendwie ein komplizierter Ablauf mit Messages (im Sinne von Postmessage etc..) dahinter?

Ansich wäre ich mit CALLBACK_EVENT recht zufrieden. Der einzige Nachteil, den ich sehe, ist, dass man nicht so ohne weiteres weiss, warum WaitForMultipleObjects zurückgekehrt ist, aber das Checken der Header-Flags der Buffer ist relativ billig (ist in wenigen Mikrosekunden erledigt)...

Hier findet sich auch ein Pro-CALLBACK_EVENT-Artikel:
http://www.tech-archive.net/Archive/...4-03/0130.html

Zitat:
Zum Abspielen kannst und solltest du mehr als 2 Puffer benutzen! In dem Tutorial ist von 20 die Rede!!!
Mittlerweile hab' ich meinen Code auf eine konfigurierbare Anzahl von Buffern erweitert, und tatsächlich tritt das Problem bei einer größeren Anzahl kleiner Buffer nicht auf. Schon aber bei einer größeren Anzahl großer Buffer! Anscheinend kommt es also tatsächlich auf die Größe der Buffer an.

Momentan verwende ich 16 Buffer zu je 1000Samples (= je 1/16Sekunde) um eine Sekunde Reserve zu haben. Das funktioniert jetzt ganz gut...

Was mich aber noch ein bischen beunruhigt ist, warum 2 grosse Buffer nicht funktionieren?!?
Momentan vermute ich vielleicht, dass es gar nicht an mir liegt, sondern dass vielleicht das Betriebssystem oder der Audiotreiber ein Problem mit den großen Buffern hat (es tritt ja auch nicht mit allen Soundkarten auf).

Letztlich bleibt natürlich ein gewisses Risiko, dass ich doch etwas falsch mache...

Viele Grüße, Helmut
  Mit Zitat antworten Zitat