Einzelnen Beitrag anzeigen

Benutzerbild von igel457
igel457

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

Re: Wie waveOutWrite visualisieren ?

  Alt 30. Aug 2009, 15:37
Delphi-Quellcode:

FBlocks: array of TWaveHdr;

type
  TMyStruct = record
    [...]
  end;
  PMyStruct = ^TMyStruct;

//Schreiben
var
  struct: PMyStruct;
begin
  New(struct);
  struct^.TimeCode = 1923820;
  @FBlocks[FCurrentBlock].dwUser = struct;

  waveOutPrepareHeader(Fhwo, @FBlocks[FCurrentBlock], SizeOf(FBlocks[FCurrentBlock]));
  waveOutWrite(Fhwo, @FBlocks[FCurrentBlock], SizeOf(FBlocks[FCurrentBlock]));
end;

//Callback
//dwParam1: Pointer of Block
procedure stream_callback(hwo: HWAVEOUT; uMsg: Cardinal; dwInstance, dwParam1, dwParam2: DWORD);stdcall;
begin
  if (uMsg = WOM_DONE) then
  begin
    with TAuWaveOutStreamDriver(Pointer(dwInstance)) do
    begin
      FFreeblocks := FFreeblocks + 1;
      FSyncData := PAuSyncData(PWaveHdr(dwParam1)^.dwUser)^;
      
      Dispose(PWaveHdr(dwParam1)^.dwUser);
    end;
  end;
end;

//Öffnen
                                                                           //\/ dwInstance
waveOutOpen(@Fhwo, Cardinal(FDevId), @FFormat, Cardinal(@stream_callback), Cardinal(self),
    CALLBACK_FUNCTION)
Hoffe das Hilft ein wenig...
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