API de codificador
[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEnginey captura de audio y vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y captura de audio y vídeo en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
La API encoder proporciona una interfaz uniforme para configurar codificadores de software y hardware. Las aplicaciones pueden usar la API encoder para configurar un codificador y almacenar las opciones de configuración. Los proveedores de codificadores pueden usar la API de codificador para exponer las funcionalidades de un codificador. Aunque la API de codificador está diseñada principalmente para codificadores, es lo suficientemente general como para que los descodificadores también lo admitan.
La API del codificador se expone a las aplicaciones a través de la interfazICodecAPI, que expone el filtro del codificador. El filtro del codificador puede ser un filtro directShow nativo, un codificador de hardware o un objeto multimedia de DirectX (DMO).
- Filtros de software: un codificador que se implementa como filtro directShow nativo debe exponer directamente el ICodecAPI.
- Codificadores de hardware: el dispositivo de codificación se expone a través de uno o varios minidrives AVStream, que se representan en modo de usuario mediante KSProxy. KSProxy traduce llamadas de método ICodecAPI a conjuntos de propiedades KS. Para obtener más información, consulte la documentación de DDK.
- DMO debe exponer la interfazICodecAPI. DirectShow las aplicaciones pueden consultar el filtro contenedor DMO, que expone la interfaz agregando el DMO. Las aplicaciones no basadas en DirectShow pueden consultar directamente el DMO.
Capabilties del codificador
Un codificador puede registrar una lista de funcionalidades de alto nivel almacenándolas en el registro del sistema. Cada funcionalidad se identifica mediante un GUID. Para enumerar las funcionalidades de un codificador determinado, haga lo siguiente:
- Cree el moniker que representa el filtro del codificador. (Consulte Uso del enumerador de dispositivos del sistema).
- Consulte el moniker de filtro para la interfaz de IGetCapabilitiesKey.
- Llame a IGetCapabilitiesKey::GetCapabilitiesKey. El método devuelve un identificador a la clave del Registro que contiene la lista de funcionalidades del filtro.
- Llame a la función RegEnumValue para enumerar los valores de la clave devuelta.
Si va a inclinar un codificador, cree las entradas del Registro para las funcionalidades cuando se registre el filtro. En el caso de los filtros de software, cree una clave denominada Capabilities adyacente a la FilterData de y las claves de FriendlyName. Normalmente, agregaría esta información después de llamar a AMovieDllRegisterServer2 para registrar los datos de filtro estándar. Para obtener más información, vea Cómo registrar filtros directShow. Como alternativa, puede crear una clave CapabilitiesLocation que contiene una cadena que proporciona la ubicación de la Capabilities clave en el Registro. La cadena debe comenzar con "HKLM\", "HKCR\" o "HKCU\" para indicar el subárbol del Registro. En el caso de los dispositivos Plug and Play, los archivos de configuración del controlador deben crear una clave de Capabilities adyacente a la clave FriendlyName del filtro, o bien puede usar una clave CapabilitiesLocation tal como se describe para los filtros de software.
Una vez que haya creado la clave de Capabilities, cree un valor para cada GUID de funcionalidad. El nombre del valor debe ser la forma de cadena del GUID, con el formato {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
. Cada tipo de valor debe ser uno de los siguientes:
- Valor numérico único. Use un valor DWORD.
- GUID. Use el formato de cadena del GUID.
- Pares numéricos. Use una cadena con el formato "a,b" para representar pares de valores, como ancho y alto, o numerador y denominador para fracciones.
- Matrices de valores. Use cadenas múltiples (REG_SZ_MULTI) para representar más de un valor.
En el ejemplo siguiente se muestra el diseño del Registro para un filtro de software:
\HKCR\CLSID\Filter Category\Instance\Filter CLSID\Capabilities\
Values:
guid1: 1234 (REG_DWORD)
guid2: "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" (REG_SZ)
guid3: "2","4","6" (REG_SZ_MULTI)
guid4: "720,480" (REG_SZ)
Perfiles de codificador
Un perfil de codificador es una lista fija de opciones de configuración que se pueden aplicar a un codificador en tiempo de ejecución. Los perfiles son independientes del codificador; Una aplicación puede seleccionar un codificador y, a continuación, seleccionar un perfil y aplicar la configuración del perfil al codificador. Los perfiles se identifican mediante GUID y deben almacenarse en la siguiente ubicación del Registro:
\HKLM\Software\Microsoft\EncoderProfiles\Profile GUID\
donde guid de perfil de
es la forma de cadena del GUID que identifica el perfil. Cree valores para cada configuración. Cree también un valor de cadena denominado "FriendlyName" cuyos datos identifican el perfil (como "LowBandwidthVideo").
Temas relacionados