![]() |
Re: Sound aufnehmen
Wie geht denn das mit dem einzufügen ??
So ? :
Delphi-Quellcode:
Result := waveInOpen(@fHandle, aDevice, @Format, Cardinal(@waveInProc), cardinal(self), CALLBACK_FUNCTION); for I := 1 to 5 do begin fWaveData := TWaveData.Create; fWaveData.Header.lpData := fWaveData.Data; fWaveData.Header.dwBufferLength := cWaveBufferSize; fWaveData.Header.dwFlags := 0; Result := waveInPrepareHeader(fHandle, @fWaveData.Header,cWaveBufferSize); Result := waveInAddBuffer(fHandle, @fWaveData.Header, cWaveBufferSize); end; Und dann noch mal da wo ich die daten auswerte oder wie ?? |
Re: Sound aufnehmen
Jepp:
Delphi-Quellcode:
Result := waveInOpen(@fHandle, aDevice, @Format, Cardinal(@waveInProc), cardinal(self), CALLBACK_FUNCTION); for I := 1 to 5 do begin fWaveData[i] := TWaveData.Create; fWaveData[i].Header.lpData := fWaveData[i].Data; fWaveData[i].Header.dwBufferLength := cWaveBufferSize; fWaveData[i].Header.dwFlags := 0; Result := waveInPrepareHeader(fHandle, @fWaveData[i].Header,cWaveBufferSize); Result := waveInAddBuffer(fHandle, @fWaveData[i].Header, cWaveBufferSize); // Aber eigentlich sollte man das Ergebnis vom Result prüfen ;) end; Zitat:
In der WIM_DATA Nachricht steht drinne, welcher Buffer es ist, den schickste zurück in die Liste. Am besten, Du machst Dir ein Array mit den Buffern. Ich nutzte immer den dwUser, um einen Index vom Array zu setzen, so weiß ich einfach, welcher Buffer zurück in die Liste muß. |
Re: Sound aufnehmen
Das mit dem dwUser verstehe ich nicht :oops:
Ich hab da nur das :
Delphi-Quellcode:
Oder wie kann ich das übergeben ??
procedure waveInProc(hwi: HWAVEIN; uMsg: UINT; dwInstance, dwParam1, dwParam2 : DWord); stdcall;
Sonst schreib ich da nachher noch den Falschen rein XD |
Re: Sound aufnehmen
Das kannst Du in der WAVEHDR Struktur angeben :wink:
Zb:
Delphi-Quellcode:
fWaveData[i].Header.dwUser := i;
|
Re: Sound aufnehmen
Ich verstehe es einfach nicht :wall: :wall: :wall:
Delphi-Quellcode:
Wie komm ich da an die Indexe von dem Array ??
procedure waveInProc(hwi: HWAVEIN; uMsg: UINT; dwInstance, dwParam1, dwParam2 : DWord); stdcall;
var classinstance: TWaveIn absolute dwInstance; begin if umsg = WIM_DATA then begin with classinstance do begin if fWaveData[???].Header.dwBytesRecorded = 0 then exit; fWaveData[???].Stream.Write(fWaveData[???].Data, fWaveData[???].header.dwBytesRecorded); if fWaveData[???].Header.dwFlags and MHDR_DONE = MHDR_DONE then begin |
Re: Sound aufnehmen
In dem Parameter dwParam1 steht die Adresse vom WAVEHDR, den kannste "anzapfen".
Delphi-Quellcode:
Eigentlich müsste das auc hfunktionieren, oder? :gruebel:
...
var pwh:TWaveHeader; ... pwh:=PWaveHeader(lParam)^; ... WaveInAddBuffer(fHandle, @fWaveData[pwh.dwUser], cWaveBufferSize));
Delphi-Quellcode:
Weiß grad net, ich mach das mit der Callback Procedure...
WaveInAddBuffer(fHandle, @pwh, cWaveBufferSize));
|
Re: Sound aufnehmen
Das geht bei mir nicht da kommt immer :
Delphi-Quellcode:
pwh:=PWaveHeader(lParam)^;
Klammer auf erwartet aber Klammer zu gefunden ^^ Edit : PWaveHeader gibts bei mir nicht :( bei mir gibts nur PWaveHdr |
Re: Sound aufnehmen
Jepp, dann mach dwParam1 draus, bei mir heißen die lParam und wParam, deshalb, hab nur von meinem Code rauskopiert :mrgreen:
Edit: Dann nimm den, PWaveHdr, is eh das gleiche :wink: Edit: Fix, immer diese Tippfehler :roll: |
Re: Sound aufnehmen
Misst jetzt stürtzt mir immer Delphi ab sobalt ich das ding starte :( :( :(
|
Re: Sound aufnehmen
Willkommen im Club, das hat ich auch mal ne Zeit bei meinem Projekt, läuft es ohne die IDE?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 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 by Thomas Breitkreuz