Da dies die Antwort ich besteht zunächst, dass mehrere Abhilfen angeben läßt von Hacks zu teuerer Entwicklung bis hin
- (Hack) nimmt alte mfcore.dll von Original-Windows 10, Delay Verbindung mit ihm und Kraftbelastung Ihre lokale Kopie - das ist Hack, versuchen Sie es nicht zu Hause, versenden Sie es nicht.
- Verwenden Sie schlecht dokumentierte ksproxy.ax oder es ist ein moderner Ersatz mfkproxy, um Ihre eigene Schicht zu implementieren, um mit den Kameras zu sprechen.
- Schalter Kameras WinUSB und verwenden libusb/libuvc (Code nicht, dass hohe Leistung und nicht die auf Windows reifen) und Ihre eigene Kamera-Schnittstelle implementieren
nun auf die richtige Gestaltung von „Frame-Server“:
Wir haben auch Frame-Server in unserem zSpace-System-Design, das dekomprimierte Bilder, komprimierte Kameras Feed (vier von ihnen mit fast 1Gpixel pro Sekunde insgesamt), Blob-Erkennung Informationen und 3D-Posen Triangulation Ergebnisse an mehrere Clients (Anwendungen einschließlich Remote) an die selbe Zeit. Ganze Sache mit Shared Memory und/oder Sockets ist nur ein paar hundert Zeilen geraden C-Code. Ich habe es implementiert und es funktioniert auf Windows und Linux.
Der Mangel an der Microsoft "Verbesserung" liegt in Ignoranz auf die Bedürfnisse des Kunden und ich glaube, es ist einfach zu beheben.
Für das Argument nehmen wir Kamera Streams komprimiertes Format (könnte MJPG/H.26x/HEVC/etwas Neues und Besseres).
Lassen Sie sagen es mehrere mögliche Klassen von Kunden sind: (? Wollen wir Umcodierung dort)
- Client, der die rohen komprimierten Daten an das Netzwerk für Remote-Hosts-Streams.
- Client, der die unverarbeiteten komprimierten Daten im lokalen oder remoten persistenten Speicher (Festplatte, SSD) speichert. (Wollen wir dort transkodieren?)
- Client, der rohe komprimierte Datenstromanalyse (von trivial bis komplex) durchführt, aber keine Pixel benötigt?
- Client, der komprimierte Daten tatsächlich verarbeitet und stromaufwärts weiterleitet - denken Sie daran, dass Sie z. JPEG ohne vollständige Dekompression.
- Client, der die unkomprimierten Daten im HSI-Format benötigt.
- Client, der unkomprimierte Daten im RGB-Format benötigt, wobei einige Filter (z. B. Gamma, Farbprofil) während der Dekomprimierung angewendet werden.
Genug? Heute erhalten sie alle NV12 (was tatsächlich einen noch größeren Datenverlust in Bezug auf eine halbe Bandbreite von U (Cb) - und V (Cr) -Proben darstellt).
Nun, da Microsoft Frame Server implementiert, müssen sie die Daten auf die eine oder andere Weise und sogar auf mehrere Arten dekomprimieren. Dazu müssen die unkomprimierten Daten im Speicher landen und können dort (bedingt) aufbewahrt werden, falls ein Client davon profitieren könnte. Das anfängliche Design des Medien-Graphen erlaubt Splittern und jeder, der ein wenig Programmierkenntnisse besitzt, kann einen bedingten Splitter implementieren, der nur Daten an die Pins weiterleitet, an denen Clients (Senken) angeschlossen sind.
Eigentlich sollte die korrekte Implementierung Kundenanforderungen berücksichtigen (und diese Information ist bereits vorhanden und von allen Clients in einer Art von Medientypverhandlungen und Attributen verfügbar, die das Diagrammverhalten steuern). Dann sollte es Dekompressoren und andere Filter nur bei Bedarf anwenden, wobei es genau auf die CPU-Cache-Lokalität achtet und die angeforderten Daten an geeignete Clients von geeignetem Speicher durch geeignete Mechanismen liefert. Es wird alle Arten von Optimierungen in den möglichen Permutationen der Mischung des oben erwähnten Klienten und darüber hinaus erlauben.
Wenn Microsoft Hilfe beim Entwerfen und Implementieren des Frame-Servers benötigt, der diese einfachen (wenn nicht gar trivialen) Anforderungen erfüllt - es muss nur gefragt werden - anstatt die große Klasse von Anwendungen und Diensten zu sprengen.
Ich frage mich, wie Microsoft Netzwerk-Strom Hollolens Eingang plant? Über NV12? Oder über einen weiteren Hack?
"Entwickler, Entwickler, Entwickler ..." :(
Windows-Update selbst ist falsch. Siehe auch gleiche [Q auf MSDN Foren] (https://social.msdn.microsoft.com/Forums/windowsdesktop/de-DE/cdac5a0c-dfb4-4928-9ca9-2a63ec1496de/directshow-mjpeg-frame-type-in-usb-kameras-ist-nicht-arbeiten-nach-windows-10-jubiläum-update-1607? forum = windowsdirectshowdevelopment –
Ich weiß - ich hatte es für einige Monate als frühe Entwickler.Hilft aber nicht.Ich brauche eine Abhilfe: – Leo
Hier ist der Code, der es zeigt (msvc2012 Kommandozeile) https://github.com/leok7v/ uvc_mjpg_win10 – Leo