Dela via


Att avfläta video

[Funktionen som är associerad med den här sidan, Windows Media Format 11 SDK, är en äldre funktion. Det har ersatts av Source Reader och Sink Writer. Source Reader och Sink Writer har optimerats för Windows 10 och Windows 11. Microsoft rekommenderar starkt att ny kod använder Source Reader och Sink Writer i stället för Windows Media Format 11 SDK, när det är möjligt. Microsoft föreslår att befintlig kod som använder äldre API:er skrivs om för att använda de nya API:erna om möjligt.]

Vissa videokällor, till exempel videoinspelningskort, levererar videodata för sammanflätad visning. Varje bildruta i sammanflätad video består av två fält. Det översta fältet innehåller den första raden med video och varannan rad därefter. Det nedre fältet innehåller den andra raden med video och varannan rad därefter. Så ett fält innehåller alla jämna numrerade rader och det andra innehåller alla udda numrerade rader. Fälten som utgör en ram representerar något olika presentationstider så att de inte bildar en statisk bild när de interfolieras.

När du vill visa video på en datorövervakare ska varje bildruta i videon visas som en bild (den här metoden för att visa video en hel bild i taget kallas progressiv video.) Om du visar sammanflätad video progressivt kanske bildrutorna inte ser rätt ut på grund av tidsskillnaden mellan de två fälten. Windows Media Video codec och Windows Media Video Advanced Profile codec stöder båda en förbearbetningsfunktion som konverterar sammanflätat innehåll till progressiva ramar.

För att codec:en ska avfläta indatavideon, anropa metoden IWMWriterAdvanced2::SetInputSetting. Inställningen som ska användas är g_wszDeinterlaceMode. Ange avflätningsläget till något av följande värden.

Värde Beskrivning
WM_DM_NOTINTERLACED Indata är progressiva. Använd den här inställningen för att stoppa deinterlacing när du tidigare har ställt in deinterlacing-läget på ett annat värde.
WM_DM_DEINTERLACE_NORMAL Välj det här läget om du vill blanda de jämna och udda fälten i en sammanflätad ram (med hjälp av en mekanism för rörelsekompensation). Fördelar:
  • Sammanflätningsartefakterna i den progressiva visningen minskas avsevärt.
  • Windows Media Video codec ger komprimerad video av högre kvalitet.
WM_DM_DEINTERLACE_HALFSIZE Välj det här läget när utdataupplösningen är hälften eller mindre av indataupplösningen. Använd till exempel det här läget när videoupplösningen för indata är 640 x 480 bildpunkter och videoupplösningen för utdata är 320 x 240 bildpunkter. Fördelar:
  • Sammanflätningsartefakterna i den progressiva visningen minskas avsevärt.
WM_DM_DEINTERLACE_HALFSIZEDOUBLERATE Välj det här läget när utdataupplösningen är hälften eller mindre av indataupplösningen och utdata bildfrekvens är dubbelt så hög. Använd till exempel det här läget när videoupplösningen för indata är 640 x 480 bildpunkter vid 30 sammanflätade bildrutor/sek och videoupplösningen för utdata är 320 x 240 bildpunkter vid 60 bildrutor/s. Fördelar:
  • Detta ger progressiva ramar av hög kvalitet, eftersom varje fält konverteras till en ram och därför inte behöver blanda någon information.
  • De sammanflätade fältens fullständiga rörelse registreras.
WM_DM_DEINTERLACE_INVERSETELECINE Välj det här läget om du vill konvertera telecinerad 30 bildrutor/sek-video till originalfilmens 24 bilder/s. Fördelar:
  • Komprimeringskvaliteten förbättras avsevärt eftersom endast 24 bildrutor/s i stället för 30 bildrutor/s behöver kodas.
  • Eftersom resultatet är progressivt realiseras samma komprimerings- och visningsfördelar med deinterlacing.
WM_DM_DEINTERLACE_VERTICALHALFSIZEDOUBLERATE Välj det här läget när den lodräta utdataupplösningen är hälften eller mindre av den lodräta indataupplösningen och utdata bildfrekvens är dubbelt så hög. Den lodräta videoupplösningen för indata är till exempel 640 x 480 bildpunkter vid 30 sammanflätade bildrutor/sek och den lodräta videoupplösningen för utdata är 320 x 240 bildpunkter vid 60 bildrutor per sekund. Fördelar:
  • Detta ger progressiva ramar av hög kvalitet, eftersom varje fält konverteras till en ram och därför inte behöver blanda någon information.
  • De sammanflätade fältens fullständiga rörelse registreras.

För blandat innehåll anger du deinterlacing-läget efter behov innan du skickar exempel av en ny typ. Om du till exempel vill börja koda med progressiva indata behöver du inte ange något deinterlacing-läge. Om vissa prover kräver normal deinterlacing, måste du ställa in avflätningsläget på WM_DM_DEINTERLACE_NORMAL. Om du sedan vill bearbeta ytterligare progressiva exempel måste du ställa in avflätningsläget på WM_DM_NOTINTERLACED.

Invertera Telecine-inställningar

En beskrivning av invertera telecin finns i To Use Inverse Telecine.

Om du ställer in deinterlacing-läget på WM_DM_DEINTERLACE_INVERSETELECINE kan du ange telecine-mönstret för den första indataramen genom att anropa IWMWriterAdvanced2::SetInputSetting. Inställningen som ska användas är g_wszInitialPatternForInverseTelecine. Ange det inledande mönstret till något av följande värden.

Värde Beskrivning
WM_DM_IT_DISABLE_COHERENT_MODE Anger att indatamediet har gått igenom telecinprocessen men att bildrutorna inte längre är i ett förutsägbart mönster. Detta indikerar vanligtvis att mediet redigerades efter telecinbearbetningen. När du använder den här inställningen försöker codec rekonstruera de ursprungliga ramarna på egen hand.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_TOP Anger att det översta fältet i AA-ramen är det första exemplet.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_TOP Anger att det översta fältet i BB-ramen är det första exemplet.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_TOP Anger att det översta fältet i BC-ramen är det första exemplet.
The text should be kept as it is if it is a specific code or identifier unless the task requires localization of such text, in which case providing context or additional information would help in making an accurate translation. Anger att det översta fältet i CD-ramen är det första exemplet.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_TOP Anger att det översta fältet i DD-ramen är det första exemplet.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_BOTTOM Anger att det nedre fältet i AA-ramen är det första exemplet.
WM_DM_DET_FÖRSTA_RAMEN_I_KLIPPÄR_BB_BOTTOM Anger att det nedre fältet i BB-ramen är det första exemplet.
Första ramen i klippet är BC-botten Anger att det nedre fältet i BC-ramen är det första exemplet.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_BOTTOM Anger att det nedre fältet i CD-ramen är det första exemplet.
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_BOTTOM Anger att det nedre fältet i DD-ramen är det första exemplet.

Avancerade ämnen