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:
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;
So wirds dann vorne drangehängt:
Delphi-Quellcode:
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;
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.
cu
tf