Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tópico fornece orientações de implementação para configurar o DShow Bridge para câmeras e dispositivos que estão em conformidade com a especificação USB Video Class (UVC). A plataforma utiliza os descritores de Sistema Operativo da Microsoft do padrão de barramento USB para configurar o DShow Bridge. Os Descritores do SO de Propriedades Estendidas são uma extensão dos descritores padrão USB e são usados por dispositivos USB para retornar propriedades de dispositivos específicos do Windows que não estão habilitadas por meio de especificações padrão.
Visão geral
A stack de Captura de Câmara da Microsoft é composta por um framework legado chamado DirectShow e um framework moderno chamado Media Foundation. IHVs e OEMs tiveram que escrever componentes para seus dispositivos para satisfazer ambos os pipelines.
O DShow Bridge foi escrito com a intenção de fazer a ponte entre o pipeline do DShow e a plataforma Media Foundation. Isso permite verdadeiros drivers universais para que IHVs e OEMs possam escrever drivers que podem ser executados com aplicativos MediaFoundation e DShow no Windows versão 1607 e posterior. Com a opção de inclusão do DShow Bridge habilitada, um aplicativo DShow e aplicativos de compartilhamento podem compartilhar o mesmo hardware de câmera simultaneamente.
IHVs e OEMs podem precisar de uma isenção das políticas que regem o pipeline DShow. Os parceiros podem ativar os seguintes recursos usando os descritores do sistema operacional:
Optar por entrar ou sair do DShow Bridge: O dispositivo pode optar por entrar ou sair do Bridge para um pipeline mais adequado às suas necessidades. O fluxo de trabalho moderno é mais bem documentado e utiliza os recursos adicionados ao OS ao longo de várias versões. O sistema legado, estando em modo de manutenção, está atrasado.
Descompressão MJPEG no FrameServer: FrameServer é um serviço de virtualização de um dispositivo de câmera. Isso permite que os Pins do dispositivo sejam compartilhados entre vários clientes. Arquiteturas com um descompactador Media Foundation otimizado podem usar esse recurso para decodificar MJPEG no FrameServer. Os formatos de mídia traduzidos não compactados (YUY2) são oferecidos para os vários aplicativos. O fluxo só é descompactado uma vez para vários clientes possíveis. Isso melhora o desempenho dos aplicativos. O diagrama a seguir mostra o fluxo de captura da câmera.
Os OEMs e IHVs que empacotam seus dispositivos de câmera USB podem usar a especificação Extended Properties OS Feature Descriptor do padrão de barramento USB para configurar o DShow Bridge sem recorrer a quaisquer alterações de arquivo INF para seu driver UVC.
Os descritores do SO permitem que os dispositivos definam propriedades de registo para dispositivos USB ou dispositivos compostos.
Para configurar o DShow Bridges usando os descritores do sistema operacional USB, o software host deve criar a seguinte chave do Registro para cada interface de dispositivo USB:
HKLM\SYSTEM\CurrentControlSet\Enum\USB\<DeviceVID&PID>\<DeviceInstance>\Device Parameters
DWORD: EnableDshowRedirection
O valor do Registro EnableDshowRedirection é um valor de máscara de bits que pode ser usado para configurar a Ponte DShow conforme descrito na tabela abaixo.
| Máscara de bits | Descrição | Observações |
|---|---|---|
| 0x00000001 | Opte pelo DShow Bridge | 0 – Opt-out 1 – Adesão |
| 0x00000002 | Habilite a decodificação MJPEG uma vez no FrameServer (veja a nota abaixo) | 0 – Tipo de mídia compactada MJPEG exposta (sem operação) 1 – Exponha os tipos de mídia não compactados traduzidos do MJPEG (YUY2) |
Observação
Permite a decodificação MJPEG uma vez no FrameServer e, em seguida, os formatos de mídia traduzidos não compactados (YUY2) são oferecidos a vários aplicativos. O fluxo só é descompactado uma vez para vários clientes possíveis. Isso melhora o desempenho dos aplicativos.
Layouts de exemplo
Seguem-se exemplos para as seguintes especificações:
Microsoft OS extended descriptors specification 1.0
Especificação dos descritores do Microsoft OS 2.0
Especificação das descrições de propriedades estendidas do Microsoft OS versão 1.0
O descritor de SO de propriedades estendidas tem dois componentes:
Uma seção de cabeçalho de comprimento fixo
Uma ou mais seções de propriedades personalizadas de comprimento variável, que seguem a seção de cabeçalho
Seção de cabeçalho
A seção header descreve todo o descritor de propriedades estendidas, incluindo o comprimento total e o número da versão.
| Compensação | Campo | Tamanho (bytes) | Valor | Descrição |
|---|---|---|---|---|
| 0 | dwComprimento | 4 | 0x0000004c | 76 decimais |
| 4 | bcdVersão | 2 | 0x0100 | Versão 1.0 |
| 6 | wÍndice | 2 | 0x005 | Descritor de SO de propriedade estendida |
| 8 | wContagem | 2 | 0x0001 | Uma propriedade personalizada |
Seção de propriedade personalizada (descritor 1.0)
O descritor de propriedade estendida de SO do dispositivo USB HID tem uma seção de propriedade personalizada para criar a chave de registro DWORD EnableDshowRedirection.
| Compensação | Campo | Tamanho (bytes) | Valor |
|---|---|---|---|
| 0 | dwSize | 4 | 0x00000042 (66 bytes para esta propriedade) |
| 4 | dwPropertyDataType | 4 | 0x00000004 (REG_DWORD_LITTLE_ENDIAN) |
| 8 | wPropertyNameLength | 2 | 0x0030 |
| 10 | bNome da propriedade | 48 | EnableDshowRedirection (cadeia de caracteres Unicode) |
| 58 | dwPropertyDataLength | 4 | 0x00000004 (Sizeof(DWORD)) |
| 62 | bPropertyData | 4 | 0x00000001 (dados DWORD) |
Especificação dos descritores do Microsoft OS 2.0
Este exemplo demonstra como os conjuntos de descritores do Microsoft 2.0 podem ser usados para fornecer um único valor do Registro DWORD de EnableDshowRedirection que se aplica às versões do Windows.
Seção de propriedade personalizada (descritor 2.0)
| Compensação | Campo | Tamanho (bytes) | Valor |
|---|---|---|---|
| 0 | wComprimento | 2 | Comprimento em bytes deste descritor |
| 4 | wDescriptorType | 2 | 0x00000004 (REG_DWORD_LITTLE_ENDIAN) |
| 8 | TipoDeDadosDaPropriedade | 2 | 0x0030 |
| wPropertyNameLength | 2 | ||
| 10 | Nome da propriedade | Variável | O comprimento do nome da propriedade |
| 58 | dwPropertyDataLength | 2 | Comprimento dos dados de propriedade |
| 62 | Dados de Propriedade | Variável | Dados da propriedade |
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)
}
Recursos
Descritores do sistema operacional Microsoft para dispositivos USB