# MPEG2Dec3

## Abstrato

autores: MarcFD, Nic, trbarry, Sh0dan e outros
versão: 1.10
categoria: Plugins Decodificadores MPEG (fonte)
download: http://www.avisynth.org/warpenterprises/
requisitos:

## Descrição

Este filtro é capaz de produzir nos formatos RGB, YUY2 e YV12.
É um decodificador de MPEG-2 e pode decodificar qualquer fluxo de MPEG-2 legível por dvd2avi 1.76 / 1.77.3 / 1.83x (e outros). Também suporta hdtv, embora você precise do dvd2avi 1.83.5 para isso. (Esta é uma versão modificada de MPEG2Dec2 do save-oe (encoder inteligente de vídeo e áudio)).
Características adicionais são (por exemplo): YV12, YUY2 e RGB32 (embora seja recomendado o uso das rotinas de conversão de cor do AviSynth), controle de entrelace, PostProcessing integrado, Filtro de Luminância, etc.

## Exemplos de Uso dos Filtros de MPEG2Dec3:

(todas as linhas do escrito de avisynth aqui são apenas exemplos)
Primeiro, coloque a seguinte linha em seu escrito .avs:

    LoadPlugin ("MPEG2Dec3.dll")

### Uso Básico do MPEG2Dec3

Para fazer a decodificação correta do YV12

    MPEG2Source("dvd.d2v")

Para usar Pós Processamento: aqui, só deblocking (remoção de blocos).

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

é melhor usar "Field Based Post Processing" (Pós Processamento com Base em Campos) para fontes entrelaçadas.

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

se você tiver um Pentium 4 cpu Intel, pode forçar idct de sse2.

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

Para usar suas colocações de Pós Processamento: só "deringing"* aqui.

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

### Colorspace conversões

Para converter a YUY2.

    MPEG2Source("dvd.d2v")
    YV12toYUY2()

Para converter a YUY2 uma fonte progressiva.

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

Para converter a RGB24.

    MPEG2Source("dvd.d2v")
    YV12toRGB24()
    FlipVertical() # YV12->BGR24 conversão nativa de imagens invertidas

Para converter a RGB24 uma fonte progressiva.

    MPEG2Source("dvd.d2v")
    YV12toRGB24(interlaced=false)
    FlipVertical() # YV12->BGR24 conversão nativa de imagens invertidas

### Filtros adicionais Úteis YV12

Para Escurecer Luminosidade.

    LumaFilter(-10, 0.9)

Para Clarear Luminosidade.

    LumaFilter(+10, 1.1)

Claro que você pode alterar as colocações do seu jeito.

Veja a parte Sintaxe para mais informação sobre isto.

## Sintaxe dos Filtros MPEG2Dec3:

### MPEG2Source

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

d2v :
Seu arquivo de projeto DVD2AVI project file. (*.d2v)

cpu : 0 a 6.
Decodificador DivX com ajustes de nível de cpu. - 0 : No 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=luma C=chroma, H=horizontal V=vertical)
padrão: 0

idct : 1 a 5.
iDCT : iDCT algo(ritmo) usado.
0 : Valor padrão (no .d2v file)
1 : 32 bit MMX
2 : 32 bit SSEMMX
3 : 64 bit FPU
4 : 64 bit Referência IEEE-1180
5 : 32 bit SSE2 (para P4)
6 : Skal's SSEMMX iDCT (mais rápido)
7 : SimpleiDCT (iDCT muito preciso do projeto XviD)
padrão: 0

iPP :
Usar Pós Processamento Baseado em Campo.

o melhor se você quiser desentrelaçar.

- True : Base de Campo
- False : Base de Imagem (padrão)

moderate_h, moderate_v :
Pós Processamento forte, com boa afinação.

Valores menores são mais fortes. use com cuidado.

Padrão: moderate_h=20, moderate_v=40,

showQ :
Para ver os quantizers* usados para cada MB.
uma ferramenta divertida para tocar ^^
padrão: false

fastMC :
O código de Compensação de Movimento Rápido de Vlad.
aceleração muito pequena e precisão degradada
está aqui com propósitos de testes e provavelmente será removido nas próximas versões
só para cpu ssemmx capaz.
padrão: false

cpu2 :
Colocações de cpu do usuário
você precisa entrar uma string com 6 caracteres. Cada uma através (x)
habilita a característica de Pós Processamento correspondente:

    exemplo :
    "oxoxox"
    123456
    Pode habilitar só croma PP

1 : luma horizontal deblocking
2 : luma vertical deblocking
3 : chroma horizontal deblocking
4 : chroma vertical deblocking
5 : luma deringing*
6 : chroma deringing
padrão: " " (desativado)

### LumaFilter

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

A transformação é : yy = (y*lumgain)+lumoff

lumoff :
Controle de Luminosidade.
padrão = -2 (por iago ^^)

lumgain :
Ganho de Luminosidade.
padrão = 1

### YV12toRGB24

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

YV12->BGR24 Conversão de imagens nativas invertidas
Use FlipVertical após

interlaced :
fixe isto em true se sua fonte é entrelaçada,
para entrelaçar croma corretamente.
se você tem um fluxo progressivo, usando false
dá cores mais aguçadas e reais
padrão: true

TVscale :
A mesma colocação de DVD2AVI.
Pode ser invertida. Tente com e sem e mantenha seu preferido.
padrão: false

### YV12toYUY2

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

interlaced :
fixe isto em true se sua fonte é entrelaçada,
para entrelaçar croma corretamente.
se você tem um fluxo progressivo, usando false
dá cores mais aguçadas e reais
padrão : true

tff :
Primeiro Campo de Topo.

Fixe isto em false se tiver Primeiro Campo de Fundo.

padrão: true

### BlindPP

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

Para Deblock e Dering* em qualquer tipo de fonte DCT codificada.
Menos preciso que o decodificador PP integrado, mas ainda muito eficiente
Necessita entrada YV12.

quant :
Quantizer emulado
use valor mais alto para aumentar a agressividade
usando um valor próximo da fonte permitirá pós processamento muito preciso
padrão: 2

cpu, cpu2, iPP, moderate_h, moderate_v :
mesmas colocações de MPEG2Source's PP. padrões : cpu=6, cpu2="", iPP=false, moderate_h=20, moderate_v=40

## História

baseado no 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!

## Créditos

Chia-chen Kuo, autor do DVD2AVI
Peter Gubanov, autor do MMX/SSEMMX iDCT
Dmitry Rozhdestvensky, autor do SSE2 iDCT
Miha Peternel, autor do Ponto Flutuante iDCT e Referência
Mathias Born, autor do MPEG2Dec

Especiais agradecimentos ao Nic, pelo Pós Processamento que fez o MPEG2Dec3 possível

1.01 e acima: Nic, trbarry, sh0dan
Obrigado ao Skal pelo uso do seu iDCT (http://skal.planet-d.net)

`$Date: 2006/03/26 18:11:53 $ Portuguese translation by RoLon`