Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Filteranschlüsse nicht verbunden. (https://www.delphipraxis.net/13150-filteranschluesse-nicht-verbunden.html)

chris_82 11. Dez 2003 23:15

Re: Filteranschlüsse nicht verbunden.
 
Hier das ist der Code, mit dem was ich bis jetzt neu eigebaut habe:

Delphi-Quellcode:
//Initialisieren des Bildes im VideoWindow
procedure TCapSource.StartCapture(Lbindex:integer; VideoWindow:TVideoWindow);
var index:integer;
    vw:tvideowindow;
begin
  //Klassen instanziieren
  Filtergraph:=TFiltergraph.Create(VideoWindow);
  Filter:=TFilter.Create(VideoWindow);
  SampleGrabber:=TSampleGrabber.Create(VideoWindow);

  try

  VideoWindow.FilterGraph:=Filtergraph;
  SampleGrabber.FilterGraph:=Filtergraph;
  Filter.FilterGraph:=Filtergraph;

  Filtergraph.ClearGraph;
  Filtergraph.Active:=False;
  Filter.BaseFilter.Moniker := Capenum.GetMoniker(Lbindex);
  Filtergraph.GraphEdit := true;
  Filtergraph.Mode := gmCapture;
  FilterGraph.Active := True;

  with Filtergraph as ICaptureGraphBuilder2 do
   RenderStream (@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter,
   SampleGrabber as IBaseFilter, VideoWindow as IBaseFilter);

  FilterGraph.Play;

  except

   Filtergraph.Stop;

   FreeandNil(Filtergraph);
   FreeandNil(Filter);
   FreeandNil(Samplegrabber);

   index:=lbindex;
   vw:=videowindow;
   capsource.StartCapture(index, vw);
 
  end;
end;
ich stoppe in dem except block auch erst mal den Filtergraph. Mit dem prüfen ob die Objekte scho existieren bin ich noch nicht klar gekommen.

Luckie 11. Dez 2003 23:46

Re: Filteranschlüsse nicht verbunden.
 
Und wenn keine Exception auftritt, werden die Objekte nicht freigegeben!!! :warn: Warum machst du es nicht so, wie man es normalerweise macht?

FreeAndNil ist auch in der Unit System drin. Desweiteren sollte man ein Obejkt auch immer mit Assigned testen. Auf Nil prüfen geht auch, aber wenn man Assigned benutzt wird klar, dass man das Objekt prüft und nicht etwa das Ergebnis eine Funktionsaufrufes oder so.

chris_82 11. Dez 2003 23:58

Re: Filteranschlüsse nicht verbunden.
 
Ja stimmt, sie sollten sonst auch freigegeben werden :pale:

warum ich es nicht so mache wie sonst auch?

mh, ist erst mein Zweites etwas größeres Delphiprojekt, bei dem ich eigene Klassen anlege und freigebe, davor hab ich es immer nur mit den vorgefertigten Komponenten versucht, die ich einfach reingezogen habe und fertig, und das waren auch sehr simple Probleme :cry:

So, jetzt bin ich aber erst mal reif für´s Bett, werd im Schaf mal drüber nachdenken :cat:

Aber ich werd mich anstrengen irgendwann vielleicht mal ähnlich viel Ahnung von Delphi zu haben....aber dafür benötige ich eure Hilfe...

schon mal DANKE an das DP-Team :dp: :dp: :dp:

chris_82 12. Dez 2003 07:19

Re: Filteranschlüsse nicht verbunden.
 
So jetzt funzt es erst mal :)

Dank der Hilfe des großen Neo´s......und natürlich euch.

Delphi-Quellcode:
if Assigned(Filtergraph) then
  begin
      Filtergraph.Stop;
      Filtergraph.Free;
      Filtergraph := nil;
  end;

  if Assigned(Filter) then
  begin
      Filter.Free;
      Filter := nil;
  end;

  if Assigned(SampleGrabber) then
  begin
      SampleGrabber.Free;
      SampleGrabber := nil;
  end;
jedenfalls wenn ich auf ein Device klicke, welches frei ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 Uhr.
Seite 2 von 2     12   

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