Como inicializar um TFilter com uma fonte de captura de vídeo conhecida sem usar TSysDevEnum.GetMoniker?
-
12-12-2019 - |
Pergunta
É possível criar/inicializar um objeto TFilter com uma fonte de captura de vídeo conhecida sem usar TSysDevEnum.GetMoniker(...)?
O nome da fonte de captura de vídeo e outros detalhes já são conhecidos e podem ser obtidos pelo GraphEdit Filter Browser.A intenção é acelerar a inicialização do TFilter e anexá-lo ao FilterGraph programaticamente.
Solução
Não, você precisa fazer isso via apelido.Depende da classe COM real que suporta o filtro da fonte de vídeo, porém quase sempre não há um único CLSID
e é impossível instanciá-lo sem usar o apelido.
Se você tiver um nome de exibição de apelido, poderá usar MkParseDisplayName
para obter rapidamente o IMoniker ignorando a enumeração.Ou você pode enumerar e comparar o nome de exibição do moniker com aquele que você já possui.
Para selecionar um dispositivo de captura de áudio ou vídeo, use o enumerador do dispositivo do sistema, descrito no tópico usando o enumerador do dispositivo do sistema.O enumerador do dispositivo do sistema retorna uma coleção de apelidos de dispositivos, selecionados pela categoria de dispositivo.Um apelido é um objeto COM que contém informações sobre outro objeto.Os apelidos permitem que o aplicativo obtenha informações sobre um objeto sem realmente criar o objeto.