Vfw und Threads



  • Hi,

    ich hab mal wieder ein Problem.
    Ich möchte mir von der WebCam Bilder holen und anzeigen / speichern.

    Das ganze mache ich mit capCreateCaptureWindow(), capDriverConnect() und so weiter.
    Jetzt kann ich leider zur Vorschau anzeigen das HWND auf das gezeichnet wird nicht verwenden, da ich in einer DirectX Application bin und das ganze auf eine DirectX Texture bringen muss. Ist aber kein Problem.
    Ich setzte mit capSetCallbackOnFrame() eine callback Funktion und erzwinge das zeichnen mit capGrabFrameNoStop().

    Mein Problem ist folgendes. Das ganze läuft im Hauptthread der Applikation ab. Und der Aufruf von capGrabFrameNoStop ist sehr langsam... was sich negativ auf die Applikation auswirkt (Frames). Komischerweise, läuft alles flüssig sobald ich ein Video damit aufnehme. Dann wird die Callback Funktion (capSetCallbackOnVideoStream()) auch automatisch aufgerufen und nicht mehr von meinem Thread aus.
    Was ich jetzt versuche, ist das ganze capGrabFrameNoStop so um zu biegen das es in einem eigenen Thread läuft.
    Leider klappt das aber nicht... Es wird dann die Callback Funktion nicht aufgerufen. Soweit ich das jetzt verstanden hab, muss das im gleichen Thread laufen.

    Kennt sich jemand damit aus, oder weiß was ich da machen könnte?

    Sorry, für die vielleicht verwirrende Erklärung, ich hoffe es blick jemand... 😃



  • oder gibt es eine Möglichkeit die Ausgabedatei ins Nichts zu schreiben?

    Also unter Linux würde ich einfach nach /dev/null schreiben... und sobald ich ein Video aufnehmen möchte, dann das ganze stoppen und eine richtige Datei setzen. Beim Stop, wieder stoppen und /dev/null setzen...

    Allerdings ist mir so was unter Windows nicht bekannt...
    Oder kann man Vfw irgendwie dazu bringen, einfach nichts in die Datei zu schreiben, aber trotzdem das Video aufzunehmen?



  • Hat sich erledigt... ich mach das ganze jetzt mit VMR9.
    Wenn ich dazu Fragen hab, meld ich mich 😉


Anmelden zum Antworten