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 vídeo entrelazado correctamente, 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 marco 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 único campo o dos campos intercalados. Si un ejemplo 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. Se recomiendan campos intercalados a menos que las características del contenido de origen dicten 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 la desinterlación. 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, consulte Ejemplos de medios.
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 solo contiene 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 ejemplo contiene un único campo, use MFVideoInterlace_FieldSingleUpper o MFVideoInterlace_FieldSingleLower. Si los campos se alternan entre superior e 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 correspondiente 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? | Muestras | Primer campo |
---|---|---|---|
MFVideoInterlace_Progressive | No | Fotograma progresivo | No aplicable |
MFVideoInterlace_FieldInterleavedUpperFirst | Sí | Campos intercalados | Primera parte superior |
MFVideoInterlace_FieldInterleavedLowerFirst | Sí | Campos intercalados | Primero inferior |
MFVideoInterlace_FieldSingleUpper | Sí | Campo único | Primera parte superior |
MFVideoInterlace_FieldSingleLower | Sí | Campo único | Primero inferior |
MFVideoInterlace_MixedInterlaceOrProgressive | Puede variar | Campos intercalados o fotogramas 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 interfazIMFSample para obtener o establecer estos atributos.
Todos los atributos de entrelazamiento 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 TRUE, el marco se entrelaza. Si 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.
|
MFSampleExtension_RepeatFirstField | Si TRUE, se repite el primer campo. Si false o no se establece, el primer campo no se repite. |
MFSampleExtension_SingleField | Si TRUE, el ejemplo contiene un único campo. Si 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 medio | Marca entrelazada | Marca BottomFieldFirst | RepeatFirstField Flag | Marca SingleField |
---|---|---|---|---|
Progresivo | Opcional; si se establece, debe ser FALSE. | No establezca. | No establezca. | No establezca. |
Campos intercalados | Opcional; si se establece, debe ser TRUE. | Opcional; si se establece, debe coincidir con el tipo de medio. | No establezca. | Opcional; si se establece, debe ser FALSE. |
Campos únicos | Opcional; si se establece, debe ser TRUE. | Obligatorio. | No establezca. | Establezca en TRUE. |
Mixto | Obligatorio. | Obligatorio. | Obligatorio. | 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 FALSEo dejar el atributo sin establecer.
Recomendaciones
Esta sección contiene recomendaciones para varios tipos de contenido.
- 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_RepeatFirstFieldo MFSampleExtension_SingleField.
- 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.
- 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 de DVD).
Establezca el tipo de medio en MFVideoInterlace_MixedInterlaceOrProgressive.
En cada fotograma, establezca los atributos MFSampleExtension_Interlaced, MFSampleExtension_BottomFieldFirsty MFSampleExtension_RepeatFirstField.
No establezca el atributo MFSampleExtension_SingleField ni establézcalo en FALSE en cada fotograma.
- 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 |
---|---|
marco | MFSampleExtension_SingleField = FALSE |
top_field |
MFSampleExtension_SingleField = TRUE MFSampleExtension_BottomFieldFirst = FALSE |
bottom_field |
MFSampleExtension_SingleField = TRUE MFSampleExtension_BottomFieldFirst = TRUE |
progressive_frame
Valor | Atributo de ejemplo |
---|---|
0 | MFSampleExtension_Interlaced = TRUE |
1 | MFSampleExtension_Interlaced = FALSE |
top_field_first
Valor | Atributo de ejemplo |
---|---|
0 | MFSampleExtension_BottomFieldFirst = TRUE |
1 | MFSampleExtension_BottomFieldFirst = FALSE |
repeat_first_field
Valor | Atributo de ejemplo |
---|---|
0 | MFSampleExtension_RepeatFirstField = FALSE |
1 | MFSampleExtension_RepeatFirstField = TRUE |
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 multimedia con ejemplos de campo único, debe tener en cuenta este hecho al acceder a los datos del búfer.
La misma regla se aplica a la apertura geométrica (atributoMF_MT_GEOMETRIC_APERTURE) y a la apertura de pantalla mínima (atributoMF_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 entrelazamiento por muestra se encuentra en el dwTypeSpecificFlags miembro 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 desinterlar los dos campos). |
AM_VIDEO_FLAG_FIELD1FIRST | MFSampleExtension_BottomFieldFirst = FALSE. Si el contenido está entrelazado y la marca de 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 de dwInterlaceFlags de la estructura VIDEOINFOHEADER2:
Marca de interlación directShow | Atributo de ejemplo de Media Foundation |
---|---|
AMINTERLACE_IsInterlaced | MFSampleExtension_Interlaced = TRUE. |
AMINTERLACE_1FieldPerSample | MFSampleExtension_SingleField = TRUE. |
AMINTERLACE_Field1First | MFSampleExtension_BottomFieldFirst = FALSE. |
Temas relacionados