Compartir a través de


Negociación de tipo de medio en el codificador

En Microsoft Media Foundation, los codificadores se implementan como transformaciones (MFT) de Media Foundation con una entrada y una salida. Antes de una sesión de codificación, un codificador debe conocer las características de la secuencia que recibirá como entrada y el formato de la secuencia que generará como salida. Debe establecer los tipos de medios de entrada y salida y las características relacionadas antes de pasar los datos a través del codificador. Debe proporcionar los formatos de entrada y salida especificando los GUID de tipo de medio adecuados y establecer las características del flujo de salida estableciendo los atributos de tipo multimedia pertinentes en el tipo de medio de salida. Un codificador recién creado no tiene ningún tipo de medio establecido.

El tipo de medio de entrada es un formato sin comprimir, como audio PCM o vídeo RGB. Los tipos de formato que usa el codificador se limitan a los descritos por las estructuras VIDEOINFOHEADER y WAVEFORMATEX . Para obtener más información sobre estas estructuras, consulte la documentación de Windows SDK. Media Foundation proporciona funciones auxiliares para crear tipos de medios a partir de estructuras de formato. Por ejemplo, la función MFInitMediaTypeFromVideoInfoHeader inicializa un tipo de vídeo a partir de una estructura VIDEOINFOHEADER y la función MFInitMediaTypeFromWaveFormatEx inicializa un tipo de vídeo a partir de una estructura WAVEFORMATEX o WAVEFORMATEXTENSIBLE. Para obtener más información, vea Conversiones de tipos de medios. Debe establecer el tipo de medio de entrada en el codificador llamando a IMFTransform::SetInputType.

El tipo de medio de salida es el formato de compresión que se usa en la secuencia o archivo de origen final. Puede establecer el tipo de medio de salida disponible solo después de establecer el tipo de medio de entrada. Puede recuperar los tipos de salida admitidos llamando a IMFTransform::GetOutputAvailableType en un bucle hasta que el codificador devuelva MF_E_NO_MORE_TYPES. Incremente el índice de tipo con cada iteración. Cuando encuentre un tipo de medio adecuado, establezca el tipo de medio de salida llamando a IMFTransform::SetOutputType.

El factor determinante para elegir el tipo de medio de salida depende del tipo de codificación y de los requisitos de codificación. Por ejemplo, en el caso de las secuencias de audio codificadas en CBR, quiere buscar un tipo de medio que coincida con la entrada y tenga una velocidad de bits lo más cercana posible a un valor de destino.

Si desea usar un modo de codificación distinto de CBR, debe establecer el modo y, a continuación, enumerar los tipos de salida para ese modo, ya que el codificador cambia los tipos de salida admitidos en función del modo establecido. Las propiedades que controlan el modo de codificación se MFPKEY_VBRENABLED y MFPKEY_PASSESUSED. Por ejemplo, si enumera los tipos de salida para la codificación de calidad VBR, el tipo de medio depende del valor de calidad que decida usar. Para obtener información sobre cómo establecer estas propiedades, vea Propiedades de codificación.

Creación de instancias de un codificador MFT

Codificadores de Windows Media