Freigeben über


DShow Bridge-Implementierungsanleitung für UVC-Geräte

Dieses Thema enthält Implementierungsanleitungen zum Konfigurieren von DShow Bridge für Kameras und Geräte, die der USB Video Class (UVC)-Spezifikation entsprechen. Die Plattform verwendet Microsoft-Betriebssystemdeskriptoren aus dem USB-Busstandard, um DShow Bridge zu konfigurieren. Die Erweiterten Eigenschaften-Betriebssystemdeskriptoren sind eine Erweiterung von USB-Standarddeskriptoren und werden von USB-Geräten verwendet, um Windows-spezifische Geräteeigenschaften zurückzugeben, die nicht gemäß Standardspezifikationen aktiviert sind.

Überblick

Der Microsoft Camera Capture-Stapel besteht aus einem Legacyframeworkstapel namens DirectShow und einem modernen Framework namens Multimedia Foundation. IHVs und OEMs mussten Komponenten für ihre Geräte schreiben, um beide Pipelines zu erfüllen.

DShow Bridge wurde mit der Absicht geschrieben, die DShow-Pipeline mit der Media Foundation-Plattform zu überbrücken. Dies ermöglicht echte universelle Treiber, sodass IHVs und OEMs Treiber schreiben können, die mit MediaFoundation- und DShow-Anwendungen unter Windows Version 1607 und höher ausgeführt werden können. Wenn DShow Bridge-Opt-In aktiviert ist, können eine DShow-Anwendung und Freigabeanwendungen die gleiche Kamerahardware gleichzeitig gemeinsam nutzen.

IHVs und OEMs benötigen möglicherweise eine Ausnahme von den Richtlinien für die DShow-Pipeline. Partner können die folgenden Features mithilfe der Betriebssystemdeskriptoren aktivieren:

  • Ein- oder Abmelden von DShow Bridge: Das Gerät kann die Bridge für eine Pipeline aktivieren, die besser für seine Anforderungen geeignet ist. Die moderne Pipeline ist gründlicher dokumentiert und nutzt die Features, die dem Betriebssystem über die verschiedenen Releases hinzugefügt wurden. Die Legacypipeline, die sich im Wartungsmodus befindet, liegt hinterher.

  • MJPEG-Dekomprimierung in FrameServer: FrameServer ist ein Dienst, der ein Kameragerät virtualisiert. Dadurch können die Pins vom Gerät von mehreren Clients gemeinsam verwendet werden. Architekturen mit einem optimierten Media Foundation-Dekomprimierungsmodul können dieses Feature verwenden, um MJPEG in FrameServer zu decodieren. Die unkomprimierten übersetzten Medienformate (YUY2) werden den verschiedenen Anwendungen angeboten. Der Stream wird nur einmal für mehrere mögliche Clients dekomprimiert. Dies verbessert die Leistung von Anwendungen. Das folgende Diagramm zeigt die Kameraaufnahmepipeline:

Kameraaufnahmepipeline.

Die OEMs und IHVs, die ihre USB-Kamerageräte verpacken, können die Spezifikation für erweiterte Eigenschaften des USB-Bus-Betriebssystemfeaturedeskriptors verwenden, um DShow Bridge zu konfigurieren, ohne auf INF-Dateiänderungen für ihren UVC-Treiber zurückgreifen zu müssen.

Mit den Betriebssystemdeskriptoren können Geräte Registrierungseigenschaften für USB-Geräte oder zusammengesetzte Geräte definieren.

Zum Konfigurieren von DShow Bridges mithilfe der USB-Betriebssystemdeskriptoren sollte die Hostsoftware den folgenden Registrierungsschlüssel für jede USB-Geräteschnittstelle erstellen:

HKLM\SYSTEM\CurrentControlSet\Enum\USB\<DeviceVID&PID>\<DeviceInstance>\Device Parameters

DWORD: EnableDshowRedirection

Der Registrierungswert EnableDshowRedirection ist ein Bitmaskenwert, der zum Konfigurieren von DShow Bridge verwendet werden kann, wie in der folgenden Tabelle beschrieben.

Bitmaske BESCHREIBUNG Bemerkungen
0x00000001 Anmelden bei DShow Bridge 0 – Abmelden
1 – Opt-In
0x00000002 Aktivieren der MJPEG-Decodierung einmal in FrameServer (siehe Hinweis unten) 0 – MJPEG-komprimierter Medientyp verfügbar gemacht (kein Vorgang)
1 – Verfügbarmachen der übersetzten unkomprimierten Medientypen aus MJPEG (YUY2)

Hinweis

Aktiviert die MJPEG-Decodierung einmal in FrameServer, und dann werden die unkomprimierten übersetzten Medienformate (YUY2) für mehrere Anwendungen angeboten. Der Stream wird nur einmal für mehrere mögliche Clients dekomprimiert. Dies verbessert die Leistung von Anwendungen.

Beispiellayouts

Nachfolgend finden Sie Beispiele für die folgenden Spezifikationen:

  • Spezifikation 1.0 für erweiterte Microsoft-Betriebssystemdeskriptoren

  • Microsoft OS 2.0-Deskriptorenspezifikation

Microsoft OS Extended Property Descriptors Specification Version 1.0

Der Betriebssystemdeskriptor für erweiterte Eigenschaften verfügt über zwei Komponenten.

  • Kopfzeilenabschnitt mit fester Länge

  • Ein oder mehrere benutzerdefinierte Eigenschaftenabschnitte mit variabler Länge, die dem Headerabschnitt folgen

Headerabschnitt

Der Headerabschnitt beschreibt den gesamten Deskriptor für erweiterte Eigenschaften, einschließlich der Gesamtlänge und der Versionsnummer.

Offset Feld Größe (Byte) Wert BESCHREIBUNG
0 dwLength 4 0x0000004c 76 dezimal
4 bcdVersion 2 0x0100 Version 1.0
6 Windex 2 0x005 Betriebssystemdeskriptor für erweiterte Eigenschaften
8 wCount 2 0x0001 Eine benutzerdefinierte Eigenschaft

Abschnitt "Benutzerdefinierte Eigenschaft" (1.0-Deskriptor)

Der OS-Deskriptor der erweiterten Eigenschaft des USB-HID-Geräts verfügt über einen benutzerdefinierten Eigenschaftenabschnitt, um den DWORD-Registrierungsschlüssel EnableDshowRedirection zu erstellen.

Offset Feld Größe (Byte) Wert
0 dwSize 4 0x00000042 (66 Bytes für diese Eigenschaft)
4 dwPropertyDataType 4 0x00000004 (REG_DWORD_LITTLE_ENDIAN)
8 wPropertyNameLength 2 0x0030
10 bPropertyName 48 EnableDshowRedirection (Unicode-Zeichenfolge)
58 dwPropertyDataLength 4 0x00000004 (Sizeof(DWORD))
62 bPropertyData 4 0x00000001 (DWORD-Daten)

Microsoft OS 2.0-Deskriptorenspezifikation

In diesem Beispiel wird veranschaulicht, wie Microsoft 2.0-Deskriptorsätze verwendet werden können, um einen einzelnen DWORD-Registrierungswert von EnableDshowRedirection bereitzustellen, der für Windows-Versionen gilt.

Abschnitt "Benutzerdefinierte Eigenschaft" (2.0-Deskriptor)

Offset Feld Größe (Byte) Wert
0 wLength 2 Länge dieses Deskriptors in Bytes
4 wDescriptorType 2 0x00000004 (REG_DWORD_LITTLE_ENDIAN)
8 wPropertyDataType 2 0x0030
wPropertyNameLength 2
10 PropertyName Variable Die Länge des Eigenschaftsnamens
58 dwPropertyDataLength 2 Länge der Eigenschaftendaten
62 PropertyData Variable Eigenschaftendaten
UCHAR Example2\_MSOS20DescriptorSetForFutureWindows\[0x48\] =
{
    //
    // Microsoft OS 2.0 Descriptor Set Header
    //
    0x0A, 0x00,                 // wLength - 12 bytes
    0x00, 0x00,                 // MSOS20_SET_HEADER_DESCRIPTOR
    0x00, 0x00, 0x0?, 0x06,     // dwWindowsVersion – 0x06030000 for future Windows version
    0x4A, 0x00,                 // wTotalLength – 72 bytes

    //
    // Microsoft OS 2.0 Registry Value Feature Descriptor
    //
    0x3E, 0x00,                 // wLength - 62 bytes
    0x04, 0x00,                 // wDescriptorType – 5 for Registry Property
    0x04, 0x00,                 // wPropertyDataType - 4 for REG_DWORD
    0x30, 0x00,                 // wPropertyNameLength – 48 bytes
    0x45, 0x00, 0x6E, 0x00,     // Property Name - "EnableDshowRedirection"
    0x61, 0x00, 0x62, 0x00,
    0x6C, 0x00, 0x65, 0x00,
    0x44, 0x00, 0x73, 0x00,
    0x68, 0x00, 0x6F, 0x00,
    0x77, 0x00, 0x52, 0x00,
    0x65, 0x00, 0x64, 0x00,
    0x69, 0x00, 0x72, 0x00,
    0x65, 0x00, 0x63, 0x00,
    0x74, 0x00, 0x69, 0x00,
    0x6F, 0x00, 0x6E, 0x00,
    0x00, 0x00, 0x00, 0x00,
    0x04, 0x00,                 // wPropertyDataLength – 4 bytes
    0x00, 0x00, 0x00, 0x00      // PropertyData – 0x00000003 (DShow Bridge is enabled and MJPEG is decoded in FrameServer)
}

Ressourcen

Microsoft OS-Deskriptoren für USB-Geräte

Generischer übergeordneter USB-Treiber (Usbccgp.sys)

USB-Spezifikation