Establecer propiedades en el objeto ContentInfo

Al crear un archivo ASF, el objeto ContentInfo debe conocer las características del contenido multimedia para que los distintos objetos de encabezado se rellenen con los valores correctos.

Los valores de configuración de contenido son valores de secuencia, que están contenidos en el perfil y especifican el identificador de flujo, el tipo de medio y los parámetros de cubo filtrados para el receptor multimedia. Después de establecer el perfil en el objeto ContentInfo llamando a IMFASFContentInfo::SetProfile, estos valores se reflejan en el objeto de encabezado ASF que se generó. Para obtener información sobre estas opciones, vea Creating and Configuring ASF Streams.

Configuración del objeto ContentInfo con la configuración del codificador

Los datos de audio o vídeo multimedia digitales son complejos y ocupan grandes cantidades de memoria. En la mayoría de los casos, tanto el audio como el vídeo se comprimen mediante codificadores antes de agregarse a un archivo ASF. En Media Foundation, los codificadores se implementan como transformaciones de Media Foundation (MFT) con una entrada y una salida. Debe seleccionar el tipo de medio de salida según el tipo de medio de la secuencia de entrada y el tipo de codificación que elija para comprimir la secuencia.

Antes de la sesión de codificación, el codificador debe configurarse estableciendo las propiedades pertinentes en función del tipo de codificación.

Después de configurar el codificador, debe configurar el objeto ContentInfo con los valores del codificador porque el multiplexador ASF y el receptor multimedia de ASF, que se inicializan con el objeto ContentInfo rellenado, usan valores como los valores de cubo filtrados, para generar paquetes de datos asF. Los valores no se guardan en el objeto de encabezado ASF final. La configuración de codificación se expone como propiedades. Para configurar el objeto ContentInfo con las propiedades del codificador, haga lo siguiente:

  1. Para obtener un puntero al almacén de propiedades del codificador, consulte el codificador (interfaz IMFTransform ) directamente para la interfaz IPropertyStore .
  2. Llame a IMFASFContentInfo::GetEncodingConfigurationPropertyStore. Para establecer propiedades específicas de la secuencia, especifique el identificador de secuencia en el parámetro wStreamNumber ; para las propiedades de nivel de archivo, pase 0. El parámetro ppIStore recibe un puntero a la interfaz IPropertyStore . El almacén de propiedades recibido está vacío.
  3. Llame a IPropertyStore::GetValue en el codificador y obtenga el valor de propiedad especificando las constantes de clave de propiedad. Para obtener una lista completa de las propiedades de codificación, consulte la Referencia de programación de códecs.
  4. Llame a IPropertyStore::SetValue en el objeto ContentInfo para establecer la propiedad necesaria en el almacén de propiedades.
  5. Repita los pasos 3 y 4 para cada propiedad que desee establecer.

El receptor de medios ASF se puede crear mediante un objeto de activación llamando a MFCreateASFMediaSinkActivate. El nuevo objeto receptor de medios se configura en función de la configuración específica del receptor multimedia que se puede establecer en el almacén de propiedades del objeto ContentInfo. En la tabla siguiente se muestran las constantes de propiedad receptor de medios ASF.

Propiedad Descripción
MFPKEY_ASFMEDIASINK_BASE_SENDTIME El tiempo de envío indica cuándo se liberará la carga dentro del cubo fugado. Este valor de propiedad indica la primera vez que se envía. El multiplexador usa este valor para calcular los tiempos de envío posteriores de los paquetes generados y garantiza que los datos fluyen de forma constante a través del cubo filtrado.
MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE Este valor BOOL indica si el multiplexador debe ajustar la velocidad de bits automáticamente para asegurarse de que los datos no desbordan el cubo filtrado.
MFPKEY_ASFMEDIASINK_DRMACTION Esto indica la acción DRM del receptor de medios ASF para la generación de archivos. En esta versión, solo se admite la transcodificación drm.
MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET Esta propiedad debe establecerse cuando el codificador decide qué ventana de búfer y velocidad de bits se va a usar. Para establecer estos valores, use la interfaz IWMCodecLeakyBucket . Debe establecerse para cada secuencia del archivo ASF.

 

Escribir un objeto de encabezado ASF para un nuevo archivo