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:
|
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:
|
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:
|
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:
|
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:
|
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. |