# TFM

## Přehled

autor: tritical
verze: 1.0.4
stáhnout: http://bengal.missouri.edu/~kes25c/, http://avisynth.org/warpenterprises/
kategorie: Odstraňování prokládání & pulldown
požadavky:

- YV12 & YUY2 Barevné prostředí

licence: GPL

## Obsah

- A.) Obecné informace
- B.) Základní parametry
- C.) Pokročilé parametry
- D.) Vstupní/výstupní parametry souboru
- E.) Parametry ladění/zobrazení
- F.) Nadřazování
- G.) Seznam změn
- H.) Na dopracování

## A.) Obecné informace:

`TFM` je filtr pro uspořádání polí, který obnovuje původní progresivní snímky ze streamů zpracovaných telecine. Nedělá decimaci výsledných duplikovaných snímků, takže pro docílení ivtc musí být TFM následován decimačním filtrem jako TDecimate(), který je také obsažen v souboru TIVTC.dll .

### Syntaxe

`TFM` (clip, int "order", int "field", int "mode", int "PP". string "ovr", string "input", string "output", string "outputC", bool "debug", bool "display", int "slow", bool "mChroma", int "cNum", int "cthresh", int "MI", bool "chroma", int "blockx", int "blocky", int "y0", int "y1", int "mthresh", PClip "clip2", string "d2v", int "ovrDefault", int "flags", double "scthresh", int "micout", int "micmatching", string "trimIn", int "hint", int "metric", bool "batch", bool "ubsco", bool "mmsco", int "opt")

Zatímco TFM má několik málo parametrů, pokusil jsem kategorizovat nastavení tak, aby byly jednodušší na správu. Ve skutečnosti jsou jen 3 parametry, o které by se měla většina uživatelů zajímat, aby poznala jejich nastavení. Jsou to "order", "mode", a "PP" a jsou popsány v kapitole "ZÁKLADNÍ PARAMETRY". Další nastavení jsou popsána v dalších různých kapitolách, které by mělo být celkem snadné rozpoznat z jejich názvů.

## B.) Základní parametry:

Jsou to jen tři parametry o které by se měla většina uživatelů zajímat nebo dávat pozor na jejich nastavení. Ovládají základní operace filtru.

order -

Nastavuje pořadí polí klipu. Pořadí polí musí být správně nastaveno aby se objevilo přesné uspořádání polí. Možné hodnoty:

-1 = auto (použije vnitřní hodnotu parity v avisynthu)
0 = spodní pole první (bff)
1 = horní pole první (tff)

Výchozí: -1 (int)

mode -

Nastavuje režim uspořádání nebo použitou strategii. Prosté 2-cestné uspořádání (možnost 0) je nejbezpečnější ze všech možností v tom smyslu, že nebude riskovat vytváření trhání kvůli duplikovaným snímkům, když je to možné, ale pokud jsou zde špatné střihy nebo smíchaná pole skončí vysíláním roztřepených snímků, když by mělo ve skutečnosti existovat i dobré uspořádání. 3-cestné uspořádání + zkoušení 4-tých/5-tých uspořádání pokud všechny 3 první uspořádání jsou detekovány jako roztřepené (možnost 5) je nejriskantnější ve smyslu vytváření trhání, ale téměř vždy nalezne dobré snímky, pokud existují. Další nastavení (možnosti 1, 2, 3, 4, a 6) jsou všechny někde mezi možnostmi 0 a 5 ve smyslu riskování trhání a vytváření duplikovaných snímků, proti nalezení dobrého uspořádání v částech se špatnými střihy, osiřelých polí, smíchaných polí, atd...

Režim 7 není jedním z normálních režimů a je výslovně pro materiál se smíchanými poli, které mají specifickou šablonu. Režim 7 vyžaduje lineární přístup, aby pracoval správně, protože jaká uspořádání/pole jsou použita závisí na předchozím rozhodnutí o uspořádání.

Možná nastavení jsou:

0 = 2-cestné uspořádání (p/c)
1 = 2-cestné uspořádání + 3-tí uspořádání na roztřepených (p/c + n)
2 = 2-cestné uspořádání + 3-tí uspořádání (stejné pořadí) na roztřepených (p/c + u)
3 = 2-cestné uspořádání + 3-tí uspořádání na roztřepených + 4-té/5-té uspořádání pokud jsou stále roztřepené (p/c + n + u/b)
4 = 3-cestné uspořádání (p/c/n)
5 = 3-cestné uspořádání + 4té/5-té uspořádání na roztřepených (p/c/n + u/b)
6 = režim 2 + něco navíc pokud je roztřepení (p/c + u + n + b)
7 = režim 0 + přepínání polí založené na předchozích uspořádáních

Kulaté () na konci indikují uspořádání, která by byla použita pro ten režim za předpokladu order = 1 a field = 1.

* Z pohledu rychlosti je režim 0 zdaleka nejrychlejší a 5 je nejpomalejší.

Výchozí: 1 (int)

PP -

Nastavuje režim dodatečného zpracování post-processingu. To ovládá jak by měl TFM zacházet (nebo nezacházet) s jakýmikoli roztřepenými snímky, které vychází z procesu uspořádání polí. Možná nastavení jsou:

0 - nic (Dokonce ani nezkoumá roztřepení snímků)
1 - nalézá/udává roztřepené snímky, ale neodstraňuje prokládání
2 - hloupé odstranění prokládání smícháním (blend)
3 - hloupé odstranění prokládání s kubickou interpolací
4 - hloupé odstranění prokládání modifikované-ela
5 - pohybově-adaptivní odstranění prokládání smícháním (blend)
6 - pohybově-adaptivní odstranění prokládání s kubickou interpolací
7 - pohybově-adaptivní odstranění prokládání modifikované-ela

* Můžete také použít parametr "clip2" pro zadání klipu s externím odstraněním prokládání, ze kterého TFM vezme snímky místo provádění odstraňování prokládání ve zpracovávaném klipu. Viz popis parametru clip2 pro více informací a aby jste viděli jak nastavení PP ovlivní operaci s clip2.

* Můžete ručně ovládat, které snímky by měly být označeny jako roztřepené stejně jako možnost PP přes nadřazovací soubor (viz. popis parametru ovr)

Výchozít: 6 (int)

## C.) Pokročilé parametry:

Tyto parametry dávají jemnější ovládání nad operacemi uspořádání polí, detekcí roztřepených snímků, a odstraňováním prokládání z roztřepených snímků. Třebaže správné nastavení těchto hodnot může zlepšit přesnost uspořádání, mohou také stav zhoršit.

field -

Nastavuje ze kterého pole se má uspořádávat. Doporučuje se nastavit ho na stejnou hodnotu jako pořadí order kromě případu, kdy máte zkušenost se selháním uspořádání s takovým nastavením. Za určitých okolností změna pole, které je použito jako začátek při uspořádání může mít velký dopad na výkon uspořádání. Možné hodnoty jsou:

-1 = auto (TFM nastaví pole na stejnou hodnotu jakou má parametr order)
0 = spodní pole
1 = horní pole

Výchozí: -1 (int)

slow -

Nastavuje která funkce uspořádání polí je použita. Možná nastavení:

0 - normální (měla by mít nejhorší přesnost)
1 - pomalejší
2 - nejpomalejší (měla by mít nejlepší přesnost)

Výchozí: 1 (int)

mChroma -

Nastavuje zda má a nebo nemá být barevnost zahrnuta při porovnávání polí. Ve většině případů se doporučuje nechat ho zapnutý. Pouze, když váš klip má problémy se špatnou barevností jako těžké duhové nebo jiné artefakty, by jste měli nastavit tento parametr na false. Nastavení na false by mohlo být také použito z rychlostních důvodů za cenu úbytku přesnosti.

true = barevnost je zahrnuta
false = barevnost není zahrnuta

Výchozí: true (bool)

y0/y1 -

Toto definuje výlukové pásmo, které vylučuje řádky mezi y0 a y1 zahrnuté v rozhodnutí uspořádání polí. Výlukové pásmo může být použito pro ignorování titulků, loga, nebo jiných věcí, které mohou interferovat s uspořádáním. y0 nastavuje počáteční řádek a y1 nastavuje poslední řádek, všechny řádky v rozsahu y0 až y1 (včetně y0 a y1) budou ignorovány. Nastavte y0 rovno y1 pro vypnutí.

Výchozí: y0 - 0 (int)
y1 - 0 (int)

scthresh -

Nastavuje prahovou hodnotu změny scény jako procento maximální změny v jasové (luma) ploše. Dobré hodnoty jsou v rozsahu 8.0 až 14.0. Detekce změny scény je využita v následujících parametrech: ubsco, mmsco, a flags (jen flags=5). Rozsah pro scthresh je [0.0, 100.0].

Výchozí: 12.0 (double)

ubsco -

Umožňuje použití u/b uspořádání jen v okolí změn scén. Parametr 'scthresh' nastavuje prahovou hodnotu změny scény jako procento maximální změny v jasové ploše. Pro vypnutí tohoto (umožní u/b uspořádání kdekoliv) nastavte ubsco na false. Nastavení ubsco ovlivňuje jen automatické uspořádání, t.j. u/b uspořádání přes nadřazení nebo vstupní soubor se nezmění. Režimy uspořádání které pracují s ubsco jsou 2, 3, 5, a 6 (jen ty, které používají u/b uspořádání).

Výchozí: true (bool)

micmatching -

Když je micmatching větší než 0, tfm vezme do úvahy mic hodnoty uspořádání když se rozhoduje jaké uspořádání použít pro finální uspořádání. micmatching má 5 možných nastavení:

0 - vypnuto 1 - mic jsou použity jen k určení zda 5 možných uspořádání je jedno, které má významně nižší hodnotu mic než ostatní čtyři uspořádání. Při zapnutí této možnosti je možné v tfm použít jakékoliv uspořádání (p/c/n/b/u) bez ohledu na režim uspořádání!
2 - použije mic pro pomoc při rozhodování uvnitř aktuálního režimu uspořádání (jsou uvažována jen uspořádání, která by mohla být použita uvnitř aktuálního režimu uspořádání)
3 - provádí obě možnosti 1 i 2
4 - provádí jen následnou kontrolu po rozhodnutí o uspořádání (tato operace je zahrnuta do micmatching režimů 1, 2, a 3, a není předmětem parametru mmsco)

Ladící (debug) výstup bude indikovat, kdy micmatching vedl ke změně při rozhodování o uspořádání. Zapnutí micmatching dělá zpracování pomalejší kvůli potřebě výpočtu hodnot mic pro uspořádání, které by normálně nebyly počítány.

Parametr "mmsco" může být použit pro omezení použití micmatching jen na změny scén. Aby to tak bylo, nastavte mmsco na true..., pak bude micmatching moci ovlivnit jen snímky na obou stranách změny scény.

**** Od v0.9.10.0 TFM, je výchozí hodnotou micmatching 1. To znamená, že jakékoliv jedno uspořádání z pěti by mohlo být použito bez ohledu na režim uspořádání! Pokud si nepřejete takové chování tak nastavte micmatching na 0!

**** Od v0.9.12.6 TFM, všechny režimy micmatching spustí kontrolu po každém rozhodnutí uspořádání polí na případy kde hodnoty mic ukazují, že bylo zvoleno jasně špatné uspořádání. Tato část pracuje nezávisle na parametru mmsco.

Výchozí: 1 (int)

mmsco -

Povolí micmatching jen kolem změn scén. Parametr 'scthresh' nastavuje prahovou hodnotu změny scény jako procento maximální změny v jasové ploše. Je-li nastaven na true, tak micmatching bude omezen jen na změny scén. Je-li nastaven na false, tak bude micmatching povolen kdekoliv.

Výchozí: true (bool)

hint -

Zapíná zápis hint informace do video snímků pro čtení ve filtrech tdecimate nebo tdeint. Informace zahrnují použité uspořádání, roztřepení vs. progresivní, a d2v rff info. true zapíná zápis, false vypíná.

Výchozí: true (bool)

opt -

Řídí, které cpu optimalizace jsou použity. Možná nastavení:

0 - použít c rutiny
1 - použít mmx rutiny
2 - použít isse rutiny
3 - použít sse2 rutiny
4 - autodetekce

Výchozí: 4 (int)

Zbytek "pokročilých parametrů" ovládá detekci roztřepených snímků a odstraňování prokládání, a jsou použity jen když je mode nastaven na 1, 2, nebo 4 nebo PP (post-processing) je nastaven na 1 nebo větší!

cthresh -

Toto je prahová hodnota roztřepení oblasti použitá pro detekci roztřepených snímků. Je podobná dthresh nebo dthreshold v telecide() a fielddeinterlace(). To v podstatě ovládá jak "silné" nebo "viditelné" musí být roztřepení, aby bylo detekované. Větší hodnoty znamenají, že roztřepení musí být více viditelné a menší hodnoty znamenají, že může být méně viditelné nebo silné a přitom stále detekované. Platná nastavení jsou od -1 (každý pixel bude detekován jako roztřepený) do 255 (žádný pixel nebude detekovaný jako roztřepený). Je to v podstatě hodnota rozdílu pixelu. Dobrý rozsah je mezi 8 až 12.

Výchozí: 9 (int)

chroma -

Nastavuje, zda má a nebo nemá být barevnost uvažována při rozhodování o roztřepenosti snímku. Vypněte ho jen, když má váš zdroj problémy s barevností (duha, atd...) , které způsobují problémy detekci roztřepení snímku při zapnutém chroma. Ve skutečnosti je jeho nastavení na false obvykle dobré, kromě případu kdy je ve zdroji roztřepená jen barevnost.

true = barevnost (chroma) je zahrnuta
false = barevnost (chroma) není zahrnuta

Výchozí: false (bool)

blockx -

Nastavuje x-ovou velikost okna použitého při detekci roztřepení snímku. To se týká velikosti oblasti, ve které je vyžadován MI počet pixelů, aby to bylo detekováno jako roztřepení pro deklarování roztřepeného snímku. Viz popis parametru MI pro více informací. Možné hodnoty jsou jakákoliv čísla, která jsou druhými mocninami čísla 2 počínaje 4 a konče 2048 (t.j. 4, 8, 16, 32, ... 2048).

Výchozí: 16 (int)

blocky -

Nastavuje y-ovou velikost okna použitého při detekci roztřepení snímku. To se týká velikosti oblasti, ve které je vyžadován MI počet pixelů, aby to bylo detekováno jako roztřepení pro deklarování roztřepeného snímku. Viz popis parametru MI pro více informací. Možné hodnoty jsou jakákoliv čísla, která jsou druhými mocninami čísla 2 počínaje 4 a konče 2048 (t.j. 4, 8, 16, 32, ... 2048)

Výchozí: 16 (int)

MI -

Počet roztřepeých pixelů uvnitř bloků o rozměrech blocky na blockx na snímek pro to, aby byl snímek detekován jako roztřepený. Zatímco cthresh ovládá jak "viditelné" musí roztřepení být, toto nastavení ovládá "kolik" roztřepení musí být v každé lokalizované oblasti (okno definované nastavením blockx a blocky) ve snímku. Minimální nastavení = 0, maximální nastavení = blocky x blockx (což je bod ve kterém nebudou nikdy žádné snímky detekovány jako roztřepené).

Výchozí: 80 (int)

metric -

Nastavuje, která prostorová (spatial) metrika roztřepení je použita pro detekci roztřepených pixelů. Možné volby:

Předpokládejme 5 sousedních pixelů (a,b,c,d,e) umístěných vertikálně.

a
b
c
d
e

                0:  d1 = c - b;
                    d2 = c - d;
                    jestliže ((d1 > cthresh && d2 > cthresh) || (d1 < -cthresh && d2 < -cthresh))
                    {
                       jestliže (abs(a+4*c+e-3*(b+d)) > cthresh*6) tak je roztřepený;
                    }

                1:  val = (b - c) * (d - c);
                    jestliže (val > cthresh*cthresh) tak je roztřepený;

Metriku 0 showcombedtivtc používal před verzí v1.2. Metrika 1 je metrika roztřepení používaná ve funkcích FieldDeinterlace()/IsCombed() od Donalda Grafta v decomb.dll.

Výchozí: 0 (int)

mthresh -
Nastavuje prahovou hodnotu pohybu (rozdíl pixelu) pro odstranění prokládání při použití pohybové adaptace (PP > 4). Jak bylo řečeno, je to jednoduše prahová hodnota rozdílu pixelu mezi snímky... pokud je pod mthresh tak je pixel považován za statický, pokud je nad mthresh je považován za pohyblivý.

Výchozí: 5 (int)

clip2 -

Při použití PP > 1 může být použit tento parametr pro zadání klipu odkud vezme snímky s odstraněným prokládáním místo použití některé metody odstraňování prokládání vestavěné v TFM. Pokud je PP < 5 tak budou snímky brány takové jaké jsou z klipu clip2, pokud je PP >= 5 (t.j. použití pohybové adaptace) tak TFM vytvoří masku jako obvykle a z klipu clip2 budou brány jen pixely v pohybových oblastech. Pro použití vnitřního odstraňování prokládání z TFM nezadávejte nic jako clip2. Jako příklad použití parametru clip2 se podívejte na soubor clip2_sample_avs.avs .

Výchozí: NULL (PClip)

## D.) Vstupní/výstupní parametry souboru:

Tato nastavení souvisí s použitím nadřazovacího (overrides) souboru a možnostmi výstupního/vstupního souboru.

d2v -

Tato možnost je zamýšlena pro použití v případě, kdy používáte mpeg2source() s d2v souborem. Nastavuje jméno a cestu k d2v souboru, který TFM zanalyzuje, aby viděl jestli tam jsou nějaké ilegální změny pořadí polí a volitelně nastaví parametr order použitím pořadí polí d2v souboru. Pokud je d2v soubor shledán, že má ilegální přenosy pořadí polí, TFM vytvoří opravený d2v soubor s řetězcem "-FIXED" připojeným na konec názvu souboru. Nový soubor bude umístěn do stejné složky jako původní. Můžete pak použít tento opravený d2v soubor pro zpracování. Pokud je parametr order nastaven na "-1" tak TFM detekuje pořadí polí z d2v souboru a nastaví parametr order na stejný. V závislosti na hodnotě parametru "flags" , TFM také použije d2v informace pro uspořádání polí a přenese informace z d2v do tdecimate pro pomoc při detekci duplikátů a detekce hybridů.

*POZNÁMKA: Tato možnost v současnosti podporuje všechny d2v formáty, které znám... což zahrnuje: dvd2avi 1.76, 1.77.3 a jejich varianty, všechny verze dvd2avidg, a všechny verze dgindex.

Příklad:

    TFM(d2v="myd2v.d2v")

Výchozí: "" (String)

flags -

Ovládají kolik informací z d2v souboru bude použito, když je nastaven parametr "d2v".

Možné hodnoty:

0 - Kontroluje d2v soubor na ilegální přenosy a nastavuje parametr order pokud už není nastaven ručně. Také předává informaci rff flag duplikátů k tdecimate.
1 - Stejné jako 0, plus použití znaků trf pro uspořádání polí ve filmovch částech (části kde trf znaky sledují šablonu 012301... )
2 - Stejné jako 1, ale používá trf znaky pro uspořádání polí ve všech oblastech (nemá šablonu 0123) (velmi se nedoporučuje!)
3 - Stejné jako 0, ale nepředává žádné informace do tdecimate (t.j. nastavuje pouze pořadí a kontroluje na ilegální přenosy)
4 - Stejné jako 1, ale d2v uspořádání jsou kontrolována na roztřepení. Pokud je detekováno uspořádání z d2v jako roztřepené tak tfm používá své vlastní rutiny uspořádání pro takový snímek.
5 - Stejné jako 4, ale d2v uspořádání jsou kontrolována na roztřepení jen kolem změn scén.

VELMI DŮLEŽITÉ (MUSÍTE ČÍST): Pro to aby možnosti 0, 1, 2, 4, a 5 pracovaly správně, musí tfm/tdecimate buď okamžitě následovat příkaz mpeg2source() nebo jakékoli filtry mezi nimi nesmí upravit pořadí nebo počet polí ve streamu jakýmkoliv způsobem. Nebo použijte soubor trimIn k tomu aby se řeklo TFM , které snímky byly zahozeny.

Výchozí: 4 (int)

trimIn -

Umožňuje použití možnosti d2v="" se znaky (flags) = 0, 1, 2, 4, a 5 s použitím funkce trim() před TFM. Pro použití trimIn souboru jednoduše vytvořte nový soubor a nastavte trimIn="CESTA\soubor.txt". Soubor by měl udávat seznam rozsahů snímků, které NEbyly zachovány... například, řekněme, že původní soubor má 30000 snímků, ale vy odstraníte prvních 100 použitím trim(100,0) před tfm. Pak by jste v souboru trimIn měli následující údaje:

0,99

Takto jednoduše zadáte rozsahy snímků, které už nejsou přítomny. Můžete mít tolik rozsahů kolik chcete (například jestliže chcete vystřihnou více částí) a mohou být zadány v jakémkoliv pořadí. Pro zadání jediného snímku, třeba 10, prostě použijte:

10,10

Pokud chcete použít jen jeden rozsah, tak místo zadávání názvu souboru můžete nastavit trimIn rovno řetězci podobnému tomuto:

"0,99" nebo "10,10" atd...

Můžete také použít záporná čísla pro provedení relativního adresování snímků ke konci klipu.

-1 = počet_snímků-1
-2 = počet_snímků-2
-3 = počet_snímků-3
atd...

Takže použití "-2,-1" by bylo stejné jako zadání dvou posledních snímků.

Výchozí: "" (String)

ovr -
Nastavuje jméno a cestu k nadřazovacímu souboru. Nadřazovací soubor umožňuje ruční ovládání toho, která uspořádání jsou použita pro zadané snímky a rozsahy snímků, pro změnu hodnot parametrů field, mode, order, mthresh, PP, a MI pro zadané snímky nebo rozsahy snímků, a pro zadání zda by snímky měli a nebo neměly být považovány za roztřepené nebo neroztřepené. Pro více informací o použití nadřazovacího souboru se podívejte do kapitoly NADŘAZOVÁNÍ na konci tohoto souboru. Můžete zároveň zadat soubor ovr a vstupní soubor. Uspořádání a roztřepené snímky dané v nadřazovacím souboru mají přednost před těmi ve vstupním souboru.

Příklad:

    TFM(ovr="myOvrFile.txt")

* POZNÁMKA: Možnost ovr NEMŮŽE číst výstupní soubory (soubory vytvořené možností output). Pro čtení výstupních souborů použijte parametr input.

Výchozí: "" (String)

ovrDefault -

Toto je zvláštní možnost, která vám umožní změnit výchozí "roztřepenou" práci při použití souboru ovr. Ve výchozím stavu, jestliže nezadáte snímek jako roztřepený '+' nebo neroztřepený '-' v nadřazovacím souboru tak ho TFM prostě zpracuje jako obvykle. Nicméně s možností ovrDefault, můžete vytvořit TFM označení všech snímků, které výslovně nezadáte jako buď roztřepené nebo neroztřepené. V zásadě je to snadný způsob odstranění prokládání jen v několika zadaných snímcích v souboru a ujištění, že jiné snímky budou netknuté a naopak. Pokud není použit žádný soubor ovr, tak toto nastavení nedělá nic. Možná nastavení:

0 - normální zpracování
1 - označí všechny snímky nezadané v ovr souboru jako čisté (neroztřepené)
2 - označí všechny snímky nezadané v ovr souboru jako roztřepené

Výchozí: 0 (int)

output -

Nastavuje jméno a cestu pro výstupní soubor. TFM vytvoří zadaný soubor a vysílá do něj všechna použitá rozhodnutí o uspořádaných a roztřepených snímcích. Každý řádek bude obsahovat číslo snímku, použité uspořádání, a použité rozhodnutí o roztřepení snímku. Tento soubor pak může být později použit pro vstup přes parametr input (takže uspořádání nebude nutné přepočítávat). Výstupní soubor bude také obsahovat hodnotu mic pro uspořádání použité na každý snímek a hodnotu mic pro jiná uspořádání jestliže micout > 0.

Výchozí: "" (String)

input -

Tato možnost je zamýšlena pro použití s možností output. Pokud jste použili možnost output v předchozím průchodu tak pro opětovné použití této informace nastavte parametr input na jméno a cestu výstupního souboru. Můžete zároveň zadat jak vstupní soubor (input) tak soubor ovr. V takovém případě budou uspořádání v nadřazovacím souboru mít přednost. Možnost input NEMŮŽE číst ovr soubory!!! Pro čtení ovr souboru musíte použít parametr ovr !

Výchozí: "" (String)

outputC -

Tato možnost může být použita pro pomoc při identifikování částí progresivního videa s 30fps vysíláním rozsahů, ve kterých nejméně "cNum" následných uspořádání bylo uspořádáno jako 'c'. Tato možnost není plně prověřená, protože pomalé nebo statické filmové scény mohou také generovat dlouhé série následných 'c' uspořádání.

Výchozí: "" (String)

cNum -

Počet následných 'c' uspořádání vyžadovaných pro vyslání rozsahu při použití možnosti outputC.

Výchozí: 15 (int)

batch -

Vypíná crc kontrolu aktuálního videa s crc ve vstupním souboru.

Výchozí: false (bool)

## E.) Parametry ladění/zobrazení:

Tyto parametry ovládají jestli je vysílána ladící (debug) informace nebo jestli je vykreslena zobrazovací informace do snímku. Tyto možnosti mohou být užitečné při použití nadřazení nebo při zkoušení vyhodnocení selhání uspořádání.

debug -

Když je nastaven na true, informace bude vysílána přes OutputDebugString() během zpracování týkajícího se vnitřních operací TFM. Informace zahrnují: statistiky porovnání uspořádání, použité uspořádání, která uspořádání byla detekována jako roztřepená (pokud jsou režimy 1, 2, nebo 4 nebo PP > 0), a hodnoty parametrů field, mode, order, a MIC. Pro zobrazení těchto informací můžete použít utilitu zvanou "DebugView" dostupnou zdarma z:

http://www.sysinternals.com/ntw2k/freeware/debugview.shtml

true = zapíná výstup
false = vypíná výstup

Výchozí: false (bool)

micout -

Využito jen s debug=true, display=true, nebo output. Donutí tfm vypočítat hodnoty MIC pro určitá uspořádání a vyslat je s ladící a/nebo zobrazovací informací nebo je zahrnout do výstupního souboru. Možná nastavení:

0 - nevynutí výpočet
1 - vypočítá p/c/n
2 - vypočítá p/c/n/b/u

Výchozí: 0 (int)

display -
Když je nastaven na true, informace bude vykreslena do videosnímků samotných do levého horního rohu. Tato informace není tak podrobná jako ladící výstup a zahrnuje jen číslo aktuálního snímku, hodnoty parametrů mode, field, order, a MIC, uspořádání, které bylo použito pro aktuální snímek, a zda byl a nebo nebyl výstupní snímek roztřepený pokud PP > 0. Tato možnost může být užitečná při použití nadřazování a když potřebujete vidět jaké uspořádání je aktuálně použito. Pokud potřebujete podrobnější informace, jako čísla statistik uspořádání nebo vidět zda byla zadaná uspořádání detekována jako roztřepená, tak budete potřebovat využít ladící výstup. Od v0.9.1 display bude také indikovat jestli konečný výstupní snímek je roztřepený a jestli v něm bylo odstraněno prokládání pokud PP > 0. Pokud PP = 1 a parametr display je zapnut, tak TFM vykreslí bílý čtverec kolem oblasti snímku, která je spuštěna svou detekcí jako roztřepená, když je snímek shledán jako roztřepený jeho vnitřní detekcí (to nebude provedeno, jestliže je snímek vynucen jako roztřepený v nadřazení).

true = zapíná
false = vypíná

Výchozí: false (bool)

## F.) Nadřazování:

Tato část dává vysvětlení jak zadat nadřazení (přepsání hodnot), co každý typ uspořádání znamená a seznam možných nadřazení.

### Pozadí a přehled:

Než začneme, je zde jedna věc kterou je potřeba pochopit, a tou je co k čertu znamenají písmena p, c, n, b, a u a odkud pochází. Dobrá, ve skutečnosti před tím potřebujeme vědět jaké uspořádání polí se ve skutečnosti provede. Budu předpokládat, že čtenář ví co znamená, když se řekne, že stream byl podroben telecine. Nyní uvažujme, že máme následující metodou telecine zpracovaný stream se spodními (bottom - b) a horními (top - t) poli danými následovně (u obou 1t i 1b se předpokládá, že pocházejí ze stejného progresivního snímku, jako jsou 2t a 2b, atd...):

1t | 2t | 3t | 4t | 5t | <= původní stream
1b | 2b | 3b | 4b | 5b |

Teď to co TFM dělá, stejně jako ostatní uspořádávače polí, je uspořádání polí tak, že zůstanou jen progresivní snímky; nicméně, nedecimuje duplikáty. Tedy výše uvedený vstupní stream je transformován do jednoho ze dvou následujících scénářů (které závisí na poli od kterého uspořádáváme, t.j. hodnotě parametru "field"):

field = 0 (Uspořádání od spodního)

1t | 2t | 3t | 4t | 4t | <= výstupní stream
1b | 2b | 3b | 4b | 4b |
c | c | n | n | c | <= použitá uspořádání

field = 1 (uspořádání od horního)

1t | 2t | 2t | 3t | 4t | <= výstupní stream
1b | 2b | 2b | 3b | 4b |
c | c | p | p | c | <= použitá uspořádání

Na tomto příkladu můžete vidět proč může mít nastavení field dopad na provedení uspořádání... Každopádně teď tak máme představu o tom co se děje a můžeme se posunout k významu p, c, n, b, a u . V podstatě tato písmena jen zastupují jaká uspořádání jsou použita. Jak můžete vidět z příkladu výše, c znamená, že je použito pole z aktuálního snímku a s opačnou paritou k tomu poli od kterého se uspořádává, p znamená, že je použit pole s opačnou paritou k poli od kterého uspořádáváme a z předchozího snímku, a n znamená, že je použito pole s opačnou paritou a z následujícího snímku. Tato tři uspořádání, p, c, a n jsou nejběžnější nebo nejobvyklejší uspořádání. V popisu parametru mode jsou tři uspořádání, která dělají 2-cestné a 3-cestné uspořádání. Další uspořádání: u a b se mírně liší v tom, že nepoužívají pole od kterého se uspořádává. V popisu parametru mode jsou tato dvě uspořádání 4-té/5-té uspořádání. Vizuální vysvětlení všeho tohoto by pravděpodobně objasnilo věci mnohem lépe, takže zde jsou vizuální reprezentace každého uspořádání:

* V následujících příkladech se předpokládá, že právě uspořádáváme druhý snímek (2t/2b). Také bylo písmeno "x" umístěno za jak horní tak spodní pole, která budou použita v aktuálním uspořádání.

field = 0:

c | p | n | b | u | <= uspořádání
| x |
1t | 2t | 2t
1b | 2b | 3b
| x |
x |  |
1t | 2t | 2t
1b | 2b | 3b
| x |
|  | x
1t | 2t | 2t
1b | 2b | 3b
| x |
| x |
1t | 2t | 2t
1b | 2b | 3b
x |  |
| x |
1t | 2t | 2t
1b | 2b | 3b
|  | x
| <= stream
2t | 1t | 2t | 2t | 2t | <= výstupní snímek
2b | 2b | 2b | 1b | 3b

field = 1:

c | p | n | b | u | <= match
| x |
1t | 2t | 2t
1b | 2b | 3b
| x |
| x |
1t | 2t | 2t
1b | 2b | 3b
x |  |
| x |
1t | 2t | 2t
1b | 2b | 3b
|  | x
x |  |
1t | 2t | 2t
1b | 2b | 3b
| x |
|  | x
1t | 2t | 2t
1b | 2b | 3b
| x |
| <= stream
2t | 2t | 2t | 1t | 2t | <= výstupní snímek
2b | 1b | 3b | 2b | 2b

Dobrá, to by to mělo pěkně ukázat. Existuje ale pár dalších bodů. Jeden, který můžete vidět v příkladech výše, je že uspořádání mají různé významy podle hodnoty parametru "field". To je důvod proč ve všech ovr souborech můžete zadat hodnotu field s respektem na to, která uspořádání jsou v souboru prováděna. Je to tak, že když zadáte n, p, atd... uspořádání v ovr souboru, TFM zajisté ví co tím myslíte. NEMUSÍTE zadávat referenční pole, pokud nějaké nezadáte, TFM jednoduše předpokládá, že máte v úmyslu použít stejnou hodnotu jako je aktuální vnitřní hodnota field. Nicméně, je mnohem bezpečnější hodnotu zadat. Druhý bod vychází z prvního bodu, a je jednoduše takový, že pokud referenční pole, které použijete pro ovr soubor se liší od toho s vnitřní hodnotou field, tak uspořádání bude v souladu s tím přepnuto, takže je vše stejné. Nicméně, to znamená, že pokud používáte ladící (debug) nebo zobrazovací (display) výstup, uspořádání nebudou stejná jako ta v ovr souboru. Tedy pro přiblížení, zde jsou převody nebo ekvivalenty...

s Field = 0 ___ je to stejné jako ___ s Field = 1 a naopak:

p == b
c == c
n == u
b == p
u == n

### Syntaxe a použití nadřazování:

#### kódy uspořádání:

* Viz kapitolu pozadí/přehled pro vizuální předvedení uspořádání. Pro nadřazení rozsahu snímků můžete zadat více kódů uspořádání na stejný řádek a daná šablona bude dále v rozsahu opakována.

p = uspořádání k předchozímu poli
c = uspořádání k aktuálnímu poli
n = uspořádání k následujícímu poli
b = uspořádání k předchozímu poli (uspořádání od pole s opačnou paritou)
u = uspořádání k následujícímu poli (uspořádání od pole s opačnou paritou)

#### kódy roztřepených snímků:

* Tyto mohou být použity pro ruční vynucené zadání snímků, které mají být považovány za roztřepené nebo čisté. Můžete zadat šablony kódů roztřepených snímků jako s kódy uspořádání.

+ = vynutí považování snímku za roztřepený
- = vynutí považování snímku za neroztřepený

#### kódy parametrů:

* Kódy parametrů, narozdíl od kódů uspořádání také vyžadují hodnotu pro změnu při použití v nadřazovacím souboru.

f = field
o = order
m = mode
M = mthresh
P = PP
i = MI

#### referenční pole:

Vzhledem k tomu, že kódy uspořádání mají různé významy podle parametru field, můžete zadat referenční pole pro nadřazovací soubor. Všechna uspořádání daná v souboru jsou pak brána s respektem k danému poli. Pokud není referenční pole zadáno tak jsou vztažena všechna k referenční vnitřní hodnotě field.

Pro zadání referenčního pole musíte vložit jeden z následujících řádků jako ZCELA PRVNÍ aktivní řádek v souboru:

field = top
field = bottom

První by nastavil referenční pole na horní - top (1) a druhý by ho nastavil na spodní - bottom (0). Podívejte se na zahrnutý příklad ovr souboru přiložený v zip souboru filtru.

#### syntaxe nadřazování:

jeden snímek => číslo_snímku kód(y) [změněná_hodnota] [] = vyžadovány jen pro kódy parametrů
rozsah snímků => počáteční_snímek,koncový_snímek kód(y) [změněná_hodnota]

#### příklady:

0,100 pcpcbuu | bude opakovat danou šablonu "pcpcbuu" uspořádání počínaje snímkem 0 a konče snímkem 100
101 p | použije uspořádání p pro snímek 101
300,400 c | použije uspořádání c pro snímky 300 až 400
100,150 f -1 | nastaví parametr field na -1 pro snímky 100 až 150
500,750 m 1 | nastaví parametr mode na 1 pro snímky 500 až 750
871 o 1 | nastaví parametr order na 1 (tff) pro snímek 871
3000,4231 cccpp | bude opakovat danou šablonu cccpp od snímku 3000 až do snímku 4231
4343 u | použije uspořádání u pro snímek 4343
;756 p | bude ignorováno
#co je to?!?! | bude ignorováno
70 - | vynutí uvažování snímku 70 jako čistého (neroztřepeného)
60,80 + | vynutí uvažování snímků 60 až 80 jako roztřepeného
70,97 +--++ | vynutí uvažování snímků 70 až 97 jako roztřepených nebo neroztřepených tak, jak je dáno šablonou
87,100 P 2 | nastaví parametr PP na 2 pro snímky 87 až 100
10,20 i 100 | nastaví MI na 100 pro snímky 10 až 20

#### další věci, které by se měly vědět/pamatovat:

1.) Rozsahy jsou zahrnuty.

2.) Pro kódy parametrů je změněná hodnota vždy nastavena zpět na tu, která byla původně nastavena pro snímky za zadaným rozsahem s nadřazením hodnot. (t.j. pokud zadáte nadřazení field pro snímky 600 až 700, po snímku 700 je field automaticky nastaveno zpět na jeho původní hodnotu, a nemusíte ji nastavovat zpět v nadřazovacím souboru! Původní hodnota je ta, která je nastavena při načtení (t.j. buď výchozí nebo vámi nastavená ve vašem avisynth skriptu).

3.) Čísla snímků musí být uvnitř rozsahu souboru.

4.) Čísla snímků pro kódy uspořádání musí být rostoucí, a čísla snímků pro nějaké kódy parametru se nesmí překrývat!!! Jinými slovy, nedělejte vícenásobné nadřazování pro některý parametr na stejném rozsahu snímků.

5.) Mezery jsou důležité! (žádné mezery mezi čárkou a číslem snímku, jedna mezera mezi číslem posledního snímku a specifikátorem, jedna mezera mezi specifikátorem a měněnou hodnotou pokud nějakou má). Pro objasnění se prostě podívejte na příklady.

6.) V šablonových zadáních lze použít jen kódy uspořádání a kódy roztřepených snímků. Šablonová zadání mohou mít maximálně do 50 kódů uspořádání.

7.) Pro okomentování řádku (TFM je bude ignorovat) v ovr souboru, můžete vložit buď symbol '#' nebo symbol ';' na začátku tohoto řádku.

8.) Na ukázku je přiložen příklad ovr souboru w/ komentářů do zip souboru filtru.

9.) Nastavení rozsahu : druhé číslo snímku na 0 znamená totéž jako nastavení na poslední snímek klipu.

## G.) Seznam změn

01/17/2008 v1.0.4
- Fixed a bug causing tfm to return a 'u' or 'b' match when it thought it was returning a 'p', 'c', or 'n' match if mode was set to 3 or 5 and micmatching was enabled (not set to 0).

09/28/2007 v1.0.3
+ added relative indexing from end frame number for trimIn files
+ added ability to set trimIn to a string containing a single frame range

05/25/2007 v1.0.2
- Fixed incorrect handling of the top/bottom lines in cubic post-processing

02/19/2007 v1.0.1
+ Support d2v file format v16
- fixed a bug in tfmpp destroying hints
- fixed generating ovr help info about combed frames in output files when PP=0

01/18/2007 v1.0
+ Support d2v file format v15 and remove check for newer d2v formats

12/21/2006 v0.9.12.8
+ Support d2v file format v14

11/26/2006 v0.9.12.7
- expanded file input line buffers from 80 bytes to 1024 bytes

11/04/2006 v0.9.12.6
+ micmatching modes 1, 2, and 3 now check each match decision for cases where the correct match is obvious based off mic values but the field matching routine is unable to distinguish the correct match
+ added micmatching mode 4, does the post match decision check and nothing else

10/22/2006 v0.9.12.5
+ preserve hints from dgdecode through tfm
+ added flags=5 option... same as 4, except that only frames around scenechanges are checked for being combed
+ changed 'sco' to 'scthresh' and added 'ubsco' and 'mmsco' parameters. Using u/b matches only around scenechanges and using micmatching only around scenechanges are now controlled with separate parameters.
- fixed incorrect d2v duplicate marking by tfm when using hints and not using linear, forward play
- fixed frames with 'h' and 'l' matches not being correctly overridden by an ovr file

10/03/2006 v0.9.12.4
+ Added batch option (disables input file crc checking)
+ Display crc values in error msg when crcs don't match

07/26/2006 v0.9.12.3
- fixed crash in modes 0/4 when pp=0 and micout > 0
- fixed "possible missed combed frames" listing in ovr help information sometimes including frames that were marked combed via an ovr file

05/08/2006 v0.9.12.2
+ output file generation is now effected by the micout parameter
+ if micout > 0 then calculate/output mics even when an override or d2v match is used
- fixed a bug introduced in the last release in cubic deint pping (pp=3/6)
- fixed a bug in one of the yuy2 checkcombed mmx assembly routines

04/09/2006 v0.9.12.1
+ minor field matching improvements
+ optimized postprocessing (mmx/sse2 cubic/blend deint, mmx/sse2 motion map creation, mmx/sse2 clip2 copy, faster link/denoise routines)
+ added ovr help information listing to bottom of output file
- call setcachehints for clip2 when used

03/23/2006 v0.9.12.0
+ Added metric parameter and new spatial combing metric
+ Added hint parameter
- throw an error if the field order of a d2v does not match the user specified field order
- replace frame copy with makewritable where possible
- fixed cthresh < 0 not working correctly

01/24/2006 v0.9.11.4
+ slow=0 matching mode optimizations
+ mmx version of isse/sse2 check_combed routine
+ added opt parameter
- fixed sse2 routines using psrldq

01/19/2006 v0.9.11.3
+ assembly optimizations

01/17/2006 v0.9.11.2
+ Support d2v format version 13
+ Write MIC values into output file
+ A few new mmx/isse optimizations
+ sse2 optimizations (only used on P4)
- Fixed clip2 crash caused by writing to a referenced frame
- Fixed rare crash on d2v input parsing caused by sometimes writing one entry past the end of an array

12/03/2005 v0.9.11.1
+ Added mmx versions of the isse scenechange routines
+ Optimized combed frame detection routines

11/01/2005 v0.9.11.0
+ Added trimIn parameter
+ Minor field matching improvement

10/14/2005 v0.9.10.2
+ micmatching can now be limited to scenechanges only, via the "sco" parameter
+ slow=1/2 matching mode optimizations (~10% speed increase)
+ display output now shows when scenechanges are detected when sco > 0
- changed sco default to 12.0

10/12/2005 v0.9.10.1
+ support dgindex d2vformat v12

09/28/2005 v0.9.10.0
+ Allow MI to be changed via overrides (same as field/mode/order/etc...)
+ Added mode 7 matching routine (specifically for material with blended fields)
- changed default MI value to 80
- changed default cthresh value to 9
- changed default micmatching value to 1
- fixed description of micmatching in help file

09/21/2005 v0.9.9.7
+ Field matching improvements
+ micmatching changed from bool to int, added micmatching 2/3 options
- flags parameter now defaults to 4
- Fixed IsCombedTIVTC always resulting in an error being thrown (was introduced when micout was added)

09/15/2005 v0.9.9.6
- Fixed micmatching parameter not being initialized correctly

09/11/2005 v0.9.9.5
+ Added flags=4 option
- when micmatching=true only calculate the extra mics if the mic value for the would be final match is > 15

09/02/2005 v0.9.9.4
+ Added micmatching parameter
+ micout now works with display output
- stricter checking for 0123 sections with flags=1
- fixed a few debug output format inconsistencies

08/27/2005 v0.9.9.3
+ Added v11 d2v format support
+ Field matching improvements (improved the code that decided which metrics to use when picking the final match)
+ Added micout parameter

08/14/2005 v0.9.9.2
+ Added sco parameter (u/b matches only at scenechanges)

07/31/2005 v0.9.9.1
+ Added slowest matching fuction and changed the parameter "slow" from bool to int

07/31/2005 v0.9.9
+ Added new match mode (mode 6)
+ Added field matching from d2v file and flags parameter to better control how the d2v info is used

06/25/2005 v0.9.8.1
+ Added support for new dgindex d2v's (d2vformat v10)

06/06/2005 v0.9.8
+ Added a new match mode (mode 2, old mode 2 is now mode 3, 3 is 4, and so on)
+ Added support for new dgindex d2v's (d2vformat v9)

04/20/2005 v0.9.7.3
+ Debug and display options now output a value called MIC (the value that is computed and compared against MI to check if a frame is combed) to make tweaking the MI parameter easier. The MIC value is computed during combed frame detection and is the single highest value computed for any one of the blockx by blocky sized blocks. Previously, combed frame detection exited immediately upon finding the first block with an MIC value greater then MI... it now scans all blocks and returns the highest. Thus, the white box that is drawn when display=true, PP=1, and a frame is detected as combed now corresponds to the block with the highest MIC value and not the first to be found.
- Changed default MI value to 85 (also changed to 85 in IsCombedTIVTC)
- Fixed the white box drawn on combed frames when PP=1 sometimes being drawn in the incorrect spot when mode was set to 1, 2, or 4

03/13/2005 v0.9.7.2
+ Post-processing now only links luma->chroma on the motion map, instead of doing full luma->chroma, chroma->luma, and chroma->chroma linking.

03/10/2005 v0.9.7.1
- Fixed a crash that would occur if the d2v option was enabled and a trim() or some other filter that altered the number of frames was used prior to tfm().

02/19/2005 v0.9.7
+ Added support for new dgindex project file versions 07 and 08 (dgindex v1.2) to the d2v option.
- Fixed the d2v method of fixing illegal transitions.
+ TFM now uses the rff flags from the d2v to help tdecimate identify duplicates and 24p film.
- Changed default MI value to 100.
- Fixed the readme file indicating chroma=true, when it actually defaults to false.

01/08/2005 v0.9.6.3
- Fixed SetCacheHints being called incorrectly and always defaulting to CACHE_ALL.

01/02/2005 v0.9.6.2
- Changed the d2v method of fixing illegal transitions to one that doesn't alter the total # of fields in the clip or the # of fields from each of the original frames in the stream.
- Changed default value for the chroma option to false.
+ Some other optimizations and internal changes.

12/22/2004 v0.9.6.1
- Fixed passing AsClip() a NULL argument during TFM and TFMPP object creation if no clip was given for clip2. This would cause assertion failure when compiled in debug mode.

12/19/2004 v0.9.6
- Fixed not invoking a cache between TFM and TFMPP when PP > 4.
+ Some internal additions to allow TDecimate to tell the difference between c matches and deinterlaced frames.
+ Added debug output to d2v checking... when debug=true and a d2v file is specified it will report the type of d2v detected, the detected field order from the d2v if order = -1,
and report the errors if any are found.

11/30/2004 v0.9.4

+ significant speed up (30-50%) to modes 1, 2, and 4 with PP > 0, due to some missing logic the output frame would needlessly get checked twice for combing.

11/28/2004 v0.9.3.1
- Fixed crashing when mode = 0 or mode = 3 and PP was greater then 0, the conditions for an array allocation were not adjusted as needed when the PP option was added in v0.9.1.

11/28/2004 v0.9.3
+ Added crc checking to input/output files. Whenever an output file is created, TFM creates a crc32 value based off the first 15 frames in the current clip. When the file is loaded via the "input" option the crc value from the file is checked against the current clips crc value.

11/27/2004 v0.9.2
- Fixed "slow" and "mChroma" parameters defaulting to false instead of true.
- Fixed display option not writing any part of a line if the total line length exceeded the width of the frame instead of writing what would fit.
- Changed default cthresh value to 10.
- Changed default PP value to 6 (motion-adaptive cubic interpolation).
+ Added d2v and ovrDefault options.
+ Added IsCombedIVTC() conditional function.
+ Added cubic deinterlacing method.
+ Re-did input/output parameters. Files created via the output option can no longer be read via the ovr option! You must use the input parameter to read files created via the output parameter!.
+ Output option no longer requires linear access.

11/21/2004 v0.9.1
- Changed default mode value to 1.
- Changed default MI value to 128.
- Allow blockx and blocky sizes up to 2048.
- Reordered the parameter syntax slightly.
+ Added exclusion band (y0/y1).
+ Added post-processing (PP parameter) and related stuff.
- Added clip2 and mthresh parameters.
+ Added hinting in preparation for tdecimate.

11/11/2004 v0.9.0
- initial release

## H.) Na dopracování

- podle potřeby oprava chyb pro řadu1.0

kontakt: forum.doom9.org nick = tritical nebo email: kes25c@mizzou.edu

`$English Date: 2005/07/10 16:11:01 $`

`Český překlad:10.4.2009`