AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi WaveIn-Problem bei grossen Buffern (Waveform Audio API)
Thema durchsuchen
Ansicht
Themen-Optionen

WaveIn-Problem bei grossen Buffern (Waveform Audio API)

Ein Thema von HHick123 · begonnen am 4. Feb 2008 · letzter Beitrag vom 31. Mai 2008
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz