Codificación de vídeo entrelazada (Microsoft Media Foundation)
Los datos de vídeo diseñados para su uso con equipos suelen ser progresivos, lo que significa que cada fotograma se codifica como una sola imagen. Algunos dispositivos, como los televisores, no muestran un marco a la vez, sino como dos imágenes. Una de las imágenes o campos contiene todas las filas numeradas par. El otro campo contiene los datos de todas las filas numeradas impares. El vídeo codificado con más de un campo por fotograma se llama entrelazado, porque se representa cambiando entre el campo par y el campo impar.
En el pasado, el contenido de vídeo entrelazado siempre se desconlazaba antes de codificar con el códec De vídeo de Windows Media. A partir de la serie Windows Media 9, sin embargo, el codificador de vídeo admite la compresión de contenido entrelazado sin convertirlo primero en progresivo. Mantener la entrelazamiento en un archivo codificado es importante si el contenido se representa alguna vez en una pantalla entrelazada, como un televisor. Esta característica es cada vez más importante, ya que la compatibilidad con el contenido basado en Windows Media se distribuye a reproductores de DVD, cajas de set-top y otros productos electrónicos domésticos.
La manera más fácil de codificar y entregar vídeo entrelazado es desarrollar la aplicación mediante el SDK de Windows Media Format y almacenar el contenido en archivos ASF. La información entrelazada sobre los fotogramas se pasa al códec mediante extensiones de unidad de datos, que funcionan bien para el contenido de ASF, pero son un poco más complicados de admitir en otros contenedores. Para obtener más información sobre las extensiones de unidad de datos, consulte Uso de extensiones de unidad de datos.
Para admitir la codificación entrelazada, hay dos pasos principales: obtener la información de fotogramas al codificador y entregar la información a la aplicación de representación. Estos pasos se describen en los párrafos siguientes.
Vídeo entrelazado y codificador
El primer paso para codificar vídeo con el entrelazado mantenido es configurar el codificador para codificar campos entrelazados. Para ello, establezca la propiedad MFPKEY_INTERLACEDCODINGENABLED en TRUE. Esto prepara el codificador para recibir ejemplos entrelazados. Cada ejemplo de entrada debe contener ambos campos.
Cada ejemplo que procese con el codificador después de activar la codificación entrelazada debe tener asociada una extensión de unidad de datos. Se supone que las muestras sin la extensión de unidad de datos esperada son progresivas. El GUID que identifica la extensión es D590DC20-07BC-436C-9CF7-F3BBFBF1A4DC. Los valores pasados por los objetos del SDK de Windows Media Format se definen en la tabla siguiente.
Value | Descripción |
---|---|
0x00000020 | Especifica que el ejemplo se codifica primero con el campo inferior. Este valor solo es significativo cuando se combina con el valor entrelazado. |
0x00000040 | Especifica que el ejemplo se codifica primero con el campo superior. Este valor solo es significativo cuando se combina con el valor entrelazado. |
0x00000080 | Especifica que la muestra está entrelazada. Este es el único valor que es significativo para las DPO del códec. |
Uno de los dos primeros valores siempre se combina con 0x80 con un or bit a bit antes de establecerse en el ejemplo. Sin embargo, el codificador solo comprueba 0x80 e ignora el resto de la extensión. Si la extensión identifica el ejemplo como entrelazado, el codificador mantiene la entrelazamiento de ejemplo en la secuencia comprimida e inserta una marca de indicación en la secuencia para que el descodificador pueda identificar fotogramas entrelazados. Cada muestra entrelazada está marcada, por lo que el contenido de origen que es una combinación de progresiva e entrelazado se puede codificar en una secuencia juntas.
El objeto de escritura del SDK de Windows Media Format incluye las extensiones de unidad de datos de tipo de contenido en los ejemplos que escribe en la sección de datos del contenedor ASF para su uso en el momento de la representación.
Lectura y representación de vídeo entrelazado
El descodificador identifica ejemplos entrelazados en función de la marca establecida en la secuencia por el codificador. De forma predeterminada, el descodificador desinterlaza las muestras y entrega salidas progresivas. La aplicación del reproductor puede configurar el descodificador para procesar las salidas con la entrelazamiento mantenida estableciendo la propiedad MFPKEY_DECODER_DEINTERLACING .
La dificultad de la reproducción de vídeo entrelazada surge después de que el descodificador entregue las muestras. El representador (tarjeta de vídeo o chip en un dispositivo) no puede mostrar correctamente el contenido de vídeo sin saber cuál es el campo. En las aplicaciones que usan el SDK de Windows Media Format, la extensión de unidad de datos de tipo de contenido se recupera de los ejemplos sin comprimir y se puede pasar al dispositivo.
Cuando se usan directamente los objetos de códec, ninguna de estas transferencias de datos es automática. Debe implementar la compatibilidad con la extensión de unidad de datos, tanto en los objetos de búfer como en el contenedor que use para el contenido codificado. Los tipos más comunes de contenedores multimedia (como AVI) no admiten metadatos de nivel de ejemplo. Puede implementar su propio sistema para almacenar los datos en el archivo y asociarlos a ejemplos individuales, pero solo un lector personalizado podría recuperarlos.
Nota
Establecer la propiedad MFPKEY_INTERLACEDCODINGENABLED en TRUE y, a continuación, no enviar ningún ejemplo con la extensión de unidad de datos de tipo de contenido asociada puede hacer que el codificador se bloquee. Establezca el codificador para la codificación entrelazada solo si tiene muestras entrelazadas para entregar.
Temas relacionados