Para usar vídeo entrelazado
[La característica asociada a esta página, WINDOWS Media Format 11 SDK, es una característica heredada. Se ha reemplazado por lector de origen y escritor receptor. Lector de origen y escritor receptor se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use lector fuente y escritor receptor en lugar del SDK de Windows Media Format 11, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
Hay dos tipos básicos de codificación de vídeo: progresiva e entrelazada. En la codificación progresiva, cada fotograma es una representación codificada de un fotograma de vídeo. En la codificación entrelazada, cada fotograma es una representación codificada de todas las filas pares de píxeles del vídeo o de todas las filas impares. Cada marco entrelazado se denomina campo, por lo que hay campos impares e incluso campos. Una pantalla entrelazada (como un televisor) representa los campos uno a uno, alternando campos. Una pantalla progresiva representa todos los fotogramas a la vez.
El códec Windows Media Video 9 Advanced Profile proporciona compatibilidad para mantener la entrelazamiento en secuencias comprimidas.
Cuándo usar vídeo entrelazado
La codificación de vídeo entrelazado solo es útil cuando el contenido se muestra en un dispositivo entrelazado. Es posible que el contenido que está pensado para ser visto en una televisión (a través de una caja de configuración u otro dispositivo) tenga que entrelazarse. El contenido diseñado para ser visto exclusivamente en una pantalla de equipo no debe codificarse como entrelazado.
Para codificar el vídeo entrelazado como vídeo progresivo, debe configurar las opciones de entrada. Para obtener más información, vea To Deinterlace Video.
Orden de campos
La mayoría de los orígenes de vídeo entrelazados, como tarjetas de captura de vídeo, ofrecen muestras de vídeo que incluyen ambos campos intercalados entre sí. El resultado es como un fotograma completo del vídeo, salvo que las líneas impares e pares se desplazan ligeramente en el tiempo. No hay ningún estándar universal en cuanto al campo del ejemplo de vídeo intercalado se produce por primera vez.
Debe permitir que los usuarios especifiquen el orden de los campos al pasar ejemplos entrelazados a la aplicación.
Codificación de vídeo entrelazado
Para usar la codificación entrelazada, realice los pasos siguientes:
- Configure la secuencia de vídeo en el perfil para usar la extensión de unidad de datos de tipo de contenido mediante una llamada al método IWMStreamConfig2::AddDataUnitExtension . El GUID de extensión de ejemplo para la extensión de tipo de contenido se WM_SampleExtensionsGUID_ContentType.
- Establezca la secuencia en el perfil y configure el escritor con el perfil como normal.
- Antes de pasar ejemplos entrelazados al escritor, llame al método IWMWriterAdvanced2::SetInputSetting para establecer el valor de entrada g_wszInterlacedCoding en TRUE.
- Para cada ejemplo entrelazado que se pasa al escritor, llame al método INSSBuffer3::SetProperty para establecer el tipo de contenido. Los valores de tipo de contenido son combinaciones de las marcas de la tabla siguiente.
Marca | Descripción |
---|---|
WM_CT_INTERLACED | Establezca siempre esta marca al codificar contenido entrelazado. Si usa esta marca sin establecer una marca de orden de campo (WM_CT_BOTTOM_FIELD_FIRST o WM_CT_TOP_FIELD_FIRST), el códec asume que el campo superior es primero. Si el códec usa el orden de campo incorrecto, no debería haber ningún impacto en la calidad de la imagen, pero la eficacia de la codificación se verá afectada. |
WM_CT_BOTTOM_FIELD_FIRST | Cuando se combina con la marca WM_CT_INTERLACED, esta marca indica que el campo inferior (el campo que comienza por la segunda línea del ejemplo) se produce por primera vez. |
WM_CT_TOP_FIELD_FIRST | Cuando se combina con la marca WM_CT_INTERLACED, esta marca indica que el campo superior (el campo que comienza por la primera línea del ejemplo) se produce por primera vez. |
WM_CT_REPEAT_FIRST_FIELD | Indica que el primer campo del ejemplo debe repetirse en la reproducción. Esta marca se utiliza para el vídeo que ha creado a partir de la película por el proceso de telecine. Si no se establece ninguna marca de orden de campo junto con esta marca, se supone que el campo superior se produce por primera vez. |
Nota
Si no se establece la marca WM_CT_INTERLACED, se supone que el ejemplo contiene un fotograma de vídeo progresivo.
Descodificar vídeo entrelazado
Al descodificar vídeo entrelazado, debe establecer el valor de g_wszAllowInterlacedOutput en TRUE mediante el método IWMReaderAdvanced2::SetOutputSetting . De lo contrario, el códec entregará fotogramas progresivos.
La extensión de unidad de datos de tipo de contenido se mantiene en los ejemplos de salida. Debes pasar la orientación de campo al dispositivo de representación para garantizar la reproducción adecuada.