Compartir a través de


Implementación y soporte técnico del codificador

En Windows XP Service Pack 1, Microsoft definió tres conjuntos de propiedades de streaming de kernel y una enumeración en ksmedia.h para admitir dispositivos codificadores de solo vídeo. Cada conjunto de propiedades contiene una sola propiedad. En otras palabras, cada propiedad recibe su propio conjunto de propiedades. Si el controlador realiza llamadas get-property o Set-property, especifique el GUID del conjunto de propiedades (tal como se define en ksmedia.h) en el miembro Set de la estructura KSPROPERTY y cero en el miembro Id al configurar la llamada:

Conjunto de propiedades Descripción
ENCAPIPARAM_BITRATE

Implemente esta propiedad establecida para especificar las velocidades de bits de codificación admitidas por el dispositivo codificador. Consulte Ejemplos de código del codificador para obtener más detalles.

ENCAPIPARAM_BITRATE_MODE

Implemente este conjunto de propiedades para especificar los modos de codificación admitidos por el dispositivo. Este conjunto de propiedades usa la enumeración VIDEOENCODER_BITRATE_MODE para especificar los modos admitidos. Consulte Ejemplos de código del codificador para obtener más detalles.

ENCAPIPARAM_PEAK_BITRATE

Implemente esta propiedad establecida para especificar la velocidad de bits de codificación máxima del dispositivo.

Los clientes acceden a estas propiedades derivando la interfaz COM de IVideoEncoder desde la interfaz COM de IEncoderAPI (descrita en la documentación del Kit de desarrollo de software (SDK) de Windows).

Un minidriver debe especificar valores predeterminados para cada una de las propiedades ENCAPIPARAM_Xxx . En el tema Ejemplos de código del codificador se muestra cómo especificar valores de propiedad predeterminados. Durante el desarrollo y la depuración de un filtro de codificador, la página de propiedades actual se puede desencadenar desde un minidriver que admita el conjunto de propiedades ENCAPIPARAM_BITRATE.

En DirectX 9.0, se definieron seis conjuntos de propiedades adicionales y un conjunto de eventos en ksmedia.h para proporcionar una mejor compatibilidad con una variedad más amplia de codificadores, incluidos codificadores de solo audio. Al igual que con las propiedades ENCAPIPARAM_Xxx , cada propiedad recibe su propio conjunto de propiedades:

Conjunto de propiedades Descripción
CODECAPI_VIDEO_ENCODER

Si el dispositivo admite la codificación de secuencias de vídeo (incluido audio auxiliar, como audio de TV), implemente la compatibilidad con este conjunto de propiedades.

CODECAPI_AUDIO_ENCODER

Si el dispositivo es un codificador de solo audio, implemente la compatibilidad con este conjunto de propiedades en lugar de CODECAPI_VIDEO_ENCODER.

CODECAPI_SETALLDEFAULTS

Implemente esta propiedad establecida para restablecer toda la configuración interna del dispositivo codificador, como la velocidad de bits de codificación y el modo de codificación en sus valores predeterminados.

CODECAPI_ALLSETTINGS

Implemente esta propiedad establecida para comunicar la configuración actual del dispositivo codificador. Este conjunto de propiedades se usa para la comunicación hacia y desde los clientes.

CODECAPI_SUPPORTSEVENTS

Si el dispositivo admite eventos del modo de usuario, como para cambiar el modo de codificación, la velocidad de bits u otra configuración, implemente este conjunto de propiedades. Si implementa este conjunto de propiedades, también debe implementar la compatibilidad con el evento CODECAPI_CHANGELISTS.

CODECAPI_CURRENTCHANGELIST

Implemente este conjunto de propiedades para determinar qué parámetros de codificador se cambiaron en una llamada anterior para establecer una o varias propiedades del codificador.

Conjunto de eventos Descripción

CODECAPI_CHANGELISTS

Si el dispositivo admite la respuesta a eventos en modo de usuario a través del conjunto de propiedades CODECAPI_SUPPORTSEVENTS, implemente este conjunto de eventos para devolver una lista de la configuración del codificador que ha cambiado como resultado de la llamada a set-property anterior de un cliente a CODECAPI_SETALLDEFAULTS o CODECAPI_ALLSETTINGS.

Los clientes acceden a estas propiedades a través de la interfaz COM de ICodecAPI (que se describe en la documentación de Windows SDK). Consulte Instalación y registro del codificador para obtener más información sobre las interfaces COM, incluido cómo especificar qué interfaz debe exponer KsProxy.

Un minidriver debe implementar compatibilidad con consultas básicas de get-property. En el tema Ejemplos de código del codificador se muestra cómo admitir consultas get-property.

Al desarrollar un filtro de codificador, mueva la funcionalidad de codificación a un filtro independiente de un filtro de captura de vídeo. Defina sus propios medios privados para que los generadores de grafos puedan conectar correctamente el codificador y los filtros de captura. Si el hardware es capaz de dominar contenido no codificado en bus, también puede exponer medios públicos. Si implementa medios públicos y privados, enumere primero los medios privados porque reduce el tiempo de creación del grafo; para buscar el filtro correcto al compilar un gráfico de filtros.

Para obtener más información sobre el uso de medios y varias instancias de un filtro (en gráficos de filtros independientes), vea Mediums and Categories.