# GreedyHMA

## Abstrato

autor: Tom Barry
versão: 0.4.1.0
download: http://mywebpages.comcast.net/trbarry/downloads.htm
categoria: Remoção de Desentrelaçamento & Pulldown
requisitos:

- YUY2 Colorspace
- suporte ao SSEMMX

## Descrição

NOTA - Esta versão é para Avisynth 2.5 (só YUY2). Use a dll na "pasta mais Velha" para Avisynth 2.0x.
GreedyHMA - Voraz (Movimento Alto para Avisynth)
GreedyHMA.dll é um filtro de código de algoritmo do Avisynth que executa o Greedy/HM de DScaler para executar comparação pulldown, filtrando, e desentrelaçando vídeo.
Descomprima o conteúdo em seu diretório Avisynth, ou em outro lugar. Como o escrito mostra, fiz um sub-diretório abaixo do Avisynth para manter isto separado.
A seguir temos Bikes.avs, um dos escritos que eu estava testando:

    LoadPlugin("d:\AVISynth\GreedyHMA\Debug\GreedyHMA.dll")
    clip = AviSource("c:\vcr\bikes.avi")
    return clip.GreedyHMA(1,0,4,0,0,0,0,0)

Especifica o arquivo (mude o seu) e peça para TopFirst e para AutoPulldown ser ligado, com dizimação (perda de quadro) para 24 fps. Eu testei bastante mas só com Avisynth/VirtualDub.

### Aviso

Anterior à V 0.4.0.0 eu dizia a todos que TopFirst trabalhava quase sempre melhor mas isso foi desmentido por causa de um bug no código GreedyHMA de BottomFirst. Assim você deve antes verificar qualquer teste aqui. Uns estavam tendo entrelaçamentos desnecessários ou artefatos de desentrelaçamentos por causa disto.

Em algumas fontes tenho resultados ligeiramente melhores com TopFirst (captura HDTV) mas outras são melhores sem ele. Noto que é possível rodar 2 cópias de Vdub e fazer um quadro para comparação. Lá não parece ter muita diferença, mas uma boa comparação de dois quadros (olhar em diagonais) normalmente mostrará o melhor. Você pode olhar nas entradas de VirtualDub. Não é necessário criar qualquer arquivo de saída ainda.

Para a Versão 0.4.0.0 eu acrescentei dois novos escritos de filtro ao zip, para contar a você que deve usar TopFirst sem dúvida. Modifique o escrito BottomFirst.avs para apontar ao seu arquivo e carregá-lo no VirtualDub. Então passe alguns quadros. Ignore a linha única que agita, mas veja se cada quadro parece ir para trás. Nesse caso você provavelmente precisa de TopFirst. Tente o escrito TopFirst.avs para verificar isso. Nenhum destes dois escritos depende de GreedyHMA.

Depois de achar o TopFirst correto que fixa (T=0 ou 1) aplique as diretrizes seguintes, substituindo o TopFirst que fixa para 'T'.

Se você pensa que tem principalmente fonte de filme, ou DVD2AVI, então use:

    GreedyHMA(T,0,5,0,0,0,0,0) # que é Force Filme+Dizimação para 24 fps.

Se você tem todo o vídeo, use:

    GreedyHMA(T,0,0,0,0,0,0,0) # for 30 FPS output (25 FPS PAL), or
    GreedyHMA(T,0,3,0,0,0,0,0) # for 24 FPS output

e quando não souber, não se preocupe, ou está tudo misturado, apenas faça-o auto:

    GreedyHMA(T,0,4,0,0,0,0,0) # todo o principal propósito colocação automática (NTSC), ou
    GreedyHMA(T,0,1,0,0,0,0,0) # todo o principal propósito colocação automática (PAL)

Outros interruptores podem ser incluídos como abaixo:

### Lista de Parâmetros GreedyHMA

`GreedyHMA` (clip, TopFirst, SwapFields, AutoPullDown, "MedianFilter", "VerticalFilter", "EdgeEnhance", "GoodPullDownLvl", "BadPullDownLvl")

Todos os valores são inteiros, 0=no, 1=yes:

TopFirst - assume o campo do topo, as linhas 0,2,4,... devem ser exibidas primeiro. O padrão é BottomFirst, supostamente mais comum, mas em capturas NTSC de minha placa WinTV-HD, TopFirst ainda trabalha melhor para mim.

SwapFields - para drivers de captura estouradas que põe linhas 1,3,5.. sobre as linhas 0,2,4...

AutoPullDown - Fixa os tipos de processo Pulldown desejados. Valores de parâmetros válidos são:

0 - Nenhum pulldown, só puro desentrelace (Forçar Vídeo). Não perca nenhum quadro, assim FPS vai a 30 FPS, ou outro. Não dizime (pentimate?). Use se você tiver (e quiser) fonte de vídeo 30 fps ou talvez 25 FPS vídeo PAL.

1 - Auto Pulldown. Automaticamente decide quais quadros devem ser IVTC ou desentrelaçados, dependendo das colocações do Pulldown Lvls Bom e Ruim (veja abaixo). Não dizime. Isto é melhor se você misturou filme e vídeo e não quer produção de 30 fps. Também melhor para fontes PAL.

2 - Só Pulldown (Forçar Filme). Assume fonte de filme, sempre faça IVTC e nunca desentrelace. Não dizime. Uso para fonte de filme PAL.

Valores 3-5 comparam os acima, mas com perda de quadro (dizimação, pentimation?) Cinco quadros são olhados de cada vez e mais provável de ser uma duplicata é abandonado, abaixando o FPS assim de 30 a 24.

3 - Deinterlace (Forçar Vídeo) mas com perda de quadro. Use para vídeo NTSC se você ainda quer dizimar. Realmente com fonte de vídeo não há nenhum campo próprio para derrubar, mas derrubará os que se parecem muito como duplicatas.

4 - Auto Pulldown com perda de quadro. O melhor ajuste (mais automático). Trabalha na maioria dos casos, se eu eliminar todos os bugs.

5 - Só Pulldown (Forçar Filme) com perda de quadro. Isto dará os melhores resultados se você tem filme fonte NTSC 100% corretamente masterizado sem seções de vídeos e não muitas edições. Pode ajustar para a maioria das mudanças de cena e muda na cadência de pulldown, mas não em campos misturados.

Eu ainda não tentei ver qual é melhor com tudo isso. Material de Pulldown ainda não está perfeito. Mas a menos que você tenha certeza, pode deixar isto em 4 (Auto). Ainda deve controlar vídeo de esporte com grande movimento. Se cai muito em modo de desentrelace freqüentemente durante o processo do filme, você pode tentar aumentar um pouco o Bad Pulldown Level.

***** NOTA - O FILTRO MEDIANO ESTÁ DESATIVADO NESTA VERSÃO *****

MedianFilter (temporal) - Ajuda a se livrar dos ruídos se necessário, mas causa um atraso de 2 campos de vídeo (caso contrário um atraso de 1 campo). Especificando 1 volta ao uso do atual padrão 3 (pode mudar) mas você também pode especificar 2-255 para anular isso. Valores entre 3-5 podem causar artefatos de movimento em vídeo de movimento rápido.

Veja nota acima. Eu quebrei o Filtro Mediano incluindo perda de quadro, visto que roda com um atraso de 2. Parece menos importante assim eu o desabilito agora. O parâmetro fica ignorado.

O Filtro Mediano é uma complicação desnecessária enquanto GreedyHMA for novo porque muda a lógica do momento interno, confundindo a verificação de algumas partes do código específico Avisynth. Eu o re-habilitarei depois que tudo ficar consolidado, mas por ora fica desabilitado.

***** NOTA *****

VerticalFilter - Não só se livra dos ruídos mas também de alguns artefatos de desentrelaçamento desde que é feito o último. Útil se você vai reduzir a escala. Use só parâmetro de valor 0,1. Também ajuda a compressão.

EdgeEnhance (horizontal) - Acrescenta um pouco de nitidez ao vídeo de resolução total. Este também pode usar valores parâmetros de 2-100. O padrão é atualmente 50 se 1 é especificado. Eu também posso suportar valores negativos no futuro, fazendo-o um filtro horizontal para ajudar a montar redução de escala.

Good Pulldown Lvl - Este é um número de 1-255 que deve ser excedido antes de GreedyHMA fazer pulldown para um quadro. Este parâmetro só é respeitado quando Auto Pulldown também está ativado (AP=1 ou 4). O padrão está sujeito a mudança mas é atualmente fixo em 90. Mas você só terá o valor padrão especificando 0, recomendado para a maioria dos casos. É realmente só uma média dos quadros salvos nos fatores de pentes/entrelaces para comparar corretamente os quadros.

Bad Pulldown Lvl - Este é um número de 1-255 que NÃO deve ser excedido antes de GreedyHMA fazer pulldown a um quadro. Este parâmetro só é respeitado quando Auto Pulldown também está ativado. O padrão está sujeito a mudança mas é atualmente fixo em 85. Mas você só terá o valor padrão especificando 0, recomendado para a maioria dos casos. Isto é realmente só uma medida de quanto ruim os fatores de pentes/entrelaces de um quadro seriam aumentados se fizéssemos pura comparação de campo.

Novo na V 0.4.0.0 quando Force Film é especificado (AP=2,5) o nível Pulldown Ruim padroniza uma quantia impossivelmente enorme. Mas pode ser anulado agora para ainda desentrelaçar em quadros extremos de entrelace de artefatos. Eu não testei para achar o valor ótimo mas provavelmente é menos de 150 ou algo assim. Especificando 0 dá o padrão de sempre Force Film.

Por ora, todos o 8 parâmetros devem estar presentes, não há nenhum erro em checar e nenhum mais doc, exceto sobre Greedy/HM em www.dscaler.org

### Assuntos e limitação Conhecidos

1) ISTO É SÓ PARA MÁQUINAS SSE

Isto é escrito como as opções avançadas de DScaler Greedy/HM, em parte em assembler só para máquinas de SSE. Eu tenho erro zero ao checar nele, assim TRAVARÁ se não tiver um Celeron mais rápido pelo menos, P-III, Athlon, ou mais alto. Eu não estou certo se isso será corrigido no futuro, mas posso ficar se o tempo permitir.

2) Atualmente nenhum erro de checagem ou mensagens. Eu não entendi como emitir mensagens em Avisynth ainda e há um grupo de materiais que eu deveria conferir que eu não sou.

3) Assume entrada Baseada em Quadro YUV (YUY2). Use uma função de AVIsynth para converter primeiro se necessário.

4) Atualmente limitado a uma resolução de quadro de 1928x1088 píxeis.

5) Consertado.

6) Há um bug estranho que eu não entendi nada. Se você inclui um novo ou mudado GreedyHMA.dll à sua máquina, a primeira vez que roda VirtualDub/Avisynth/GreedyHMA então VirtualDub pode deixar de responder. Se você usa o Task Manager (Gerenciador de Tarefas) para cancelar VirtualDub, ele rodará depois disso. Um trabalho em fundo parece abrir um outro arquivo AVI no VirtualDub, na primeira vez que você o expõe, depois de instalar GreedyHMA, antes de abrir qualquer escrito do Avisynth. Notas posteriores: não depende nada de GreedyHMA, acontece sem ele em minha máquina, mas eu ainda não entendo isso.

7) Atualmente só trabalha corretamente se alimenta uma tela de largura em píxeis que seja múltiplo de 16. Caso contrário pode produzir lixo ao direito da tela que você pode ter que aparar.

8) Como declarado acima, a opção do Filtro Mediano está ignorada temporariamente.

Por favor envie comentários a Tom Barry (trbarry em trbarry.com)

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