Condividi tramite


Linee guida per l'implementazione di DShow Bridge per i dispositivi UVC

Questo argomento fornisce indicazioni sull'implementazione per la configurazione di DShow Bridge per fotocamere e dispositivi conformi alla specifica UVC (USB Video Class). La piattaforma usa descrittori del sistema operativo Microsoft dallo standard del bus USB per configurare DShow Bridge. I descrittori del sistema operativo delle proprietà estese sono un'estensione dei descrittori standard USB e vengono usati dai dispositivi USB per restituire proprietà specifiche del dispositivo Windows non abilitate tramite specifiche standard.

Panoramica

Lo stack microsoft Camera Capture è costituito da uno stack di framework legacy denominato DirectShow e un framework moderno denominato Multimedia Foundation. Gli IHD e gli OEM hanno dovuto scrivere componenti per i dispositivi per soddisfare entrambe le pipeline.

DShow Bridge è stato scritto con l'intento di colmare la pipeline DShow con la piattaforma Media Foundation. Ciò abilita i veri driver universali in modo che IHD e OEM possano scrivere driver che possono essere eseguiti con MediaFoundation e DShow applicazioni in Windows versione 1607 e successive. Con il consenso esplicito di DShow Bridge abilitato, un'applicazione DShow e le applicazioni di condivisione possono condividere contemporaneamente lo stesso hardware della fotocamera.

Gli IHD e gli OEM potrebbero richiedere un'esenzione dai criteri che regolano la pipeline DShow. I partner possono abilitare le funzionalità seguenti usando i descrittori del sistema operativo:

  • Consenso esplicito o rifiuto esplicito di DShow Bridge: il dispositivo può acconsentire esplicitamente o rifiutare esplicitamente il bridge a una pipeline più adatta alle proprie esigenze. La pipeline moderna è più accuratamente documentata e usa le funzionalità aggiunte al sistema operativo in più versioni. La pipeline legacy, in modalità di manutenzione, ritarda.

  • Decompressione MJPEG in FrameServer: FrameServer è un servizio che virtualizza un dispositivo fotocamera. Ciò consente di condividere i pin dal dispositivo tra più client. Le architetture con un decompressore di Media Foundation ottimizzato possono usare questa funzionalità per decodificare MJPEG in FrameServer. I formati multimediali tradotti non compressi (YUY2) vengono offerti a più applicazioni. Il flusso viene decompresso una sola volta per più client possibili. Ciò migliora le prestazioni delle applicazioni. Il diagramma seguente mostra la pipeline di acquisizione della fotocamera:

pipeline di acquisizione della fotocamera.

Gli OEM e IHV che includono i dispositivi fotocamera USB possono usare la specifica del descrittore delle funzionalità del sistema operativo delle proprietà estese del bus USB per configurare DShow Bridge senza ricorrere ad alcuna modifica dei file INF per il driver UVC.

I descrittori del sistema operativo consentono ai dispositivi di definire le proprietà del Registro di sistema per dispositivi USB o dispositivi compositi.

Per configurare DShow Bridges usando i descrittori del sistema operativo USB, il software host deve creare la seguente chiave del Registro di sistema per ogni interfaccia del dispositivo USB:

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

DWORD: EnableDshowRedirection

Il valore del Registro di sistema EnableDshowRedirection è un valore di maschera di bit che può essere usato per configurare DShow Bridge come descritto nella tabella seguente.

Maschera di bit Descrizione Osservazioni
0x00000001 Acconsentire esplicitamente a DShow Bridge 0 – Rifiutare esplicitamente
1 – Acconsentire esplicitamente
0x00000002 Abilitare la decodifica MJPEG una sola volta in FrameServer (vedere la nota seguente) 0 : tipo di supporto compresso MJPEG esposto (nessuna operazione)
1 : esporre i tipi di supporti non compressi tradotti da MJPEG (YUY2)

Nota

Abilita la decodifica di MJPEG una volta in FrameServer e quindi i formati multimediali tradotti non compressi (YUY2) vengono offerti a più applicazioni. Il flusso viene decompresso una sola volta per più client possibili. Ciò migliora le prestazioni delle applicazioni.

Layout di esempio

Di seguito sono riportati esempi per le specifiche seguenti:

  • Specifica dei descrittori estesi del sistema operativo Microsoft 1.0

  • Specifica dei descrittori di Microsoft OS 2.0

Specifiche dei descrittori delle proprietà estese del sistema operativo Microsoft versione 1.0

Il descrittore del sistema operativo delle proprietà estese ha due componenti

  • Sezione intestazione a lunghezza fissa

  • Una o più sezioni delle proprietà personalizzate a lunghezza variabile, che segue la sezione dell'intestazione

Sezione di intestazione

La sezione intestazione descrive l'intero descrittore delle proprietà estese, inclusa la lunghezza totale e il numero di versione.

Offset Campo Dimensioni (byte) Valore Descrizione
0 dwLength 4 0x0000004c 76 decimali
4 bcdVersion 2 0x0100 Versione 1.0
6 Windex 2 0x005 Descrittore del sistema operativo della proprietà estesa
8 wCount 2 0x0001 Una proprietà personalizzata

Sezione Proprietà personalizzata (descrittore 1.0)

Il descrittore della proprietà estesa del dispositivo USB HID dispone di una sezione di proprietà personalizzata per creare la chiave del Registro di sistema DWORD EnableDshowRedirection .

Offset Campo Dimensioni (byte) Valore
0 dwSize 4 0x00000042 (66 byte per questa proprietà)
4 dwPropertyDataType 4 0x00000004 (REG_DWORD_LITTLE_ENDIAN)
8 wPropertyNameLength 2 0x0030
10 bPropertyName 48 EnableDshowRedirection (stringa Unicode)
58 dwPropertyDataLength 4 0x00000004 (Sizeof(DWORD))
62 bPropertyData 4 0x00000001 (dati DWORD)

Specifica dei descrittori di Microsoft OS 2.0

In questo esempio viene illustrato come usare i set di descrittori di Microsoft 2.0 per fornire un singolo valore del Registro di sistema DWORD di EnableDshowRedirection applicabile alle versioni di Windows.

Sezione Proprietà personalizzata (descrittore 2.0)

Offset Campo Dimensioni (byte) Valore
0 wLength 2 Lunghezza in byte di questo descrittore
4 wDescriptorType 2 0x00000004 (REG_DWORD_LITTLE_ENDIAN)
8 wPropertyDataType 2 0x0030
wPropertyNameLength 2
10 PropertyName Variabile Lunghezza del nome della proprietà
58 dwPropertyDataLength 2 Lunghezza dei dati delle proprietà
62 PropertyData Variabile Dati delle proprietà
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)
}

Risorse

Descrittori del sistema operativo Microsoft per dispositivi USB

Driver padre generico USB (Usbccgp.sys)

Specifica USB