![]() |
Aufnahmen mit Puffer: Pufferstream mit bass.dll
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich nehme etwas auf und zwar mit dem beispiel der bass.dll record Test. Dabei will ich immer die letzten z.b. 7 Sekunden Puffern und sobald ich eine Taste drücke ab dort aufnehmen und später speichern. Das klappt auch schon etwas. Leider ist mir keine andere Methode eingefalln als immer in einem Pufferstream(puffer) im Kreislauf alles zu speichern und dann später an den Anfanng des richtigen Streams hängen. Wie geht das besser? Ich habe immer ruckler. Angehängt ist der veränderte Quelltext(etwas sehr unorndentlich); Hier die callback(ist lauf true soll richtig aufgezeichnet(Wavestream) werden, es wird immmer in den Pufferstream(puffer) im Kreislauf geschrieben.)
Delphi-Quellcode:
So wirds dann vorne drangehängt:
function RecordingCallback(Handle: HRECORD; buffer: Pointer; length, user: DWord): boolean; stdcall;
begin // Copy new buffer contents to the memory buffer if form1.puffer.Position>1000000 then begin form1.puffer.Position:=0; end; Form1.puffer.Write(buffer^, length); form1.label2.Caption:=inttostr(Form1.puffer.Position); // Allow recording to continue if form1.lauf then Form1.wavestream.Write(buffer^, length); Result := True; end;
Delphi-Quellcode:
Wie kann ich alles in eine Stream machen und rucekfrei machen. Also wie kann ich in einen Stream Daten schreiben und die alten immer wieder löschen, sodass der Stream immer die gleiche Größe behält.
procedure TForm1.anh;
var i: Integer; spos: Int64; t: Extended ; begin spos := puffer.Position; for i := 1 to ((puffer.Size - spos) div 10) do begin puffer.Read(t, 10); wavestream.Write(t, 10); end; puffer.Position := 0; caption := inttostr(puffer.Position); for i := 1 to ((spos) div 10) do begin puffer.Read(t, 10); wavestream.Write(t, 10); end; puffer.Position:=spos; end; cu tf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 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