Pour utiliser la vidéo entrelacée
[La fonctionnalité associée à cette page, le Kit de développement logiciel (SDK) Windows Media Format 11, est une fonctionnalité héritée. Il a été remplacé par lecteur source et enregistreur récepteur. Le lecteur source et l’enregistreur récepteur ont été optimisés pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise le lecteur source et l’enregistreur récepteur au lieu du Kit de développement logiciel (SDK) Windows Media Format 11, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Il existe deux types de base d’encodage vidéo : progressif et entrelacé. Dans l’encodage progressif, chaque image est une représentation encodée d’une image de vidéo. Dans l’encodage entrelacé, chaque image est une représentation encodée de toutes les lignes paires de pixels de la vidéo, ou de toutes les lignes impaires. Chaque image entrelacée est appelée champ, il existe donc des champs impairs et des champs pairs. Un affichage entrelacé (comme un téléviseur) affiche les champs un par un, en alternance de champs. Un affichage progressif affiche les images en même temps.
Le codec Profil avancé de Windows Media Video 9 prend en charge la maintenance de l’entrelacement dans les flux compressés.
Quand utiliser la vidéo entrelacée
L’encodage de la vidéo entrelacée n’est utile que lorsque le contenu est affiché sur un appareil entrelacé. Le contenu destiné à être visionné sur un téléviseur (par le biais d’un décodeur ou d’un autre appareil) peut être entrelacé. Le contenu destiné à être affiché exclusivement sur un écran d’ordinateur ne doit pas être encodé comme entrelacé.
Pour encoder une vidéo entrelacée sous forme de vidéo progressive, vous devez configurer les paramètres d’entrée. Pour plus d’informations, consultez Pour désentlacer la vidéo.
Ordre des champs
La plupart des sources de vidéo entrelacées, telles que les cartes de capture vidéo, fournissent des exemples vidéo qui incluent les deux champs entrelacés les uns avec les autres. Le résultat est comme une image complète de la vidéo, sauf que les lignes impaires et paires sont légèrement décalées dans le temps. Il n’existe aucune norme universelle concernant le champ dans l’exemple vidéo entrelacé qui se produit en premier dans le temps.
Vous devez permettre aux utilisateurs de spécifier l’ordre de champ lors du passage d’exemples entrelacés à votre application.
Encodage de la vidéo entrelacée
Pour utiliser l’encodage entrelacé, effectuez les étapes suivantes :
- Configurez le flux vidéo dans le profil pour utiliser l’extension d’unité de données de type de contenu en appelant la méthode IWMStreamConfig2::AddDataUnitExtension . L’exemple de GUID d’extension pour l’extension de type de contenu est WM_SampleExtensionsGUID_ContentType.
- Définissez le flux dans le profil et configurez l’enregistreur avec le profil comme d’habitude.
- Avant de passer des exemples entrelacés au rédacteur, appelez la méthode IWMWriterAdvanced2::SetInputSetting pour définir le paramètre d’entrée g_wszInterlacedCoding sur TRUE.
- Pour chaque exemple entrelacé que vous passez au rédacteur, appelez la méthode INSSBuffer3::SetProperty pour définir le type de contenu. Les valeurs de type de contenu sont des combinaisons des indicateurs dans le tableau suivant.
Indicateur | Description |
---|---|
WM_CT_INTERLACED | Définissez toujours cet indicateur lors de l’encodage du contenu entrelacé. Si vous utilisez cet indicateur sans définir d’indicateur d’ordre de champ (WM_CT_BOTTOM_FIELD_FIRST ou WM_CT_TOP_FIELD_FIRST), le codec suppose que le champ supérieur est le premier. Si le codec utilise un ordre de champ incorrect, il ne doit pas y avoir d’impact sur la qualité de l’image, mais l’efficacité de l’encodage sera affectée. |
WM_CT_BOTTOM_FIELD_FIRST | Lorsqu’il est combiné avec l’indicateur WM_CT_INTERLACED, cet indicateur indique que le champ inférieur (le champ commençant par la deuxième ligne de l’exemple) se produit en premier dans le temps. |
WM_CT_TOP_FIELD_FIRST | Lorsqu’il est combiné avec l’indicateur WM_CT_INTERLACED, cet indicateur indique que le champ supérieur (le champ commençant par la première ligne de l’exemple) se produit en premier dans le temps. |
WM_CT_REPEAT_FIRST_FIELD | Indique que le premier champ de l’exemple doit être répété lors de la lecture. Cet indicateur est utilisé pour la vidéo créée à partir d’un film par le processus de télécine. Si aucun indicateur d’ordre de champ n’est défini conjointement avec cet indicateur, le champ supérieur est supposé se produire en premier dans le temps. |
Notes
Si l’indicateur WM_CT_INTERLACED n’est pas défini, l’exemple est supposé contenir une image vidéo progressive.
Décodage de la vidéo entrelacée
Lorsque vous décodez une vidéo entrelacée, vous devez définir le paramètre g_wszAllowInterlacedOutput sur TRUE à l’aide de la méthode IWMReaderAdvanced2::SetOutputSetting . Sinon, le codec fournit des images progressives.
L’extension d’unité de données de type de contenu est conservée sur les exemples de sortie. Vous devez passer l’orientation du champ au périphérique de rendu pour garantir une lecture correcte.