Compartilhar via


Instalação e registro do codificador

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

  • Componentes adicionais de captura de streaming de kernel

  • Qual interface COM KsProxy deve expor

  • Valores de metadados que descrevem os recursos do filtro de codificador

  • Categoria de streaming de kernel do filtro

Componentes adicionais de captura de streaming de kernel

O arquivo INF usado para instalar o driver de um dispositivo codificador deve referenciar 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 interface COM 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 pela propriedade de suporte que você implementou no filtro do codificador:

Interface 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 com a geração mais antiga de suporte ao codificador fornecida pela Microsoft). Os clientes devem derivar essa interface 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 que não são de codificação de vídeo, como codificadores somente áudio).

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

CLSID_IVideoEncoderCodecAPIProxy

Especifique esse GUID para fazer com que o 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 o KsProxy exponha apenas a interface COM IVideoEncoder (CLSID_IVideoEncoderProxy).

Essas interfaces COM sã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 de codificador

Você pode especificar valores de metadados na área Parâmetros do Dispositivo\Funcionalidades 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-12334-12345678abcd} = guid1" na área Parâmetros do Dispositivo\Funcionalidades das configurações do registro do codificador. A linha vazia será necessária para criar a chave do Registro se ela ainda não existir.

Um filtro de 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 indicam que eles são compatíveis com o Windows XP Media Center Edition.

Categoria de streaming de kernel do filtro

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

Os filtros indicam suas respectivas 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 de kernel Nome Descrição

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

KSCATEGORY_ENCODER

Especifique este GUID para filtros de codificador.

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

KSCATEGORY_MULTIPLEXER

Especifique este GUID para filtros mux.

Para registrar um filtro de codificador, especifique o GUID KSCATEGORY_ENCODER na DDInstall do driver. Interface Seção de arquivo INF. 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"

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