Einzelnen Beitrag anzeigen

Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#1

Interface aus Pointer oder: AVIs einlesen

  Alt 23. Feb 2007, 21:36
Hallo,

ich mach hier gerade fremden Code flott... Ich hab mir von torry.net Compressed AVI Read/Write Units geladen.

Und da passiert folgendes:

Delphi-Quellcode:
//definitionen
pavis: PAVIStream = Pointer;

IAVIStream = interface(IUnknown)
 ...
end;

function AVIStreamEnd(pavi: IAVISTREAM): LONG;


Ending:=AVIStreamENd(pavis); //hier knallts
Ich habe den aufruf mal durch das hier ersetzt:

Ending:=AVIStreamEnd(IAVIStream(pavis^)); Und habe jetzt folgenden Code:

Delphi-Quellcode:
procedure TForm2.BOpenAVIClick(Sender: TObject);
begin
  with TOpenDialog.Create(nil) do
  try
    Filter := 'Audio/Video Interlaced File (*.avi)|*.avi';
    if Execute then
    begin
      MainAVI.Start := 0;
      MainAVI.Ending := 1;
      MainAVI.Open(FIleName);
    end;
  finally
    Free;
  end;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  GetMem(Buffer, 1024); //nur mal auf Verdacht alloziiert, wegen der AV, ändert aber nix - Buffer: Pointer, als Form-Member deklariert.
  MainAVI := TAVIReader.Create(Buffer);
end;
Was allerdings sehr merkwürdig ist:

Delphi-Quellcode:
function TAVIReader.Open(AFileName: String): integer;
begin
  FileName := AFileName;
  result := AVIFileOpen(pavi, Pchar(Filename), OF_READ, nil);
  AVIFILEGetStream(pavi,pavis,streamtypeVIDEO,0); //hier
  Start:=AVIStreamStart(pavis);
  Ending:=AVIStreamEnd(IAVIStream(pavis^));
  ob:=AVIStreamGetFrameOpen(pavis,nil);
  AVIStreamBeginStreaming(pavis,Start,Ending,1000);
// DrawDIBStart(han,microsperframe); //nicht von mir auskommentiert
end;
Wenn ich diese Funktion durchsteppe (Ich hab extra schon die optimierung ausgeschaltet), zeigt er mir, wenn ich bei "//hier" bin und auf "Eins weiter" klicke, das "end;" als nächste Anweisung - er überspringt mir also 4 Programmzeilen...

Das ganze kracht dann mit einer Read bei 0 AV in "AVIFil32.dll" (eine Systemdll, glaub ich, das PSDK gibt mir auch Auskunft über die Funktionen, die exportiert werden), nach kompletten durchsteppen (also nach dem end meines Buttonclickhandlers)

Also:

1. kann mir wer helfen
2. hat jemand ne andere freie AVI-Read/Write-Kompo da?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat