# MPEG2Dec3

## Přehled

autoři: MarcFD, Nic, trbarry, Sh0dan a další
verze: 1.10.1
kategorie: MPEG Dekodér (zdrojový) plugin
stáhnout: http://www.avisynth.org/warpenterprises/
požadavky:

## Popis

Tento filtr je schopen vysílat barevné formáty RGB, YUY2 a YV12.
Je to MPEG-2 dekodér a je schopen dekódovat jakékoli MPEG-2 streamy čitelné v dvd2avi 1.76 / 1.77.3 / 1.83x (a dalších). Také podporuje hdtv streamy, ale k tomu potřebujete dvd2avi 1.83.5. (Toto je upravená verze MPEG2Dec2 ze save-oe (smart audio video encoder).)
Další doplňky jsou (například): YV12, YUY2 a RGB32 výstup (ačkoliv se doporučuje použít rutiny převodů barev AviSynthu), řízení prokládání, integrovaný PostProcessing, Jasové filtrování, atd.

## Příklady použití filtrů z pluginu MPEG2Dec3:

(všechny řádky avisynth skriptu zde jsou jen příklady)
Nejdříve vložte následující řádek do vašeho .avs skriptu :

    LoadPlugin ("MPEG2Dec3.dll")

### Základní použití MPEG2Dec3

Pro provedení plošného (plain) YV12 dekódování.

    MPEG2Source("dvd.d2v")

Pro použití Post Processingu : zde jen deblokování.

    MPEG2Source("dvd.d2v", cpu=4)

pro prokládané zdroje je lepší použít na polích založený (Field Based) Post Processing.

    MPEG2Source("dvd.d2v", cpu=4, iPP=true)

pokud máte intel Pentium 4 cpu, můžete vynutit sse2 idct.

    MPEG2Source("dvd.d2v", idct=5)

Pro použití uživatelem nastaveného post processingu : zde jen odstranění zvonění hran (deringing).

    MPEG2Source("dvd.d2v", cpu2="ooooxx")

### Převody barevného prostředí

Pro převod do YUY2.

    MPEG2Source("dvd.d2v")
    YV12toYUY2()

Pro převod progresivního zdroje do YUY2.

    MPEG2Source("dvd.d2v")
    YV12toYUY2(interlaced=false)

Pro převod do RGB24.

    MPEG2Source("dvd.d2v")
    YV12toRGB24()
    FlipVertical() #YV12->BGR24 převod nativně převrací obraz

Pro převod progresivního zdroje do RGB24.

    MPEG2Source("dvd.d2v")
    YV12toRGB24(interlaced=false)
    FlipVertical() #YV12->BGR24 převod nativně převrací obraz

### Užitečné doplňkové YV12 filtry

Pro ztmavení jasové složky.

    LumaFilter(-10, 0.9)

Pro zesvětlení jasové složky.

    LumaFilter(+10, 1.1)

Samozřejmě můžete upravit nastavení jak chcete.
Pro více informací se podívejte do kapitoly Syntaxe.

## Syntaxe filtrů pluginu MPEG2Dec3:

### MPEG2Source

`MPEG2Source` (string "d2v", int "cpu" int "idct" bool "iPP", int "moderate_h", int "moderate_v", bool "showQ", bool "fastMC", string "cpu2")

d2v :
Váš DVD2AVI projektový soubor. (*.d2v)

cpu : 0 až 6.
DivX dekodér - úroveň nastavení cpu.
- 0 : Žádný PP
- 1 : DEBLOCK_Y_H
- 2 : DEBLOCK_Y_H, DEBLOCK_Y_V
- 3 : DEBLOCK_Y_H, DEBLOCK_Y_V, DEBLOCK_C_H
- 4 : DEBLOCK_Y_H, DEBLOCK_Y_V, DEBLOCK_C_H, DEBLOCK_C_V
- 5 : DEBLOCK_Y_H, DEBLOCK_Y_V, DEBLOCK_C_H, DEBLOCK_C_V, DERING_Y
- 6 : DEBLOCK_Y_H, DEBLOCK_Y_V, DEBLOCK_C_H, DEBLOCK_C_V, DERING_Y, DERING_C
(Y=jas (luma) C=barevnost (chroma), H=horizontální, V=vertikální)
výchozí : 0

idct : 1 až 5.
iDCT : použitý iDCT algoritmus.
0 : výchozí hodnota (v .d2v souboru)
1 : 32 bit MMX
2 : 32 bit SSEMMX
3 : 64 bit FPU
4 : 64 bit IEEE-1180 Reference
5 : 32 bit SSE2 (pro P4)
6 : Skal's SSEMMX iDCT (nejrychlejší)
7 : SimpleiDCT (velmi přesná iDCT z projektu XviD)
výchozí : 0

iPP :
Pro použití na polích založeného (Field-Based) Post-Processingu.
je to lepší pokud chcete odstranit prokládání
- True : na polích založené - Field based
- False : na obrazu založené - Image based (výchozí)

moderate_h, moderate_v :
Síla jemného vyladění postprocessingu.
Menší hodnoty jsou silnější. Použijte s opatrností.
výchozí : moderate_h=20, moderate_v=40

showQ :
Pro prohlédnutí kvantizerů použitých na každý MB.
Zábavný nástroj k přehrávání ^^
výchozí : false

fastMC :
Vladův kód pro kompenzaci rychlého pohybu.
Velmi malé urychlení, a snižuje přesnost,
je zde pro testovací účely, a mohl by být v příštích verzích odstraněn,
jen pro ssemmx kompatibilní cpu.
výchozí : false

cpu2 :
Uživatelské nastavení cpu,
potřebujete zadat 6 znakový řetězec. Každý křížek (x)
by zapnul odpovídající funkci postprocessingu :

    příklad :
    "oxoxox"
    123456
    by zapnul jen PP (postprocesing) barevnosti (chroma)

1 : luma horizontal deblocking
2 : luma vertical deblocking
3 : chroma horizontal deblocking
4 : chroma vertical deblocking
5 : luma deringing
6 : chroma deringing
výchozí : " " (vypnuto)

### LumaFilter

`LumaFilter` (clip, integer "lumoff", float "lumgain")

převod je : yy = (y*lumgain)+lumoff

lumoff :
Posun jasu.
výchozí = -2 (for iago ^^)

lumgain :
Zesílení jasu.
výchozí = 1

### YV12toRGB24

`YV12toRGB24` (clip, bool "interlaced", bool "TVscale")

převod YV12->RBG24 nativně převrací obraz
Použijte potom FlipVertical

interlaced :
Nastavte ho na true, pokud je váš zdroj prokládaný,
pro zachování správného prokládání barevnosti.
Pokud máte progresivní stream, použití false dá
ostřejší a reálnější barvy
výchozí : true

TVscale :
Stejné nastavení jako v DVD2AVI.
Může být obráceno. Zkuste s a nebo bez a ponechte to co upřednostňujete
výchozí : false

### YV12toYUY2

`YV12toYUY2` (clip, bool "interlaced", bool "tff")

interlaced :
Nastavte ho na true pokud je váš zdroj prokládaný,
pro zachování správného prokládání barevnosti.
Pokud máte progresivní stream, použití false dá
ostřejší a reálnější barvy
výchozí : true

tff :
Horní pole první (Top Field First).
Nastavte ho na false pokud máte spodní pole první (Bottom Field First).
Výchozí : true

### BlindPP

`BlindPP` (clip, int "quant", int "cpu", str "cpu2", bool "iPP", int "moderate_h", int "moderate_v")

Pro deblokování (Deblock) a odstranění zvonění hran (Dering) v jakýchkoli typech DCT-enkódovaných zdrojích.
Samozřejmě, méně přesné než dekodér s intergrovaným PP, ale stále velmi efektivní,
potřebuje YV12 vstup.

quant :
Emulovaný kvantizér,
použije vyšší hodnotu ke zvýšení agresivity.
Použitím hodnoty blízko zdroji, umožní velmi přesný postprocesing.
Výchozí : 2

cpu, cpu2, iPP, moderate_h, moderate_v :
Stejné nastavení jako v MPEG2Source postprocesingu. výchozí : cpu=6, cpu2="", iPP=false, moderate_h=20, moderate_v=40

## Historie

based on MPEG2Dec2 (save-oe CVS 28.09.2002)

- betas versions (1 to 6)
  - Added Nic's Post Processing with Field-Based PP
  - Overrided iDCT / luma filtering choice
  - Fixed Luma filtering MMX code (3 bugs at least)
  - YV12->YUY2 Convertion optimised (+10 % speed)
  - a PP bug fixed. a bit slower now.
  - trbarry's SSE2 optimisation disabled.
  - Added showQ debugging trigger
  - Added vlad's new MC (3dnow/ssemmx) / re-writed ssemmx
  - Added working MMX memory transfer for seeking (+3% speed)
  - Added Interlaced Upsampling support
- v 0.9 (09.11.02)
  - heavy code cleaning
  - redesigned the whole Avisynth interface
  - YV12 support
  - RGB24 support
  - other misc stuff
- v 0.91 (10.11.02)
  - cleaned a bit more the source
  - added MPEG2Dec3.def default settings loading (like don's filters)
  - bff mode in SeparateFieldsYV12
- v 0.92 (17.11.02)
  - code released
  - blindPP implemented
- v 0.93 (25.11.02)
  - total YV12 code convertion...
  - ...who fixed YV12 bugs
  - less memory is needed
  - fast MMX copy (faster seeking)
- v 0.94 (08.12.02)
  - very little bugfix
- v 1.00 (19.01.03)
  - final version
  - i squashed all bugs i were aware of
- v 1.01 (unknown) - trbarry
  - Fixed HDTV bug (0x21 PID hardcoded)
- v 1.02 (12.05.03) - Nic
  - aligned malloc done different
- v 1.03 (12.05.03) - Nic
  - Now supports both DVD2AVI 1.77.3 D2V Files and 1.76 ones
- v 1.04 (12.05.03) - Nic
  - Removed another memory leak, slightly quicker
- v 1.05a (12.05.03) - trbarry
  - trbarry test version for optimisations
- v 1.06 (24.05.03)
  - Nic: Added 2 new iDCT's Skal's (fastest!, idct=6) & SimpleiDCT (very accurate, idct=7)
  - Nic: Support for external use of MPEG2Dec3.dll without AviSynth added back in
    (See Source code for example.zip and GetPic example)
  - trbarry: Added new Add_Block optimisations as well as optimised Block Decoding for SSE2 machines
  - sh0dan: Uses AviSynth's fast BitBlt for mem copys where possible
  - Nic: General optimisations :) Faster now on all machines tested.
- v 1.07 (6.06.03)
  - Nic & Sh0dan: Bug Fixes, better stability on broken streams
- v 1.08 (8.06.03)
  - trbarry: Optimised Simple_iDCT, lots faster now :)
  - Nic: added CPUCheck elsewhere, forgot to fix Lumafilter last time (Thanx ARDA!), robUx4 helped me make simple_idct into a fastcall
- v 1.09 (26.07.03)
  - Nic: Now skal's Sparse iDCT is used instead for idct=6 (fastest!)
  - Nic: Added the Luminance_Filter from DVD2AVI 1.77.3, for when Luminance_Filter is used in the .d2v

- v 1.10 (28.07.03)

- Nic: Damn! There was a problem with the Luminance filter and 1.77.3 D2V files. Fixed!

- v 1.10.1 (23.05.05)
  - Kassandro: removed assumption "luma pitch = luma width". Needed for AviSynth v2.57 and beyond.

## Poděkování

Chia-chen Kuo, autor DVD2AVI
Peter Gubanov, autor MMX/SSEMMX iDCT
Dmitry Rozhdestvensky, autor SSE2 iDCT
Miha Peternel, autor Floating Point a Reference iDCT
Mathias Born, autor MPEG2Dec

Zvláštní poděkování pro Nic, za Post Processing, který umožnil MPEG2Dec3

1.01 a výše: Nic, trbarry, sh0dan
Díky Skal za použití jeho iDCT (http://skal.planet-d.net)

`$English Date: 2005/08/11 21:11:50 $`

`Český překlad:3.5.2009`