Sdílet prostřednictvím


Použití interlacovaného videa

[Funkce přidružená k této stránce, Windows Media Format 11 SDK, je starší funkce. Byly nahrazeny zdrojovým čtečkou a čtecím zapisovačem. Source Reader a Sink Writer jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal Zdrojovou čtečku a Cílový zapisovač místo Windows Media Format 11 SDK, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]

Existují dva základní typy kódování videa: progresivní a prokládaný. V progresivním kódování je každý snímek kódovanou reprezentací jednoho snímku videa. Při prokládaném kódování je každý snímek kódovanou reprezentací buď všech sudých řádků pixelů ve videu, nebo všech lichých řádků. Každý proložený rámec se nazývá pole, takže existují lichá pole a sudá pole. Prokládaný displej (například televize) vykresluje pole jedno po druhém, přičemž střídá jednotlivá pole. Progresivní zobrazení vykresluje snímky najednou.

Kodek Windows Media Video 9 Advanced Profile poskytuje podporu pro udržování prokládání v komprimovaných datových proudech.

Kdy použít prokládané video

Kódování prokládaného videa je užitečné pouze tehdy, když se obsah zobrazuje na prokládaném zařízení. Obsah, který je určen k zobrazení v televizi (prostřednictvím set-top boxu nebo jiného zařízení), může být nutné prokládat. Obsah, který má být zobrazen výhradně na obrazovce počítače, by neměl být kódován jako prokládaný.

Pokud chcete interlacované video zakódovat jako progresivní video, musíte nakonfigurovat vstupní nastavení. Další informace najdete pod Deinterlace Video.

Pořadí polí

Většina zdrojů prokládaného videa, jako jsou videozáznamové karty, poskytuje video vzorky, které obsahují obě pole vzájemně prokládaná. Výsledek je jako úplný snímek videa s tím rozdílem, že liché a sudé čáry jsou mírně časově posunuty. Neexistuje žádný univerzální standard, které pole v ukázce prokládaného videa je v čase první.

Uživatelům byste měli umožnit nastavit pořadí polí při předávání prokládaných vzorků do vaší aplikace.

Kódování prokládaného videa

Pokud chcete použít prokládané kódování, proveďte následující kroky:

  1. Nakonfigurujte datový proud videa v profilu tak, aby používal rozšíření jednotky dat typu obsahu metodou voláním IWMStreamConfig2::AddDataUnitExtension. Identifikátor GUID vzorového rozšíření pro rozšíření typu obsahu je WM_SampleExtensionsGUID_ContentType.
  2. Nastavte datový proud v profilu a nakonfigurujte zapisovací zařízení s profilem jako obvykle.
  3. Před předáním prokládaných ukázek do zapisovače zavolejte metodu IWMWriterAdvanced2::SetInputSetting pro nastavení vstupu g_wszInterlacedCoding na TRUE.
  4. Pro každou prokládanou ukázku, kterou předáte zapisovači, zavolejte metodu INSSBuffer3::SetProperty pro nastavení typu obsahu. Hodnoty typu obsahu jsou kombinace příznaků v následující tabulce.
Vlajka Popis
WM_CT_INTERLACED Při kódování prokládaného obsahu vždy nastavte tento příznak. Pokud tento příznak použijete bez nastavení příznaku pořadí polí (WM_CT_BOTTOM_FIELD_FIRST nebo WM_CT_TOP_FIELD_FIRST), kodek předpokládá, že horní pole je první. Pokud kodek používá nesprávné pořadí polí, nemělo by to mít žádný vliv na kvalitu obrázku, ale bude ovlivněna efektivita kódování.
WM_CT_BOTTOM_FIELD_FIRST Při kombinaci s příznakem WM_CT_INTERLACED tento příznak označuje, že dolní pole (pole začínající druhým řádkem ve vzorku) se objevuje časově jako první.
WM_CT_TOP_FIELD_FIRST V kombinaci s příznakem WM_CT_INTERLACED tento příznak indikuje, že horní pole (pole začínající prvním řádkem v ukázce) nastane jako první v čase.
WM_CT_OPAKOVAT_PRVNÍ_POLE Označuje, že při přehrávání by se mělo opakovat první pole v ukázce. Tento příznak se používá pro video vytvořené z filmu procesem telecine. Pokud není ve spojení s tímto příznakem nastaven žádný příznak pořadí polí, předpokládá se, že první se zobrazí horní pole.

Poznámka

Pokud není příznak WM_CT_INTERLACED nastaven, předpokládá se, že ukázka obsahuje progresivní snímek videa.

Dekódování prokládaného videa

Při dekódování prokládaného videa musíte nastavit nastavení g_wszAllowInterlacedOutput na TRUE pomocí metody IWMReaderAdvanced2::SetOutputSetting. V opačném případě kodek odešle progresivní snímky.

Rozšíření datové jednotky typu obsahu se udržuje u výstupních vzorků. Pokud chcete zajistit správné přehrávání, měli byste předat orientaci pole do vykreslovacího zařízení.

pokročilá témata