Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#18

Re: Schnellere Alternative zu Avisynth/Vfw möglich?

  Alt 21. Nov 2005, 22:53
Jetzt habe ich mal das ABitmap : TBitmap als Rückgabe entfernt und bitblt eingefügt.

Delphi-Quellcode:
function Tfrm_Haupt.HoleImage(FrameNumber): Boolean;
begin
  GetFrame := AVIStreamGetFrameOpen(AVIStream, nil);
  BitmapInfoHeader := AVIStreamGetFrame(GetFrame, FrameNumber);
  bits := Pointer(Integer(BitmapInfoHeader) + SizeOf(TBitmapInfoHeader));

  DC_Handle := CreateDC('Display', nil, nil, nil);

  try
    hBmp := CreateDIBitmap(
    DC_Handle,
    BitmapInfoHeader^,
    CBM_INIT,
    bits,
    PBITMAPINFO(BitmapInfoHeader)^,
    DIB_RGB_COLORS);
  finally
    DeleteDC(DC_Handle);
  end;

  bitblt (img_Video.Canvas.Handle,
          0,
          0,
          BitmapInfoHeader.biWidth,
          BitmapInfoHeader.biHeight,
          hBmp,
          0,
          0,
          SrcCopy);

  AVIStreamGetFrameClose(GetFrame);

  Result := True;

end;
Das Bild ist weiß und alles sehr träge. In den Beispiele, welche ich gesehen habe wurde auch mit Bitmaps gearbeitet. Hier ist die Source ein DIBitmap.
Angehängte Dateien
Dateityp: 7z version_3_549.7z (210,3 KB, 26x aufgerufen)
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat