ConvertBackToYUY2 / ConvertToRGB / ConvertToRGB24 / ConvertToRGB32
ConvertToY8 / ConvertToYUY2 / ConvertToYV12 / ConvertToYV16 / ConvertToYV24 / ConvertToYV411

ConvertToRGB (clip [, string "matrix"] [, bool "interlaced"] [, string "chromaplacement"] [, string "chromaresample"])
ConvertToRGB24 (clip [, string "matrix"] [, bool "interlaced"] [, string "chromaplacement"] [, string "chromaresample"])
ConvertToRGB32 (clip [, string "matrix"] [, bool "interlaced"] [, string "chromaplacement"] [, string "chromaresample"])
ConvertToY8 (clip [, string "matrix"])
ConvertToYUY2 (clip [, bool "interlaced"] [, string "matrix"] [, string "chromaplacement"] [, string "chromaresample"])
ConvertToYV411
(clip [, bool "interlaced"] [, string "matrix"] [, string "chromaplacement"] [, string "chromaresample"])
ConvertToYV12 (clip [, bool "interlaced"] [, string "matrix"] [, string "chromaplacement"] [, string "chromaresample"])
ConvertToYV16 (clip [, bool "interlaced"] [, string "matrix"] [, string "chromaplacement"] [, string "chromaresample"])
ConvertToYV24 (clip [, bool "interlaced"] [, string "matrix"] [, string "chromaplacement"] [, string "chromaresample"])
ConvertBackToYUY2 (clip [, string "matrix"])

barevné formáty planární/prolínaný rozlišení barevnosti (chroma)
RGB prolínaný plná barevnost - 4:4:4
RGB24 prolínaný plná barevnost - 4:4:4
RGB32 prolínaný plná barevnost - 4:4:4
YUY2 planární barevnost sdílená mezi 2 pixely - 4:2:2
Y8 planární/prolínaný žádná barevnost - 4:0:0
YV411 planární barevnost sdílená mezi 4 pixely - 4:1:1
YV12 planární barevnost sdílená mezi 2x2 pixely - 4:2:0
YV16 planární barevnost sdílená mezi 2 pixely - 4:2:2
YV24 planární plná barevnost - 4:4:4

matrix: Výchozí je Rec601. Ovládá koeficienty barev a násobící koeficienty používané při převodech RGB - YUV.

interlaced : Výchozí je false. Používá prokládanou strukturu pro YV12 - YUV/RGB barevné převody.

chromaplacement (přidáno ve v2.60): Toto určuje umístění barevnosti při převádění do nebo z YV12. Může to být "MPEG2" (výchozí), "MPEG1" a "DV".

chromaresample (přidáno ve v2.60): Toto určuje který resizer se při převodu použije. Je to použito, když se liší rozlišení barevnosti zdroje a cíle. Mohou to být všechny resamplery, výchozí je "bicubic".

AviSynth do v2.50 mohl vnitřně pracovat se dvěma barevnými formáty, RGB a YUY2. Od v2.50 AviSynth může také se třetím barevným formátem, YV12. Tyto filtry mezi nimi provádí převody. Pokud je video už v daném formátu, tak prochází přes filtr beze změn. RGB se všude v této dokumentaci rozumí RGBA = RGB32. ConvertToRGB převádí do RGB32, pokud není váš klip v RGB24. Pokud z nějakého důvodu potřebujete 24-bitové RGB, použijte přímo  ConvertToRGB24 a ConvertToRGB32 pro opačný převod.

Ve v2.60 jsou podporovány další doplněné formáty: Y8 černobílý (je jak planární tak prolínaný protože neobsahuje barevnost; 4:0:0), YV411 (planární; YUV 4:1:1), YV16 (planární verze YUY2; 4:2:2) a YV24 (planární; YUV 4:4:4).

Syntaxe a práce ConvertToRGB24 je identická s ConvertToRGB, kromě toho, že výstupní formát je 24-bit; pokud je zdroj RGB32, alfa kanál bude odstraněn.

Od v2.51/v2.52 je doplněn parametr interlaced  (interlaced=false je základní nastavení). Když nastavíte false, tak to znamená, že  clip je progresivní, když nastavíte true tak to znamená, že  clip je prokládaný. Tato volba je přidána proto, že například (předpokládáme prokládaný klip YV12):

SeparateFields(clip)
ConvertToYV12
Weave
je převzorkovaný nesprávně. Místo toho je lepší použít:
ConvertToYV12(clip, interlaced=true)
Všimněte si, že nastavení   interlaced= true pracuje pouze pokud je potřeba převodu YV12 <-> YUY2/RGB, jinak je ignorováno. Více o tom naleznete zde "Převody barev a prokládané/ na polích založené video".

Na rozdíl od toho, co mohou někteří předpokládat, není jen jeden způsob převodu YUV na RGB. V AviSynthu jsou implementovány dva nejznámější způsoby: Rec.601 a Rec.709 (nazývaných podle jejich oficiálních specifikací). I když nebudou správné ve všech případech, následující by mělo být správné ve většině případů:

První varianta (Rec.601) by měla být použita pokud je vaším zdrojem DivX/XviD nebo video zachycené z analogového zařízení:

ConvertToRGB(clip)

Druhá varianta (Rec.709) by měla být použita pokud je Vaším zdrojem DVD nebo HDTV:

ConvertToRGB(clip, matrix="rec709")

Ve  v2.56 , je možný také opačný převod, např.

ConvertToYUY2(clip, matrix="rec709") nebo ConvertToYV12(clip, matrix="rec709")

Ve  v2.56, matrix="pc.601" (a matrix= "pc.709") je možné provádět RGB <-> YUV převod při zachování jasové složky, tzn. RGB [0,255] <-> YUV [0,255] (namísto obvyklého/výchozího RGB [0,255] <-> YUV [16,235]).

Všechny filtry VirtualDubu (načtené pomocí  LoadVirtualdubPlugin, viz. Plugins) podporují pouze vstup RGB32.

RGB24, RGB32: Barvy jsou zaznamenány jako hodnoty červené, zelené a modré. V RGB32 je zvláštní Alfa kanál pro neprůhlednost. Rozměr obrazu může být libovolný.

YUY2: Obraz je zaznamenán jako hodnota jasu Y a dvě barevné hodnoty U, V. Pro dva vodorovné pixely je jen jedna barevná hodnota a dvě jasové hodnoty (dvakrát Y, jednou U, jednou V). Proto musí být šířka násobkem dvou.

YV8: Černobílý. Stejný jako YV24 bez ploch barevnosti.

YV411: Podobný jako YV12 ale jen s jednou hodnotou barevnosti pro 4 pixely (1x4 čtverec). Horizontální rozměr obrazu musí být násobkem čtyř.

YV12: Stejně jako YUY2 ale je pouze jedna barevná  hodnota pro 4 pixely (na čtverec 2x2). Oba rozměry obrazu musí být násobkem dvou, je-li video prokládané musí být výška násobkem čtyř protože čtverec 2x2 je brán z pole a ne ze snímku.

YV16: Stejný jako YUY2 ale planární namísto prolínaného.

YV24: Stejný jako YV12/YV16, ale s plnou barevností.

Některé funkce kontrolují omezení rozměrů obrazu, některé zaokrouhlují parametry, ale stále mohou vzniknout některé poruchy obrazu nebo chyby programu.

Práce v YUY2 je rychlejší než v RGB. YV12 je dokonce ještě rychlejší a je to výchozí (nativní) MPEG formát, takže je zde méně převodů barevných prostředí.

Převod zpět a vpřed není bezeztrátový, proto používejte co nejméně převodů. Pokud je nutné více převodů, použijte ConvertBackToYUY2 pro převod do YUY2, pokud Váš zdroj už jednou byl v YUY2. To zmírní rozmazání barev, ale stále se ztrácí část přesnosti.

Ve většině případů, by filtr ConvertToRGB  neměl být nutný. Pokud výstup Avisynthu je v YUY2 formátu a editor předpokládá RGB, systém použije instalovaný YUY2 kodek pro převod. Nicméně, pokud není nainstalovaný YUY2 kodek, nebo pokud (jako je vpřípadě ATI a některých jiných YUY2 kodeků) kodek převede z YUY2 do RGB nesprávně, můžete místo toho použít filtr AviSynthu.

Huffyuv bude pracovat jako systémový YUY2 kodek pokud není nainstalovaný jiný kodek, takže jestli máte nainstalovaný Huffyuv a odinstalovali jste všechny ostatní YUY2 kodeky, tak nikdy nebudete potřebovat  ConvertToRGB.

ConvertToRGB24 a ConvertToRGB32 může být použito pro vynucení použití  AviSynthu k použití specifické metody zachování pro RGB data. RGB24 data jsou často mnohem pomalejší pro zpracování než RGB32 data, takže jestli je váš zdroj v RGB24, můžete zvýšit rychlost převodem do RGB32. Nejsou známy žádné výhody použití RGB24 kromě toho, že TMPGEnc a VFApi požadují vstup v RGB24.

Příklady:

# Při převodu YUV a RGB dochází k mírnému snížení kvality.
# Podívejme se, jestli je možné ho uvidět.
control = ConvertToYUY2()
test = ConvertToYUY2(ConvertToRGB(ConvertToYUY2(ConvertToRGB(control))))
test = ConvertToYUY2(ConvertToRGB(test))
return Subtract(test,control)

Změny:
v2.60 Přidáno: ConvertToY8, ConvertToYV411, ConvertToYV16, ConvertToYV24,
chromaplacement a chromaresample
v2.50 ConvertToYV12

$English Date: 2009/03/08 15:06:50 $

Český překlad:18.9.2009