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 USB Video Class (UVC). 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 di descrittori standard USB e vengono usati dai dispositivi USB per restituire proprietà specifiche del dispositivo Windows non abilitate tramite specifiche standard.
Informazioni generali
Lo stack di Acquisizione fotocamera Microsoft è costituito da un framework legacy chiamato DirectShow e un framework moderno chiamato Multimedia Foundation. IHV e OEM hanno dovuto scrivere componenti per i dispositivi per soddisfare entrambe le pipeline.
DShow Bridge è stato scritto con lo scopo di colmare la pipeline DShow con la piattaforma Media Foundation. Ciò abilita i veri driver universali in modo che IHV 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, 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:
Optare per o contro il bridge DShow: il dispositivo può scegliere di utilizzare o meno il bridge in favore di 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 ereditaria, in modalità di manutenzione, è in ritardo.
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 illustra la pipeline di acquisizione della fotocamera:
Gli OEM e gli IHV che confezionano dispositivi fotocamera USB possono usare la specifica del Descrittore di Funzionalità OS per le Proprietà Estese del bus USB per configurare il DShow Bridge, senza dover apportare modifiche ai 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 Bridge usando i descrittori del sistema operativo USB, il software host deve creare la chiave del Registro di sistema seguente per ogni interfaccia del dispositivo USB:
HKLM\SYSTEM\CurrentControlSet\Enum\USB\<DeviceVID&PID>\<DeviceInstance>\Device Parameters
DWORD: EnableDshowRedirection
Il EnableDshowRedirection valore del Registro di sistema è un valore della 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 – Esclusione volontaria 1 – Acconsentire esplicitamente |
0x00000002 | Abilitare la decodifica di 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
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 di proprietà personalizzate a lunghezza variabile, che seguono la sezione di intestazione
Sezione Header
La sezione dell'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 della proprietà estesa del sistema operativo |
8 | wCount | 2 | 0x0001 | Una proprietà personalizzata |
Sezione Custom Property (descrittore 1.0)
Il descrittore della proprietà estesa del dispositivo USB HID dispone di una sezione della proprietà personalizzata per creare la EnableDshowRedirection chiave del Registro di sistema DWORD.
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 utilizzare i set di descrittori di Microsoft 2.0 per fornire un singolo valore del Registro di sistema DWORD di EnableDshowRedirection che si applica alle versioni di Windows.
Sezione Custom Property (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 |
wLunghezzaNomeProprietà | 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