Delen via


Video de-interlacen

[De functie die is gekoppeld aan deze pagina, Windows Media Format 11 SDK, is een verouderde functie. Het is vervangen door Source Reader en Sink Writer. Bronlezer en Sink Writer zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken bronlezer en Sink Writer- in plaats van Windows Media Format 11 SDK, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]

Sommige bronnen van video, zoals videoopnamekaarten, leveren videogegevens voor geïnterlaceerde weergave. Elk frame van interlaced video bestaat uit twee velden. Het bovenste veld bevat de eerste regel video en daarna elke andere regel. Het onderste veld bevat de tweede videoregel en elke andere regel daarna. Eén veld bevat dus alle even genummerde regels en de andere bevat alle oneven genummerde lijnen. De velden waaruit een frame bestaat, vertegenwoordigen iets andere presentatietijden, zodat ze bij interleaved geen statische afbeelding vormen.

Wanneer u video wilt weergeven op een computermonitor, moet elk frame van de video worden weergegeven als één afbeelding (deze methode voor het weergeven van video één hele frame tegelijk wordt progressieve video genoemd.) Als u interlaced video geleidelijk weergeeft, zien de frames er mogelijk niet goed uit, vanwege het tijdsverschil tussen de twee velden. De Windows Media Video-codec en de Windows Media Video Advanced Profile-codec ondersteunen beide een voorbewerkingsfunctie die interlaced inhoud omzet naar progressieve frames.

Om de codec de invoervideo te laten deinterlacen, roept u de methode IWMWriterAdvanced2::SetInputSetting aan. De te gebruiken instelling is g_wszDeinterlaceMode. Stel de deinterlacing-modus in op een van de volgende waarden.

Waarde Beschrijving
WM_DM_NOTINTERLACED Invoer is progressief. Gebruik deze instelling om deinterlacing te stoppen wanneer u de deinterlacingmodus eerder hebt ingesteld op een andere waarde.
WM_DM_DEINTERLACE_NORMAL Selecteer deze modus om de even en oneven velden van een in elkaar gevlochten frame samen te voegen (met behulp van een mechanisme voor bewegingscompensatie). Voordelen:
  • De interlace-artefacten van een progressieve weergave zijn sterk verminderd.
  • De Windows Media Video-codec produceert gecomprimeerde video van hogere kwaliteit.
WM_DM_DEINTERLACE_HALFSIZE Selecteer deze modus wanneer de uitvoerresolutie de helft of minder is van de invoerresolutie. Gebruik deze modus bijvoorbeeld wanneer de invoervideoresolutie 640 x 480 pixels is en de uitvoervideoresolutie 320 x 240 pixels is. Voordelen:
  • De interlacing-artefacten van de progressieve weergave zijn aanzienlijk verminderd.
WM_DM_DEINTERLACE_HALFSIZEDOUBLERATE Selecteer deze modus wanneer de uitvoerresolutie de helft of minder is van de invoerresolutie en de uitvoer framesnelheid twee keer zo hoog is. Gebruik deze modus bijvoorbeeld wanneer de resolutie van de invoervideo 640 x 480 pixels is bij 30 frames per seconde en de uitvoervideoresolutie 320 x 240 pixels is bij 60 frames per seconde. Voordelen:
  • Dit produceert progressieve frames van hoge kwaliteit, omdat elk veld wordt geconverteerd naar een frame en dus is het niet nodig om informatie te combineren.
  • De volledige beweging van de interlaced velden wordt vastgelegd.
WM_DM_DEINTERLACE_INVERSETELECINE Selecteer deze modus om een video van 30 frames per seconde om te zetten naar de 24 frames per seconde van de originele film. Voordelen:
  • De compressiekwaliteit verbetert aanzienlijk omdat slechts 24 frames per seconde in plaats van 30 frames per seconde moet worden gecodeerd.
  • Omdat het resultaat progressief is, worden dezelfde compressie- en weergavevoordelen van deinterlacing gerealiseerd.
WM_DM_DEINTERLACE_VERTICALHALFSIZEDOUBLERATE Selecteer deze modus wanneer de verticale uitvoerresolutie de helft of minder is van de verticale invoerresolutie en de uitvoer framesnelheid twee keer zo hoog is. De verticale videoresolutie van de invoer is bijvoorbeeld 640 x 480 pixels bij 30 interlaced frames per seconde en de uitvoer verticale videoresolutie is 320 x 240 pixels bij 60 frames per seconde. Voordelen:
  • Dit produceert progressieve frames van hoge kwaliteit, omdat elk veld wordt geconverteerd naar een frame en dus is het niet nodig om informatie te combineren.
  • De volledige beweging van de interlaced-velden wordt vastgelegd.

Voor gemengde inhoud stelt u de deinterlacing-modus in, indien nodig voordat u steekproeven van een nieuw type doorgeeft. Als u bijvoorbeeld wilt beginnen met coderen met progressieve invoer, hoeft u geen deinterlacingmodus in te stellen. Als voor sommige samples normaal deinterlacing vereist is, moet u de deinterlacingmodus instellen op WM_DM_DEINTERLACE_NORMAL. Als u vervolgens aanvullende progressieve steekproeven wilt verwerken, moet u de deinterlacingmodus instellen op WM_DM_NOTINTERLACED.

Inverse Telecine-instellingen

Zie To Use Inverse Telecinevoor een beschrijving van inverse telecine.

Als u de deinterlacingmodus instelt op WM_DM_DEINTERLACE_INVERSETELECINE, kunt u het telecinepatroon van het eerste invoerframe opgeven door de IWMWriterAdvanced2::SetInputSettingaan te roepen. De te gebruiken instelling is g_wszInitialPatternForInverseTelecine. Stel het oorspronkelijke patroon in op een van de volgende waarden.

Waarde Beschrijving
WM_DM_IT_DISABLE_COHERENT_MODE Hiermee geeft u op dat de invoermedia het telecineproces hebben doorlopen, maar dat de frames zich niet meer in een voorspelbaar patroon bevinden. Dit geeft meestal aan dat de media zijn bewerkt na de telecineverwerking. Wanneer u deze instelling gebruikt, probeert de codec de oorspronkelijke frames zelfstandig te reconstrueren.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_TOP Hiermee geeft u op dat het bovenste veld van het AA-frame het eerste voorbeeld is.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_TOP Hiermee geeft u op dat het bovenste veld van het BB-frame het eerste voorbeeld is.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_TOP Hiermee geeft u op dat het bovenste veld van het BC-frame het eerste voorbeeld is.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_TOP Hiermee geeft u op dat het bovenste veld van het CD-frame het eerste voorbeeld is.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_TOP Hiermee geeft u op dat het bovenste veld van het DD-frame het eerste voorbeeld is.
WM_DM_IT_EERSTE_FRAME_IN_CLIP_IS_AA_ONDER Hiermee geeft u op dat het onderste veld van het AA-frame het eerste voorbeeld is.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_BOTTOM Hiermee geeft u op dat het onderste veld van het BB-frame het eerste voorbeeld is.
WM_DM_IT_EERSTE_FRAME_IN_CLIP_IS_BC_ONDERAAN Hiermee geeft u op dat het onderste veld van het BC-frame het eerste voorbeeld is.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_BOTTOM Hiermee geeft u op dat het onderste veld van het CD-frame het eerste voorbeeld is.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_BOTTOM Hiermee geeft u op dat het onderste veld van het DD-frame het eerste voorbeeld is.

Geavanceerde onderwerpen