ICaptureGraphBuilder2::RenderStream zerlegen?



  • Ich hole mir von einer Videoquelle(USB Framegrabber) zyklisch ein Bild, laeuft auch schon Monate(eher Jahre) sehr stabil in verschiedenen Applikationen, jetzt ist mir aber aufgefallen das RenderStream einen E_FAIL liefert wenn ich die Videoquelle anschliesse aber erst verspaetet einschalte - leider kann ich mit dem Fehler nicht so viel Anfangen.
    Ich habe nicht so viel Erfahrung mit dieser (DirectShow) Schnittstelle (soll nur den Fehler in der Komponenten finden) und habe gelesen das RenderStream eine Helper-Funktion ist die man auch selbst mit ::Connect und dem NUll-Renderer zusammen bauen kann, und dann vielleicht bessere Fehlermeldungen bekommt

    const GUID* category = &PIN_CATEGORY_CAPTURE;
    const GUID* type = &MEDIATYPE_Video;
    IUnknown* source = base_filter;
    IBaseFilter* intermediate = sample_grabber_filter;
    IBaseFilter* sink = renderer_filter;
    
    hr = _objs->capture_graph_builder2->RenderStream(category, type, source, intermediate, sink);
    

    kann mir jemand grob (oder auch fein) aufzeigen wie ich die RenderStream Methode hier ersetzen koennte? Oder welche Pruefungen ich noch vor dem RenderStream aufruf einbauen koennte um Probleme im Vorfeld zu erkennen



  • so jetzt kann ich schon mal einen Filtergraph in eine Datei speichern und wieder laden

    Logausgaben mit IGraphBuilder::SetLogFile vorbereiten

    und damit kann ich wohl auch verstehen wie das "manuelle" zusammenstecken funktioniert
    http://www.flipcode.com/archives/DirectShow_For_Media_Playback_In_Windows-Part_III_Customizing_Graphs.shtml