# TDeint

## Přehled

autor: tritical
verze: v1.1
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

## Popis

TDeint je dvousměrový, pohybově adaptivní, ostrý odstraňovač prokládání (deinterlacer). Může adaptivně volit mezi použitím pohybové adptivity po-polích a po-pixelelech, a může použít kubickou interpolaci, jádrovou (kernel) interpolaci (s přepínáním časového směru), nebo jednu ze dvou forem modifikované ELA interpolace která pomůže snížit "vroubkované" hrany v pohybových oblastech, kde musí být použita interpolace. TDeint také podporuje uživatelské přepisování pomocí vstupního souboru, a může pracovat jako smart bobber nebo deinterlacer se stejnou frekvencí snímků, stejně jako IVTC post-processor.

### Syntaxe

`TDeint` (clip, int "mode", int "order", int "field", int "mthreshL", int "mthreshC", int "map", string "ovr", int "ovrDefault", int "type", bool "debug", int "mtnmode", bool "sharp", bool "hints", PClip "clip2", bool "full", int "cthresh", bool "chroma", int "MI", bool "tryWeave", int "link", bool "denoise", int "AP", int "blockx", int "blocky", int "APType", PClip "edeint", PClip "emask", float "blim", int "metric", int "expand", int "slow", PClip "emtn", bool "tshints", int "opt")

### PARAMETRY

mode:

Nastavuje režim operace. Režimy -2 a -1 vyžadují progresivní vstup.

- -2 - dvojitá výška použitím modifikované ELA
- -1 - dvojitá výška použitím modifikované ELA-2
- 0 - výstup se stejnou frekvencí snímků
- 1 - dvojnásobná frekvence snímků (bobbing)
- 2 - smartbobbing se srovnáváním polí (výstup se stejnou frekvencí snímků, smíchané snímky ze streamu po bobbingu)

výchozí - 0 (int)

order:

Nastavuje pořadí polí videa.

- -1 - použije paritu z Avisynthu
- 0 - spodní pole první (bottom field first - bff)
- 1 - horní pole první (top field first - tff)

výchozí - -1 (int)

field:

Když je nastaven mode 0 a 1, pole budou interpolována. Když je vybrán mode -1, nedělá toto nastavení nic.

- -1 - nastaví pole rovno order pokud hints = false nebo na 0 pokud hints = true
- 0 - interpoluje horní pole (zachovává spodní pole)
- 1 - interpoluje spodní pole (zachovává horní pole)

výchozí - -1 (int)

mthreshL/mthreshC:

Prahové hodnoty pohybu pro jas - luma a barevnost - chroma (mthreshL pro jas, mthreshC pro barevnost). Pokud rozdíl mezi dvěma pixely je menší než tato hodnota jsou deklarovány jako statické. Menší hodnoty sníží zbytkové roztřepení, vetší hodnoty zeslabí blikání a zlepší přesnost konstrukce polí ve statických oblastech. Prostorově (spatially) odpovídající části jasových a barevnostních ploch jsou provázané (pokud link != 0), takže mthreshC a mthreshL mohou být poněkud propojeny. Nastavení obou hodnot na 0 nebo níže vypne pohybovou adaptaci t.j. každý pixel bude deklarován pohybový) což umožní hloupý bob.

výchozí - mthreshL - 6 (int)
mthreshC - 6 (int)

map:

Zobrazuje výstupní mapu místo snímku s odstraněným prokládáním. Je zde pět možností.

- 0 - Bez mapy.
- 1 - hodnota (binární) mapy. Toto vysílá snímek, ve kterém všechny pixely mají jednu z následujících hodnot (indikujících jak má být snímek konstruován):
  - 0 (použije pixel z aktuálního snímku)
  - 51 (použije pixel z předchozího snímku)
  - 102 (použije pixel z následujícího snímku)
  - 153 (použije průměr z aktuálního/následujícího)
  - 204 (použije průměr z aktuálního/předchozího)
  - 230 (použije [1 2 1] průměr z předch/akt/násl)
  - 255 (interpoluje pixely)
- 2 - Sloučená mapa. Toto vysílá snímek, ve kterém všechny statické části snímku (hodnoty 0, 51, 102, 153, 204, a 230 z map=1) byly konstruovány jako by se objevily v deinterlovaném snímku a pixely které mají být interpolovány jsou označeny bíle (255).
- 3 - Vysílá snímek s odstraněným prokládáním a hodnotou (binární) mapy naskládanou vertikálně (mapa je dole).
- 4 - Vysílá snímek s odstraněným prokládáním a sloučenou mapou naskládanou vertikálně (mapa je dole).

výchozí - 0 (int)

ovr:

Nastavuje jméno a cestu k nadřazovacímu souboru. Při mode=0, může být nadřazovací soubor použit pro ovládání hodnot mthreshL, mthreshC, field, order, a type pro jednotlivé snímky nebo pro rozsahy snímků, a také řízení, které snímky jsou deinterlovány. Při mode=1, může být použit nadřazovací soubor pro ovládání hodnot mthreshL, mthreshC, a type pro zadané snímky nebo rozsahy snímků.

Specifikátory nadřazovacích souborů:

- + = označuje snímek, ve kterém má být odstraňováno prokládání (užitečný jen při ovrDefault = 1)
- - = označuje snímek, ve kterém nemá být odstraňováno prokládání
- f = field
- o = order
- l = mthreshL
- c = mthreshC
- t = type

  *specifikátory c, f, o, l, t zadávají také požadovanou změnu hodnoty, která má být zadána, když jsou použity (podívejte se na syntaxi nadřazení, aby jste viděli jak je to provedeno)

Syntaxe nadřazení:

[] = nevyžadováno pro specifikátory +, -

nadřazení (přepsání) pro jeden snímek:
  číslo_snímku specifikátor [změněná_hodnota]
  příklady:

      245 f 1
      345 +
      400 -
      450 c -1

nadřazení pro rozsah snímků:
  číslo_prvního_snímku,číslo_posledního_snímku specifikátor [změněná_hodnota]
  příklady:

      100,200 +
      346,352 f 0
      900,1200 l 5

  ** Rozsah se zahrnuje, to znamená, že i první a poslední snímek rozsahu jsou zahrnuty.
  Přepsání pro rozsah snímků podle šablony (jen pro specifikátory +,- ):
  příklady:

      100,300 +-+++--+++
      400,456 ---+---++

  ** Použije zadanou šablonu na zadaný rozsah snímků.

Věci pro zapamatování (klíčové body/pravidla):

1. Rozsahy se zahrnují
2. Při mode = 1 (bobbing) všechna nadřazení , kromě mthreshL/mthreshC, a nadřazení type jsou ignorována. Také čísla snímků odpovídají vstupnímu klipu a ne výstupnímu, takže jeden snímek bude dvěma snímky na výstupu.
3. Změněná hodnota je vždy nastavena zpět na původní nastavení poté, kdy se nadřazená hodnota dostane mimo zadaný rozsah. (t.j. pokud zadáte nadřazenou mthresh pro snímky 600 až 700, po snímku 700 je mthresh automaticky nastaven zpět na svou původní hodnotu, nemusíte ho nastavovat zpátky v nadřazovacím souboru! Původní hodnota je ta, která byla nastavena při načtení (t.j. buď výchozí nebo ta, která byla nastavena ve vašem skriptu).
4. Čísla snímků musí být v rozsahu daného souboru.
5. Čísla snímků pro zadané specifikátory musí být rostoucí (pokud nejsou, tak prvořadé budou poslední údaje v souboru t.j. pokud zadáte 300,400 c 10 a pak 350,450 c 12, snímky 350 až 400 použijí 12 a ne 10).
6. Čísla snímků pro specifikátory (+, -) nelze překrývat (např. nedělejte 300,400 - a pak později v souboru psát 350,500 + nebo se stanou divné věci. Další specifikátory nemusí splňovat tento požadavek, protože všechny působí na jiné věci.
7. +, - specifikátory nevyžadují žádné změny hodnot.
8. Mezery jsou důležité! Podívejte se na příklady.
9. Jen specifikátory +, - lze použít v zadávací šabloně.
10. Můžete změnit více specifikátorů na stejném rozsahu snímků pokud budete dodržovat pravidla uvedená výše (+, - například rostoucí čísla snímků).
11. Můžete okomentovat řádek (t.j. bude ignorován) přidáním znaku '#' nebo ';' na začátek řádku.
12. Zadání 0 jako koncový_snímek v rozsahu snímků znamená, že se bere poslední snímek videa.

Příklady nadřazovacích souborů:

Příklad syntaxe => TDeint(order=1,ovr="c:\path\myoverridesfile.txt")

    100,300 o 0
    100,300 f 1
    90,250 c 3
    40,500 -
    505 -
    300,700 l -1
    #700,3000 f 1 <- okomentování, bude ignorováno
    800,1000 -++-
    500,1000 c 13

výchozí - "" (string)

ovrDefault:

Při použití nadřazovacího souboru v režimu 0, zadává výchozí akci pro všechny snímky ve videu. Použití ovrDefault=1 usnadňuje odstranit prokládání jen v několika zadaných snímcích ve videu. Když je mode = 1, neudělá toto nastavení nic.

- 0 - ve všech snímcích nespecifikovaných v nadřazovacím souboru jako '-', se odstraní prokládání
- 1 - ve všech snímcích nespecifikovaných v nadřazovacím souboru jako '+' se odstraní prokládání a jsou jednoduše vráceny jaké jsou

výchozí - 0 (int)

type:

Nastavuje typ použité interpolace. Kubická je nejrychlejší, modifikovaná ELA a ELA2 dají hladší, méně "vroubkované", hrany a jsou nejpomalejší (ELA2 je rychlejší), a jádrová (kernel) interpolace významně více sníží blikání než kubická nebo ela, když se interpolace použije v téměř statických oblastech. Modifikované ELA a ELA2 pracují nejlépe s animovaným materiálem... nejsou tak skvělé u živých zdrojů (občas ale jsou, vyzkoušejte sami).

- 0 - kubická interpolace
- 1 - modifikovaná ELA interpolace
- 2 - kernel (jádrová) interpolace (může být normální nebo ostrá, ovládaná nastavením ostrosti)
- 3 - modifikovaná ELA-2 interpolace
- 4 - blend (smíchaná) interpolace
- 5 - dvousměrná blend interpolace

výchozí - 2 (int)

debug:

Zapne ladící výstup, který pro každý snímek zapíše hodnoty order, field, mthreshL, mthreshC, a type , pokud je ve snímku odstraňováno prokládání. Pokud ve snímku není odstraňováno prokládání (kvůli uživatelskému přepsání, hints, nebo full=false), prostě řekne, že ve snímku se prokládání neodstraňuje a uvede specifický důvod. Pokud je výstupní snímek složen (weaved), ladící výstup oznámí, se kterým polem bylo aktuální pole spojeno (weaved) (PREV nebo NEXT). Ladící informace je výstup využívající OutputDebugString(). Pro zobrazení výstupu můžete použít DebugView ze Sysinternals.

výchozí - false (bool)

mtnmode:

Ovládá zda je použita kontrola pohybu po 4 polích nebo po 5 polích. 5 polová zabrání více artefaktům a může pracovat s duplikovanými prokládanými snímky; nicméně, je docela pomalejší než 4 polová kontrola pohybu. Režimy 2 a 3 jsou jako 0 a 1 kromě toho, že v oblastech, kde by byl použit průměr předchozího a následujícího pole). T.j. není použit žádný průměr).

- 0 - 4 polová kontrola
- 1 - 5 polová kontrola
- 2 - 4 polová kontrola (žádné průměry, nahrazuje nejpodobnějším polem)
- 3 - 5 polová kontrola (žádné průměry, nahrazuje nejpodobnějším polem)

výchozí - 1 (int)

sharp:

Ovládá zda je použito ostré nebo normální jádro při použití jádrové interpolace (type = 2). Ostré jádro zahrnuje více pixelů a vytváří ostřejší výsledek, ale je mírně pomalejší.

- true - použije ostré jádro
- false - použije normální jádro

výchozí - true (bool)

hints:

Čte údaje (hints) z telecide nebo tfm udávající, které snímky jsou prokládané a které nejsou, pokud jsou údaje přítomny ve video streamu. Aby to takto pracovalo potřebujete nastavit post=1 v telecide nebo PP=1 v tfm a vložit TDeint hned za ně. TDeint neovlivní údaje (dokud má vaše video šířku minimálně 64 pixelů) v případě jakýchkoli filtrů umístěných dále, které potřebují tyto údaje číst. Pokud je hints nastaven na true, ale žádné údaje z telecide nebo tfm nejsou ve video stremu detekovány, pak bude odstraňováno prokládání u všech snímků (TDeint bude pracovat jako při hints=false). Pokud nezadáte hodnotu pro hints výslovně, pak TDeint zkontroluje jestli jsou údaje hints ve streamu přítomny při načtení a nastaví hints na true pokud přítomny jsou nebo false pokud přítomny nejsou (t.j. je nastaven automaticky).

**Poznámka: pro IVTC post-processing se čtením údajů hints se doporučuje použít TDeint v následující podobě s použitím parametru clip2.

    orig = last
    fieldmatcher()
    TDeint(clip2 = orig)

- true - čte hints pokud jsou přítomny
- false - nečte hints

výchozí - automaticky detekováno při načtení (bool)

clip2:

Pokud používáte tdeint jako postprocessor pro telecide nebo tfm přes údaje parametru hints (nebo jakéhokoli srovnávače polí), může nastat nesprávné odstranění prokládání kvůli skutečnosti, že telecide mění pořadí polí v původním streamu (je to konec konců srovnávač snímků). To může způsobit problémy v některých případech protože TDeint opravdu potřebuje mít původní stream. Aby jste s tím mohli pracovat, můžete zadat druhý klip "clip2" pro TDeint aby provedl skutečné odstranění prokládání.

Ve skriptu je jak by to mělo vypadat:

    mpeg2source("c:\mysource.d2v")
    orig = last
    telecide(guide=1, order=1, hints=true, post=1)
    tdeint(order=1, clip2=orig)

Tedy TDeint čte výstupní klip z telecide jako obvykle. Když hints ukazují na prokládaný snímek, provádí odstranění prokládání ve snímku pomocí klipu clip2. Tato metoda také zachová hints ve výstupním streamu takže jakékoli další filtry, které později potřebují budou stále pracovat.

Přidáním full=false, máme další způsob použití TDeint jako post-processoru použije svou vlastní detekci roztřepení snímku jako následující (toto také umožňuje aby to pracovalo s jakýmkoli srovnávačem snímků, ne jen telecide nebo tfm):

    mpeg2source("c:\mysource.d2v")
    orig = last
    fieldmatcherofchoice()
    tdeint(order=1, full=false, clip2=orig)

výchozí - NULL (PClip)

full:

Když je full nastaveno na true, tak jsou všechny snímky zpracovány jako obvykle. Když full=false, tak jsou všechny snímky nejdřív kontrolovány zda jsou roztřepené. Pokud snímek není roztřepený, tak je vrácen jaký je. Pokud je snímek roztřepený, tak je zpracován jako obvykle. Parametry, které ovlivňují detekci roztřepeného snímku jsou cthresh, chroma, blockx, blocky, a MI. full=false umožní TDeint aby byl ivtc post-processorem bez potřeby údajů hints.

- true - normální zpracování
- false - kontroluje nejdřív všechny vstupní snímky na roztřepení

výchozí - true (bool)

cthresh:

Prahová hodnota oblasti s roztřepením použitá pro detekci roztřepených snímků. Je jako dthresh nebo dthreshold v telecide() a fielddeinterlace(). Zásadně ovlivňuje jak "silné" nebo "viditelné" roztřepení musí být, aby bylo detekováno. Dobré hodnoty jsou od 6 do 12. Pokud víte, že váš zdroj má hodně roztřepených snímků, nastavte ho blíže ke spodní hranici (6-7). Pokud víte, že váš zdroj má velmi málo roztřepených snímků nastavte ho výše (10-12). Jít níže než 5 až 6 nebo mnohem výše než 12 se nedoporučuje.

výchozí - 6 (int)

blockx:

Nastavení velikosti bloku v ose x, použitého k detekci roztřepení snímku. Souvisí to s velikostí oblasti, ve které je vyžadován počet MI pixelů, aby byl snímek detekován jako roztřepený. Podívejte se na popis parametru MI pro více informací. Možné hodnoty jsou jakékoliv číslo, které je mocninou 2 počínaje 4 až do 2048 (např. 4, 8, 16, 32, ... 2048).

výchozí - 16 (int)

blocky:

Nastavení velikosti bloku v ose y, použitého k detekci roztřepení snímku. Souvisí to s velikostí oblasti, ve které je vyžadován počet MI pixelů, aby byl snímek detekován jako roztřepený. Podívejte se na popis parametru MI pro více informací. Možné hodnoty jsou jakékoliv číslo, které je mocninou 2 počínaje 4 až do 2048 (např. 4, 8, 16, 32, ... 2048).

výchozí - 16 (int)

chroma:

Zahrnuje roztřepení barevnosti (chroma) do rozhodování o tom zda je snímek roztřepený. Použijte ho jen když máte jeden z takových podivných zdrojů, kde může být barevnost dočasně oddělená od jasu (luma) (t.j. barevnost se v poli hýbe, ale jas ne). Jinak to většinou při přijetí řešení nadělá spíš škodu.

- true - zahrne roztřepení barevnosti
- false - nezahrne

výchozí - false (bool)

MI:

Počet požadovaných roztřepených pixelů uvnitř některých bloků s velikostmi blockx na blocky ve snímku, aby byl snímek považovaný za roztřepený. Zatímco cthresh ovládá jak "viditelné" nebo "silné" musí roztřepení být, toto nastavení ovládá kolik roztřepení musí být v každé lokalizované oblasti (blok o velokosti blockx na blocky ) snímku. Minimální nastavení = 0, maximální nastavení = blockx x blocky (bod ve kterém žádné snímky nikdy nebudou detekovány jako roztřepené).

výchozí - 64 (int)

tryWeave:

Pokud je nastaven na true, když TDeint odstraňuje prokládání ve snímku, vypočítá nejdřív které pole (předchozí nebo následující) je nejpodobnější aktuálnímu poli. To pak připojí (weave) pro vytvoření nového snímku a kontroluje tento nový snímek na roztřepení. Pokud nový snímek není roztřepený, tak ho vrátí. Pokud je, tak v něm odstraní prokládání s použitím obvyklé pohybové adaptaci po-pixelech. V podstatě toto nastavení umožní TDeint zkusit použít pohybovou adaptaci po polích místo po-pixelech kde je to možné.

výchozí - false (bool)

link:

Ovládá jak jsou tři plochy (Y, U, a V) provázány při tvorbě mapy roztřepení. Možná nastavení:

- 0 - žádné provázání
- 1 - Plné provázání (každá plocha s každou jinou)
- 2 - Y k UV (jas k barevnosti)
- 3 - UV k Y (barevnost k jasu)

výchozí - 2 (int)

denoise:

Ovládá zda mapa roztřepení je zbavována šumu nebo ne. True zapíná odšumění, false ho vypíná.

výchozí - false (bool)

AP:

Prahová hodnota ochrany před artefakty. Pokud je AP nastaveno na hodnotu větší nebo rovnu 0, tak před předáním snímku s odstraněným prokládáním TDeint přeskenuje všechny připojené (weaved) pixely, aby poznal jestli nějaký vytváří hodnotu větší než AP. Všechny pixely, které budou takové pak budou interpolovány. Použijte tuto pomoc pro ochranu před velmi zřetelnými artefakty souvisejícími s pohybovou adaptavitou. Doporučuje se velká hodnota AP (25+, neboli čím větší tím více odstraní artefaktů, které lze vidět při plné rychlosti přehrávání), a menší hodnoty ničí výhody pohybové adaptivity ve statických oblastech bohatých na detaily. AP metrika je stejná jako u cthresh metriky... takže rozsah je 0-255. Při nule bude detekováno vše kromě úplně rovných oblastí jako roztřepení. Při 255 nebude detekováno nic. Použití AP zpomalí zpracování. Natavte AP hodnotu menší než 0 větší než 254 pro vypnutí.

výchozí - -1 (vypnuto) (int)

APType:

Když se má použít AP post-processing (AP bude nastaveno >= 0 a < 255), APType ovládá zda by měl být zahrnut pohyb okolních pixelů. Jsou 3 možná nastavení:

- 0 = Nezahrnuje okolní pohyb. Jestli připojený (weaved) pixel vytváří hodnotu, která přesáhne prahovou hodnotu AP tak bude interpolován.
- 1 = Jestli připojený (weaved) pixel vytváří hodnotu, která přesáhne prahovou hodnotu AP a nejméně polovina pixelů v okně 5x5 s daným pixelem ve středu je také detekovaná jako pohyblivá, pak takový pixel bude interpolován.
- 2 = Přesně jako 1, kromě toho, že místo 1/2 pixelů musí být detekována jako pohyblivá 1/3 pixelů v okolním okně 5x5.

Režimy 1 a 2 poskytují způsob pro podchycení více artefaktů (nižší hodnoty AP) bez úplného obětování statických oblastí.

výchozí - 1 (int)

edeint:

Umožňuje zadat externí klip ze kterého budou brány interpolované pixely místo toho aby TDeint použil své interpolační metody. Pokud je klip zadán, pak TDeint zpracuje všechno jako obvykle kromě toho, že místo svého výpočtu interpolovaných pixelů vezme potřebné pixely z odpovídající prostorových (spatial) pozic ve stejném snímku klipu edeint. Pro vypnutí použití klipu edeint jednoduše nezadávejte hodnotu pro edeint.

výchozí - NULL (PClip)

emask:

Umožňuje zadat externí klip ze kterého bude brána maska pohybu místo vnitřní masky vestavěné v TDeint. Použití této možnosti způsobí, že následující parametry TDeint nebudou mít žádný vliv: mthreshL, mthreshC, mtnmode, denoise, link. Hodnoty, které mohou být přítomny v masce pohybu snímků jsou definovány následovně:

- 10 - Použít pixel z aktuálního snímku
- 20 - Použít pixel z předchozího snímku
- 30 - Použít pixel z následujícího snímku
- 40 - Použít průměr pixelů z aktuálního a následujícího
- 50 - Použít průměr pixelů z aktuálního a předchozího
- 60 - Interpolace
- 70 - Použít [1 2 1] smíchání (blend)) pixelů z předch/akt/násl

Pro jiné hodnoty je chování nedefinované, ale mělo by se s nimi skončit pracovat při vnitřním zporování že byly rovny 60.

výchozí - NULL (PClip)

blim:

Nastavuje maximální hodnotu rozdílu pro režim 2. Pokud oba rozdíly (zdroj-předchozí a zdroj-následující) jsou nad touto hodnotou tak je zdroj vrácen jaký je. Jinak je zdroj smíchán (blended) s buď předchozím nebo následujícím podle toho, který je podobnější zdrojovému. Tato hodnota je v rozsahu 0.0 až 100.0 , na základě rozdílu jasového kanálu. Použijte debug=true aby jste viděli generované hodnoty rozdílu a limitní hodnotu. Ladící (debug) výstup bude vypadat následovně:

    [5776] TDeint:  frame 0:  d1 = 0  d2 = 0  lim = 1513728

d1 je rozdíl zdroj-předchozí a d2 je rozdíl zdroj-následující. lim je maximální hodnota převedené z desetinné (float) hodnoty do dlouhého celého čísla bez označení. Nastavte blim na zápornou hodnotu pro vypnutí kontroly (zdroj bude vždy smíchán (blended) s buď předchozím nebo následujícím).

výchozí - -2.0 (float)

metric:

Nastavuje, jaká prostorová (spatial) metrika roztřepení se použije pro detekci roztřepených pixelů. Možnosti:

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

a
b
c
d
e

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

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

Metrika 0 je ta, kterou tdeint vždy používal dříve do v1.0 RC7. Metrika 1 je metrikou roztřepení použitou ve funkcích Donalda Grafta FieldDeinterlace()/IsCombed() v pluginu decomb.dll.

výchozí - 0 (int)

expand:

Nastavuje počet pixelů pro expanzi masky roztřepení horizontálně na každé straně roztřepených pixelů. V podstatě pokud je expanze větší než 0 tak TDeint považuje všechny pixely uvnitř horizontální vzálenosti 'expand' detekovaného roztřepeného pixelu také za roztřepené.

výchozí - 0 (int)

slow:

Nastavuje, která funkce srovnávání polí bude použita. Tyto funkce srovnávají odpovídající funkce v tfm. Možné hodnoty:

- 0 - normální (měla by být méně přesná)
- 1 - pomalejší
- 2 - nejpomalejší (měla by být nejpřesnější)

výchozí - 1 (int)

emtn:

Zadává externí klip, který TDeint použije pro detekci pohybu místo té, která běží na vstupním klipu. Vstupní klip je stále používán pro odstranění prokládání. Klip emtn je jednoduše použit pro počítané změny pixelů mezi snímky.

výchozí - NULL (PClip)

tshints:

Zapíná vysílání údajů (hints) pro použití v TSwitch(). Pokud je TSwitch používáno po TDeint tak nastavte toto na true. Jinak nastavte false.

výchozí - false (bool)

opt:

Ovlá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 - autodetekovat

výchozí - 4 (int)

## TSwitch

TSwitch je schopen číst údaje (hints) z TDeint které ukazují, ve kterých snímcích bylo odstraněno prokládání nebo ne. Na základě těchto hints pak TSwitch doručí snímky z jednoho ze dvou klipů (c1 nebo c2). Pokud ve vstupním snímku nebylo odstraněno prokládání, tak je vrácen odpovídající snímek z klipu c1 . Pokud ve vstupním snímku bylo odstraněno prokládání, tak je vrácen odpovídající snímek z klipu c2 .

Pro použití TSwitch, musíte nastavit tshints=true v TDeint a umístit TSwitch hned za TDeint ve vašem Avisynth skriptu.

Důvody proč ve snímcích nemuselo být odstraněno prokládání pomocí TDeint jsou přepsání (nadřazení), hints, full=false, nebo tryweave=true.

### Syntaxe

`TSwitch` (clip, clip "c1", clip "c2", bool "debug")

### PARAMETRY

c1:

Nastavuje klip pro navrácení snímků, když ve vstupním snímku nebylo odstraňováno prokládání.

výchozí - NULL (PClip)

c2:

Nastavuje klip pro navrácení snímků, když ve vstupním snímku bylo odstraňováno prokládání.

výchozí - NULL (PClip)

debug:

Zapíná ladící výstup, který u každého snímku řekne jestli bylo ve vstupním snímku odstraňováno prokládání nebo ne, a z kterého z klipů (c1 nebo c2) je brán výstupní snímek. Ladící informace je vysílána pomocí OutputDebugString(). Pro zobrazení výstupu můžete použít DebugView ze Sysinternals.

výchozí - false (bool)

## Příklady skriptů

Odstraňování prokládání se stejnou frekvencí snímků:

    mpeg2source()
    tdeint()

Bobbing:

    mpeg2source()
    tdeint(mode=1)

Odstraňování prokládání pomocí EEDI2 pro interpolaci:

    mpeg2source()
    interp = separatefields().selecteven().eedi2()
    tdeint(edeint=interp)

Bobbing s EEDI2 pro interpolaci:

    mpeg2source()
    interp = separatefields().eedi2(field=-2)
    tdeint(mode=1,edeint=interp)

Smartbobb se srovnáním polí (Odstraňování prokládání se stejnou frekvencí snímků smícháním snímků zpracovaných metodou bob):

    mpeg2source()
    tdeint(mode=2)

Smartbobb se srovnáním polí s EEDI2 pro interpolaci:

    mpeg2source()
    interp = separatefields().eedi2(field=-2)
    tdeint(mode=2,edeint=interp)

Použití TSwitch pro zostření jen snímků, ve kterých se odstraňuje prokládání:

    mpeg2source()
    tdeint(tshints=true)
    tswitch(c1=last,c2=last.sharpen())

## Seznam změn

01/21/2006 v1.1
+ added TSwitch() filter
+ added new blend deinterlacing mode (type = 5)
+ expanded ovr line input buffers
+ added new map outputs (map=3/4) which output both a map and deinterlaced frame
+ map output works correctly with ap post-processing
+ map output works correctly with hints/ovr/full/tryweave
+ support passing through of dgdecode hints and tivtc's new hints
+ added ability to run motion detection on a separate clip (emtn parameter)
- motion map now checks top/bottom lines

10/16/2006 v1.0 Final
+ added blend deinterlacing option (type = 4)
- changed denoise default to false
- pixels detected as moving, but with absolute difference < 4 to both vertical neighbors are no longer automatically weaved (should fix problems with slow fades)

10/04/2006 v1.0 RC8
+ added expand parameter
+ added slow parameter and slow=1/2 matching modes from tfm
- fixed a typo causing mode 2 to crash with yuy2 input

04/10/2006 v1.0 RC7
+ optimized combed frame detection functions (now matches tivtc)
+ added second spatial combing metric and "metric" parameter (same as tfm and is/showcombeditvtc)
+ optimized denoise routines
+ improved the field comparison routine (now equal to slow=0 in tfm)
+ mode 2 uses the field comparison routine instead of full frame subtract for determining the best matching frame (more accurate)
- directly assign frames from emask clip (no need to copy)
- changed blim default to -2.0 (disabled)
- call setcachehints for emask/edeint clips when used

03/22/2006 v1.0 RC6
+ optimized motion map and field comparison routines
+ added opt parameter
- fixed missing cache in mode 2

03/21/2006 v1.0 RC5
- fixed mode 2 mmx/isse subtract frames functions (contained paddq sse2 instruction)

03/19/2006 v1.0 RC4
+ output MIC values in debug info when tryweave=true or full=false
+ added value 70 to emask input
+ added mmx versions of isse/sse2 compare/blend routines for mode=2
- refactored/rewrote a lot of the code to clean up and simply things, no changes that effect output... should give a slight speed up

03/18/2006 v1.0 RC3
+ Added mode 2 and blim parameter

12/18/2005 v1.0 RC2
+ Added emask parameter
- Fixed edeint not working correctly with mode=1
- Changed field=-1 operation when hints=false

12/03/2005 v1.0 RC1
+ Added edeint parameter

08/14/2005 v1.0 beta 4
- SetCacheHints call to diameter instead of radius
- Fixed type=1 YUY2 interpolation routine giving messed up chroma output (bug was introduced in v1.0 beta 3)

05/14/2005 v1.0 beta 3
+ Added APType parameter, adds 2 new AP post-processing modes that take surrounding motion into account
+ Small changes (hopefully improvements) to type 3 (ELA-2) interpolation

04/26/2005 v1.0 beta 2
+ Added modes -2 and -1... will upsize vertically by a factor of 2 using ELA or ELA2
+ Call SetCacheHints in filter constructor
+ Some small optimizations, should give a very small speed up

04/23/2005 v1.0 beta 1
+ Added AP threshold and post-processing
+ Added blockx and blocky for variable window size during combed frame detection
- Changed default MI value to 64 (default window size is now 16x16 = 256 pixels)
- changed default cthresh value to 6
- Small change to denoising routine

04/20/2005 v0.9.7.2
- Fixed not correctly using the field information from tfm's hints when acting as a post-processor for it. Also fixed not correctly altering the match info of tfm's hints when acting as a post-processor for it (PP=1 in tfm).
+ Improvements to type 3 interpolation, renamed to modified ELA-2

03/10/2005 v0.9.7.1
+ Fixed not correctly reading hints from newer versions of tivtc and if colorimetry hints were present from dgdecode.

01/20/2005 v0.9.7
+ Added link and denoise parameters, link defaults to 2 and denoise to true
+ Added ELA interpolation (tomsmocomp version) as type = 3
+ Hints option can now read hints from tfm as well as telecide
+ map = 2 now sets the chroma pixels that are to be interpolated to 255 and not just the luma
- Changed default type value to 2 (kernel interpolation)
- Changed default tryWeave value to false

10/03/2004 v0.9.6
+ Added full parameter, allows for ivtc post-processing. full defaults to true.
+ Added cthresh, chroma, and MI parameters... these are used when full=false
+ Added tryWeave option, allows TDeint to adaptively switch between per-field and per-pixel motion adaptation. tryWeave defaults to true.
+ Improved field differencing
+ changed mtnmode default to 1

09/26/2004 v0.9.5
+ Sped up mtnmodes 2 and 3, was doing it the hard way and not the easy way...

09/25/2004 v0.9.4
+ Added auto hints detection
+ Added mtnmodes 2 and 3
+ Added ability to deinterlace from the original stream when using hints via clip2 parameter
- Fixed field differencing using the wrong fields doh!

09/18/2004 v0.9.3
+ Added order = -1 option, will detect parity from avisynth
+ Added hints option for reading telecide hints for interlaced/progressive
+ 5 field motion check now includes checks over 4 field distances
- Fixed a bug in YUY2 type = 1 deinterlacing method

09/14/2004 v0.9.2
+ Added kernel interpolation and sharp parameter
+ Added 5 field motion check and mtnmode parameter
+ Changed default motion thresholds to 6

09/12/2004 v0.9.1
- Fixed some really stupid bugs, one motion check was incorrect for the first and last frame of a clip, and mode = 1 would only work for the first half of the video

09/12/2004 v0.9
- Initial Release

`Český překlad: 21.3.2009`