Compartir a través de


Creación y configuración de secuencias ASF

Cada archivo ASF contiene una o varias secuencias. El objeto Perfil de ASF representa una colección de flujos ASF. Para la codificación ASF, debe crear y configurar las secuencias que desea codificar.

Una aplicación puede realizar las siguientes tareas con el objeto de perfil de ASF:

  • Agregue o quite una secuencia.
  • Obtenga los valores de configuración de una secuencia.
  • Configurar extensiones de carga.
  • Agregue, quite o modifique un objeto de exclusión mutua de ASF.

En este tema se incluyen las siguientes secciones.

Creación de una nueva secuencia

Un objeto de perfil de ASF debe contener opciones de configuración de al menos una secuencia ASF. Cada flujo se representa mediante un objeto de configuración de secuencia, que expone la interfazIMFASFStreamConfig. La información del objeto de configuración de secuencia corresponde al objeto Propiedades de secuencia y a los objetos de propiedades de secuencia extendidas en el encabezado del archivo ASF. (Consulte Estructura de archivos ASF.)

Para agregar una secuencia a un perfil de ASF, realice los pasos siguientes:

  1. Crear un objeto de configuración de secuencias vacío.
  2. Configure la secuencia según los requisitos de la aplicación.
  3. Agregue la secuencia al perfil.

Para crear una secuencia para el perfil, llame a IMFASFProfile::CreateStreampara crear un objeto de configuración de secuencia vacío y recibir el puntero en el parámetroppIStream. CreateStream debe conocer el tipo de secuencia que se va a crear. Los tipos de secuencias más comunes que se usan en los archivos ASF son secuencias de audio y vídeo. En Media Foundation, los tipos de flujo se indican mediante el objeto de tipo de medio que expone la interfazIMFMediaType. El principal tipo de medio define la categoría de la secuencia de medios digitales, como audio o vídeo. El subtipo define el formato del tipo principal. El tipo de medio inicial establecido por CreateStream se puede cambiar mediante el objeto de configuración de steam. Para recuperar el tipo de medio de la secuencia, llame a IMFASFStreamConfig::GetMediaType o para recuperar la llamada de tipo principalIMFASFStreamConfig::GetStreamType. El tipo de medio inicial de una secuencia se puede reemplazar por un nuevo tipo de medio configurado llamando a IMFASFStreamConfig::SetMediaType.

Si una aplicación crea un perfil a partir de un descriptor de presentación válido llamando a MFCreateASFProfileFromPresentationDescriptor. La función establece automáticamente los objetos de configuración de secuencia para cada uno de los flujos y los establece en el perfil. Los tipos de medios de transmisión se establecen en función de los descriptores de secuencia asociados al descriptor de presentación.

Asignación de números de secuencia

A todos los tipos de secuencias se les debe asignar un número de secuencia. Los números de secuencia no deben ser secuenciales, pero deben estar en el intervalo comprendido entre 1 y 127. Para asignar números de secuencia, llame a IMFASFStreamConfig::SetStreamNumber. Para obtener la llamada al número de secuencia, IMFASFStreamConfig::GetStreamNumber.

Nota:

Un número de secuencia es diferente de un índice de flujo, que se usa al obtener secuencias en un perfil mediante IMFASFProfile::GetStream. El índice de flujo es un número asignado al flujo por el objeto de perfil. Los índices de flujo oscilan entre 0 y uno menor que el número de secuencias recuperadas por IMFASFProfile::GetStreamCount. También puede obtener una secuencia del perfil por número de secuencia llamando a IMFASFProfile::GetStreamByNumber.

 

Establecimiento de valores de cubo filtrado

Cada objeto de configuración de secuencia que representa una secuencia debe tener asociados parámetros de cubo de filtrados, velocidad de bits y valores de ventana de búfer.

Estos valores están disponibles para la aplicación mediante el atributo MF_ASFSTREAMCONFIG_LEAKYBUCKET1 y el atributo MF_ASFSTREAMCONFIG_LEAKYBUCKET2. Para la codificación de archivos, los valores reales dependen del tipo de codificación y el codificador decide. Si ya tiene un codificador configurado y el tipo de salida se establece en el codificador, la aplicación debe consultar al codificador para conocer los parámetros de cubo filtrados y establecer los valores de estos atributos.

Si usa los componentes de nivel de canalización y configura las secuencias para el receptor de medios ASF, lo más probable es que no tenga un codificador configurado. En este caso, debe consultar las negociaciones posteriores al tipo de medio del codificador y establecer el valor actualizado en la propiedad MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET del almacén de propiedades del receptor de medios ASF. El almacén de propiedades de codificación se recupera a través del objeto ContentInfo asociado al perfil. Los valores actualizados se reflejan automáticamente en los valores de atributo de cubo de filtrados de la secuencia. Para obtener información general sobre los cubos filtrados y cómo obtener el valor del cubo filtrado del codificador, consulte el Modelo de búfer de cubo filtrados.

Extensiones de carga

Los datos multimedia de las secuencias se agregan al objeto de datos ASF como Muestras de medios por el multiplexador ASF. Estas muestras de multimedia pueden contener datos de extensión de carga: datos de código de tiempo SMPTE, relación de aspecto de píxeles no cuadrados, duración de la muestra y, si el ejemplo lo contiene, un fotograma clave de vídeo. Para obtener una lista de los tipos de extensión de carga admitidos, consulte GUID de extensión de carga de ASF.

Se debe configurar una secuencia para aceptar la extensión de carga para que, durante la generación de ejemplo, el multiplexador pueda agregar los datos complementarios a cada ejemplo de esa secuencia.

Para obtener el número total de extensiones de carga establecidas en la secuencia, llame a IMFASFStreamConfig::GetPayloadExtensionCount y, a continuación, enumere la lista llamando a IMFASFStreamConfig::GetPayloadExtension. Para agregar la extensión de carga para la secuencia, llame a IMFASFStreamConfig::AddPayloadExtension. Esto agregará datos adicionales a ejemplos de medios individuales generados para la secuencia.

Para quitar las extensiones de carga existentes asociadas a la secuencia, llame a IMFASFStreamConfig::RemoveAllPayloadExtensions.

Agregar una secuencia al perfil

Una vez configurada una secuencia, llame a IMFASFProfile::SetStreampara agregar la secuencia al perfil.

Para quitar una secuencia existente en el perfil, llame a IMFASFProfile::RemoveStream.

El perfil configurado debe establecerse en el objeto ContentInfo llamando a IMFASFContentInfo::SetProfile. Si realiza cambios en una secuencia existente, debe agregarlo de nuevo al perfil y establecer el perfil en el objeto ContentInfo.

Perfil de ASF

Soporte técnico de ASF en Media Foundation

Componentes de ASF de WMContainer