Einzelnen Beitrag anzeigen

Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#4

Re: waveIn Problem mit Callback

  Alt 14. Okt 2009, 15:05
Hallo,

ich kenne mich jetzt nicht direkt mit WaveIn aus, sondern nur mit WaveOut. Allgemein darfst/solltest du die Callbackfunktionen nur zum setzen von Flags verwenden, die dann entsprechend von einem anderen Thread in periodischen Abständen "kontrolliert" werden.

Bei WaveOut mache ich das zum Beispiel so:
Delphi-Quellcode:
procedure stream_callback(hwo: HWAVEOUT; uMsg: Cardinal; dwInstance, dwParam1, dwParam2: DWORD);stdcall;
begin
  if (uMsg = WOM_DONE) then
  begin
    with TAuWaveOutStreamDriver(Pointer(dwInstance)) do
      FFreeblocks := FFreeblocks + 1;
  end;
end;
Das Hochzählen der Variable informiert hierbei den Ausgabethread darüber, dass neue Daten zur Ausgabe bereitgestellt werden müssen.

Entsprechend anders herum musst du das dann wohl bei WaveIn machen. Dort müssen dann die beschriebenen Pakete abgeholt werden.

Hoffe das hilft dir ein wenig,
Andreas

PS: Wenn dir das was hilft: Hier ist eine Unit von mir, die WaveOut verwendet - das sollte entsprechend übertragbar sein: http://audorra.svn.sourceforge.net/v...w=markup#l_408
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat