Entrelazado de vídeo

En este tema se describe cómo los orígenes multimedia y los descodificadores deben controlar el contenido de vídeo entrelazado.

Para descodificar y representar correctamente el vídeo entrelazado, se necesita la siguiente información:

  • Progresiva o entrelazada. Una secuencia de vídeo puede contener fotogramas progresivos, fotogramas entrelazados o una combinación de ambos.

  • Dominación de campo. La dominación de campo describe qué campo aparece primero, el campo superior o el campo inferior.

  • Repita el primer campo. Esta marca se usa en la extracción 3:2, cuando el fotograma es progresivo, pero la secuencia está entrelazada. En este contexto, el primer campo puede ser el campo superior o inferior.

  • Campos intercalados o campo único. Un ejemplo puede contener un solo campo o dos campos intercalados. Si una muestra contiene un solo campo, el alto de la muestra es la mitad del alto del marco, ya que la muestra contiene solo la mitad de las líneas de examen de un marco. Los campos intercalados se recomiendan a menos que las características del contenido de origen determinen lo contrario.

Cualquiera de estas características puede cambiar de un ejemplo a otro. Sin embargo, los componentes de vídeo deben saber algo sobre el contenido general antes de que comience el streaming. Por ejemplo, si el vídeo está entrelazado, el representador de vídeo mejorado (EVR) debe reservar memoria de vídeo para el desinterlazado. Si el vídeo es completamente progresivo, por otro lado, el EVR puede optimizar la canalización de representación. Agregar un paso de desinterlazado a la canalización aumenta la latencia de representación.

La información sobre la entrelazamiento se almacena en dos lugares:

  • La información general sobre la entrelazamiento en una secuencia se coloca en el tipo de medio. Para obtener más información sobre los tipos de medios, vea Tipos de medios.

  • La información que puede cambiar con cada ejemplo se coloca en el ejemplo como un atributo. Para obtener más información sobre los ejemplos, vea Ejemplos multimedia.

Interlace Information in the Media Type

El atributo MF_MT_INTERLACE_MODE en el tipo de medio describe cómo se entrelaza la secuencia como un todo. El valor de este atributo es un miembro de la enumeración MFVideoInterlaceMode . Un tipo de medio de vídeo siempre debe tener este atributo.

  • Si la secuencia contiene solo fotogramas progresivos, sin fotogramas entrelazados, use MFVideoInterlace_Progressive.
  • Si la secuencia solo contiene fotogramas entrelazados y cada ejemplo contiene dos campos intercalados, use MFVideoInterlace_FieldInterleavedUpperFirst o MFVideoInterlace_FieldInterleavedLowerFirst.
  • Si la secuencia solo contiene fotogramas entrelazados y cada muestra contiene un solo campo, use MFVideoInterlace_FieldSingleUpper o MFVideoInterlace_FieldSingleLower. Si los campos se alternan entre la parte superior y la inferior, no importa cuál de estos dos valores se use. Si el formato contiene solo campos superiores o simplemente campos inferiores, establezca el valor que corresponde al contenido.
  • Si la secuencia contiene una combinación de fotogramas entrelazados y progresivos, o si cambia la dominación de campo, establezca el tipo de medio en MFVideoInterlace_MixedInterlaceOrProgressive. Use atributos de ejemplo para describir cada fotograma.

En la tabla siguiente se resume este atributo.

MF_MT_INTERLACE_MODE ¿Entrelazado? Ejemplos Primer campo
MFVideoInterlace_Progressive No Marco progresivo No aplicable
MFVideoInterlace_FieldInterleavedUpperFirst Yes Campos intercalados Superior primero
MFVideoInterlace_FieldInterleavedLowerFirst Yes Campos intercalados Primero inferior
MFVideoInterlace_FieldSingleUpper Yes Campo único Superior primero
MFVideoInterlace_FieldSingleLower Yes Campo único Primero inferior
MFVideoInterlace_MixedInterlaceOrProgressive Puede variar Campos intercalados o marcos progresivos Puede variar

 

Los campos intercalados y los campos únicos no se pueden mezclar. Cambiar de uno a otro requiere un cambio de tipo multimedia.

Interlace Flags on Samples

La información que puede cambiar de un ejemplo a la siguiente se indica mediante atributos de ejemplo. Use la interfaz IMFSample para obtener o establecer estos atributos.

Todos los atributos entrelazados enumerados en esta sección tienen valores booleanos. De hecho, cada uno de estos atributos puede tener tres valores: TRUE, FALSE o no establecido. Si no se establece un atributo, el valor se toma del tipo de medio. Si se establece un atributo, el valor invalida el tipo de medio. Algunas combinaciones de marcas y tipos multimedia no son válidas.

Atributo Descripción
MFSampleExtension_Interlaced Si es TRUE, el marco está entrelazado. Si es FALSE, el marco es progresivo.
Establezca este atributo en cada ejemplo si el tipo de medio es MFVideoInterlace_MixedInterlaceOrProgressive.
MFSampleExtension_BottomFieldFirst El significado de esta marca depende de si las muestras contienen campos intercalados o campos únicos.
  • Campos intercalados: si es TRUE, el campo inferior es primero. Si es FALSE, el campo superior es primero.
  • Campos únicos: si es TRUE, el ejemplo contiene un campo inferior. Si es FALSE, el ejemplo contiene un campo superior.
Establezca este atributo en cada ejemplo de intercalación si el tipo de medio es MFVideoInterlace_FieldSingleUpper, MFVideoInterlace_FieldSingleLower o MFVideoInterlace_MixedInterlaceOrProgressive.
MFSampleExtension_RepeatFirstField Si es TRUE, se repite el primer campo. Si es FALSE o no se establece, el primer campo no se repite.
MFSampleExtension_SingleField Si es TRUE, el ejemplo contiene un único campo. Si es FALSE, el ejemplo contiene campos intercalados.

 

En la tabla siguiente se muestran las marcas necesarias, opcionales o prohibidas, en función del tipo de medio.

Tipo de soporte Marca entrelazada Marca BottomFieldFirst RepeatFirstField Flag Marca SingleField
progresivo Opcional; si se establece, debe ser FALSE. No lo establezca. No lo establezca. No lo establezca.
Campos intercalados Opcional; si se establece, debe ser TRUE. Opcional; si se establece, debe coincidir con el tipo de medio. No lo establezca. Opcional; si se establece, debe ser FALSE.
Campos únicos Opcional; si se establece, debe ser TRUE. Necesario. No lo establezca. Establézcalo en TRUE.
Mixto Necesario. Necesario. Necesario. Opcional; si se establece, debe ser FALSE.

 

En los casos en los que el atributo es opcional, el tipo de medio ya define la información. Es válido establecer el atributo para que coincida, pero no es necesario.

Por ejemplo, si el tipo de medio es MFVideoInterlace_Progressive, implica que todos los fotogramas de la secuencia son progresivos. Por lo tanto, puede establecer el atributo MFSampleExtension_Interlaced en FALSE o dejar el atributo sin establecer.

Recomendaciones

Esta sección contiene recomendaciones para varios tipos de contenido.

  1. El vídeo es todos fotogramas progresivos.
  • Establezca el tipo de medio en MFVideoInterlace_Progressive.

  • No establezca el atributo MFSampleExtension_Interlaced ni establézcalo en FALSE en cada fotograma.

  • No establezca los atributos MFSampleExtension_BottomFieldFirst, MFSampleExtension_RepeatFirstField ni MFSampleExtension_SingleField .

  1. El vídeo es todos los campos entrelazados con la misma dominación de campo. Los ejemplos contienen campos intercalados.
  • Establezca el tipo de medio en MFVideoInterlace_FieldInterleavedUpperFirst o MFVideoInterlace_FieldInterleavedLowerFirst.

  • No establezca el atributo MFSampleExtension_Interlaced ni establézcalo en TRUE en cada fotograma.

  • No establezca el atributo MFSampleExtension_BottomFieldFirst ni establezca el valor en cada fotograma para que coincida con el tipo de medio.

  • No establezca el atributo MFSampleExtension_RepeatFirstField ni establézcalo en FALSE en cada fotograma.

  • No establezca el atributo MFSampleExtension_SingleField ni establézcalo en FALSE en cada fotograma.

  1. El vídeo contiene una combinación de fotogramas entrelazados y progresivos, con campos repetidos y dominación de campo variable (por ejemplo, vídeo dvd).
  • Establezca el tipo de medio en MFVideoInterlace_MixedInterlaceOrProgressive.

  • En cada marco, establezca los atributos MFSampleExtension_Interlaced, MFSampleExtension_BottomFieldFirst y MFSampleExtension_RepeatFirstField .

  • No establezca el atributo MFSampleExtension_SingleField ni establézcalo en FALSE en cada fotograma.

  1. El vídeo está entrelazado y las muestras contienen campos únicos.
  • Establezca el tipo de medio en MFVideoInterlace_FieldSingleUpper o MFVideoInterlace_FieldSingleLower.

  • En cada fotograma, establezca el atributo MFSampleExtension_BottomFieldFirst .

  • No establezca el atributo MFSampleExtension_Interlaced ni establézcalo en TRUE en cada fotograma.

  • No establezca el atributo MFSampleExtension_RepeatFirstField ni establézcalo en FALSE en cada fotograma.

  • No establezca el atributo MFSampleExtension_SingleField ni establézcalo en TRUE en cada fotograma.

La mayoría del contenido de vídeo se divide en una de estas categorías.

Asignaciones MPEG-2

Para el contenido MPEG-2, use las siguientes asignaciones para convertir las marcas MPEG-2 en atributos de ejemplo de Media Foundation.

picture_structure

Valor Atributo de ejemplo
frame = MFSampleExtension_SingleField FALSO
top_field = MFSampleExtension_SingleField VERDAD
= MFSampleExtension_BottomFieldFirst FALSO
bottom_field = MFSampleExtension_SingleField VERDAD
= MFSampleExtension_BottomFieldFirst VERDAD

 

progressive_frame

Valor Atributo de ejemplo
0 = MFSampleExtension_Interlaced VERDAD
1 = MFSampleExtension_Interlaced FALSO

 

top_field_first

Valor Atributo de ejemplo
0 = MFSampleExtension_BottomFieldFirst VERDAD
1 = MFSampleExtension_BottomFieldFirst FALSO

 

repeat_first_field

Valor Atributo de ejemplo
0 = MFSampleExtension_RepeatFirstField FALSO
1 = MFSampleExtension_RepeatFirstField VERDAD

 

Ejemplos de Single-Field

Si el tipo de medio es MFVideoInterlace_FieldSingleUpper o MFVideoInterlace_FieldSingleLower, significa que cada muestra contiene un único campo. Sin embargo, el tipo de medio describe todo el marco. Por lo tanto, cada búfer contiene solo la mitad del número de líneas de campo dadas en el tipo de medio. Por ejemplo, si el tipo de medio describe el vídeo como 720 × 480, cada campo contiene 240 líneas de examen y, por tanto, cada búfer contiene solo 240 filas de píxeles. Si escribe un componente que acepta tipos de medios con ejemplos de un solo campo, debe tener en cuenta este hecho al acceder a los datos del búfer.

La misma regla se aplica a la apertura geométrica (atributo MF_MT_GEOMETRIC_APERTURE ) y a la apertura de pantalla mínima (atributo MF_MT_MINIMUM_DISPLAY_APERTURE ). Estas regiones se especifican en términos del marco completo, no en los campos individuales.

Asignaciones de DirectShow

En DirectShow, la información de entrelazado por muestra se encuentra en el miembro dwTypeSpecificFlags de la estructura AM_SAMPLE2_PROPERTIES . En la tabla siguiente se muestran los atributos equivalentes de Media Foundation.

Marca de ejemplo directShow Atributo de ejemplo de Media Foundation
AM_VIDEO_FLAG_INTERLEAVED_FRAME = MFSampleExtension_SingleField FALSE.
AM_VIDEO_FLAG_FIELD1 = MFSampleExtension_Interlaced TRUE.
= MFSampleExtension_SingleField TRUE.
= MFSampleExtension_BottomFieldFirst FALSE.
AM_VIDEO_FLAG_FIELD2 = MFSampleExtension_Interlaced TRUE.
= MFSampleExtension_SingleField TRUE.
= MFSampleExtension_BottomFieldFirst TRUE.
AM_VIDEO_FLAG_WEAVE = MFSampleExtension_Interlaced FALSE. (Esta marca indica que el controlador no debe desinterlazar los dos campos).
AM_VIDEO_FLAG_FIELD1FIRST = MFSampleExtension_BottomFieldFirst FALSE. Si el contenido está entrelazado y la marca AM_VIDEO_FLAG_FIELD1FIRST no está presente, establezca este atributo en TRUE.
AM_VIDEO_FLAG_REPEAT_FIELD = MFSampleExtension_RepeatFirstField TRUE. Si la marca AM_VIDEO_FLAG_REPEAT_FIELD no está presente, establezca este atributo en FALSE.

 

Si el ejemplo directShow no contiene marcas de ejemplo, use el valor dwInterlaceFlags de la estructura VIDEOINFOHEADER2 :

Marca de interlación de DirectShow Atributo de ejemplo de Media Foundation
AMINTERLACE_IsInterlaced = MFSampleExtension_Interlaced TRUE.
AMINTERLACE_1FieldPerSample = MFSampleExtension_SingleField TRUE.
AMINTERLACE_Field1First = MFSampleExtension_BottomFieldFirst FALSE.

 

Tipos de medios de vídeo

Tipos de medios