AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Aufnahmen mit Puffer: Pufferstream mit bass.dll
Thema durchsuchen
Ansicht
Themen-Optionen

Aufnahmen mit Puffer: Pufferstream mit bass.dll

Ein Thema von tobif · begonnen am 17. Mär 2006
Antwort Antwort
tobif

Registriert seit: 11. Jul 2003
27 Beiträge
 
#1

Aufnahmen mit Puffer: Pufferstream mit bass.dll

  Alt 17. Mär 2006, 19:28
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
Angehängte Dateien
Dateityp: dfm unit1_709.dfm (2,6 KB, 12x aufgerufen)
Dateityp: pas unit1_198.pas (8,5 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz