Ich entwickle USB-Kamera Streaming-Desktop-Anwendung mit MediaFoundation SourceReader-Technik. Die Kamera verfügt über USB3.0-Unterstützung und bietet 60 fps für 1080p MJPG-Videoformat-Auflösung.Verwendung von Intel Hardware MJPEG Decoder MFT in MediaFoundation SourceReader für Windows Desktop-Anwendung?
Ich habe Software MJPEG Decoder MFT verwendet, um MJPG in YUY2-Frames zu konvertieren und dann in den RGB32-Frame konvertiert, um auf das Fenster zu zeichnen. Anstelle von 60 fps kann ich mit diesem Software-Decoder nur 30 fps im Fenster rendern. Ich habe eine Frage auf dieser Seite gestellt und einen Vorschlag bekommen, Intel Hardware MJPEG Decoder MFT zu benutzen, um Rahmentropfenprobleme zu lösen.
Ich habe einen Fehler 0xC00D36B5 konfrontiert - MF_E_NOTACCEPTING wenn IMFTransform Aufruf :: Process() Methode. Um diesen Fehler zu beheben, schlug MSDN vor, die IMFTranform-Schnittstelle asynchron zu verwenden. Also habe ich IMFMediaEventGenerator Schnittstelle zu GetEvent für jedes In/Out-Beispiel verwendet. Erfolgreich, ich kann nur ein Eingabe Beispiel verarbeiten und dann kontinuierlich IMFMediaEventGenerator :: GetEvent() -Methoden gibt MF_E_NO_EVENTS_AVAILABLE Fehler (GetEvent() ist synchron).
Ich habe versucht, einen asynchronen Rückruf für SourceReader sowie IMFTransform zu konfigurieren aber MFAsyncCallback :: Invoke Methode aufruft, nicht, daher GetEvent Methode zu verwenden, die ich geplant.
Fehle ich irgendetwas? Wenn ja, jemand leitet mich, Intel Hardware Decoder in meinem Projekt zu verwenden?
Haben Sie versucht, zuerst eine Topologie in Topoedit zu erstellen? – Mgetz
Vielen Dank für Ihre Antwort, Mgetz. Die Kamera unterstützt sowohl YUY2 und MJPG Videoformat. Zunächst spielt die Kamera das YUY2-Videoformat und muss das MJPG-Format ändern. Ich weiß, wie man das Diagramm in DirectShow erstellt. Ich wusste nicht, wie ich vom YUY2- zum MJPEG-Videoformat wechseln konnte. Kannst du mir sagen, wie man eine Topologie für das MJPG-Format zusammenstellt? Außerdem habe ich diesen Decoder in MediaSession Topologie hinzugefügt, alles hat Erfolg und erhielt 0XC00D5212 (MF_E_TOPO_CODEC_NOT_FOUND) in dem Ereignis. – Abi
Daher die Empfehlung, das topoedit-Dienstprogramm zu verwenden, das mit dem SDK geliefert wird, um eine Topologie zu erstellen und zu testen, ob es funktioniert. Wenn Sie in Topoedit keine Topologie aufbauen können, ist das wahrscheinlich nicht möglich. – Mgetz