Instalación y registro del codificador
El archivo INF de un controlador con un filtro de codificador debe contener entradas que definan lo siguiente:
Componentes adicionales de captura de streaming de kernel
Qué interfaz COM KsProxy debe exponer
Valores de metadatos que describen las funcionalidades del filtro del codificador
Categoría de streaming de kernel del filtro
Componentes adicionales de captura de streaming de kernel
El archivo INF que se usa para instalar el controlador para un dispositivo codificador debe hacer referencia a ks.inf y kscaptur.inf en su sección [DefaultInstall] como controladores de captura, ya que estos archivos agregan compatibilidad necesaria para los componentes del codificador. Por ejemplo:
[DefaultInstall]
include=ks.inf,kscaptur.inf
needs=[Your driver's DDInstall section],KS.Registration,KSCAPTUR.Registration.NT
Qué interfaz COM KsProxy debe exponer
En la sección AddReg del archivo INF del controlador, especifique uno de los tres GUID siguientes para indicar la interfaz COM que el complemento KsProxy (encapi.dll) debe exponer a los clientes. La interfaz COM viene determinada por la compatibilidad con la propiedad que implementó en el filtro del codificador:
GUID de interfaz | Nombre | Descripción |
---|---|---|
{B43C4EEC-8C32-4791-9102-508ADA5EE8E7} |
CLSID_IVideoEncoderProxy |
Especifique este GUID para que KsProxy exponga la interfaz COM de IVideoEncoder (por compatibilidad con versiones anteriores con la generación anterior de compatibilidad con el codificador proporcionado por Microsoft). Los clientes deben derivar esta interfaz de la interfaz COM de IEncoderAPI . |
{7FF0997A-1999-4286-A73C-622B8814E7EB} |
CLSID_ICodecAPIProxy |
Especifique este GUID para que KsProxy exponga la interfaz COM de ICodecAPI (para dispositivos que no son de codificación de vídeo, como codificadores de solo audio). |
{B05DABD9-56E5-4FDC-AFA4-8A47E91F1C9C} |
CLSID_IVideoEncoderCodecAPIProxy |
Especifique este GUID para que KsProxy exponga las interfaces COM IVideoEncoder e ICodecAPI (para compatibilidad con versiones anteriores y posteriores). |
Por ejemplo:
[Your driver's AddReg section]
HKR,Interfaces\{B43C4EEC-8C32-4791-9102-508ADA5EE8E7},,,
Esto provocaría que KsProxy exponga solo la interfaz COM de IVideoEncoder (CLSID_IVideoEncoderProxy).
Estas interfaces COM se documentan en la sección DirectShow de los SDK de DirectX 9 y Windows para Windows XP con SP1 y versiones posteriores.
Valores de metadatos que anuncian las funcionalidades del filtro del codificador
Puede especificar valores de metadatos en el área Parámetros del dispositivo\Funcionalidades del registro en el archivo INF del codificador. Las aplicaciones pueden usar estos valores de metadatos para determinar qué funcionalidad implementar o exponer al usuario.
Por ejemplo:
[Your driver's AddReg section]
HKR,Capabilities,,,
HKR,Capabilities,"{12345678-1234-1234-1234-12345678abcd}",,guid1
Esto crearía un elemento de metadatos "{12345678-1234-1234-1234-12345678abcd} = guid1" en el área Parámetros del dispositivo\Funcionalidades de la configuración del Registro del codificador. La línea vacía es necesaria para crear la clave del Registro si aún no existe.
Un filtro de codificador puede especificar estos metadatos estáticos en su archivo INF para su uso por parte de las aplicaciones. Por ejemplo, Windows XP Media Center Edition comprueba si hay codificadores que indican que son compatibles con Windows XP Media Center Edition.
Categoría de streaming de kernel del filtro
Los filtros de streaming de kernel deben especificar la categoría de streaming del kernel a la que pertenecen. Microsoft define GUID para categorías comunes, incluidos los filtros de codificador y los filtros de multiplexador (mux).
Los filtros indican sus respectivas categorías especificando uno o varios de los siguientes GUID en una directiva AddInterface de la sección del filtro del archivo INF del minidriver:
GUID de categoría de streaming de kernel | Nombre | Descripción |
---|---|---|
{19689BF6-C384-48FD-AD51-90E58C79F70B} |
KSCATEGORY_ENCODER |
Especifique este GUID para los filtros de codificador. |
{7A5DE1D3-01A1-452C-B481-4FA2B96271E8} |
KSCATEGORY_MULTIPLEXER |
Especifique este GUID para los filtros mux. |
Para registrar un filtro de codificador, especifique el GUID de KSCATEGORY_ENCODER en el DDInstall del controlador. Interfaz Sección del archivo INF. Por ejemplo:
[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: El GUID especificado para KSNAME_Filter debe coincidir con el miembro ReferenceGuid que especificó en la estructura KSFILTER_DESCRIPTOR que describe el filtro.