Partager via


Encodage vidéo entrelacé (Microsoft Media Foundation)

Les données vidéo destinées à être utilisées avec des ordinateurs sont généralement progressives, ce qui signifie que chaque image est encodée en tant qu’image unique. Certains appareils, comme les téléviseurs, n’affichent pas un cadre en une seule fois, mais sous la forme de deux images. L’une des images, ou champs, contient toutes les lignes paires numérotées. L’autre champ contient les données de toutes les lignes impaires. La vidéo encodée avec plusieurs champs par image est appelée entrelacée, car elle est rendue en basculant entre le champ pair et le champ impair.

Dans le passé, le contenu vidéo entrelacé était toujours entrelacé avant l’encodage avec le codec Vidéo Windows Media. Toutefois, à compter de la série Windows Media 9, l’encodeur vidéo prend en charge la compression du contenu entrelacé sans le convertir au préalable en progressif. Il est important de maintenir l’entrelacement dans un fichier encodé si le contenu est rendu sur un écran entrelacé, tel qu’un téléviseur. Cette fonctionnalité est de plus en plus importante, car la prise en charge du contenu windows Media s’étend aux lecteurs de DVD, aux boîtiers de décodeur et à d’autres appareils électroniques domestiques.

Le moyen le plus simple d’encoder et de distribuer des vidéos entrelacées consiste à développer votre application à l’aide du Kit de développement logiciel (SDK) au format Windows Media et à stocker le contenu dans des fichiers ASF. Les informations entrelacées sur les frames sont passées au codec à l’aide d’extensions d’unités de données, qui fonctionnent bien pour le contenu ASF, mais sont un peu plus difficiles à prendre en charge dans d’autres conteneurs. Pour plus d’informations sur les extensions d’unités de données, consultez Utilisation d’extensions d’unités de données.

La prise en charge de l’encodage entrelacé implique deux étapes principales : l’obtention des informations de trame à l’encodeur et la remise des informations à l’application de rendu. Ces étapes sont décrites dans les paragraphes suivants.

Vidéo entrelacée et encodeur

La première étape de l’encodage de vidéo avec un entrelacement maintenu consiste à configurer l’encodeur pour encoder des champs entrelacés. Pour ce faire, définissez la propriété MFPKEY_INTERLACEDCODINGENABLED sur TRUE. Cela prépare l’encodeur à recevoir des exemples entrelacés. Chaque exemple d’entrée doit contenir les deux champs.

Chaque exemple que vous traitez avec l’encodeur après l’activation de l’encodage entrelacé doit avoir une extension d’unité de données attachée. Les exemples sans l’extension d’unité de données attendue sont supposés être progressifs. Le GUID identifiant l’extension est D590DC20-07BC-436C-9CF7-F3BBFBF1A4DC. Les valeurs passées par les objets du Kit de développement logiciel (SDK) au format Windows Media sont définies dans le tableau suivant.

Valeur Description
0x00000020 Spécifie que l’exemple est d’abord encodé avec le champ inférieur. Cette valeur n’est significative qu’en cas de combinaison avec la valeur entrelacée.
0x00000040 Spécifie que l’exemple est d’abord encodé avec le champ supérieur. Cette valeur n’est significative qu’en cas de combinaison avec la valeur entrelacée.
0x00000080 Spécifie que l’exemple est entrelacé. Il s’agit de la seule valeur significative pour les DMO de codec.

 

L’une des deux premières valeurs est toujours combinée avec 0x80 à l’aide d’un or au niveau du bit avant d’être définie sur l’exemple. Toutefois, l’encodeur vérifie uniquement les 0x80 et ignore le reste de l’extension. Si l’extension identifie l’exemple comme entrelacé, l’encodeur conserve l’exemple d’entrelacement dans le flux compressé et incorpore un indicateur d’indication dans le flux afin que le décodeur puisse identifier les trames entrelacées. Chaque exemple entrelacé est marqué, de sorte que le contenu source qui est un mélange de progressif et entrelacé peut être encodé dans un flux ensemble.

L’objet writer du Kit de développement logiciel (SDK) de format Windows Media inclut les extensions d’unité de données de type de contenu dans les exemples qu’il écrit dans la section données du conteneur ASF pour une utilisation au moment du rendu.

Lecture et rendu d’une vidéo entrelacée

Le décodeur identifie les exemples entrelacés en fonction de l’indicateur défini dans le flux par l’encodeur. Par défaut, le décodeur désinterlace les exemples et fournit des sorties progressives. L’application de lecteur peut configurer le décodeur pour traiter les sorties avec l’entrelacement maintenu en définissant la propriété MFPKEY_DECODER_DEINTERLACING .

La difficulté de la lecture vidéo entrelacée survient une fois que le décodeur a livré les exemples. Le convertisseur (carte vidéo ou puce dans un appareil) ne peut pas afficher correctement le contenu vidéo sans savoir quel champ correspond à celui-ci. Dans les applications utilisant le Kit de développement logiciel (SDK) au format Windows Media, l’extension d’unité de données de type de contenu est récupérée à partir des exemples non compressés et peut être transmise à l’appareil.

Lorsque vous utilisez directement les objets codec, aucun de ces transferts de données n’est automatique. Vous devez implémenter la prise en charge de l’extension d’unité de données, à la fois dans vos objets de mémoire tampon et dans le conteneur que vous utilisez pour votre contenu encodé. La plupart des types courants de conteneurs multimédias (comme AVI) ne prennent pas en charge les métadonnées au niveau de l’échantillon. Vous pouvez implémenter votre propre système pour stocker les données dans le fichier et les associer à des exemples individuels, mais seul un lecteur personnalisé peut les récupérer.

Notes

Le fait de définir la propriété MFPKEY_INTERLACEDCODINGENABLED sur TRUE, puis de ne pas envoyer d’exemples avec l’extension d’unité de données de type contenu attachée peut provoquer le blocage de l’encodeur. Définissez l’encodeur pour l’encodage entrelacé uniquement si vous avez des exemples entrelacés à remettre.

 

Utilisation de la vidéo