Partilhar via


Instalação e Registo do Codificador

O arquivo INF para um driver com um filtro de codificador deve conter entradas que definam o seguinte:

  • Componentes adicionais de captura de streaming do kernel

  • Que interface COM deve o KsProxy expor

  • Valores de metadados que descrevem os recursos do filtro codificador

  • A categoria de streaming do núcleo do filtro

Componentes adicionais de captura de streaming do kernel

O arquivo INF usado para instalar o driver para um dispositivo codificador deve fazer referência a ks.inf e kscaptur.inf em sua seção [DefaultInstall] como drivers de captura porque esses arquivos adicionam suporte necessário para componentes do codificador. Por exemplo:

[DefaultInstall]
include=ks.inf,kscaptur.inf
needs=[Your driver's DDInstall section],KS.Registration,KSCAPTUR.Registration.NT

Qual a interface COM que o KsProxy deve expor

Na seção AddReg do arquivo INF do driver, especifique um dos três GUIDs a seguir para indicar a interface COM que o plug-in KsProxy (encapi.dll) deve expor aos clientes. A interface COM é determinada pelo suporte de propriedade que você implementou no filtro do codificador:

Interface Identificador Global Único (GUID) Nome Descrição

{B43C4EEC-8C32-4791-9102-508ADA5EE8E7}

CLSID_IVideoEncoderProxy

Especifique esse GUID para fazer com que o KsProxy exponha a interface COM IVideoEncoder (para compatibilidade com versões anteriores da geração mais antiga de suporte ao codificador fornecido pela Microsoft). Os clientes devem derivar esta interface a partir da interface COM IEncoderAPI.

{7FF0997A-1999-4286-A73C-622B8814E7EB}

CLSID_ICodecAPIProxy

Especifique esse GUID para fazer com que o KsProxy exponha a interface COM ICodecAPI (para dispositivos de codificação que não sejam de vídeo, como codificadores somente de áudio).

{B05DABD9-56E5-4FDC-AFA4-8A47E91F1C9C}

CLSID_IVideoEncoderCodecAPIProxy

Especifique esse GUID para fazer com que KsProxy exponha as interfaces IVideoEncoder e ICodecAPI COM (para compatibilidade com versões anteriores e futuras).

Por exemplo:

[Your driver's AddReg section]
HKR,Interfaces\{B43C4EEC-8C32-4791-9102-508ADA5EE8E7},,,

Isso faria com que KsProxy exponha apenas a interface COM IVideoEncoder (CLSID_IVideoEncoderProxy).

Essas interfaces COM estão documentadas na seção DirectShow dos SDKs do DirectX 9 e do Windows para Windows XP com SP1 e posterior.

Valores de metadados que anunciam os recursos do filtro do codificador

Você pode especificar valores de metadados na área Device Parameters\Capabilities do Registro no arquivo INF do codificador. Os aplicativos podem usar esses valores de metadados para determinar qual funcionalidade implementar ou expor ao usuário.

Por exemplo:

[Your driver's AddReg section]
HKR,Capabilities,,,
HKR,Capabilities,"{12345678-1234-1234-1234-12345678abcd}",,guid1

Isso criaria um item de metadados "{12345678-1234-1234-1234-12345678abcd} = guid1" na área Device Parameters\Capabilities das configurações de registro do codificador. A linha vazia é necessária para criar a chave do Registro se ela ainda não existir.

Um filtro codificador pode especificar esses metadados estáticos em seu arquivo INF para uso por aplicativos. Por exemplo, o Windows XP Media Center Edition verifica se há codificadores que indiquem que eles são compatíveis com o Windows XP Media Center Edition.

Categoria de Streaming do Kernel do Filtro

Os filtros de streaming do kernel devem especificar a categoria de streaming do kernel à qual pertencem. A Microsoft definiu GUIDs para categorias comuns, incluindo filtros de codificador e filtros de multiplexagem (mux).

Os filtros indicam suas respetivas categorias especificando um ou mais dos seguintes GUIDs em uma diretiva AddInterface da seção do filtro do arquivo INF do minidriver:

GUID da categoria de streaming do kernel Nome Descrição

{19689BF6-C384-48FD-AD51-90E58C79F70B}

KSCATEGORY_ENCODER

Especifique este GUID para filtros de codificador.

{7A5DE1D3-01A1-452C-B481-4FA2B96271E8}

KSCATEGORY_MULTIPLEXADOR

Especifique este GUID para filtros mux.

Para registrar um filtro de codificador, especifique o GUID KSCATEGORY_ENCODER na secção DDInstall.Interface do ficheiro INF do driver. Por exemplo:

[Your Driver's DDInstall.Interface section]
AddInterface=%KSCATEGORY_ENCODER%,%KSNAME_Filter%,MyEncoderDevice.AddInterface

[MyEncoderDevice.AddInterface]
AddReg=MyEncoderDevice.AddReg

[MyEncoderDevice.AddReg]
HKR,,CLSID,,%KSProxy.CLSID%
HKR,,FriendlyName,,%MyEncoderDeviceFriendlyName%

[Strings]
KSCATEGORY_ENCODER="{19689BF6-C384-48FD-AD51-90E58C79F70B}"
KSNAME_Filter="{9B365890-165F-11D0-A195-0020AFD156E4}"
KSProxy.CLSID="17CCA71B-ECD7-11D0-B908-00A0C9223196"
MyEncoderDeviceFriendlyName="My Encoder Device"

Observação: O GUID especificado para KSNAME_Filter deve corresponder ao membro ReferenceGuid especificado na estrutura KSFILTER_DESCRIPTOR que descreve o filtro.