Manual AviSynth

Estado
Cerrado para nuevas respuestas

aguasalada

Casi, casi, muda...
Miembro
Este manual se encuentra en un estado de constante actualizacion y expansion, y probablemente asi lo este por siempre (siempre y cuando quede alguien que de ello se ocupe ^^), dado el tipo de programa que es AviSynth y la enorme cantidad de filtros que existen y aun faltan ser agregados así como también todos los nuevos que continúan saliendo. Por eso sepan que los filtros tratados aqui no son todos los disponibles, aunque me gustaría creer que nos vamos acercando.
En principio el objetivo inicial de servir como introducción a AviSynth creo que fue alcanzado, pero si no lo creen asi por favor dejen un comentario sobre lo que les parece que falta para cumplir con el mismo.

Las consultas sobre el funcionamiento de los filtros y recomendaciones sobre su aplicacion por favor realicenlas en hilo nuevo en el subforo de edicion de video.
Sugerencias, criticas y comentarios sobre el manual son muy bienvenidos y pueden hacerlas en este hilo, desde donde también pueden colaborar con el manual, nomas publiquen alli la explicacion del filtro que deseen y este sera agregado a la brevedad dejando por supuesto constancia de su colaboracion.

Colaboran con este manual:

overdrive80
ElMagno90
piscator
Nagash
Ferny
Burnout
LUCHOO



Introduccion

AviSynth es un programa libre y gratuito destinado a realizar frameserver y edicion de videos. Pero no es un programa de edicion convencional como los que estan acostumbrados a usar. Para darse una idea de porque, carece completamente de una interfaz grafica desde donde puedan ejecutar sus opciones y/o configurarlo. En su lugar, la configuracion se "escribe" enteramente sobre un archivo de texto sin formato, mediante el uso de un lenguaje propio de AviSynth. En cuanto a su ejecucion, esta es en todo momento transparente para el usuario (salvo quizas en casos de error en la configuracion).

De forma muy basica y breve, el funcionamiento podría resumirse asi: AviSynth toma video y/o audio descomprimido (la decodificación siempre es externa) y se ocupa de procesarlo en tiempo real mediante la aplicación de filtros (internos o externos) de muy variada indole, para luego "soltarlo" y sea recibido por el programa compresor (encoder) o reproductor. Entonces AviSynth vendria a ser una especie de intermediario, y por lo tanto requiere no solo que haya alguien antes que le entregue el video descomprimido (decodificadores y/o demultiplexores), sino también alguien a continuacion (encoder o reproductor) a quien devolverle el video filtrado. No funciona solo por su cuenta y esto tiene logica con lo dicho anteriormente sobre que su ejecución es transparente, por ello sin el programa a continuacion no se podria usar.

Volviendo a su configuracion, se dijo que se hacia a traves de un archivo de texto usando el lenguaje que entiende AviSynth. Es decir que se deben escribir las instrucciones de lo que queremos que haga. A este archivo de texto con las instrucciones se le llama script, y puede ser creado con el bloc de notas o similares pero siempre guardando sin formato (.txt), aunque para que AviSynth lo reconozca como un script debe tener extension AVS. Tambien existen utilidades que permiten crear el script de forma mucho mas comoda e incluso interactiva, siendo lo mas cercano a una interfaz grafica que se puede encontrar. En el script se pueden indicar los filtros que se desean aplicar y su configuracion, teniendo en cuenta que AviSynth respeta el orden del texto en su ejecucion.

Es este archivo .avs el que luego debe cargarse al compresor o reproductor, donde una vez abierto AviSynth se encarga de que estos vean un archivo AVI con video descomprimido, siendo esta la funcion principal del programa, tomar un video en algun formato cualquiera (como minimo debe poder ser reproducido con los codecs instalados en el sistema) y entregarlo como un video AVI, funcion denominada frameserver.

La siguiente es su web oficial, donde pueden encontrar mas informacion sobre su funcionamiento, asi como tambien listados de la mayorias de los filtros disponibles.

http://avisynth.org/

Durante la instalacion se les preguntara si desean habilitar ciertas opciones, como por ejemplo la de asociar a Avisynth los archivos de extension AVS(Associate AVS with Notepad), recomendable activarla para asi identificar facilmente los script.
Tambien Add Avisynth Script to new items menú, que les permite acceder a ClickDerecho->Nuevo->AviSynth Script para crear directamente un archivo con extension AVS.

Algunas de las utilidades que se pueden usar para la creacion y evaluacion de scripts son:

AVSEdit
AvsP (version original - discontinuada)
AvsPmod (continuacion extraoficial del desarrollo de AvsP)
AviSynth Batch Scripter

Todas estas ofrecen excelentes ventajas y funciones, como la posibilidad de previsualizar o incluso (AvsP) de regular los parametros de configuracion de los filtros mediante una interfaz grafica mientras se comprueban los resultados casi instantaneamente.

Una ves tienen el script terminado, pueden abrirlo con el programa que usen para codificar o reproducir como si de un archivo de video de tratara, y Avisynth se ocupa del resto.
En teoria pueden cargar el archivo .avs en cualquier programa que soporte archivos AVI, ya que aunque este no se los muestre como soportado pueden forzar la carga con la opcion comunmente llamada All Files de la ventana de carga.


Introduccion al Lenguaje de AviSynth

Como se menciono anteriormente AviSynth se configura a partir de archivos de texto sin formato denominados scripts. Aqui veremos las bases del lenguaje que se debe emplear en dichos scripts para poder "ordenarle" a AviSynth lo que necesitamos que haga.

AviSynth va leyendo el script en orden, linea por linea hacia abajo, y de izquierda a derecha en cada linea, igual que como acostumbramos a leer un libro. Debemos considerar esto cuando armemos nuestro script, ya que los comandos y filtros seran ejecutados en este orden y el mismo es de suma importancia, como se comenta mas adelante.

Es importante aclarar que AviSynth ignora espacios en blanco dejados entre comandos o filtros sucesivos, asi como tambien mayusculas y minusculas, es lo mismo usar DirectShowSource que diRecTShowSoURCE.

Nota: de aqui en mas aquello que se encuentra resaltado en amarillo corresponde a lenguaje de AviSynth, por ello lo veran en la sintaxis y en los ejemplos; y lo que vean resaltado en verde son los parametros.

Filtro:
Comando que le indica a AviSynth que debe aplicar un determinado filtro en ese punto del script. Este comando se compone por el nombre del filtro seguido de dos parentesis entre los que es posible dar valores personalizados a ciertos parametros que regulan su configuracion.
Con esta denominacion de "filtro" aqui estamos incluyendo todos los tipos de descriptos mas adelante (internos, externos y funciones).

NombreDelFiltro()

Al margen del orden en que AviSynth ejecuta el script, los filtros sucesivos pueden ir de forma completamente arbitraria, considerando que AviSynth ignora los espacios en blanco.
Por ejemplo, el siguiente script:

AviSource("C:\video.avi")
Resize(1280,720)
FFT3DFilter()


Es exactamente lo mismo que:

AviSource("C:\video.avi")Resize(1280,720)FFT3DFilter()

Ambas formas son identicas en funcionalidad, pero la primera resulta mucho mas ordenada para quien debe leer y trabajar con dicho script.

Parametros:
La accion de un filtro se configura a partir de una serie de parametros, que son valores propios de cada filtro en particular y utilizados internamente para calculo y/o configuracion.
A estos parametros se les debe asignar un cierto valor, segun el efecto que dicho valor tendra en el funcionamiento del filtro, para ello consultar el manual. Cabe aclarar que en la enorme mayoria de los filtros los parametros ya vienen con un valor asignado por defecto, en cuyo caso veran que con solo aplicar el comando del filtro el script es funcional. Sin embargo, aunque existen filtros cuyos valores por defecto pueden ser aplicados a variedad de situaciones, siempre es aconsejable ajustarlos a nuestro video y asi lograr los resultados optimos.
Dichos valores se pueden asignar de diferentes formas: en algunos filtros se debe conocer el orden en que se encuentran los parametros dentro del parentesis y los valores se les asignan en el mismo orden separados por comas:

STMedianFilter(a,b,c,d) (obviamente deben conocer que representa cada parametro)
STMedianFilter(8,15,4,7)

Esto puede aplicarse a todos los filtros.
Sin embargo, en la gran mayoria se conoce el nombre de los parametros y el filtro es capaz de reconocerlos, por lo que se les puede asignar su valor en cualquier orden mientras se los nombre como se ve a continuacion:

FFT3DFilter(sigma=2.0, bt=3, plane=0)

Esta es una forma mucho mas comoda y versatil, ya que nos permite solo asignar valores a aquellos parametros a los que necesitemos modificar su valor por defecto.

Dentro de los parentesis pueden dejar cuantos espacios deseen, pero si quieren continuar en la siguiente linea deben emplear el comando \, de la siguiente forma:

STMedianFilter(8, 15 \
,4,7)


Esta linea es perfectamente valida, que por supuesto queda muy fea pero es solo un ejemplo.

Los valores que puede tomar un cierto parametro dependen de su tipo, que puede ser: integer - numeros enteros (1, 3, 800, etc); real - numeros reales (1.25, 6.9887, 0.006, etc); string - texto, que debe ser escrito entre comillas; boolean - puede ser verdadero (se escribe True) o falso (se escribe False), sin comillas.
En el siguiente ejemplo ven la aplicacion de todos los tipos:

LSFmod(defaults="fast", strength=85, secure=false, ss_x=1.78)

Trabajando con multiples archivos de audio/video, asi como tambien multiples pistas de audio o video:
AviSynth solo es capaz de aplicar una cierta sucesion de filtros a un archivo o pista a la vez. Por ello, si deseamos aplicar un filtrado diferenciado a diferentes pistas dentro del mismo script es necesario recurrir al uso de variables. Esta es una nocion basica de programacion, y aqui basta que la consideremos como un nombre que recibe una cierta fraccion de informacion, ya sea un valor numerico, una pista de video o audio, texto, etc. Se utiliza para almacenar dicha informacion dentro del script cuando esta sera requerida mas adelante.
En el caso particular que nos compete, estas variables se crean asignandole a un determinado archivo o pista de audio/video un cierto nombre, el cual pasara a identificarlo de aqui en mas dentro del script y siempre que requieran aplicarle algun filtrado deberan invocar a la variable que lo contiene. La asignacion se realiza utilizando el comando =, como se ve en el siguiente ejemplo:

video = AviSource("C:\mi_video.avi", audio=false)
audio = WAVSource("C:\mi_audio.wav")


Este par de lineas les permtite cargar audio y video por separado, asignando cada uno a una variable cuyo nombre es completamente arbitrario, pero que por supuesto deben de emplear cada vez que requieran acceder a su contenido.

Cuando necesiten aplicarle un cierto filtrado al contenido de una variable, no solo deben de invocarla por su nombre sino tambien, luego del filtrado, actualizar su contenido, lo cual pueden hacerlo de diferentes formas:

video = video.LSFmod()

Aqui se almacena en la variable video el resultado de la sucesion de filtros luego del comando =. En la jerga se dice que se "evalua" la expresion luego del = y se asigna el resultado a la variable. Entonces lo que ocurre es que el contenido de la variable es primero modificado y luego almacenado en la misma, sobreescribiendo el contenido original.
El . (punto) deben emplearlo para separar la variable del filtro que la sucede cuando ambos se encuentra pegados en la misma linea. O tambien pueden simplemente dejar un espacio pero asi queda mas lindo.

Tambien pueden usar algo asi:

video.LSFMod()
video = last


En este otro caso se le aplica el filtrado a la variable video, para luego emplear la variable especial last para la asignacion. Esta variable especial siempre contiene el ultimo resultado disponible en esa parte del script, siendo en este caso lo que queda luego de aplicar el filtro LSFmod a la variable video.

A su vez, muchos filtros soportan introducir el video a filtrar como el primer parametro dentro de los parentesis, mediante la variable que lo contiene. El mismo ejemplo anterior puede ser reescrito asi:

video = LSFmod(video, defaults="fast")

Si no se especifica nada entonces el filtro toma como entrada el ultimo video disponible (o lo que es lo mismo, aquel que se encuentre dentro de la variable last).

LSFmod(defaults="fast") es lo mismo que: LSFmod(last, defaults="fast")

Y por ultimo, cuando finaliza el script se le debe indicar a AviSynth cual es el video de salida de entre todas las variables presentes.
Esto se realiza mediante el comando return, y colocando a continuacion el nombre de la variable que contiene el video. En nuestro ejemplo, supongan que ya esta la etapa de filtrado de video y ahora queremos que la salida contenga dicho video mas el audio cargado por separado al comienzo del script:

final = AudioDubEx(video,audio)
return final


El filtro AudioDubEx se encuentra explicado en la seccion sobre carga de archivos.
De no especificar nada el video a la salida sera aquel contenido en la variable last, o sea el ultimo video en ser filtrado. En este ultimo ejemplo hubiera sido lo mismo poner:

AudioDubEx(video,audio)

En este caso es mas sencillo usar esta ultima sintaxis, pero esto es solo un simple ejemplo para fijar ideas, el uso del comando return se hace especialmente util en scripts mas complejos.


Filtros

A continuacion se presentan los filtros actualmente abarcados por este manual, ordenados por categorias y subcategorias.
El formato de explicacion de cada filtro es el mismo: se da una breve (o no tanto) explicacion de su utilidad y a veces funcionamiento (muy basico), se muestra su sintaxis (en la mayoria de los casos junto con el valor por defecto de los parametros) y se pasa a explicar la funcion de cada parametro. A continuacion puede que haya algun que otro ejemplo y finalmente enlaces a la descarga, documentacion y otra informacion relacionada.
Debajo del nombre de cada filtro tienen indicado los formatos de color sobre los que soporta trabajar. Si su video no se encuentra en uno de estos, pueden recurrir al filtro ConvertToXXX que encuentran dentro de la categoria Color y Niveles.

AviSynth es capaz de trabajar con tres tipos diferentes de filtros, a saber:

Filtros Internos: Son aquellos incluidos con AviSynth y pueden usarse directamente.

Filtros Externos o Plugins: Filtros no incluidos con AviSynth, tambien llamados plugins. Se componen de un unico archivo .dll aunque en algunos casos pueden requerir que otras librerias esten presentes en el sistema.
Para poder invocar un plugin en el script (mediante su sintaxis correspondiente) primero debe cargarse el mismo utilizando la siguiente linea en el comienzo del script: LoadPlugin("C:\...\plugin.dll"), o para que se cargue automaticamente, colocar el plugin en la carpeta por defecto: C:\Archivos de programa\AviSynth 2.5\plugins.
Por supuesto que en un mismo script pueden utilizar tantos plugins como gusten, nada mas deben usar una linea por cada uno para cargarlos, o ponerlos todos en la carpeta mencionada.

Funciones: Para crear los scripts, Avisynth ofrece un lenguaje mucho mas complejo de lo que se vemos aqui, donde solo nos limitamos a nombrar los filtros y el modo de aplicarlos y configurarlos. Es posible "programar" lo que queremos que se haga con determinados filtros, de una forma muy compleja y con el objetivo de lograr mejores resultados de los que se consiguen con la aplicacion de los filtros "a lo bruto".
Estos scripts suelen contener la programacion, en el lenguaje que entiende AviSynth, de lo que se acostumbra a llamar "funcion", es decir que cada script de este tipo define una funcion. La forma de trabajar con estas funciones es muy similar a como se trabaja con los plugins, es decir que hay que asegurarse de cargarla al script y luego se la puede invocar mediante su sintaxis como si de otro filtro se tratara.
Es importante tener en cuenta que el script solo contiene una programacion, pero no puede filtrar por si mismo, depende para funcionar de los filtros internos o externos que se mencionan en las respectivas secciones del manual.
Existen variedad de estos scripts, dedicados por ejemplo a aumento de nitidez (efecto sharpen), filtrado de ruido, filtrado de bloques, etc.
Como la funcion suele requerir de filtros externos deben asegurarse de cargarlos como corresponde o tenerlos en la carpeta por defecto.
Respecto a la carga de la funcion misma, se realiza mediante la linea: Import("C:\...\funcion.avs").
Para la carga automatica de las funciones pueden colocarlas en la carpeta por defecto junto al resto de los plugins, con la unica salvedad de ponerles extension .avsi para que puedan ser reconocidas por AviSynth.

Orden de aplicacion de los filtros:

Es de fundamental importancia el orden en que aplican los diferentes filtros sobre el video, pudiendose afectar de forma nagativa la calidad del video de usarse un orden incorrecto.

Este asunto lo discutimos en el hilo abierto para hablar sobre el manual y llegamos a cierto concenso, que son las consideraciones presentadas a continuacion. Sin embargo sepan que el tema aun se encuentra abierto a modificaciones, por lo que son bienvenidos a dar su opinion.

Consideraciones para ordenar los filtros dentro del script:

Desentrelazado: antes de cualquier otra etapa de filtrado.
DeBlock: antes de crop, resize y de otras etapas de filtrado de ruido.
Denoising temporal: antes del denoising espacial.
Anti-Aliasing: luego del resize.
Resize cuando se reduce la resolucion: antes del filtrado de ruido (denoisers).
DeHalo y Deringing: luego del filtrado general de ruido y luego de los filtros de nitidez (sharpen).

A continuacion pueden ver un script de ejemplo con el orden correcto:

Citar
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#CARGA DE ARCHIVOS
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

DGDecode_mpeg2source("E:\DB_1\Opening\ope.d2v", info=3)

ColorMatrix(hints=true, threads=0)

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#DESENTRELAZADO
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#CROOPING&RESIZE&COLOR
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

Crop(4,0,0,0)

Spline64Resize(720,480)

Tweak(sat=1.1)

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#DENOISERS
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

FFT3DFilter(sigma=2.2,bw=32,bh=32,ow=16,oh=16,plane=0,sharpen=0.6)

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#SHARPENS&SMOOTHERS&ANTIALIASINGS
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

LSFMOD(defaults="slow")

TBilateral(diameterL=5,diameterC=5,sDevL=1.300,sDevC=1.300,iDevL=7.000,iDevC=7.000,\
csL=1.000,csC=1.000,d2=false,chroma=true,kernS=2,kernI=2,resType=0)

SAA()

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
#OTROS
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-

Toon(0.25)

GradFun2db(thr=1.3)


Carga y Manipulacion de Archivos

Lo que necesitan para que AviSynth pueda cargar sus archivos, ya sean audio, video o imagenes, asi como tambien los filtros que permiten su manipulacion.

Filtros en esta categoria:
AVISource / AVIFileSource / OpenDMLSource
DirectShowSource
WAVSource
ImageSource
DGMPGDec
DGAVCDec
DGDecNV
NicAudio
BassAudio
Trim
AudioDub / AudioDubEx
UnalignedSplice / AlignedSplice
ImageWriter



Transformaciones Geometricas

Todo lo que sirva para escalar, cortar, rotar, etc, la imagen.

Filtros en esta categoria:
AddBorders
Crop
FlipHorizontal / FlipVertical
Letterbox
Resize
Turn

Transformaciones Geometricas


Desentrelazado

Introduccion al contenido entrelazado y los filtros para restaurar un contenido progresivo.

Filtros en esta categoria:
AnimeIVTC
Decomb

Desentrelazado


Filtrado de rudio (denoisers)

Filtros destinados al ruido aleatorio.

Subcategorias y filtros:

Espaciales: FRFun3b - FRFun7 - SpatialSoften - UnDot - VagueDenoiser - SPresso - TBilateral - RemoveGrain.
Temporales: TemporalSoften.
Espacio-Temporales o 3D: DeGrainMedian - DFTTest - FFT3DFilter - FFT3DGPU - FluxSmooth - STMedianFilter.
Temporales con compensacion de movimiento: MVTools+MDegrain - TTempSmooth.


Denoisers


Restauracion

Por aqui estan los filtros que se dedican a eliminar o atenuar efectos indeseables del video, tambien llamados artifacts. Estos filtros todos tienen un uso especifico, no son filtros para aplicar sobre ruido en general, sino especificamente sobre el efecto al que apuntan.

Subcategorias y filtros:

Debanding: GradFun2db - GradFun2DBmod.
Deblocking: BlindPP - DeBlock - DeBlock_QED - SmoothD - UnBlock.
Dehaloing y Deringing: DeHalo_alpha - EdgeCleaner - HQDering - YAHR.
Antialiasing: SharpAAMCmod.
Correccion de Color: Colormatrix.
Filtros para Eliminar Logos: rm_logo.


Restauracion


Aumento de nitidez (efecto sharpen)

La finalidad de estos filtros se explica por si sola.

Filtros en esta categoria:
aSharp
aWarpSharp / aWarpSharp2
MSharpen
LimitedSharpenFaster
LSFmod
SeeSaw
Sharpen

Filtros Sharpen


Multiproposito

Funciones dedicadas a mas de un tipo de filtrado, es decir que abarcan mas de una categoria.

MCTemporalDenoise


Ajustes

Ajustes de color, niveles y framerate.

Subcategorias y filtros:

Conversion: ConvertToXXX.
Color y Niveles: ColorYUV - GreyScale - Tweak.
Framerate: AssumeFPS - ChangeFPS - Decimate - FDecimate - PullDown.
Oscurecimiento de lineas: FastLineDarkenMOD - Toon.


Ajustes


Varios

Subcategorias y filtros:

Efectos: AddGrainC - GrainFactory3 - Reverse.
Subtitulado: Subtitle - VSFilter.


Carga de Archivos

Por aqui se presentan los filtros que le permiten a AviSynth cargar sus archivos de audio y/o video. En principio aquellos filtros internos incluidos con AviSynth, para luego pasar a los plugins.

Frame Accuracy: esta es una caracteristica que poseen los filtros de carga cuando son capaces de busqueda y localizacion de frames de forma exacta.
Esto significa que ante una operacion de busqueda de un frame en particular, se puede estar seguro de que ese es el frame devuelto por el filtro.
Por ejemplo, supongan que utilizan el filtro Trim para seleccionar un trozo de su video. La seleccion se realiza mediante frame incial y frame final. Pues si estan utilizando un filtro de carga que no les garantiza frame accuracy para el formato de su video, los frames donde se realiza el corte pueden no ser aquellos que ustedes especificaron.
Cabe aclarar que si se trata de un filtrado directo de principio a fin del video no es necesario que el filtro que usen sea frame accurate, esta es una caracteristica deseable solo cuando se requieren operaciones de busqueda.

AviSource

AviSource("C:\...\video.avi", pixel_type="YV12")
AviFileSource("C:\...\video.avi", pixel_type="YV12")
OpenDMLSource("C:\...\video.avi", pixel_type="YV12")


AviSource permite cargar archivos AVI, WAV, AVS o VDR(frameserver de VirtualDub). Si el archivo AVI es estandar (ergo, no posee cosas raras como audio AAC o video H264) este filtro deberia ser frame accurate.
Esta detecta automaticamente el tipo de archivo y lo pasa a la interfaz AVIFile o OpenDML segun corresponda. En caso de encontrase problemas se puede forzar el uso de alguna de estas utilizando las otras dos lineas de carga, teniendo en cuenta que AviFileSource sirve para archivos AVI<2GB y el resto de formatos mencionados, mientras que OpenDMLSource puede abrir archivos AVI de cualquier tamaño pero no los otros formatos.
Entre las comillas se indica la ruta completa al archivo, aunque esta se puede obviar (solo se pone el nombre) si el archivo .avs(el script) esta en la misma carpeta que el archivo de video a ser cargado.
Este modo de cargar el archivo requiere de un codec VFW para decodificar el video y de un codec ACM para decodificar el audio, asi que deberan tener codecs con dicha capacidad instalados.
Pueden evitar la carga del audio colocando audio=false en la linea, quedando asi: AviSource("C:\...\video.avi", audio=false).
El parametro pixel_type sirve para forzar un formato de color en la salida del decodificador, siendo validos los siguientes: YV12, YV411, YV16, YV24, YUY2, Y8, RGB32 y RGB24. Si se omite (que es lo mas comun) AviSynth usara el primer formato soportado por el decodificador respetando el orden ya mostrado.

DirectShowSource

DirectShowSource("C:\...\video.mp4", fps=25, convertfps=false)

Para poder cargar otros formatos, o tambien util si no tienen un codec VFW para el video o uno ACM para el audio pero si pueden reproducir el archivo sin problemas en Windows Media Player, se utiliza esta linea que hace uso de la interfaz DirectShow y asi permite demultiplexar/decodificar todo formato que posea un Decoder o Splitter directshow instalado en el sistema.

Debe destacarse que este filtro no ofrece frame accuracy en la mayoria de los casos.

Definir el parametro fps sirve para fijar el frame rate de reproduccion, pero solo es necesario en ciertos casos de decoders directshow que fallan en informarlo, como cuando se trata de achivos ASF o MOV.
Si desean solo cargar el video, pueden agregar audio=false a la linea, quedando video.mp4", audio=false), y viceversa con video=false.
Para videos con framerate variable o VFR se puede usar convertfps=true para convertir a framerate constante o CFR mediante duplicado de frames. Aparentemente ofrece mejores resultados si tambien se fija el framerate a un valor de 120 usando fps=120, dado que este valor es el primero que posee como multiplos a 24 y 30. Esto surge de una cuestion de entrelazado, para mas info consulten la categoria de filtros para Desentrelazado.

WAVSource

WAVSource("C:\...\audio.wav")
WAVSource("C:\...\video.avi")


Para cargar un archivo externo de audio descomprimido en formato WAV, o tambien cargar solo el audio de un archivo AVI(decodificandolo mediante la interfaz ACM).

ImageSource

ImageSource("C:\...\%d.bmp", start=0, end=1000, fps=24, pixel_type="RGB24")

Para carga de imagenes, ya sea sueltas o una secuencia de las mismas para formar un video. En este ultimo caso los archivos deberan estar nombrados en orden adecuadamente.
start y end sirven para fijar un intervalo de carga. Los valores mostrados en la sintaxis son los que vienen por defecto.
pixel_type puede ser Y8, RGB24(por defecto) o RGB32. El canal alfa(transparencias) solo es cargado si se usa RGB32 y si es soportado para el formato de imagen cargado.

Ejemplos:

ImageSource("C:\...\%d.jpg", 51, 256)
Carga todas las imagenes desde la 51.jpeg hasta la 256.jpeg formando un video que corre a 24 fps.

ImageSource("C:\...\%2d.png", end=69, fps=30)
Carga todas las imagenes desde la 00.png hasta la 69.png, formando un video que se reproduce a 30 fps.

ImageSource("C:\...\imagen.bmp", end=100)
Repite la imagen.bmp 100 veces, formando un video a 24 fps.


Plugins para carga de archivos

Estos plugins se ocupan de la demultiplexacion y decodificacion (y en algunos casos, de otros ajustes), actuando asi como frameservers para AviSynth o cualquier otro programa que soporte cargar los archivos de proyecto que crean los indexadores.
De esta forma se puede evitar usar los decodificadores del sistema y se gana en estabilidad. Ademas, suelen ofrecer frame accuracy para algunos de los formatos que soportan.
La carga de los mismos se puede realizar manualmente mediante la linea LoadPlugin("C:\...\plugin.dll"), o para que se cargue automaticamente, colocar el plugin en la carpeta por defecto: C:\Archivos de programa\AviSynth 2.5\plugins.

Sobre los plugin DG: el funcionamiento en el caso de los primeros tres plugin "DG" para carga de video es comun a todos ellos, dado que son desarrollados todos por el mismo autor. Este es basicamente asi: se incluyen en la descarga dos software diferentes, un programa llamado DG[...]Index.exe y el plugin propiamente dicho de nombre DG[...]Decode.dll
Primero se debe usar el programa DG[...]Index para abrir el video. Y aqui es cuando deben extraer el audio, dado que estos plugin solo procesan video, asi que el audio hay que tratarlo aparte. Tambien es posible aplicar algo de filtrado sencillo (Luminancia y crop) mientras se observan los resultados en tiempo real, a manera de preview del video que obtendra AviSynth del plugin.
A su vez, mediante estos plugin se facilita la deteccion del tipo de entrelazado que pueda tener un video, para mas info ver en la seccion sobre Desentrelazado del manual.
Con este programa se crea un archivo de proyecto que contiene informacion sobre el video a decodificar, incluidos los ajustes de luminancia y crop que hayan hecho. Es este archivo de proyecto el que luego se carga desde el script de AviSynth y es a partir del mismo que el decodificador (DG[...]Decode.dll) carga el video, decodifica y envia el video descomprimido a AviSynth para la aplicacion del script.
Y por ultimo, segun tengo entendido todos estos plugin "DG" son frame accurate en todos los formatos de video que soportan.


DGMPGDec

Este conjunto de utilidades permite cargar archivos con video en el formato MPEG-1 o MPEG-2, contenidos en alguna de las siguientes extensiones soportadas: VOB, MPG, M2V, M1V, MPV, MPEG, TP, TS, TRP, M2T, M2TS, PVA o VRO.

Se usa asi: abren el programa DGIndex.exe y cargan su video con File->Open. Pueden usar el cursor para desplazarse por el mismo o bien las opciones de reproduccion en el menu File.
Para extraer el audio, pueden usar las opciones en Audio->Output Method, siendo estas: Disable (no se extrae nada); Demux Tracks (eligen que pistas extraer); Demux All Tracks (extrae todas las pistas); Decode AC3 Track to WAV (extrae y decodifica hacia WAV). La extraccion ocurre durante el proceso de creacion del archivo de proyecto .d2v
Ajustes de luminancia estan disponibles (brillo y gamma), a los que se puede acceder desde Video->Luminance Filter.
Tambien se ofrece la posibilidad de hacer cropping (cortar parte de la imagen), accesible desde Video->Cropping Fliter. En ambos casos los resultados se aplican en tiempo real.
Para crear el proyecto .d2v van a File->Save Project y guardan el mismo, el proceso demorara un cierto tiempo, pueden ver el progreso en la linea de tiempo. Tambien, de paso que se crea el proyecto, se puede demultiplexar el video hacia un archivo solo de video, mediante File->Save Project and Demux Video, o solo extraer las pistas de audio con Demux Audio-Only Stream.

Sintaxis para carga del video:
DGDecode_MPEG2Source("C:\...\video.d2v")

DGMPGDec (el plugin de AviSynth es el archivo DGDecode.dll)


DGAVCDec

Para cargar archivos de video en el formato H264 o MPEG-4 AVC, el que puede encontrarse en alguno de los siguientes formatos de archivo (extensiones): H264, 264, AVC, M2T, M2TS, MTS, TP, TS, TRP.

Se procede de la siguiente manera: ejecutan DGAVCIndex.exe y cargan el archivo de video (File->Open). Una vez abierto pueden usar el cursor para navegar por el mismo, o aprovechar las opciones de reproduccion (File->Play, Stop, Pause).
Pueden extraer (demultiplexar) el audio mediante Audio->Audio Demux, se abre una lista con las pistas detectadas, las marcan para extraer con Set y las mismas seran demultiplexadas al guardar el proyecto. Pueden desmarcar usando Clear.
Ajustes de luminancia estan disponibles (brillo y gamma), a los que se puede acceder desde Video->Luminance Filter.
Tambien se ofrece la posibilidad de hacer cropping (cortar parte de la imagen), accesible desde Video->Cropping Fliter. En ambos casos los resultados se aplican en tiempo real.
Finalmente, para crear el archivo de proyecto .dga, utilizan File->Save Project para iniciar el proceso, cuyo avance puede ser monitoreado mirando el cursor.
Al guardar el proyecto tambien es posible extraer el video a un archivo RAW (solo video) a partir de File->Save Project and Demux Video.

Sintaxis para carga del video:
AVCSource("C:\...\video.dga")

Descarga (en la carpeta de plugins de AviSynth deben estar presentes DGAVCDecode.dll y libavcodec.dll)


DGDecNV

Este plugin (DGDecodeNV.dll) tiene la particularidad de poseer soporte para la tecnologia CUDA de Nvidia. Gracias a esta es capaz de entregar el procesamiento a la placa de video (GPU), aprovechando el impresionante poder de calculo que estas poseen y liberando asi al CPU del proceso de decodificacion. Actualmente este plugin es de pago, aunque este es irrisorio (para donde se gane en dolares por lo menos ) y solo necesario una vez.
No todas las placas de video Nvidia soportan CUDA, solo aquellas con PureVideo version VP2 o superior.
Teniendo la placa, solo les faltan los drivers oficiales de Nvidia desde la version 191.07 en adelante.
Como ultimo paso antes de poder ejecutar el script, deben iniciar el servicio CUVID ejecutando el archivo CUVIDServer.exe, incluido con la descarga del plugin.

Los formatos de video soportados, junto con sus posibles contenedores y/o extensiones, son:

MPEG-2 y MPEG-1 -> VOB, MPG, M2V, M1V, MPV, MPEG, TP, TS, TRP, M2T, M2TS, PVA o VRO.
H264 -> MKV, H264, 264, AVC, M2T, M2TS, MTS, TP, TS, TRP.
VC-1 -> MKV, VC1, M2TS, Transport Streams.


Noten que en el caso de VC-1 no es soportada la extension WMV, en cuyo caso pueden recurrir a la herramienta GDSMux incluida con el Haali Media Splitter para pasar de .wmv a .mkv

Se usa asi: ejecutan DGIndexNV.exe y cargan el video con File->Open. Pueden usar el cursor para desplazarse por el mismo o bien las opciones de reproduccion File->Play/Preview/Stop/Pause-Resume.
La extraccion del audio se realiza desde Audio->Audio Demux. En el caso de un archivo TS (Transport Stream) se listan las pistas detectadas y deben seleccionar cuales desean extraer: click sobre la pista->Set para agregar, Clear para quitar. La extraccion ocurre durante el proceso de creacion del archivo de proyecto.
Cuando se trata de un archivo PS(Program Stream) o MKV las pistas se eligen de la misma forma pero se extraen desde ahi mismo usando Demux.
Ajustes de luminancia estan disponibles (brillo y gamma), a los que se puede acceder desde Video->Luminance Filter.
Tambien se ofrece la posibilidad de hacer cropping (cortar parte de la imagen), accesible desde Video->Cropping Fliter. En ambos casos los resultados se aplican en tiempo real.
Para crear el archivo de proyecto (.dgv si es VC-1, .dgm si es MPG o .dga si es H264), es decir iniciar el proceso de indexado, van a File->Save Project y guardan el mismo. El proceso demora unos minutos, pueden ver el progreso en la linea de tiempo. Tambien, de paso que se crea el proyecto, se puede demultiplexar el video hacia un archivo solo de video, mediante File->Save Project and Demux Video.

Sintaxis para carga del video:
DGSource("C:\...\video.dgm")

Algunos de los parametros disponibles:
deinterlace, para desentrelazado usando el decodificador PureVideo de Nvidia. Puede tomar los valores: "0", por defecto, no se aplica desentrelazado; "1", desentrelazado normal; "2", desentrelazado al doble del framerate original (o tambien llamado bobbing).
resize_w y resize_h permiten aplicar reescalado usando la GPU, y por supuesto representan la resolucion horizontal y vertical respectivamente.

DGDecNV


DirectShowSource2

A pesar de su nombre esta no es una version posterior del mismo filtro interno de AviSynth, sino un desarrollo independiente. El uso del nombre seguro haya sido para hacer notar que es una alternativa mas avanzada.
En particular, este plugin es parte del desarrollo del Haali Media Splitter, por lo que hace uso de este ultimo para abrir los contenedores por el soportados. Para otros formatos recurre a DirectShow tal como el filtro original.
Por lo que tengo entendido su principal ventaja por sobre el filtro DSS es su capacidad para ofrecer "frame accuracy" sobre los formatos contenedores soportados por el Haali Media Splitter: MKV, MP4 y OGM.
Por otro lado, no se ocupa de cargar el audio, a diferencia del original que si lo hace, por lo que deberan realizar extraccion previa y carga por separado. Para saber como aplicar esto remitirse al apartado Introduccion al Lenguaje de AviSynth del post principal.
Vale aclarar tambien que solo es capaz de cargar VFR (frame rate variable) convirtiendo el video a CFR (frame rate constante), que seria equivalente a usar DirectShowSource con el parametro convertfps=true.

Sintaxis:
DSS2("C:\...\video.mkv")

El plugin consiste en el archivo avss.dll que viene incluido con el Haali Media Splitter.


FFmpegSource2

Este es un conjunto de filtros que hacen uso del proyecto FFmpeg para la carga de los archivos, ya sean de audio y/o video. Al igual que los plugin "DG" realiza un indexado completo del video previo a su decodificacion.
El soporte de formatos abarca: AVI, MKV, MP4 y FLV, que deberian ser frame accurate; OGM y WMV, que podrian serlo tambien pero no es seguro; VOB, MPG, M2TS, TS, donde ya no esta garantizado y la localizacion de frames suele desviarse ligeramente (unos pocos frames, ya sabran ustedes si les resulta un problema o no).
Posee ciertas limitaciones, como ser la necesidad de contar con Haali Media Splitter para la carga de OGM o MPEG TS/PS (MPG, TS, etc). No soporta (al menos no correctamente) abrir elementary streams, es decir archivos que contienen solo la pista de video, como ser .m2v, .h264, etc

Funciones:

FFIndex("C:\...\video.avi", indexmask=-1, dumpmask=0, errorhandling=3)
Esta funcion solo se ocupa de realizar el indexado del archivo. Les sirve para cuando requieran realizarlo de forma separada a la carga del video y/o audio, por ejemplo si luego planean cargar video y audio pueden usar esta funcion para que solo se aplique una etapa de indexado, caso contrario se aplicara una etapa de indexado en cada llamada al filtro de carga.
Por si sola no les sirve para cargar audio ni video al script.

indexmask les sirve para especificar que pistas de audio seran indexadas. Por defecto "-1" indexa todas las pistas, mientras que un valor de "0" no indexa ninguna. La forma de seleccionar las pistas es algo extraña, por ejemplo para extraer las pistas 1 a 3 se debe usar un valor de "7", si alquien puede aclarar un poco mejor como se utiliza este parametro bienvenido sea.
dumpmask no solo indexa las pistas seleccionadas sino que tambien las extrae del video a archivos por separado. Sus valores son los mismos que el anterior parametro.
errorhandling controla como reacciona el filtro ante un error de decodificacion del audio. El valor por defecto "3" lo ignora y continua con el indexado. Se puede usar tambien: "0" para detener el indexado; "1" para anular la pista con problemas y continuar indexando; "2" para detener el indexado pero conservar las pistas ya indexadas hasta ese punto.

FFVideoSource("C:\...\video.avi", track, cache=true, rffmode=0, fpsnum=-1, fpsden=1)
Para cargar el video. Realiza una pasada de indexado salvo se haya realizado antes con FFIndex.

Con track eligen que pista de las indexadas debe ser cargada. Esta funcion (al igual que la de carga del Audio) solo es capaz de cargar una pista a la vez, asi que si necesitan cargar mas de una sera necesario que utilicen esta funcion con cada una de ellas.
Si lo desean pueden escribir la informacion de indexado en un archivo externo para su uso posterior. Para ello usan cache=true. Esto a su vez permite el uso de la informacion de indexado ya existente.
Para poder seleccionar como tratar a las marcas (flags) de pulldown tienen el parametro rffmode, cuyos valores son: "0" las ignora; "1" las respeta; "2" es el equivalente a Force Film de los plugin "DG". Si el video no posee marcas y seleccionan algun valor mayor que cero el filtro dara error. Esta opción es muy util para trabajar con videos Soft o Hard Telecined. Para mas detalle sobre que opción elegir remitirse a la sección de Desentrelazado.
fpsnum y fpsden están para fijar el valor del framerate del video cuando se busca aplicar una conversión VFR -> CFR. Se trata de especificar un valor de framerate mediante una relacion fpsnum / fpsden. Por ejemplo: para 29,97: fpsnum=30000 y fpsden=1001. Por defecto fpsnum=-1 (o "0") implica que no se modifica.

FFAudioSource("C:\...\video.avi", track, cache=true, adjustdelay=-1)
Para cargar el audio. Realiza una pasada de indexado salvo que se ya se haya realizado antes mediante FFIndex.

Para tratar de aplicar un cierto delay a la pista de audio pueden emplear el parametro adjustdelay, mediante los valores: "-1" ajusta segun la primera pista de video; "-2" ajusta segun el tiempo cero; "-3" no hace nada. Y tambien pueden poner aqui el numero que representa a cualquier otra pista, de tal forma que el ajuste sea relativo a la misma.


Requiere que esten presentes en la carpeta plugins de AviSynth: el plugin propiamente dicho, ffm2.dll, y el programa ffmsindex.exe.


NicAudio

Para carga de varios formatos audio.

Sintaxis:
AC3(Dolby Digital)
NicAC3Source("C:\...\audio.ac3",Channels,DRC)
DTS, DTSWAV
NicDTSSource("C:\...\audio.dts",Channels,DRC)

Channels: opcional, valor entero, maximo numero de canales a la salida, por ejemplo si cargan un .ac3 de 6 canales pueden hacer Downmix a estereo si le ponen al parametro un valor de 2.
DRC(0,1): aplica el algoritmo de Dynamic Range Compresion, por defecto en 0. 1 aplica el perfil Normal del algoritmo.

MP1, MP2, MP3
NicMPG123Source("C:\...\audio.mp3",Normalize)

Normalize(0,1): si normalizar o no el volumen, por defecto en 0 (apagado).

LPCM
NicLPCMSource("C:\...\audio.lpcm",SampleRate,SampleBits,Channels)
WAV, WAVEFORMATEXTENSIBLE, W64, BWF, RF64, AU, AIFF y CAF
RaWavSource("C:\...\audio.wav",SampleRate,SampleBits,Channels)

SampleRate: valor entero a expresarse en Hz, representa la frecuencia de muestreo.
SampleBits: representa el tamaño de la muestra digital del audio. Valores validos: 8, 16, 24, 32. Y 33 solo para RAW (equivale a 32 float). LPCM tambien acepta 20, -8, -16, -24 y -32, siendo los valores negativos para audio LPCM de Blu-Ray (Big-Endian).


BassAudio

Para carga de audio. Amplio soporte de formatos.
El plugin no es mas que una interfaz para AviSynth de las librerias decodificadoras provistas por: http://www.un4seen.com/, desde donde pueden descargarlas.
Hay varias librerias, cada una dedicada a un determinado grupo de formatos. Segun que formato deseen cargar necesitaran que la libreria que corresponda este acompañando al plugin (BassAudio.dll), pero en el script solo es necesario cargar este ultimo.
La libreria principal es el archivo bass.dll y soporta los formatos: MP1, MP2, MP3, OGG, WAV, AIFF, entre otros.
Otros formatos se soportan mediante Addons, es decir que ademas del archivo .dll que posee dicho soporte extra de formatos, tambien debe estar presente bass.dll, todo junto al plugin.

Sintaxis:
Para cargar el plugin
LoadPlugin("C:\...\BassAudio.dll")

Para cargar un archivo de audio
BassAudioSource("C:\...\audio.mp3")

El plugin lo consiguen como parte del BeHappy, ojo que puede ser que algunas versiones sean solo el ejecutable, busquen el programa completo, descomprimen y lo encuentran en la carpeta plugins.


Filtros para Manipular Archivos

AudioDub / AudioDubEx

Este filtro une la pista de video del clip1 con la pista de audio del clip2, para formar una nueva pista de audio y video.

AudioDub(clip1, clip2)
AudioDubEx(clip1, clip2)


La diferencia entre las variantes es que la "Ex" no arroja un error cuando alguno de los clips no poseen la pista necesaria. Por ejemplo si el clip1 no posee pista de video, en vez de dar error el resultado solo contendra la pista de audio del clip2. Y lo mismo vale si el clip2 no posee audio.


AlignedSplice / UnalignedSplice
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Para unir dos o mas videos, uno a continuacion del otro. La diferencia entre ambas alternativas es que AlignedSplice une los videos teniendo en cuenta la sincronizacion del audio, es decir que corta y/o agrega silencio en la pista de audio del primer video segun sea necesario para evitar desincronzaciones.
UnalignedSplice debe usarse cuando originalmente las pistas de audio eran una sola continua.

AlignedSplice(clip1, clip2, clip3, ...)
UnalignedSplice(clip1, clip2, clip3, ...)


Tambien puede reemplazarse esta sintaxis por los simbolos + para representar UnalignedSplice y ++ para AlignedSplice, por ejemplo asi:

AviSource("C\...\video1.avi") + AviSource("C\...\video2.avi")


Trim
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Sirve para seleccionar un determinado trozo de un video. Se deben indicar el frame de inicio y frame final del trozo, siendo ambos tambien incluidos en la seleccion. A partir de este filtro solo el trozo seleccionado continuara siendo procesado.
Tambien puede usarse para seleccionar diferentes partes del video no consecutivas, "sumando" la aplicacion del filtro a cada una de ellas.

Sintaxis:
Trim(a,b,pad_audio)
Trim(a,b)+Trim(c,d)


Donde a y/o c son los frames iniciales y b y/o d los finales de cada trozo.
El segundo metodo puede usarse para cortar un sector intermedio del video, basta que a sea el frame 0(cero) y d el ultimo frame, entonces se elimina el rango de frames desde b+1 hasta c-1.
pad_audio(true,false) por defecto activo, de ser desactivado (pad_audio=false) impide que el audio sea ajustado para coincidir con la duracion del video.

Ejemplos extraidos de la wiki:
Trim(100,0) -> borra los primeros 100 frames, audio ajustado o cortado para coincidir con la duracion del video.
Trim(100,0,false) -> elimina los primeros 100 frames de audio y video. Las duraciones de audio y video resultantes permanecen independientes.
Trim(100,-100) -> lo mismo que trim(100,199)
Trim(100,199,false)
-> el audio sera cortado si es mas largo pero no ajustado de ser mas corto que el frame 199.
Trim(0,-1) -> devuelve solo el primer frame.
Trim(0,100)+Trim(200,300) -> conserva los frames 0 a 100 y 200 a 300, eliminando los frames desde 101 a 199.


ImageWriter
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Permite exportar el video en forma de secuencia de imagenes, o lo que es lo mismo permite extraer los frames hacia archivos de imagenes sueltos.

Sintaxis y valores por defecto:
ImageWriter("C:\...\nombre_archivo", start=0, end=0, type="ebmp", info=false)

Entre comillas va la ubicacion y nombre de archivo que tendran las imagenes. AviSynth las nombra de la siguiente manera: nombre_archivo000000.type, nombre_archivo000001.type, nombre_archivo000002.type, etc.
Mediante start y end pueden elegir que porcion del video desean exportar, marcando el frame de inicio y final. Por defecto ambos valores en 0 indica que se exporta todo el video.
El formato de las imagenes se selecciona con type, pudiendo ser: bmp, dds, ebmp, jpg/jpe/jpeg, pal, pcx, png, pbm/pgm/ppm, raw, sgi/bw/rgb/rgba, tga, tif/tiff. Por defecto se guardan en el formato nativo de AviSynth ebmp, que viene a ser un bmp con la posibilidad de exportar en cualquier formato de color (YUY, RGB, etc). Si se usan los formatos Y8 o RGB el archivo ebmp es un bmp estandar, pero de usarse el resto la compatibilidad probablemente quede restringida a AviSynth y el filtro ImageSource.
Para los demas formatos de imagen el color debe ser Y8 o RGB24/RGB32.
Con info=true se graba sobre el video si el frame fue exportado y de serlo el nombre de archivo de la imagen que le corresponde.

Filtros para Transformaciones Geometricas

AddBorders
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Sintaxis:
AddBorders(left,top,right,bottom,color)

En ciertos casos no es posible modificar el tamaño(espacial) de un vídeo con solo redimensionar dado que las resoluciones que se deben obtener son fijas para cumplir algún estándar, entonces con solo dimensionar se dañaria el aspect ratio(AR) del mismo y este se veria alargado o achatado; asi que para llegar a la resolucion definitiva hace falta completar los pixeles faltantes con bandas de un color solido, para ello se usa el filtro AddBorders; este filtro agrega una banda de pixeles de algun color de altura configurable por separado en cada margen.
Observen la sintaxis, los parametros left(izquierda), top(arriba), right(derecha) y bottom(abajo) representan la cantidad de pixeles(valores enteros) que ocuparan las bandas contando desde cada uno de los cuatro margenes.
Lo mas comun es agregar bandas arriba y abajo, pero tambien se agregan en los cuatro lados por ejemplo cuando se desea solucionar el efecto overscan.
El parametro color permite elegir un color distinto del negro (color por defecto). Este color lo deben indicar en codigo hexadecimal. o.

Ejemplo:
AddBorders(0,64,0,64,$00FFFF)

Esta linea agrega bandas de 64 pixeles tanto arriba como abajo de color Cyan. De seguro quede horrible pero es un ejemplo nomas .


Crop
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Sintaxis:
Crop(left,top,-right,-bottom,align)

Este filtro sirve para cortar cierta cantidad de pixeles de los lados de la imagen.
Se configura indicando la cantidad a cortar de cada lado, donde left es izquierda, top es arriba, right es derecha y bottom es abajo. Y deben colocar los ultimos dos valores negativos como se ve en la sintaxis.
El parametro align(true,false) permite activar(true) o desactivar(false, por defecto) la alineacion de la informacion que representa al frame en memoria (RAM). Cuando se usa align=true el filtro, luego de cortar y almacenar la imagen en memoria de forma no alineada, procede a copiarla hacia otra posicion pero esta vez alineada. Cuando la perdida de velocidad debido a esta copia es menor a la perdida que tendria el filtro a continuacion si estuviera la imagen desalineada se logra una ganancia de velocidad, especialmente cuando luego siguen filtros de suavizado (Smoothers).

Una variante del mismo filtro es la siguiente:
CropBottom(count,align)

Remueve count lineas de la parte inferior de la imagen, especialmente util para eliminar la distorsion inferior de un video capturardo de un VHS.


FlipHorizontal / FlipVertical
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Rotan al video de tal manera que lo que se veia de izquierda-derecha pasa a verse de derecha-izquierda, en el caso del horizontal, el vertical hace lo mismo pero en vertical valga la redundancia.
Dicho de otra forma el video pasa a verse como el original se veria en un espejo.

Sintaxis:
FlipHorizontal()
FlipVertical()



Letterbox
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Se ocupa de solapar sobre el video bandas negras o de color a eleccion, tapando la parte superior e inferior, y opcionalmente los lados, del video.
Puede servir para cubrir bandas negras ya existentes que contengan ruido o para cubrir rudio, artifacts, etc de los bordes de un video.

Sintaxis y valores por defecto:
Letterbox(top, bottom, x1, x2, color=0)

Con top y bottom se fijan los tamaños en pixeles de las bandas superior e inferior respectivamente. Con x1 y x2 se cubren los laterales izquierdo y derecho.
Para cambiar el color usan codigo hexadecimal, por ejemplo color=$00FFFF es cyan.


Resize
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Este filtro se usa para modificar la resolucion del video, para asi estirarlo o comprimirlo(espacialmente hablando) lo necesario hasta alcanzar la nueva resolución deseada. Existen unas cuantas variantes que se pueden usar:

Sintaxis:
BilinearResize(ancho,altura)
BicubicResize(ancho,altura,b,c)
LanczosResize(ancho,altura,taps)
Lanczos4Resize(ancho,altura)
GaussResize(ancho,altura,p)
BlackmanResize(ancho,altura,taps)
PointResize(ancho,altura)
SincResize(ancho,altura,taps)
SplineXXResize(ancho,altura)
, donde XX puede ser 16, 36 o 64

El ancho y altura deben indicarse con valores enteros, dado que la unidad mas chica posible es el pixel. Tambien tengan en cuenta que muchos codecs compresores requieren para su correcto funcionamiento que el video a comprimir tenga valores de resolucion, tanto horizontal como vertical, multiplos de 8 o 16, asi que antes de aplicar el resize averiguen cual es el caso que les compete para no encontrarse luego con errores inexplicables.

Explicacion Detallada de cada variante:

Bilinear: tiende a suavizar la imagen, esto significa que es el que menos detalle deja pasar al redimensionar; adecuado para cuando usen bitrates bajos al comprimir, y/o cuando se reduce la resolucion.
Bicubic: es similar en funcionamiento al anterior, pero gracias a mejores algoritmos logra procesar un mayor nivel de detalle y por ende es mejor para cuando se aumenta la resolucion, lograndose una imagen mas nitida, pero solo es recomendable cuando habra suficiente bitrate como para comprimir dicho detalle extra, sino puede ser mas conveniente el Bilinear para evitar que la calidad se vea afectada negativamente al comprimir. Puede ser personalizado mediante los parametros b y c que pueden ver en la sintaxis de mas arriba. Estos son llamados blurring y ringing respectivamente; el blurring sirve para quitar nitidez, agregando un efecto "borroso", eliminando detalle. Puede servir para evitar la aparicion de macrobloques al comprimir a bajos bitrates; mientras que el ringing hace todo lo contrario, a mayores valores mas fino sera el filtro y mas detalle dejara pasar llegando tambien a producir el efecto de un filtro sharpen(aumento de nitidez), con la posibilidad de aparicion de ruido si el filtro se setea muy fuerte. Con b=0 y c=0.75 el filtro es identico al presente en VirtualDub, "VirtualDub`s Precise Bicubic". Un valor normal seria b=0 y c=0.5 para asi lograr una importante ganacia de detalle respecto del Bilinear, valores mayores a c=0.6 pueden producir ruido. Los valores por defecto son: b=1/3 y c=1/3.
Lanczos: permite alcanzar muy alto nivel de detalle y con mejor calidad que el Bicubic, solo recomendable para altos bitrates. Sirve como alternativa al Bicubic con valores de 0.6<c<0.75, aunque logra una calidad superior a este (menos ruido).
El valor de taps (1-100, por defecto en 3) permite elegir el numero de lobulos que utilizara el algoritmo. A mayor valor, mayor sera el detalle, pero comienza a aparecer notable ruido acompañando al mismo (se acentua el "ringing", como se dice en la jerga).
Lanczos4: es el equivalente a LanczosResize(xxx,yyy,taps=4). O sea es lo mismo que Lanczos con un valor de taps=4.
BlackMan: esta es una modificación del Lanczos que permite lograr menos ruido con valores de taps altos, parametro que representa lo mismo que en Lanczos, aunque aqui su valor por defecto es 4. Este filtro deberia lograr mejores resultados que el Lanczos4 si es usado como viene por defecto.
Gauss: filtro basado en el algoritmo de Gauss. El parametro p ajusta la nitidez, desde 0 (menor detalle, mas borroso) hasta 100 (mayor detalle, mas fino). Su velocidad es similar al Lanczos4.
Point: es el filtro para resize mas simple que existe. Su uso no es para nada recomendable a no ser que se quiera disminuir la calidad del vídeo adrede. Sus resultados suelen contener mucho bloque.
Sinc: incorporado a partir de la version 2.6, permite usar la funcion Sinc truncada. El parametro taps es lo mismo que en Lanczos.
SplineXX: este filtro tiene como objetivo alcanzar un muy alto nivel de detalle, pero generando menos ruido que si se usara Lanczos. XX puede valor 16, 36 y 64, cuanto mayor este valor mayor sera el detalle.

Otra forma de uso:

Desde la versión 2.5.6 de avisynth existe la posibilidad de cortar la imagen desde el mismo filtro de resize, como con el filtro Crop. Si se utiliza, en el proceso primero se corta y luego se aplica el resize.
Usar esta linea:
Crop(10, 10, 200, 300).BilinearResize(100, 150)

Seria casi lo mismo que usar la siguiente:
BilinearResize(100, 150, 10, 10, 200, 300)

Este metodo es conveniente usarlo cuando quieren cortar parte de la imagen previa a su reescalado. Usandolo se logra mayor calidad en el reescalado de los bordes. Pero para cortar bandas negras o artifacts es mejor usar el filtro Crop.


Turn
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

TurnLeft()
TurnRight()
Turn180()


Rotan el video 90 grados hacia la izquierda(left), derecha(right) o 180 grados.

Denoisers Espaciales

Son aquellos que filtran un determinado pixel basandose en informacion obtenida del analisis de los pixeles adyacentes. Por ello un parametro que muchos de estos filtros tienen en comun (asi como tambien los 3D) es aquel que regula que tan lejos del pixel se extiende el analisis. Como se imaginaran aumentar dicho radio resulta en perdida de velocidad pero tambien aporta mejoras de calidad.


FRFun3b
[YV12]

Denoiser basado en fractales, lo que no dice nada util salvo que su funcionamiento difiere de otros filtros, y basta probarlo para notar muy alto nivel de limpieza y a su vez una alta conservacion de detalle fuerte, por lo que constituye uno de los filtros mas potentes y precisos, a pesar de ser solo espacial. Tambien es bastante rapido.
Aunque no todo son rosas, tiende a dejarse llevar y ataca al detalle debil o difuso, lo que puede llevar a un efecto de sobrefiltrado en ciertas areas de la imagen. A pesar de esto el resultado general suele ser muy bueno si el video es muy ruidoso.

Sintaxis:
frfun3b(T, Tuv, S)

Los parametros son bien simples: T es la fuerza de filtrado sobre luminancia, mientras que Tuv lo es sobre la crominancia. S es un parametro que de subirlo cambia calidad por velocidad.
Y nada mas... eso si, no tengo idea de cuales son los valores por defecto, salvo que si prueban aplicar frfun3b() directamente, seguro notaran que es demasiado fuerte.
Quizas un mejor punto de partida sea: frfun3b(2.0,2.0,1)


FRFun7
[YV12]

Aparentemente es la continuacion del anterior, aunque en verdad producen resultados diferentes. Por ello es que decidi mencionarlos a ambos como filtros separados.
Debido a la carencia total de documentacion y la falta de informacion en general no tengo idea de que diferencias de calidad o potencia puede haber, aunque en mis pruebas observe que parece menos potente que el anterior, particularmente al filtrar artifacts de crominancia en fondos. Tambien note que es menos preciso filtrando cerca del detalle, produciendo un resultado de menor calidad.
Tambien parece ser notablemente mas rapido, de seguro en compensacion por la menor calidad.

Sintaxis y valores por defecto:
frfun7(Lambda=1.1, T=6.0, Tuv=2.0)

Lambda viene a ser la fuerza de aplicacion en general. Mientras que T y Tuv representan la fuerza de aplicacion especificamente sobre bordes, para luminancia y crominancia respectivamente.
De seguro requieran reducir el valor de T, ya que por defecto es algo fuerte y ataca detalle. Este es el parametro que mas impacto tiene sobre el filtrado.



SpatialSoften
[YUY2]

Unico filtro de ruido espacial incluido con AviSynth.

Sintaxis:
SpatialSoften(radius,luma_threshold,chroma_threshold)

El valor de radius afecta directamente la velocidad del filtro, a mayores valores el filtro compara el pixel en estudio con una mayor cantidad de pixeles adyacentes. Por supuesto el aumento de este valor reduce drasticamente la velocidad pero tambien aporta una calidad superior dado que le permite al filtro identificar con mas precision que es y que no es ruido, en teoria permitiendo una mayor conservacion de detalle.
luma_threshold y chroma_threshold representan la intensidad de aplicacion para luminancia y crominancia respectivamente.


UnDot

Dudaba sobre si valia la pena mencionarlo, pero es tan simple de usar que aqui va.

Filtro extremadamente debil. Rara vez notaran a simple vista sus efectos, salvo quizas si observan su impacto en la compresibilidad, aunque tampoco esperen gran cosa.
En particular esta pensado para eliminar ruido en forma de "puntos" aislados, de ahi su nombre, y con ellos tambien el denominado ruido mosquito que se presenta en bordes. Se nota su efecto especialmente al hacer upsize (reescalar hacia mayor resolucion), donde estos puntos se hacen mas evidentes.
Tambien es extremadamente rapido y el detalle que puede eliminar es despreciable en la mayoria de los casos, por lo que usarlo no cuesta casi nada y podria ayudar a un filtrado mas completo.
Puede resultar contraproducente en videos de muy alto nivel de detalle, ya que tiende a llevarse por delante detalle muy fino y/o en movimiento (lluvia o copos de nieve por ejemplo).

Sintaxis:
UnDot()

Eso es todo, ni siquiera tiene parametros .


VagueDenoiser
[YV12-YUY2-RGB24-RGB32]

Parece mas efectivo contra bajos niveles de ruido, dado que aplicarlo fuerte produce un efecto Smooth muy marcado y daña demasiado al detalle. En el caso de anime puede resultar efectivo para mayor cantidad de ruido.
Segun el changelog presente en la documentacion el modo mas completo en funcionalidad y optimizaciones es el YV12, asi que si notan problemas con videos en otro modo de color, convierten a YV12.

Sintaxis y valores por defecto:
VagueDenoiser(threshold=0, method=3, nsteps=4, chromaT=-1, interlaced=false)

La intensidad de aplicacion se regula con threshold, donde un valor de 0 estima la misma automaticamente (adaptativo). Valores menores que 0 desactivan filtrado de Luma. Regular este parametro es fundamental, dado que por ser un filtro solo espacial no tendra ningun problema en eliminar detalle si se lo aplica mas fuerte de lo que requiere el video.
nsteps es el tipico parametro que a mayor valor mayor calidad pero mas lento el filtrado y viceversa. Valores tipicos recomendados son 3 a 6.
Para activar filtrado de Chroma aumentan el valor de chromaT>=0, donde 0 es estimacion de intensidad automatica (adaptativo).
Usan interlaced=true para videos entrelazados.
El metodo de accion que se puede elegir con method varia desde 0 hasta 3. Aparentemente el orden de mas fuerte a mas suave es el siguiente: 1>3>0>2. Recomiendo usar el valor por defecto.

Buenos resultados (sobre poco ruido) y buena conservacion de detalle en un video con poco detalle fino:
VagueDenoiser(threshold=2, nsteps=6)


SPresso

Esta es una funcion denoiser muy ligera, ideal para conseguir modestas mejoras de compresibilidad sin afectar de forma notable la nitidez.
En un principio se ideo para el filtrado solo de la luminancia. Aunque luego se le incorporo la posibilidad de filtrar tambien crominancia, no parece ser tan efectiva para ello.

Filtros necesarios:
MaskTools v2
RemoveGrain

Sintaxis y valores por defecto:
SPresso(limit=2, limitC=4, bias=25, biasC=50, RGmode=4, RGmodeC=0)

La "C" identifica a los parametros que regulan el filtrado de crominancia.
El parametro limit sirve para indicar que tanto se puede cambiar un pixel, y vendria a ser una forma de limitar la fuerza de filtro.
bias permite modificar algo asi como la agresividad, a mayor valor mas pixeles seran filtrados. Un valor de "20" es una aplicacion muy liviana, mientras que "30" ya es bastante fuerte.
El modo de filtrado le corresponde al parametro RGmode, que permite elegir el modo de funcionamiento del filtro RemoveGrain. El valor por defecto parece ser el mejor para amplia variedad de situaciones. Como el filtrado de crominancia se encuentra desactivado por defecto (solo se procesa luma), RGmodeC=0, pero por supuesto pueden jugar con este parametro para procesar ambos o solo crominancia, asi como cambiar el modo de filtrado.


TBilateral
[YV12-YUY2]

Este plugin se basa en el algoritmo bilateral de fitrado, para quien sepa de que se trata (bienvenida es cualquier informacion, siempre y cuando corresponda al nivel de este manual).
Yendo al grano, mis pruebas me permitieron observar que hace un trabajo bastante decente con niveles ligeros de ruido sin afectar de forma importante al detalle (las hice sobre HDTVRip de 720p), nada que un buen filtro Sharpen no sepa corregir.
Por ello incialmente lo recomiendo para ese tipo de videos, pero tambien habria que probarlo con niveles de ruido mas importantes a ver como se comporta.

Sintaxis y valores por defecto:
TBilateral(diameterL=5, diameterC=5, sDevL=1.4, sDevC=1.4, iDevL=7.0, iDevC=7.0, csL=1.0, csC=1.0, d2=false, chroma=true, gui=false, resType=0)

"L" identifica los parametros que afectan a la luminancia, mientras que "C" a aquellos ligados a la crominancia.
Para cada pixel el filtro lo compara con una serie de pixeles adyacentes, en base a lo cual decide como aplicar el filtrado. El parametro diameter fija la distancia hasta donde deben tomarse en cuenta pixeles adyacentes. A mayor valor mas pixeles (cada vez mas lejanos al central) seran tenidos en cuenta en los calculos del filtro, en teoria proporcionando un resultado mas preciso y de mejor calidad, aunque mas lento. El valor debe ser impar, mayor que 1 y menor que la resolucion vertical.
La agresividad del filtro puede ser regulada mediante dos parametros: sDev e iDev. Segun puedo observar el primero afecta de forma mas directa la fuerza de aplicacion sobre los pixeles que se son filtrados (lo que en teoria seria ruido), aunque usar valores muy elevados tambien conduce a sobrefiltrado (tiende a atacar el detalle mas grueso). El segundo parametro proporciona una forma de limitar hasta donde llega el filtro cuando se trata de detectar que es ruido y que es detalle; este valor debe regularse segun la relacion que haya entre el nivel de ruido y el nivel de detalle del video. Por ejemplo, en videos con alto nivel de detalle conviene mantenerlo bajo, pudiendo ser necesario reducir bastante los valores por defecto. La agresividad del filtro sobre el detalle es muy sensible a este parametro.
Con el valor de cs tambien se afecta en parte la agresividad del filtro. Aumentar el valor desde "1.0" les dara una mayor conservacion de detalle, aunque el efecto es bastante sutil. Disminuirlo (se puede hasta un minimo de "0") parece reducir la calidad del resultado, afectando al detalle sobre bordes, por ello esto ultimo no creo que sea recomendable, a lo sumo dejarlo en el valor por defecto, o si se observa perdida de detalle, aumentarlo.
Si se trata de imagen real conviene fijar d2=true, dado que permite un filtrado mas eficiente sobre gradientes de color suaves. En cambio si la imagen corresponde a anime o dibujos animados (areas de color solido y/o gradientes bruscos) es mejor como viene por defecto.
chroma=true por defecto implica que se procesa la crominancia, por supuesto un valor de "false" la deja intacta y solo se filtra luminancia.
El filtro incluye la posibilidad de habilitar una interfaz grafica (gui=true) para observar en tiempo real el resultado de modificar los parametros y asi poder ajustarlos mas comodamente.
El valor por defecto resType=0 parece ser poco amigable con el detalle difuso en fondos, lo que no parece ser el caso al usar un valor de "1" o "2". En teoria tambien es posible un valor de "3", pero en mis pruebas siempre causaba el cuelgue de AviSynth, muy probablemente debido a algun bug siendo que este modo se introdujo en la ultima version.


RemoveGrain

Este es el famoso filtro espacial de ruido muy utilizado en funciones o scripts de variada indole. Se caracteriza por poseer una gran variedad de modos de funcionamiento y por ser relativamente rapido.

Autor del filtro: Kassandro

Sintaxis: (por defecto)

RemoveGrain(mode=2, modeU=2, modeV=2, planar=false)

Mode= Determina el modo en que se eliminara grano sobre la luminancia
ModeU y ModeV= Determina el modo en que se eliminara grano sobre los 2 canales de croma
Planar= Sirve para que el filtro trabaje con un determinado espacio de color o sobre otros tambien.

Cosas a tener en cuenta:

-El filtro trabaja por defecto solo bajo YV12 (planar=false), si se quiere utilizar este filtro bajo espacios de color YUY2, RGB24 o RGB32 se debe utilizar planar=true.
planar=true bajo YV12 no produce ningun efecto, ni negativo ni positivo.

-El RemoveGrain siempre se debe utilizar antes de realizar un crop y en lo posible aplicarlo antes de un resize tambien.

-Al descargarnos el RemoveGrain nos encontramos con 4 .dll con nombre parecido, se recomienda NO ponerlas todas juntas dentro de la carpeta Plugins de avisynth. Cada una corresponde al tipo de instrucciones que acepte nuestro procesador por lo que si el nuestro acepta SSE3 no habría necesidad de poner las anteriores. En el caso de queres tener la opcion de elegir cualquiera de las 4 .dll es preferible que se cargue a través de LoadPlugin que ponerlas en la carpeta Plugin de Avisynth.

-Kassandro ofrece la siguiente clasificación de los modos en lo que respecta al riesgo de generar artifacts, desde el más seguro al de mayor riesgo: 1, 5, 2, 18, 6, 7, 8, 17, 3, 4, 9.

-Kassandro ofrece la siguiente clasificación de los modos con respecto a la compresión, de las de mayor ganancia compresión a las de menos: 4, 17, 9, 8, 3, 7, 6, 2, 5, 1.

-Se puede incluso utilizar diferentes modos para la luminancia y la croma

-Utilizarlo 2 veces seguidas es totalmente valido, igualmente el filtro es muy rapido por lo que no debe influir demasido en la velocidad, ej:

RemoveGrain(mode=17).RemoveGrain(mode=17) o incluso cambiando de modos RemoveGrain(mode=17).RemoveGrain(mode=2), etc

Modos:

Modo 0= No hace filtrado, solo sirve cuando se buscar filtrar ciertas partes (por ejemplo si solo se desease filtrar la luminancia y no la croma, o viceversa).
Modo 1= No parece hacer practicamente efecto o al menos mis ojos no lo perciben, segun su autor da el mismo efecto que el filtro Undot. Por supuesto no hay ningun riesgo de crear artifact ni de atacar lineas y detalle fino.
Modo 2= Parece tener un infimo efecto sobretodo se puede apreciar sobre los bordes pero es tan debil que es dificil darse cuenta. Los riesgos siguen siendo nulos como el modo anterior.
Modo 3= Limpia grano moderadamente pero ataca un poco las lineas delgadas y detalle fino.
Modo 4= Segun Kassandro es el que obtiene mayor compresibilidad pero tiene un gran riesgo de crear artifact y destruir lineas. En mi caso personal limpio bastante bien el grano en general pero algunas lineas y detalles muy finos fueron literalmente "devorados", incluso me aparecio un efecto parecido al "dientes de sierra" en una linea que era parte de la curvatura de una letra.
Modo 5= Diseñado para ser piadoso con las lineas (incluido sus extremos) y detalles finos pero a causa de eso no parece tener un gran poder de limpieza de grano.
Modo 6= Diseñado con el mismo fin que el modo anterior, tiene una leve mejora en la limpieza de grano y mantiene muy bien las lineas aunque a veces se come un poco los puntos finales de la lineas.
Modo 7= Limpia mas grano que el modo 6 intentando conservar las lineas y el detalle fino, de hecho lo logra bastante bien aunque se come mas los pixeles finales de las lineas que el anterior.
Modo 8= Limpia un poquito mas de grano que el anterior a costo de seguir perdiendo pixeles en los extremos de las lineas.
Modo 9= Limpia mas grano que los modos del 5 al 8 pero tiene graves problemas con las lineas y detalles finos, aunque no tanto como el modo 4.
Modo 10= Este modo no se menciona en ninguna parte de la documentacion del Remove grain pero segun mis pruebas da un resultado muy curioso, no solo no limpia el grano sino que parece acentuarlo más, sobretodo en los bordes y lineas...
Modo 11= Se diferencia bastante de los otros modos ya que parece darle un efecto "Blur" al video. Este modo fue reemplazado por el modo 12
Modo 12= Es un reemplazo del modo 11, el efecto "blur" o de "desenfoque" parece ser el mismo pero este modo es bastante mas rapido que el anterior.
Modo 13 al 16= Son modos de "Bob" para fuente entrelazada, parece que de 13 a 16 cada modo que voy avanzando limpia un poquito mas de grano pero genera algunos artifacts y tiene problemas con lineas muy finas, el tema de desentrelazados escapa totalmente a mis conocimientos por lo que me abstengo de seguir opinando.
Modo 17= Vendria a ser el modo inteligente, actua como el 4 pero se adapta a las lineas y detalles finos cambiando automaticamente a un modo mas suave. Conlleva un riesgo moderado de artifacts.
A mi me agrado sue resultado, limpio bien el grano sin devorarme las lineas aunque me suavizo un poquito la imagen y se comio algunos pixeles de los extremos de las lineas, se puede ganar una gran compresibilidad con el. Supongo que un buen Sharpen no deberia tener problemas en arreglarlo.
Modo 18= Es como el modo 17 pero mantiene mucho mejor los pixeles en los extremos de las lineas, ademas ese efecto de suavizado del modo 17 casi no se distingue en este modo. Lo malo es que no limpia tanto grano como el anterior.

Bueno, las pruebas las hice con AvsP para no andar recomprimiendo y por supuesto siempre tome el mismo frame como referencia.
Si quieren chequear las fotos que exporte con AvsP con las que fui comparando los distintos modos, quizá ustedes encuentren algo en lo que me equivoque o sino ampliar un poco mas la descripción de alguno de ellos.


Denoisers Temporales

En este caso el analisis que determina como se filtra un determinado pixel se realiza sobre pixeles en la misma posicion pero de frames anteriores y posteriores.
En este caso el radio del analisis se mide en frames.
Este modo de filtrado suele ser menos agresivo que el espacial pero tambien mas amable con el detalle, y por ello recomendado para bajos niveles de ruido.


TemporalSoften
[YUY2-Y8-YV411-YV12-YV16-YV24]

Filtro interno (incluido con AviSynth).

Sintaxis:
TemporalSoften(radius,luma_threshold,chroma_threshold,mode,scenechange)

El valor de radius afecta directamente la velocidad del filtro, a mayores valores el filtro compara el pixel con sigo mismo en mayor cantidad de frames adyacentes. Por supuesto el aumento de este valor reduce drasticamente la velocidad pero tambien aporta una calidad superior dado que le permite al filtro identificar con mas precision que es y que no es ruido, en teoria permitiendo una mayor conservacion de detalle.
luma_threshold y chroma_threshold representan la intensidad de aplicacion para luminancia y crominancia respectivamente.
Por defecto en mode=1, se puede setear en mode=2 para aprovechar un mejor desempeño del filtro temporal(mejor calidad y mayor velocidad).
scenechange permite fijar un valor limite para no procesar imagenes involucradas en cambios de escena. El valor representa el cambio promedio de los pixeles entre frames. Un rango recomendado es 5<scenechange<30.

Ejemplo de un buen punto de partida extraido de la wiki:
TemporalSoften(4,4,8,scenechange=15,mode=2)

Ejemplos sugeridos por piscator:
Temporalsoften(2,3,3,mode=2,scenechange=6) (suave)
Temporalsoften(3,5,5,mode=2,scenechange=10) (medio)
Temporalsoften(4,8,8,mode=2,scenechange=10) (fuerte)


Denoisers 3D

Estos filtros realizan un analisis tanto espacial como temporal (ver explicaciones de las subcategorias anteriores) para decidir como se filtra en determinado pixel.
La combinacion de estos dos enfoques en teoria les da a estos filtros una importante ventaja de calidad. Particularmente se destacan FFT3DFilter y DFTTest, dos filtros muy potentes que son capaces de eliminar enormes cantidades de ruido con muy alta precision.


DeGrainMedian
[YV12-YUY2]

Su nombre lo dice todo, un denoiser espacio-temporal para eliminar grano. Rápido y efectivo.

Cómo se usa y valores por defecto:
DeGrainMedian(limitY=4, limitUV=6, mode=1)

Valores posibles: para limitY(luma) [0-255], limitUV(chroma) [0-255] y mode [0 fuerte - 5 débil].

Buenos valores (de más débil a más fuerte)
DeGrainMedian(limitY=2,limitUV=3)
DeGrainMedian(limitY=3,limitUV=7)
DeGrainMedian(limitY=2,limitUV=3).DeGrainMedian(limitY=2,limitUV=3)
DeGrainMedian(limitY=3,limitUV=7).DeGrainMedian(limitY=3,limitUV=7)



DFTTest
[YV12-YUY2]

Muy potente y preciso, pero lento. Funcionamiento similar a FFT3DFilter.

Sintaxis y valores por defecto:
DFTTest(Y=true, U=true, V=true, sigma=16.0, sbsize=12, sosize=9, smode=1, tbsize=5, tmode=0, tosize=0, dither=0, threads=0, opt=0)

Se puede usar por defecto y ya logra exelentes resultados en videos muy ruidosos:
DFTTest()

Aunque lo mas comun es que requieran reducir la fuerza de filtrado si se trata de un video relativamente limpio. Si ven que limpia mucho detalle reducen el valor de sigma.
Por ejemplo, para una limpieza de muy alta calidad (muy lenta) sobre un video bastante limpio, pueden probar:
DFTTest(sigma=4)

Con Y, U y V se activa o desactiva el filtrado de los planos de luminancia, chroma_U y chroma_V respectivamente.
sigma regula la fuerza del filtrado.
sbsize es el tamaño del bloque(en pixeles) que se usa para muestrear el frame, a menor valor un filtrado mas preciso(se conserva mas detalle) pero mas lento, y viceversa. sosize regula el overlap o solapamiento entre bloques, por supuesto no puede ser mayor que sbsize-1 y de ser mayor a sbsize/2 el resultado de la resta sbsize-sosize debe ser multiplo de sbsize, asi dice en la docu.
smode=1 indica que se usa el esquema de filtrado espacial de bloques y solapamiento. Pero puede ser cambiado a smode=0, lo que involucra que el filtro se mueva pixel por pixel y se transforme en algo ridiculamente lento, aunque tambien ultra preciso. En este modo no hay solapamiento y el valor de sbsize debe ser impar.
El radio del filtrado temporal se fija con tbsize, que es la cantidad de frames tomados en cuenta alrededor del que se esta filtrando. Minimo tbsize=1, que equivale a filtrado solo espacial.
Desde la version 1.8 el filtro ofrece la posibilidad de aplicar dithering cuando es creado el resultado. El dithering consiste en aproximar un color desconocido mediante la mezcla de otros colores conocidos y es util para contrarrestar el efecto banding (ver categoria Restauracion). Por defecto esta etapa del filtrado se encuentra desactivada. Se activa con valores mayores que cero y existen dos modos de operacion: dither=1, que deberia ser suficiente para remover el banding introducido por la aplicacion del filtro; dither=>2 (hasta 100), que aplica el mismo metodo de dithering pero agregando una cierta cantidad de ruido aleatorio previo (mas cuanto mayor sea el valor del parametro), lo que sirve para mejorar la efectividad y se puede utilizar para reducir el banding ya presente en el video antes de la aplicacion de DFTTest.
Se pueden usar dos metodos de filtrado temporal: tmode=0 filtra frame por frame, centrandose en cada uno y desplazandose hacia ambos lados segun tbsize. En cambio con tmode=1 se procesan bloques de frames de tamaño tbsize, cuyo solapamiento es el valor tosize. La diferencia pasa por la velocidad y precision siendo mas preciso pero mas lento tmode=0.
threads establece el numero de hilos en que se divide el procesamiento. Un valor de "0" implica que el filtro los fija automaticamente segun el numero de procesadores(nucleos) detectados. A su vez puede elegirse el nivel de optimizacion de las instrucciones usando el parametro opt cuyo valor por defecto sirve para autodeteccion (otros valores posibles: "1"->rutinas C; "2"->SSE; "3"->SSE2).

El filtro posee opciones de configuracion mas avanzadas, incluyendo la posibilidad de analizar el video en busca de un patron de ruido y con el optimizar el filtrado "enseñandole" al filtro a localizarlo.

Importante: para funcionar requiere que libfftw3f-3.dll este presente en C:\Windows\System32.


FFT3DFilter
[YV12-YUY2]

Elimina ruido conservando la nitidez de la imagen (incluso aplicándolo fuerte). Mejora muchísmo la compresibilidad.
Tambien ofrece una funcion de sharpen.

Sintaxis y valores por defecto:
FFT3DGPU(sigma=2.0, bt=3, plane=0, bw=32, bh=32, ow=bw/3, oh=bh/3)

Cómo se usa:
FFT3DFilter() -> config estandar que va bien para muchos casos

FFT3DFilter(bt=5, sharpen=0.5, plane=4, ow=16, oh=16) -> opcion potente y de alta calidad, pero lenta, ideal para videos muy ruidosos.

Parametros:
Se pueden cambiar los valores de sigma para la fuerza del filtrado (1.0<sigma<1.5 débil, 2.0<sigma<2.5 medio, sigma=3.0 fuerte, sigma>3 más fuerte). Es el parámetro más importante, ojo con aumentarlo porque el filtro es muy potente.
También el plane. Por defecto plane=0 solo pilla la luma, si ponemos plane=4 pilla luma y croma.
Se pueden cambiar los valores de bt desde 2 a 5 (a mayor valor más frames serán tenidos en cuenta en el filtrado temporal). Si colocan bt=1 el filtro pasa a ser solo espacial o 2D. Es interesante mencionar que con el filtro funcionando solo en modo espacial la fuerza del mismo aumenta, es decir que se filtra mayor cantidad de ruido, especialmente en areas oscuras y/o de poco detalle. Sin embargo tambien se pierde detalle fino, como texturas. El termino medio se alcanza usandolo por defecto, aumentar el radio temporal hara que se salve mas detalle pero tambien se conservara mas ruido en ciertas areas. Usenlo como mas les guste.
bw y bh son las dimensiones (ancho y alto) del bloque que usa el filtro para el muestreo del video, se pueden bajar para mejorar la calidad y aumentar la limpieza de ruido.
Tambien se pueden editar los valores de ow y oh (el overlap o solapamiento entre bloques en el muestreo), que por defecto dependen de bw y bh como pueden ver en la sintaxis. Para mejorar la calidad se deben subir estos valores y por supuesto se pierde en velocidad (y viceversa), sin embargo el filtro tiene una limitacion y no se permite que 2*ow>bw y/o 2*oh>bh, asi que ojo con eso.
Se puede usar la función sharpen, desactivada por defecto. Si se usa, los valores están entre 0.3 y 1.0; Su aplicacion aporta una ganancia notable de nitidez sin ruido extra, muy recomendable.

Como podéis ver en la documentación tiene decenas de opciones más, que hacen de este filtro uno de los mejores.

ojo al instalar!
Se debe colocar el archivo fftw3.dll (que pueden descargar de ftp://ftp.fftw.org/pub/fftw/fftw3win32mingw.zip en C:\Windows\System32. El filtro no funciona sin el.

FFT3DGPU
[YV12-YUY2]

Version del filtro FFT3DFilter con capacidad para aprovechar la GPU (placa de video) para el procesamiento.

Requerimientos:
-> DirectX 9.0c o superior (version de abril del 2006 en adelante).
-> Placa de video con soporte DirectX 9 por hardware. En el caso de Nvidia de la linea FX5xxx en adelante, recomendandose de 6xxx en adelante. En cuanto a ATi, de 95xx en adelante.

Sintaxis:
FFT3DGPU(sigma, bt, sharpen, plane, ow, oh)

Los parametros son los mismos que en el filtro FFT3DFilter.
Tambien requiere del archivo fftw3.dll.


FluxSmooth

Sencillo filtro de ruido espacio-temporal. No particularmente efectivo, limpia mas detalle del que deberia a pesar de ser un filtro 3D, y de los mas suaves. Sin embargo parece resultar util para limpiezas muy ligeras y mejorar la compresibilidad.

Sintaxis y valores por defecto:
FluxSmoothT(temporal_threshold=7) -> filtrado solo temporal.

FluxSmoothST(temporal_threshold=7, spatial_threshold=7) -> filtrado espacial y temporal.

Los unicos parametros que se pueden configurar representan la fuerza del filtrado temporal y espacial por separado.

Para limpiar muy suavemente y evitar perder detalle de mas, aunque bastante efectivo, particularmente sobre bordes:
FluxSmoothST(2,2)



STMedianFilter

Este plugin realiza un filtrado espacial y temporal con cierta compensacion del movimiento.
No lo veo particularmente muy preciso, lo cual es consistente con que utiliza un modo de funcionamiento bastante simple. Por lo que no esperen que sea muy considerado con el detalle.
Segun mis observaciones, asi como tambien lo que se describe en la documentacion, el filtro esta regulado para suavizar solo ruido muy fino, por lo que pareceria recomendable para ocasiones donde se desee alguna leve ganancia de compresibilidad (quizas un 5%) o como apoyo en alguna etapa de filtrado mas completa. Por ejemplo, se me ocurre que podria usarse para una primera limpieza muy fina, para luego pasar a aplicar algo mas potente y de mayor calidad.

Sintaxis y valores por defecto:
STMedianFilter(8,15,4,7)

El filtro basicamente compara los valores de luminancia y crominancia de un determinado pixel con aquellos de los pixeles inmediatos adyacentes (tanto en el espacio como en el tiempo), para luego modificar el valor de dicho pixel y que este quede dentro de cierto rango definido por los pixeles adyacentes.
Entonces, el primer parametro regula la agresividad espacial, ya que establece el maximo cambio que puede sufrir el pixel al ser filtrado espacialmente. Es decir que si los pixeles adyacentes son muy diferentes, el pixel no sera filtrado a no ser que se aumente este parametro. Tengan en cuenta que un aumento desmedido causara perdida de detalle fino con altos contrastes, siendo que este tipo de detalle se sustenta en variaciones altas de los valores de pixeles adyacentes.
El segundo parametro regula la agresividad sobre bordes, de la misma forma que el anterior. El filtrado parece ser mucho menos sensible a este parametro. Evidentemente el plugin debe poseer algun algoritmo de deteccion de bordes, sino seria lo mismo que el parametro anterior.
Ya en el tercer parametro se trata de la agresividad en el filtrado temporal, de una forma similar al primero salvo porque ahora la comparacion es con los pixeles adyacentes en el tiempo (frames anterior y posterior). Aqui conviene usar siempre valores bajos (no mayores a 10) para evitar el efecto fantasma.
Y por ultimo el cuarto limita el filtrado segun la compensacion de movimiento, a mayores valores mayor filtrado pero tampoco conviene pasarse de 10 para evitar el efecto fantasma.



Denoisers Temporales con Compensacion de Movimiento

Se trata de analizar y detectar el movimiento del video para asi realizar una limpieza temporal mas precisa.


MVTools+MDegrain

MVTools
es un plug-in de avisynth que incluye varias herramientas. El MVAnalyse se usa para la estimación y compensación de los objetos en movimiento de un video. Se basa en vectores de movimiento, los mismos que usa el códec XVID p.ej. a la hora de trabajar, lo que permite hacer una limpieza temporal mejor.
Se puede usar la función MVAnalyse junto con cualquier denoiser, pero lo normal es usar los filtros MDegrain1 , MDegrain2 o MDegrain3. Este filtro trabaja teniendo en cuenta las una, dos o tres frames anteriores y la una, dos o tres frames posteriores, con lo que la limpieza es mucho más precisa. Limpia sin apenas alterar la imagen y es el que mejora más la compresibilidad de un video.

Cómo se usan:

Se carga el mvtools2.dll (ver introduccion a filtros externos) y copiamos del siguiente script una de las tres partes, según queramos usar el MDegrain1, 2 o el 3

MVTools con MDegrain1
super = MSuper()
backward_vec1 = MAnalyse(super, isb=true, delta=1, overlap=4)
forward_vec1 = MAnalyse(super, isb=false, delta=1, overlap=4)
MDegrain1(super, backward_vec1, forward_vec1, thSAD=300, thSADC=400)


MVTools con MDegrain2
super = MSuper()
backward_vec2 = MAnalyse(super, isb=true, delta=2, overlap=4)
backward_vec1 = MAnalyse(super, isb=true, delta=1, overlap=4)
forward_vec1 = MAnalyse(super, isb=false, delta=1, overlap=4)
forward_vec2 = MAnalyse(super, isb=false, delta=2, overlap=4)
MDegrain2(super, backward_vec1, forward_vec1, backward_vec2, forward_vec2, thSAD=300, thSADC=400)


MVTools con MDegrain3
super = MSuper()
backward_vec3 = MAnalyse(super, isb=true, delta=3, overlap=4)
backward_vec2 = MAnalyse(super, isb=true, delta=2, overlap=4)
backward_vec1 = MAnalyse(super, isb=true, delta=1, overlap=4)
forward_vec1 = MAnalyse(super, isb=false, delta=1, overlap=4)
forward_vec2 = MAnalyse(super, isb=false, delta=2, overlap=4)
forward_vec3 = MAnalyse(super, isb=false, delta=3, overlap=4)
MDegrain3(super, backward_vec1, forward_vec1, backward_vec2, forward_vec2, backward_vec3, forward_vec3, thSAD=300, thSADC=400)


Lo único que debemos variar es el valor de thSAD y thSADC (unmbral para el filtrado de luma y chroma). Recordad que se puede aplicar más fuerte a la chroma sin que afecte a la imagen.

Valores orientativos, después cada uno que pruebe:

100 para las fuentes excelentes
200 para las muy buenas
300 para las buenas
400 para las normales-limpia más fuerte (es el valor por defecto)


En la docu se explican el resto de opciones, pero por defecto van muy bien.



TTempSmooth
[YV12-YUY2]

Filtro temporal adaptativo al movimiento (solo trabaja en zonas estaticas de la imagen), y usa valores de referencia en frames anteriores y posteriores (hasta un máximo de 15!, 7 de cada lado). Tiene su tiempo pero se sigue usando.

Cómo se usa y valores por defecto:
TTempSmooth(maxr=3, LThresh=4, CThresh=5, scthresh=12.0, debug=false, interlaced=false)

Valores posibles para maxr: de 1(menos frames, más rapidez, menos calidad) a 7(más frames, menos rapidez, mas calidad).
LThresh, CThresh: limite de luma y chroma, rango: 1 a 256.
Para regular la sensibilidad de deteccion de cambio de escena se ofrece el parametro scthresh. Para ver que frames estan siendo detectados como cambio de escena, y asi poder ajustar este valor de forma optima segun el video, pueden usar debug=true. Para monitorear la informacion que el filtro entrega pueden usar la utilidad DebugView.
Para aplicar sobre video YV12 entrelazado, interlaced=true. No tiene efecto si el video es YUY2, dado que no hace falta.

Filtros para Debanding

El banding se presenta sobre zonas del video donde hay una variacion de color suave o gradual.
El artifact o efecto indeseable consiste en bandas de colores solidos bien definidas en vez de una variacion de color continua, producto de una representacion con menos bits de los necesarios.
Entonces los filtros dentro de esta subcategoria se ocupan de suavizar la transicion entre estas bandas, tratando de restaurar el gradiente de color.
Quizas enfocados mayormente a post-proceso, es decir para filtrar durante la reproduccion, dado que si los usan para corregir el efecto y luego comprimir, el encoder es muy probable que vuelva a generar los artifacts al reducir la cantidad de bits como parte de la compresion. De todas formas basta que prueben y llegado el caso se podria aumentar la fuerza del filtro para ver si el efecto se conserva.


GradFun2db
[YV12-YUY2-RGB24-RGB32]

Filtro basico para debanding.

Sintaxis:
GradFun2db(thr)

thr(valor real) regula la fuerza del filtro, por defecto en "1.2"


GradFun2DBmod

Esta funcion, que se basa en el filtro anterior, ofrece una mayor calidad y funcionalidad. La mayoria de los scripts que son capaces de aplicar debanding hacen uso de esta funcion.

Filtros requeridos:
GradFun2db
AddGrainC
MaskTools2
RemoveGrain

Agregar ruido de grano (AddGrainC) ayuda a disimular mejor el efecto, y me parece que tambien ayuda a evitar que ocurra de nuevo en futuras compresiones.

Sintaxis y valores por defecto:
GradFun2DBmod(thr=1.2, thrC=thr, str=0.8, strC=0.0, temp=50, custom="tu_generador_de_grano_favorito", show=false, screenW, screenH)

Los parametros que fijan la intensidad de aplicacion son thr y thrC para luma y chroma respectivamente.
La intensidad del grano generado se puede configurar con los parametros str y strC para luma y chroma respectivamente. Estos representan los parametros var y uvar del filtro AddGrainC.
temp es el parametro seed de AddGrainC, que regula la estabilizacion temporal del grano generado y sirve para lograr un ruido de grano desde mas aleatorio (0) a mas estatico (100). Un valor de -1 desactiva dicha estabilizacion.
Pueden usar el plugin generador de grano que prefieran, asi: custom="GrainFactory3()", pudiendo tambien agregar otros filtros en cadena separandolos por puntos, por ejemplo para usar supersampling: custom="spline36resize(resolution*2).addgrain(xx,0,0).spline36resize(resolution)".
Con show=true a la salida se obtiene una comparacion donde se puede observar el frame original y el frame filtrado, junto a las diferencias entre ellos mostradas graficamente, asi como tambien los valores fijados para todos los parametros. Esto constituye una exelente herramienta de ayuda para la configuracion del filtro.
screenH y screenW son las resoluciones, vertical y horizontal respectivamente, de la salida cuando esta activa la comparacion con show=true.



Filtros para Deblocking

Seguro ya habran notado esos feos bloques que aparecen en los videos comprimidos con los codecs mas modernos, que se hacen mas notables cuanto mas sobrecomprimido este el video.
Ya se imaginaran para que sirven los filtros de esta subcategoria, pues si, se ocupan de remover a los nefastos bloques.


BlindPP

Buen filtro de bloques, potente y efectivo. Logra aniquilarlos con muy poca perturbacion del detalle, y ya que esta en eso limpia buena parte del ruido en general que pudiera haber, asi como tambien ofrece la posibilidad de filtrar ruido en bordes (ringing).
Como localiza los bloques por su tamaño, debe ser aplicado antes de cualquier etapa de crop o resize para evitar que estas los deformen.

Sintaxis y valores por defecto:
BlindPP(quant=2, cpu=6, iPP=false, moderate_h=20, moderate_v=40)

Para que ataque exclusivamente a los bloques se debe usar cpu=4. Valores menores (hasta 0) reducen la efectividad del deblocking. cpu=5 activa filtrado extra de ruido de Luma en bordes (deringing), y cpu=6 incluye tambien chroma. Aunque el filtro realiza un exelente trabajo solo con la funcion deblocking.
La fuerza se fija con quant, y va desde 0 a 31.
Usan iPP=true unicamente si su video es entrelazado.
moderate_h y moderate_v (ambos desde 0 a 255) son limites para establecer hasta donde se filtra. Aumentar estos valores permite una menor agresividad (se filtran menos bloques, pero puede ayudar a conservar mas detalle), y viceversa.

Ejemplo:
Para filtrado de bloques y ruido en general, relativamente fuerte:
BlindPP(quant=4, cpu=4)

Deben descargarse el paquete DGMPGDec, donde viene incluido dentro del archivo DGDecode.dll. Deben usar dicho archivo como plugin.


DeBlock
[YV12-YUY2]

Utiliza el filtro para deblocking presente en la decodificacion de H264.
Es conveniente aplicarlo antes de cualquier resize o crop, para evitar alterar los bloques y dificultar o impedir su localizacion.

Sintaxis:
Deblock(quant,aOffset,bOffset)

quant(valor entero, rango: 0 a 60) regula la fuerza del filtro. Por defecto es 25.
aOffset(entero) modifica el limite de deteccion de bloques, a mayores valores el filtro sera aplicado tambien donde los bloques son menos visibles. Por defecto en 0.
bOffset(entero) modifica la deteccion de bloques y la fuerza del filtro, a mayores valores mas fuerte es la aplicacion. Por defecto en 0.

Si quant+aOffset es menor de 16 el filtro no hace nada.



DeBlock_QED

Esta funcion filtra los bloques distinguiendo el borde de los mismos y su interior, para realizar un filtrado mas fuerte sobre el contorno de los bloques, mientras se evita un filtrado excesivo en su interior.
Como el objetivo de la funcion es preservar una mayor cantidad de detalle debilitando el filtrado en el interior del bloque, es mejor usarla en videos ligeramente sobrecomprimidos o que no tengan presencia de bloques demasiado notable.
Es conveniente aplicarlo antes de cualquier resize o crop, para evitar alterar los bloques y dificultar o impedir su localizacion.

Filtros requeridos:
MaskTools2
DeBlock
DCTFilter

Sintaxis y valores por defecto:
DeBlock_QED(quant1=24, quant2=28, aOff1=2, bOff1=4, aOff2=4, bOff2=8, uv=3)

quant1: fuerza de filtrado en bordes de bloques.
quant2: fuerza de filtrado en interior de bloques.

aOff y bOff representan los mismos parametros ya explicados en el filtro DeBlock(mas arriba), pudiendose regular para los bordes(1) o interior(2) de bloques por separado.
uv=3 aplica la funcion a chroma. Un valor de 2 no filtra chroma. Y valores de -1 o 1 aplican un filtrado convencional con el filtro DeBlock, fuerte o normal respectivamente. Es decir que para que la funcion sea aplicada a la crominancia, debe usarse como viene por defecto.

Una aplicacion del filtro por defecto ya aporta buenos resultados:
DeBlock_QED()



SmoothD

Este filtro esta un poco viejo y su desarrollo fue abandonado en etapas muy tempranas sin llegarse a una version estable.
A pesar de todo se las arregla bastante bien para eliminar los bloques produciendo resultados mas que satisfactorios para su rapida velocidad.
Tambien puede usarse como denoiser general, aunque habiendo mejores y mas nuevas opciones en ese rubro yo lo recomiendo exclusivamente para eliminar bloques.

Sintaxis:
SmoothD(quant=3, num_shift=4, adaptive_shift=0, zero_weight=1)

La fuerza se fija con quant, desde 1 a 31. A mayor valor mas fuerza.
El tipico parametro para canjear velocidad por calidad esta presente en num_shift, que a mayor valor da mas calidad pero menor velocidad. Va desde 1 a 8.
adaptive_shift (0 o 1), de activarse (1), regula el valor de num_shift respecto del valor de quant, supongo que para permitir una mejor relacion calidad/velocidad, aunque quizas sea mejor que lo hagan manualmente.
De aumentarse zero_weight los bloques son atacados con menos agresividad, lo que puede servir para una mayor conservacion de detalle.

Ejemplo:
Para un video con bloques bien visibles esta linea parece hacer un buen trabajo:
SmoothD(quant=5, num_shift=8)


UnBlock

Fuerte filtro de bloques, para videos moderada a fuertemente sobrecomprimidos.
En mis pruebas observe que es muy efectivo en areas de bajo nivel de detalle, pero donde los bloques aparecen sobre detalle mas fino el filtro distorsiona mucho, y de nada sirve si va a generar mas ruido del que elimina. Reservenlo para videos muy feos.

Sintaxis:
Unblock(chroma, photo, cartoon)

Por defecto: chroma=true, photo=false, cartoon=false.

chroma=false desactiva el filtrado sobre la crominancia (informacion de color).
Se puede colocar photo=true cuando se sabe que la imagen del video es "fotografica", lo que configura al filtro mas agresivo.
Y si se aplica el filtro a un video de dibujos animados (colores solidos con alto contraste) se puede colocar cartoon=true, lo que sirve para que el filtro sea menos agresivo.



Filtros para Dehaloing y Deringing

El indeseable efecto "halo" se presenta como una banda luminosa u oscura en los bordes de alto contraste. Usualmente es causado por pasarse con el efecto sharpen, aunque tambien puede encontrarse nativamente, por ejemplo en DVD comerciales.
Por otro lado, los filtros para deringing son aquellos destinados limpiar el ruido que muchas veces acompaña a los bordes. La mayoria de los filtros para dehaloing tambien puede usarse para deringing dado que su principio de funcionamiento suele ser muy similar. Por ello es que esta subcategoria engloba ambos tipos de filtros.


DeHalo_alpha

Muy buena funcion para dehaloing, altamente efectiva, aunque suele requerir que configuren bien sus parametros segun el video para lograr la maxima eficiencia.
Tambien pueden usarla para deringing, aunque no esperen tan buenos resultados por ese lado.

Filtros requeridos:
MaskTools2
Repair (parte del paquete RemoveGrain)

Sintaxis y valores por defecto:
DeHalo_alpha(rx=2.0, ry=2.0, darkstr=1.0, brightstr=1.0, ss=1.5)

rx y ry es el radio de aplicacion del filtro, horizontal y vertical respectivamente. La funcion es muy sensible a este parametro asi que no se aparten mucho de los valores por defecto. Un valor de 1.0 desactiva el filtrado en esa direccion. Basicamente este parametro permite regular el tamaño de los halos y asi evitar filtrar de mas y perder contraste (detalle) o quedarse corto y dejar pasar halos gruesos. Es muy importante que fijen este parametro segun su video si notan que sobrefiltra.
darkstr y brightstr es la fuerza de aplicacion del filtro para halos oscuros y brillantes respectivamente. Yo diria que conviene bajar bastante la intensidad de aplicacion sobre halos oscuros, dado que son los que menos molestan, ademas de que su presencia resalta contornos y da la impresion de mayor nitidez. Quizas valores menores de 0.5 sean recomendables.
ss es el factor de supersampling, util para evitar aliansing (efecto serrucho en bordes).


EdgeCleaner

Funcion para deringing y dahaloing. Es efectiva para ambos tipos de artifacts, aunque para halos muy fuertes puede que se quede corta.

Filtros requeridos:
aWarpSharp
MaskTools2
RemoveGrain y Repair (RemoveGrain solo para smode=1)
Deen (solo para smode=2)

Sintaxis:
EdgeCleaner(strength=8.0, rep=true, smode=0, hot=false, fix=true)

strength es la fuerza de aplicacion.
rep=true usa el filtro Repair sobre el resultado de aWarpSharp, supongo reduciendo la intensidad de la deformacion producida por este.
smode define el modo en que la funcion busca pequeñas particulas, pudiendo ser: 0-Desactivado; 1-Usando RemoveGrain; 2- Usando Deen.
hot=true activa el filtrado de "hot pixels" como se les dice en la jerga, que vendria a ser ruido muy fino compuesto de pixeles con un color muy diferente del color que los rodea. Similar a usar el filtro UnDot.
fix=true soluciona un bug conocido del filtro aWarpSharp.

Script de la funcion:
Insertar CODE, HTML o PHP:
# EdgeCleaner() v1.03 (06/08/2008)
# - a simple edge cleaning and weak dehaloing function
#
# Description:
# Functions have been briefly tested to work with MT on mode 1 and 2 without any problems
#
# Requirements:
# aWarpSharp, mt_masktools, Repair (optional), RemoveGrain (optional) and Deen (optional) plugins required
# YV12 input required and mod16 or even mod32 input is preferred since aWarpSharp borks sometimes
#
# Parameters:
# strength (float) - specifies edge denoising strength (8.0)
# rep (boolean) - actives Repair for the aWarpSharped clip (true; requires Repair)
# rmode (integer) - specifies the Repair mode; 1 is very mild and good for halos,
# 16 and 18 are good for edge structure preserval on strong settings but keep more halos and edge noise,
# 17 is similar to 16 but keeps much less haloing, other modes are not recommended (17; requires Repair)
# smode (integer) - specifies what method will be used for finding small particles, ie stars; 0 is disabled,
# 1 uses RemoveGrain and 2 uses Deen (0; requires RemoveGrain/Repair/Deen)
# hot (boolean) - specifies whether removal of hot pixels should take place (false)
# fix (boolean) - fixes an aWarpSharp bug by overlaying a healthy pixel from the source clip;
# good idea to set to false when over-cropping afterwards (true)

function EdgeCleaner(clip c, float "strength", bool "rep", int "rmode", int "smode", bool "hot", bool "fix") {

strength = default(strength, 8.0)
rep = default(rep, true)
rmode = default(rmode, 17)
smode = default(smode, 0)
hot = default(hot, false)
fix = default(fix, true)

c = (c.isYV12()) ? c : c.ConvertToYV12()
strength = (smode==0) ? strength : strength+4

main = c.aWarpSharp(strength,1)
main = (rep) ? Repair(main,c,rmode) : main

mask = c.mt_edge("prewitt",4,32,4,32).mt_invert().mt_convolution()

final = (!hot) ? mt_merge(c,main,mask) : Repair(mt_merge(c,main,mask),c,2)
final = (fix) ? Overlay(final,c.ConvertToRGB24().Crop(0,1,-c.width+1,-c.height+2),x=0,y=1) : final
final = (smode != 0) ? mt_merge(final,c,c.StarMask(smode)) : final

return final

}

function StarMask(clip c, int "mode") {

mode = default(mode, 1)

clean = (mode==1) ? c.RemoveGrain(17) : Repair(c.Deen("a3d",4,12,0),c,15).RemoveGrain(21)
diff = (mode==1) ? mt_makediff(c,clean) : NOP

final = (mode==1) ? diff.Greyscale().Levels(40,0.350,168,0,255).removegrain(7,-1).mt_edge("prewitt",4,16,4,16) : \
Subtract(mt_merge(clean,c,c.mt_edge("roberts",0,2,0,2).mt_expand(mode=mt_circle(1)).mt_invert()),c).mt_edge("roberts",0,0,0,0).mt_deflate()

return final

}

# Changelog:
# 06/08/2008 v1.03
# - improved mask that leaves less warping and more original line structure, therefore higher strengths are now safe to use
# - improved StarMask()
# - removed super mode
# - removed srep, sshiqloc, some smodes and VD_SmartSmoothHiQ() due to StarMask() changes
# 01/06/2008 v1.02
# - added srep parameter
# - improved particle masking
# 01/06/2008 v1.01
# - added masking for particles with two parameters; smode and sshiqloc
# 12/05/2008 v1.00
# - removed line darkening, mode 2 mask, RemoveGrain
# - assert changed to colorspace conversion to yv12
# - fixed some logic problems
# - "fixed" the aWarpSharp black pixel bug
# - added Repair


HQDering

Funcion que resulta bastante efectiva versus el efecto halo, aunque produce notable aliasing.
En cuanto a deringing, ofrece una limpieza muy ligera para no dañar detalle, asi que si poseen un video que tiene considerable ruido en bordes deberan recurrir a algo mas potente.

Filtros requeridos:
MaskTools2
Deen

Sintaxis y valores por defecto:
HQDering(strength=255, overall=0)

El valor que tiene la fuerza por defecto es el maximo que admite la funcion (0<strength<255) , asi que quizas requieran bajarlo para evitar que resulte contraproducente.
Para un efecto smooth generalizado pueden darle valores mayores que cero a overall, hasta 255.

Script de la funcion:
Insertar CODE, HTML o PHP:
######
##
## HQDering v0.1 by mf
##
## Applies derining by using a smart smoother near edges (where ringing occurs) only.
##
## Usage: Import("HQDering-v0.1.avs")
## HQDering()
##
####

function HQDering(clip input, int "strength", int "overall", clip "smoother") {

strength = Default(strength, 255) # strength, 0-255
overall = Default(overall, 0) # overall smoothing, 0-255
smoothed = defined(smoother) ? smoother : input.Deen("a3d",4,15,15,20) # filter that smooths

normalmask=input.mt_edge(thY1=3, thY2=255, mode="sobel", chroma="none")

amplifiedmask=normalmask.Levels(0, 3.3, 90, 0, 255).Blur(1.0)

thickmask=normalmask.mt_inflate().mt_inflate().mt_inflate().Levels(0, 3.3, 90, 0, 255)
\ .Blur(1.0).mt_inflate().mt_inflate().mt_inflate().Levels(0, 3.3, 255, 0, 255)
\ .mt_inflate().mt_inflate()

ringingmask=mt_lutxy(amplifiedmask.mt_invert(), thickmask, expr="x y * 255 /").Levels(60, 3.0, 140, overall, strength)

mt_merge(input, smoothed, ringingmask)

}


YAHR

O tambien: Yet Another Halo Reducing script.
Funcion extremadamente potente y efectiva.
Deben cuidar donde la aplican para no perjudicar al detalle. Ademas, debido al uso de aWarpSharp, objetos pequeños se ven ligeramente deformados.

Filtros requeridos:
MaskTools2
RemoveGrain y Repair
aWarpSharp
MedianBlur

Sintaxis:
YAHR()

Eso es todo, no tiene parametros, aunque serian bienvenidos para controlar su agresividad.


Filtros para Antialiasing

El efecto aliasing provoca en los bordes de las imagenes pixelaciones dando el aspecto de sierra:

anti-aliasing-offon.jpg

Para este proceso, existen funciones intrinsecamente creadas para evitar este efecto y dar suavidad a los bordes y otras que no siendo su funcion principal, tambien lo consiguen.


SharpAAMCmod

SharpAAMCmod(dark, thin, sharp, smooth, stabilize, tradius, aapel, aaov, aablk, aatype)

El parametro dark tiene la funcion de remarcacion de la linea. Por defecto 0.2
El parametro thin la de adelgazarla. Por defecto 10.
El parametro sharp que indica a LSFMod la funcion de enfocado (0-100). Por defecto 100.
El parametro smooth que indica a LSFMod la funcion de suavizado (0-100). Por defecto 100. (smooth-piel melocoton-suavizado)
El parametro stabilize controla la estabilizacion de movimiento de los bordes para evitar el parpadeo. Provoca mucha lentitud, en casos muy extremos. Por defecto true
El parametro tradius marca el radio temporal de estabilizacion (0 a 3). Por defecto 2.
El parametro aapel indica el factor de supermuestreo para cálculos del vector de movimiento cuando usamos stabilize=true. (1, 2 o 4). Por defecto 1.
El parametro aaov determina el solapamiento de los bloques para el cálculo del vector de movimiento cuando usamos stabilize=true. Por defecto 4 para SD y 8 para HD.
El parametro aablk determina el tamaño de los bloques para los cálculos del vector de movimiento cuando usamos stabilize=true (4, 8 o 16). Por defecto 8 para SD y 16 para HD.
El parametro aatype indica el tipo de antialiasing, en este caso "Sangnom" o "EEDI2". Por defecto Sangnom

Ejemplo:

SharpAAMCmod(dark=2.5, thin=0, sharp=50, smooth=50, stabilize=false, aatype="EEDI2")

Esta funcion esta incluida en el codigo de la funcion AnimeIVTC, pero puede ser cargada de forma separada, pero si quereis podeis crear un Script por separado

Insertar CODE, HTML o PHP:
function SharpAAMCmod(clip orig, float "dark", int "thin", int "sharp", int "smooth", bool "stabilize", int "tradius", int "aapel", int "aaov", int "aablk", string "aatype")
{
dark = default ( dark, 0.2 ) # strokes darkening strength
thin = default ( thin, 10 ) # Presharpening
sharp = default ( sharp, 150 ) # Postsharpening
smooth = default ( smooth, -1 ) # Postsmoothing
stabilize= default ( stabilize,false ) # Use post stabilization with Motion Compensation
Tradius = default ( Tradius, 2 ) # 2 = MDegrain2 / 3 = MDegrain3
aapel = default ( aapel, 1 ) # accuracy of the motion estimation (Value can only be 1, 2 or 4. 1 means a precision to the pixel. 2 means a precision to half a pixel, 4 means a precision to quarter a pixel, produced by spatial interpolation (better but slower).)
aaov = default ( aaov, (orig.width>1100) ? 8 : 4 ) # block overlap value (horizontal). Must be even and less than block size. (Higher = more precise & slower)
aablk = default ( aablk, (orig.width>1100) ? 16 : 8 ) # Size of a block (horizontal). It's either 4, 8 or 16 ( default is 8 ). Larger blocks are less sensitive to noise, are faster, but also less accurate.
aatype = default ( aatype, "Sangnom" ) # Use Sangnom() or EEDI2() for anti-aliasing

w=width(orig)
h=height(orig)
m=mt_logic( orig.DEdgeMask(0,255,0,255,"5 10 5 0 0 0 -5 -10 -5", divisor=4,Y=3,U=3,V=3)
\ ,orig.DEdgeMask(0,255,0,255,"5 0 -5 10 0 -10 5 0 -5", divisor=4,Y=3,U=3,V=3)
\ ,"max").mt_lut("x 128 / 0.86 ^ 255 *")
preaa=(thin==0 && dark==0) ? orig : (thin==0) ? orig.Toon(dark) : (dark==0) ? orig.awarpsharp2(depth=thin) : orig.Toon(dark).awarpsharp2(depth=thin)
aa= (aatype=="Sangnom") ? preaa.spline36resize(w*2,h*2).TurnLeft().SangNom().TurnRight().SangNom().spline36resize(w,h) : (aatype=="EEDI2") ? preaa.ediaa() : blankclip(pixel_type="YV12").subtitle("Please use Sangnom or EEDI2 for aatype")
postsh=(sharp==0 && smooth==0) ? aa : aa.lsfmod(edgemode=1,strength=sharp,overshoot=1,soft=smooth)
merged=mt_merge(orig,postsh,m,Y=3,U=3,V=3)

sD=mt_makediff(orig,merged)

origsuper= orig.MSuper(pel=aapel)
sDsuper = sD. MSuper(pel=aapel, levels=1)


fv3 = tradius==3 ? origsuper.MAnalyse(isb=false,delta=3,overlap=aaov,blksize=aablk) : nop()
fv2 = tradius>=2 ? origsuper.MAnalyse(isb=false,delta=2,overlap=aaov,blksize=aablk) : nop()
fv1 = tradius>=1 ? origsuper.MAnalyse(isb=false,delta=1,overlap=aaov,blksize=aablk) : nop()
bv1 = tradius>=1 ? origsuper.MAnalyse(isb=true, delta=1,overlap=aaov,blksize=aablk) : nop()
bv2 = tradius>=2 ? origsuper.MAnalyse(isb=true, delta=2,overlap=aaov,blksize=aablk) : nop()
bv3 = tradius==3 ? origsuper.MAnalyse(isb=true, delta=3,overlap=aaov,blksize=aablk) : nop()
sDD = tradius==1 ? sD.MDegrain1(sDsuper,bv1,fv1) : tradius==2 ? sD.MDegrain2(sDsuper,bv1,fv1,bv2,fv2) : sD.MDegrain3(sDsuper,bv1,fv1,bv2,fv2,bv3,fv3)

reduc = 0.4
sDD = mt_lutxy(sD,sDD,"x 128 - abs y 128 - abs < x y ?").mergeluma(sDD,1.0-reduc)

return stabilize ? orig.mt_makediff(sDD,U=2,V=2) : merged
}

Aparte de este hay otros mas que ya se explicaran. ^_^


Filtros para Correccion de Color

Aquellos filtros que solucionan artifacts que haya sobre los colores.


Colormatrix

Al convertir desde un DVD a XviD mediante AviSynth muchas veces la información de color de la fuente no es interpretada correctamente. Colormatrix soluciona esto.

Cómo se usa:
En la carga del video
mpeg2source("C:\RIP\pelicula.d2v" ,info=3)
ColorMatrix(hints=true)


Si se observa mejoría lo usamos. Si no, no hace falta.


Filtros para Eliminar Logos

Para cuando deseen deshacerse de algun molesto logo o marca de agua que haya sobre el video.


rm_logo

Funcion que hace uso de una interesante variedad de filtros para lograr su objetivo.

Filtros requeridos:
AVSInpaint
ExInpaint
MaskTools2
MedianBlur
RemoveGrain
TTempSmooth
FFT3DFilter (solo para PP=2)

Ojo porque el filtro AVSInpaint se carga mediante el comando especial LoadCPlugin.
No se carga automaticamente con tenerlo en la carpeta de plugins por defecto.

Sintaxis y valores por defecto:
rm_logo(logomask="", loc="", cutsize="small", par=1.0, mode="both", percent=25, PP=1, debug=false)

Parametros:

El filtro requiere de una mascara que marque donde se encuentra el logo. Dicha imagen se carga mediante al parametro logomask. Deben indicar la localizacion de la misma entre "", por ejemplo logomask="C\...\logo.bmp". Mas adelante se explica como se crea esta mascara.

Para evitar operar sobre la totalidad de la imagen, el filtro corta el trozo donde esta el logo. Entonces es necesario indicarle en que parte del frame se encuentra, mediante loc, que puede ser: "tr", "tl", "br" o "bl", respectivamente las esquinas superior derecha, superior izquierda, inferior derecha e inferior izquierda.

Si el logo es demasiado grande pueden aumentar el area de recorte usando cutsize="medium" o cutsize="large".
Esto lo aplican si ven que parte del logo permanece intacto, como si no hubiera sido filtrado.

par es para especificar la relacion de aspecto, por ejemplo par=16.0/9.0 o par=4.0/3.0.

Segun el tipo de logo existen 3 modos para removerlo.
Si es translucido, usan mode="deblend".
Si son colores solidos, mode="inpaint"
O una combinacion de ambos, mode="both".

PP=1, 2 o 3 activan alguno de los modos de post-proceso, con la intencion de minimizar los artifacts resultantes de la eliminacion del logo.
Un valor de "0"(cero) desactiva esta funcion.

Habilitando debug=true la salida se transforma en un mosaico de imagenes donde se muestran las diferentes etapas de filtrado. Ideal para comparar.

Modo de uso:

Necesitan seleccionar un frame del video donde aparesca el logo, y guardarlo como imagen .bmp (pueden usar Media Player Classic).
Lo ideal es que elijan un frame que posea el fondo negro, por ejemplo uno de los creditos, ya que luego deben editar esa imagen .bmp, resaltar el logo con color blanco y dejar el resto de la imagen de color negro puro.
Esta nueva imagen es la mascara que utiliza la funcion para identificar al logo, y la ruta a la misma es la que deben colocar como valor del parametro logomask.
El primer script es mejor ejecutarlo mediante algun reproductor, y no cargarlo directamente al programa conversor.
Esto es asi porque el filtro realiza una primera pasada de analisis sobre un trozo de video donde la totalidad de los frames contengan el logo.
Por ello en el script aplican el filtro Trim (categoria Manipulacion de Archivos) para seleccionar un intervalo donde estan seguros que el logo aparece en todos los frames. Esto solo si el logo aparece o desaparece en algun punto del video.
Entonces, la primera vez que ejecuten el script el filtro realiza una pasada de analisis sobre un deteminado porcentaje del video (o intervalo que hayan fijado con Trim), el que pueden configurar mediante el parametro percent (entre 0 y 100 por supuesto). A mayores valores mejor el resultado, pero procuren no pasarse de "50".
Este analisis puede tardar mucho, dependiendo del porcentaje que elijan y la resolucion del trozo a analizar. Mientras tanto el programa reproductor aparenta estar colgado, pero tengan paciencia.
Finalizado el analisis se crea un archivo de imagen .ebmp que contiene la informacion recolectada y requerida por el filtro para eliminar el logo. De aqui en mas el video es accesible (se reproduce) y aunque cierren el reproductor no es necesario un nuevo analisis salvo cambien algun parametro (no editen la linea del filtro rm_logo).
Conformes con el resultado pueden quitar del script los comandos Trim y cargarlo al programa conversor. Como el resultado del analisis esta contenido en la imagen .ebmp la conversion debe empezar inmediatamente (sin analizar).


De yapa un ejemplo con imagenes incluidas:

rm_logo(logomask="H:\tallervideo\samples\logo.bmp", loc="br", par=16.0/9.0, mode="both", percent=40, pp=2, cutsize="medium", debug=true)

ejemplo2rmlogo.png
ejemplo3rmlogo.png

Filtros Sharpen
aSharp
[YV12]

Se caracteriza por poseer capacidad de adaptarse ante situaciones en donde su aplicacion podria provocar ruido o enfatizar bloques, y asi lograr un mejor resultado que un filtro sharpen convencional como el interno incluido con AviSynth (Sharpen).

Sintaxis:
asharp(T,D,B,hqbf)

T(valor real en el rango 0..32) representa el limite hasta donde el filtro sera aplicado (2 por defecto). Un valor de 0 no hara nada.
D(real rango 0..16) permite configurar la fuerza con que el filtro adaptara su funcionamiento ante situaciones que lo ameriten, un valor de 0 desactiva completamente la capacidad de adaptarse. Valor por defecto es 4. Cuando esta activo el valor de T actua como maximo.
B(real rango 0..4) permite activar y regular la adaptacion del filtro para evitar la aplicacion del filtro sobre bloques y empeorar aun mas los mismos. Un valor negativo desactiva esta funcion. Un valor igual o mayor a cero lo activa y cuanto mayor sea mayor influencia tendra al ser aplicado. Solo funciona con D>0. Por defecto esta desactivado (B=-1).
hqbf(true,false). Ideal activarlo para videos con bloques, su funcion es filtrarlos, requiere que D>0. Por defecto esta desactivado (hqbf=false).


aWarpSharp

Segun lo que mis ojos me permiten observar, el resultado de aplicar este filtro difiere bastante de un efecto sharpen convencional. Lo que se observa es una compresion de los bordes difusos, "afinandolos" se podria decir. Esto ofrece un efecto sharpen muy potente en videos borrosos, pero no es magico, tambien distorsiona detalle fino y deforma objetos pequeños. Por supuesto es posible regular los parametros para disminuir esta deformacion y aun asi se logra un efecto sharpen notable, no tan fuerte pero por lo menos mas normal.
Debido a su principio de funcionamiento quizas sea mas recomendable para aplicar sobre dibujos animados o anime, donde se puede aprovechar mejor sin necesidad de reducir mucho su intensidad de aplicacion.
Existen dos versiones de este filtro, la original cuyo desarrollo se abandono hace tiempo, y una version modificada y actualizada con mejoras de estabilidad y optimizaciones. Por razones historicas se mencionan ambas, pero lo mas recomendable es usar la nueva version.

aWarpSharp original

aWarpSharp(depth=16, blurlevel=2, cm=2)

La intensidad de aplicacion se varia con depth, y les aseguro que querran bajarla si deciden usar el filtro sobre imagen normal .
blurlevel parece regular la magnitud de la deformacion, a menor valor mas acotada es esta, es decir que limita el sharpen pero tambien permite un efecto mas normal. Puede variar entre 1 y 4.
cm es el modo de tratar la crominancia, donde un valor de 0 desactiva el filtrado de la misma. 1 y 2 son dos modos para filtrarla, donde 1 involucra a la luminancia y 2 es filtrado de chroma independiente. Segun la documentacion es mas recomedable usar cm=1. En mis pruebas lo que note fue una mayor estabilidad de color con dicho valor, ya que ciertos bordes quedaban sobre coloreados usando cm=2.


aWarpSharp v2

aWarpSharp2(thresh=128, blur=2, type=0, depth=16, chroma=4)

depth es la intensidad general de aplicacion, puede variar entre -128 a 127. Equivale a depth*blurlevel/2 (valores version original).
thresh sirve para ajustar la deteccion de bordes, reducir para bajar la agresividad del filtro. Variable entre 0 y 255.
blur permite regular la intensidad de la deformacion, puede variar entre 0 y 100. Disminuir este valor implica aumentar el efecto sharpen, pero disminuye la calidad de usarse el filtro en alta intensidad y/o agresividad, en cuyo caso conviene aumentarlo.
type=1 ofrece mejor calidad pero es mas lento que usar type=0. Al usar type=1 el valor por defecto de blur pasa a ser 16 dado que para lograr el mismo efecto sharpen debe ser 8 veces el valor que con type=0.
Para elegir el modo de procesar crominancia: chroma=0 anula crominancia (deja al video en blanco y negro); chroma=1 ignora la informacion de chroma y produce un video inservible; chroma=2 la copia tal como esta en el original (cm=0); chroma=3 la procesa de forma independiente (cm=2); chroma=4 la procesa basandose en la informacion de luminancia (cm=1).


MSharpen

Filtro sharpen que posee la particularidad de poder ser configurado para solo aplicarse sobre los bordes (detalle grueso). Esto se logra mediante una mascara que "oculta" las zonas de la imagen sin este detalle y evita que el filtro se aplique sobre las mismas. Util para evitar amplificar el ruido de fondo.
Por supuesto, la cantidad de detalle que abarca la mascara puede ser configurada, segun hasta donde queramos que se filtre.

Sintaxis y valores por defecto:
MSharpen(mask=false, threshold=10, strength=100, highq=true)

Para poder ver el detalle que esta siendo cubierto por la mascara colocan mask=true. Luego pueden disminuir el parametro threshold para abarcar detalle mas grueso, o viceversa. Una vez tienen este parametro bien configurado, quitan de la sintaxis mask=true.
La fuerza de aplicacion se fija con strength, como de costumbre.
Imponer highq=false implica mayor velocidad pero menor calidad en la deteccion de detalle.

Ejemplo:
Primero usamos la mascara para configurar que detalle sera filtrado:
MSharpen(mask=true, threshold=10)
Una vez establecida la mascara (se bajo threshold para abarcar detalle mas grueso) se puede proceder al filtrado:
MSharpen(threshold=7)


LimitedSharpenFaster

Esta funcion tiene como objetivo agudizar la nitidez del video minimizando la aparicion de efectos indeseables. Vendria a ser un filtro sharpen con proteccion contra efectos como halo, ruido mosquito, aliasing, todos aquellos comunmente encontrados al aplicar un filtro sharpen.
Debo decir que hasta ahora es el mejor filtro sharpen que he visto, los resultados que logra son impresionantes, pero claro esto no viene gratis y hay que sacrificar tiempo siendo mucho mas lento que aplicar un filtro sharpen convencional.
Visto que el objetivo de la funcion es ofrecer un aumento de la nitidez limitado para evitar los artifacts ya mencionados, de necesitar resultados mas fuertes, en vez de aumentar la fuerza de aplicacion a lo bruto puede que sea mas conveniente recurrir a un filtro convencional sin las protecciones.

Filtros requeridos:
MaskTools2
RemoveGrain
WarpSharp (solo para Smode=1)

Sintaxis y valores por defecto:
LimitedSharpenFaster(Smode=3, edgemode=0, strength=100, Lmode=1, ss_x=1.5, ss_y=1.5, dest_x, dest_y, soft=0, wide=false)

Smode(1,2,3,4) selecciona el modo de operacion. Estos modos son: 1-UnsharpMask, 2-Sharpen, 3-Range sharpening, 4-Nonlinear sharpening. Los primeros dos aplican los filtros que les dan nombre, mientras que los ultimos dos aplican un metodo propio del script LSF. Mis pruebas me mostraron que el modo (3) parece ser el mas eficiente (relacion sharpen/calidad).
edgemode(-1,0,1,2), permite elegir si agudizar solo el detalle de bordes (1) o solo el detalle de todo lo que no sea bordes (2), o todo (0). (-1) muestra lo que el filtro identifica como bordes. Usar edgemode=1 es ideal para cuando quieren evitar amplificar innecesariamente ruido de fondo y/o para videos con bajo nivel de texturas, les recomiendo que lo prueben.
strength(0 a inf), este parametro regula la intensidad con la que se agudiza el detalle. En Smode=2, el valor esta limitado entre 0-100, y representa el rango de 0.0 a 1.0 del filtro Sharpen; valores mayores son tomados como 100. Por defecto el valor es de 100 salvo para Smode=1 donde es de 160. El valor de este parametro puede subirse sin miedo, dado que por diseño la funcion "limita" el efecto si este podria causar artifacts, aunque por supuesto de subirlo mucho estos se haran notables.
Lmode(0,1,3), controla la forma en que la funcion limita el efecto sharpen para evitar los artifacts. Un valor de (0) desactiva la limitacion, (1) limita normalmente sobre toda la imagen y (3) no limita sobre bordes pero si lo hace normalmente sobre todo lo demas.
ss_x y ss_y(>=1.0) permiten aplicar el metodo llamado supersampling (cuando son mayores que 1.0), que se trata de primero usar resize para agrandar la imagen, aplicar el filtro, y luego resize al tamaño original (internamente se utiliza el filtro lanczos). El objetivo de hacer esto es evitar la aparicion de aliasing, aunque tampoco conviene subir mucho estos valores para evitar reducir la efectividad del filtro, lo ideal es usar los minimos que eviten el aliasing. Con dest_x y dest_y pueden indicar una resolucion de salida, para asi ahorrarse una etapa de resize.
soft(-1 a 100) suaviza (efecto smooth) el efecto del filtrado, es decir que se deberia ocupar de limpiar ruido que haya sido amplificado durante el mismo. Su intensidad dependera de que tanto ruido haya en el video antes de aplicar la funcion. Tambien podria usarse como filtrado ligero de ruido si por ejemplo tambien usan edgemode=1, ya que de esta forma el filtro no amplifica el ruido que pudiera haber sobre fondos o areas de poco detalle y soft puede trabajar de forma mas eficiente sobre el ruido que suele presentarse en dichas areas. (-1) calcula automaticamente un valor apropiado.
wide=true en vez de tomar los limites locales de un pixel en una matriz de 3x3 pixeles aledaños, utiliza una matriz de 5x5, y permite lograr mejores resultados si el video original esta muy borroso y/o si se usa supersampling.

Existen otros parametros que no se mencionan, pero que no deberian necesitar para una correcta aplicacion del filtro. De todas maneras pueden recurrir a la

Ejemplo:
LimitedSharpenFaster(edgemode=1, ss_x=1.0, ss_y=1.0) -> efecto sharpen sin proteccion contra aliasing y aplicado solo sobre bordes.

Pueden leer mas sobre la filosofia detras de su funcionamiento aqui, aunque se trata de una version anterior lo que alli se explica seguro sigue siendo valido, pero no presten atención a los parámetros y sus valores, eso cambió.

LSFmod

Modificacion de la funcion LimitedSharpenFaster, que agrega importantes mejoras de versatilidad, asi como tambien otras correcciones y optimizaciones varias.
Al igual que la funcion original, el objetivo es el aumento de nitidez del video tratando de evitar o por lo menos minimizar la aparicion de los artifacts comunes a la aplicacion de un filtro sharpen.
Visto que la razon principal de esta modificacion es ofrecer una mayor versatilidad en la configuracion, de no buscar hilar muy fino seria mejor que usen la version original, para evitar complicarse de mas con la gran cantidad de parametros extra.

Filtros requeridos:
MaskTools2
RemoveGrain
WarpSharp (solo para Smode=1)
VariableBlur (solo para Smode=2)

Sintaxis y valores por defecto:
LSFmod(defaults="fast", strength=100, Smode=3, Smethod=2, kernel=11, preblur="OFF", secure=true, source, Lmode=1, soft=0, soothe=true, keep=20, edgemode=0, edgemaskHQ=false, ss_x=1.5, ss_y=ss_x, dest_x, dest_y, show=false, screenW=1280, screenH=1024)

El parametro defaults permite predeterminar el valor de todos los demas.
Desde ya que aunque fijen este parametro tambien pueden fijar los demas, en cuyo caso el valor del parametro que fijen manualmente es el que se usa.

defaults="old": funcionamiento exactamente igual a la funcion LimitedSharpenFaster por defecto. Equivale a los mismos valores mostrados en la sintaxis salvo por: secure=false, soothe=false, keep=25, edgemaskHQ=true
defaults="fast": es la config por defecto, y son los valores mostrados en la sintaxis, que corresponden a una aplicacion rapida del filtro.
defaults="slow": aplicacion lenta pero en teoria de mayor calidad. Los parametros diferentes a los por defecto son: Smode=5, Smethod=3, secure=true, Lmode=4, soft=-2, edgemaskHQ=true.

Como siempre, strength regula la fuerza de aplicacion. Dado que el proposito de la funcion es limitar el efecto para evitar remarcar o crear ruido, pueden subir el valor de este parametro sin miedo (dentro de limites razonables claro).
Se pueden usar diferentes modos para lograr el efecto sharpen, segun el valor de Smode sea igual a: 1-UnSharp Masking (filtro WarpSharp); 2-UnSharp Masking (filtro VariableBlur); 3-Range Sharpening; 4-NonLinear Sharpening (original); 5-NonLinear Sharpening (corregido).
A su vez, los modos 3, 4 y 5 pueden aplicarse usando tres metodos diferentes, que se fijan como Smethod=: 1-3x3 kernel; 2-Min/Max; 3-Min/Max + 3x3 kernel.
En mis pruebas (usando Smode=3), el primer metodo lo note menos agresivo que el segundo, es decir que el efecto sharpen era notablemente inferior. Mientras que el tercer metodo no presenta mucha diferencia respecto del segundo, apenas se nota que es mas agresivo.
El valor de kernel solo afecta a los metodos 1 y 3, y permite incrementar su agresividad. El valor por defecto es la minima agresividad, y de ahi puede tomar los valores: 20, 12 y 19, en orden de menos a mas agresivo. Aunque no esperen grandes diferencias, por lo que pude ver se nota mas en fondos y areas de colores solidos.
Solo en los modos 3, 4 y 5, para evitar producir ruido sobre bordes (ringing), se puede activar preblur="ON". Y si ademas se desea evitar reforzar el ruido en general, se puede usar este parametro junto con su filtro de ruido favorito, por ejemplo asi: preblur="FFT3DFilter(plane=4)". Esto en el caso de que no hayan filtrado el ruido previamente.
secure=true (solo util en los modos 3, 4 y 5) evita el efecto de bandas sobre gradientes de color, asi como tambien la apariencia aceitosa. Segun mis observaciones lo que hace este parametro es reducir o directamente anular la aplicacion del efecto sharpen sobre fondos o superficies de color solido, y asi logra evitar los problemas mencionados. Recomendable dejarlo activado.
Lmode sirve para configurar la forma en que la funcion limita el efecto sharpen. No limitar equivale a mayor agresividad pero tambien a mayores artifacts. Los valores posibles son: 1-Limita la aplicacion de forma general; 2-Limita la aplicacion solo sobre bordes (mayor agresividad sobre fondos, colores solidos, texturas); 3-Limita a cero la aplicacion sobre bordes y normal sobre todo lo demas (menor agresividad sobre bordes); 4-Limita normal sobre bordes y tambien limita pero mas agresivo sobre lo demas.
Para compensar el efecto sharpen se puede hacer uso de soft, que puede variar de 0 a 100. Un valor de -1 calcula un valor automaticamente igual que en la funcion original, y un valor de -2 calcula automaticamente segun un nuevo metodo de LSFmod. Ignoro las diferencias.
Para reducir la inestabilidad temporal(ruido aleatorio en general y artifacts sobre el movimiento) y el aliasing, limitando un poco mas el efecto sharpen, se puede aplicar soothe=true. El parametro keep es el minimo porcentaje de efecto sharpen que se debe dejar pasar, es decir que pone un maximo a que tanto puede debilitarse el efecto sharpen de estar usando soothe=true.
edgemode=0: filtra todo; =1: filtra solo bordes (similar a usar secure=true); =2: filtra todo lo que no sea bordes; =-1 muestra los bordes.
edgemaskHQ=true: misma mascara de bordes que la version original; =false: mascara mas rapida pero de menor calidad.
Para controlar el aliasing(efecto serrucho en bordes) estan presentes los tipicos factores de supersampling: ss_x y ss_y, cuyo valor equivale a un resize de tantas veces la imagen original, aplicacion del filtro y vuelta a tamaño original. No usen valores muy altos porque limitaran mucho el efecto sharpen, solo el minimo para evitar el aliasing. Con dest_x y dest_y pueden indicar una resolucion de salida, para asi ahorrarse una etapa de resize.

Colocando show=true pueden aprovechar una funcionalidad extra de la funcion que consiste en mostrar a la salida una comparacion entre el video antes y despues de aplicar el filtrado, junto con informacion sobre la configuracion. Los valores de screenW y screenH son las resoluciones horizontal y vertical de la imagen de salida respectivamente.

Una utilidad mas que interesante la encuentran en el parametro source. Basicamente este les permite definir un video de referencia, para que la funcion no aumente la nitidez mas alla de este. Es decir que pueden usar la funcion para restaurar el detalle perdido en una etapa de filtrado de ruido.
El uso vendria a ser:
video_original
filtro_de_ruido()
LSFmod(source=video_original)

Ejemplo:
a = last
FFT3DFilter(bt=5, plane=4, bw=32, bh=32, ow=16, oh=16)
LSFmod(source=a)


Ejemplos:
Aplicacion identica a la funcion LSF original por defecto:
LSFmod(defaults="old")
Partiendo de la configuracion por defecto de LSF original pero aprovechando las mejoras de la nueva version:
LSFmod(defaults="old", secure=true, soothe=true, preblur="ON") -> tengan en cuenta que la finalidad de estas nuevas opciones es controlar los artifacts, cosa que logran reduciendo el efecto sharpen.


SeeSaw

Cuando se busca el aumento de la nitidez de un video, lo que se recomienda para lograr un resultado satisfactorio es hacerlo mediante dos etapas de filtrado, ambas opuestas en objetivos.
Una etapa de filtrado de ruido (o efecto smooth) y la etapa de efecto sharpen. Esto se hace asi porque de aplicar solo el efecto sharpen el ruido ya presente se veria muy intensificado y el resultado aunque tendria la mayor nitidez tambien se veria bastante mal por el incremento del ruido. Entonces un resultado que podriamos llamar estable se consigue combinando ambas etapas de filtrado, que siendo opuestas tienden a ofrecer un termino medio aceptable.
De aplicarse primero el filtrado de ruido, luego el sharpen podra aplicarse de forma segura sin miedo a intensificar el ruido que ya no esta. Pero de usar este orden mucho del detalle fino se pierde con la primer limpieza, y dicho detalle no puede ser recuperado.
Si primero se aplica el sharpen, todo el detalle esta disponible para ser intensificado. Pero luego, debido a la prescencia potenciada de ruido, se debe aplicar el smooth, y este proceso contraresta mucha de la ganacia de detalle obtenida en la primer etapa.
Por supuesto, lo que se busca es el termino medio sea cual sea el metodo que se use.

La funcion SeeSaw se ocupa de realizar este proceso de dos etapas automaticamente. Sin embargo no usa ninguna de las aproximaciones mencionadas por si solas, sino que combina ambas tratando de permanecer en un punto intermedio y asi obtener los mejores resultados.
Resumiendo: el resultado se vera beneficiado por una disminucion del ruido y un aumento de nitidez. Por otro lado, si el original posee efecto halo, este se vera notablemente intensificado.

Importante: esta funcion esta pensada para videos que ya se ven razonablemente bien. Aplicarla directamente sobre videos que poseen artifacts mas "pesados" que simple ruido no es recomendable sin antes ayudar con algo de filtrado previo que apunte especificamente a dichos artifacts.

El filtrado de ruido lo hacen con su filtro denoiser favorito, asi SeeSaw trabaja comparando el video filtrado por ustedes con el original. Esto les permite elegir el mejor filtrado de ruido segun sus preferencias y las circunstancias.
Tambien pueden aplicar la funcion directamente, aprovechandose el filtrado interno de ruido, que utiliza el filtro RemoveGrain, aunque lo mejor es usar un denoiser aparte.

Filtros requeridos:
RemoveGrain y Repair
MaskTools2

Sintaxis:
SeeSaw("video original", "video con ruido filtrado", Sstr=1.5, ssx=1.0, ssy=ssx, NRlimit=2, NRlimit2=NRlimit+1, Slimit=NRlimit+2, bias=49)

Sstr es la intensidad de aplicacion.
El supersampling (para evitar aliasing) se fija con ssx y ssy, pero segun la documentacion no es necesario, a lo sumo usar bajos valores como 1.25 deberia ser suficiente.
NRlimit representa el maximo cambio que puede sufrir un pixel por el filtrado de ruido, por lo que aumentar este valor potencia el filtrado de ruido. Pero ojo porque NRlimit2 y Slimit por defecto dependen de este, asi que si solo se definen este parametro se estara aumentando la agresividad en general de la funcion. De necesitarse solo regular la funcion que representa este parametro se deben definir los otros dos explicitamente.
NRlimit2 tambien limita cambios por denoising, pero en una etapa de filtrado intermedia, no la definitiva, por ello por defecto tiene un valor mas alto.
Slimit es el limite del cambio maximo de un pixel por efecto sharpen. Aumentar este valor incrementa el efecto sharpen.
Visto que SeeSaw trata de mantenerse en un estado intermedio entre los dos metodos comentados, se ofrece el parametro bias para inclinar la balanza hacia el metodo sharpen->smooth, o de mayor detalle fino pero mas ruido (bias>=50); o hacia el metodo smooth->sharpen, menor ruido pero bajo detalle fino (bias<50).

Tiene mas parametros, como pueden ver en el script, pero no creo que valga la pena mencionarlos y lo que les recomiendo es que los dejen como vienen por defecto.

Ejemplo 1:

a = last

b = a.Denoiser_Favorito()

SeeSaw()


Ejemplo de uso generico. El a = last indica que se toma el video tal como esta al llegar a dicha linea.

Ejemplo 2:

LoadPlugin("H:\tallervideo\Filtros Avisynth\fft3dfilter.dll")
LoadPlugin("H:\tallervideo\Filtros Avisynth\mt_masktools-26.dll")
LoadPlugin("H:\tallervideo\Filtros Avisynth\RepairSSE2.dll")
LoadPlugin("H:\tallervideo\Filtros Avisynth\RemoveGrainSSE2.dll")

Import("H:\tallervideo\Filtros Avisynth\SeeSaw.avs")

DirectShowSource("C:\...\video.avi")

a = last

b = a.FFT3DFilter(bt=5, plane=4, ow=16, oh=16)

SeeSaw(a, b, Sstr=1.0)


Ejemplo de script completo. Se disminuye la fuerza de la funcion para un mejor resultado en un video de buena calidad. Se aplica el exelente filtro de ruido FFT3D en un modo de alta calidad e intensidad media.
Ojo que este ejemplo posee una etapa de filtrado de ruido bastante potente.


Sharpen
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

El filtro Sharpen es el unico filtro para dicho efecto que viene incluido con AviSynth.

Sintaxis:
Sharpen(amount,MMX)
Sharpen(amountH,amountV,MMX)


Donde 0.0<amount<1.0 es un valor real y representa la fuerza del filtro.
En la segunda forma de invocarlo la variable amountH sirve para indicar por separado la intensidad del filtro en forma horizontal, mientras que se indica con amountV la vertical.
MMX(true,false): activado por defecto. Si se desactiva (MMX=false) se puede evitar la aparicion del efecto "halo", donde se forman "bandas claras" en los contornos de los objetos. Sin embargo su desactivacion previene al filtro de aprovechar las capacidades MMX del procesador y por ende resulta en una caida de la velocidad, asi que solo desactiven si notan molesto dicho efecto.

Ejemplo: Sharpen(0.85)

Conversion de Color

ConvertToXXX
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Convierte el video al espacio de color elegido. Util cuando el filtro que quieren usar solo soporta algunos formatos especificos o uno solo en particular, como por ejemplo el filtro SpatialSoften, que solo soporta trabajar sobre YUY2. Tambien en el caso de que el codificador a donde envian el video soporte un formato de color de entrada especifico.

Sintaxis:
ConvertToXXX(matrix,interlaced,chromaplacement,chromaresample)

XXX
puede ser: RGB, RGB24, RGB32, YUY2, Y8, YV411, YV12, YV16, YV24.
En matrix pueden elegir entre usar: "Rec.601"(default), "PC.601", "Rec.709" y "PC.709", todos van con comillas incluidas. Esto le indica al filtro cual es el rango de colores. Los Rec reducen el rango a aquel soportado por la TV analogica(16,235) y los PC procesan el rango de color completo(0,255). Segun la informacion en la wiki matrix="Rec.601" debe ser usado cuando la fuente es XviD/DivX o capturas analogicas; matrix="Rec.709" en cambio se recomienda usarlo cuando la fuente es HDTV o DVD.
interlaced puede ser true o false(default) y lo activan cuando la fuente es entrelazada.
chromaplacement se usa cuando convierten desde o hacia YV12, pueden elegir entre "MPEG2" (default), "MPEG1" o "DV", con las comillas incluidas.
chromaresample es el filtro de reescalado que se usa para la crominancia en los casos en donde la misma tiene diferente resolucion entre los formatos de color que se estan convirtiendo. Puede usarse cualquiera de los mencionados en el filtro Resize, el default es chromaresample="Bicubic".


Ajustes de Color y Niveles

Aqui encuentran todo lo relacionado a regular color, brillo, contraste, gamma, etc.


ColorYUV
[YUY2-Y8-YV411-YV12-YV16-YV24]

Filtro interno que ofrece varias formas de modificar color y luminancia(brillo y contraste) de un video en formato de color YUV (no sirve para RGB).

Sintaxis:
ColorYUV(gain_y, off_y, gamma_y, cont_y, gain_u, off_u, cont_u, gain_v, off_v, cont_v, opt, levels)

gain_y es un multiplicador del maximo valor de luminancia, es decir que aumenta el nivel de blanco, estirando hacia arriba, desde el minimo valor(nivel de negro, que no se modifica), la gama de valores de luminancia, por supuesto con el objetivo de lograr una mayor luminosidad. Puede tomar valores entre 0 y 1024. En el filtro Tweak esto equivale al parametro cont. Para lograr un aumento de (k+1) veces, deben colocarle al parametro un valor de k*256, por ejemplo para aumentar 1.2 veces el nivel de blanco usan gain_y=51.2.
gain_u y gain_v hacen lo mismo con la crominancia (planos U y V, azul y rojo respectivamente), pero no tiene mucho sentido su aplicacion, dado que produce un estiramiento hacia el azul o el rojo que arruina los colores.
off_y vendria a ser el brillo, o el equivalente al parametro bright del filtro Tweak. Lo que hace la funcion brillo es sumarle o restarle a la luminancia un determinado valor, en este caso definido por el parametro off_y.
off_u y off_v aplican el mismo concepto a la crominancia, pero nuevamente no son utiles dado que producen un corrimiento hacia azul o rojo, en este caso aun mas marcado dado que se modifican todos los valores por igual.
cont_u y cont_v sirven para regular el color, tal como el parametro sat del filtro Tweak. Esta funcion lo que hace es estirar los valores de crominancia desde el centro hacia afuera, reduciendo el minimo nivel y aumentando el maximo, y es en esto que difiere de gain, que solo aumentaba el maximo. Este comportamiento permite evitar el problema del corrimiento que si producian off y gain cuando se usaban con la crominancia. Lo que hay que tener en cuenta es que como los parametros regulan los canales V y U por separado, para regular el color en general deben definir ambos parametros con el mismo valor. Los valores siguen el mismo criterio que el parametro gain.
cont_y es lo mismo pero aplicado a la luminancia y se puede usar para aumento de contraste, con la salvedad de que como tambien se modifica el nivel de negro, se notara un oscurecimiento muy marcado de la imagen. Por ello, salvo se busque especificamente reducir el nivel de negro, es mejor usar la funcion gain_y para aumento de contraste convencional.
Opcionalmente es posible limitar el rango de valores de luminancia colocando opt="coring". De hacerlo, todos los valores fuera del rango de [16,235] seran eliminados.
Mediante levels="PC->TV" o levels="TV->PC" es posible realizar la conversion del rango de luminancia, entre el de la PC: [0,255], y el de la TV: [16,235]. Como pueden ver esta conversion lo que hace es modificar los valores limite para el nivel de negro y nivel de blanco, asi que el efecto es el mismo que aplicar la funcion cont_y.

Ejemplos:
Para aumentar contraste 1.2 veces -> ColorYUV(gain_y=51.2)
Para aumentar color 1.2 veces -> ColorYUV(cont_u=51.2, cont_v=51.2)
Para aumentar brillo -> ColorYUV(off_y=10)
Para disminuir brillo -> ColorYUV(off_y=-10)


GreyScale
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Convierte el video a escala de grises (blanco y negro), pero sin cambiar el formato de color.

Sintaxis:
Greyscale()


Tweak
[YUY2-Y8-YV411-YV12-YV16-YV24]

Con el podremos regular a gusto contraste, brillo, saturacion y color. Es sumamente util y nos permitira lograr algun que otro efecto muy interesante.

Sintaxis:
Tweak(hue,sat,bright,cont,coring,startHue,endHue,maxSat,minSat,interp)

hue(-180.0 a +180.0, por defecto en 0.0): tiñe la imagen hacia un determinado color. Valores mayores llevan la imagen hacia el rojo, mientras que valores menores lo hacen hacia el verde.
sat(0.0 a 10.0, por defecto en 1.0): ajusta la saturacion del color, o sea que este vendria a ser el valor que ajusta la intensidad del color. Valores por debajo de 1.0 la reducen y viceversa.
bright(-255.0 a +255.0, por defecto en 0.0): regula el brillo. Con bright>0.0 se aumenta, mientras que a valores negativos se disminuye.
cont(0.0 a 10.0, por defecto en 1.0): contraste, 1.0 es sin variacion, valores inferiores lo bajan, valores mayores lo aumentan.
coring(true o false, por defecto true): lo que hace cuando esta activado es limitar la luminancia a valores en el rango [16,235], siendo este el rango de TV. De definirse como false se usa el rango de PC, que es [0,255]. Limitar el rango equivale a impedir que algunas areas de la imagen tomen valores muy negros o muy blancos.
maxSat(por defecto 150.0) y minSat(por defecto 0.0) (ambos van desde 0.0 a 150.0, en porcentaje): permiten definir el rango de valores de saturacion que debe tener un pixel para que se le aplique el filtrado que regulan los parametros hue y sat. Por ejemplo, util para cuando solo desean aumentar el color de ciertas areas de la imagen sin saturar las demas. Para RGB el valor maximo sera de 100.0 (100%), para otros espacios de color esta permitido usar hasta 150.0(150%).
startHue(por defecto 0.0) y endHue(por defecto 360.0) (ambos desde 0.0 hasta 360.0 en grados): igual que los anteriores, definen un rango para la aplicacion de los parametros hue y sat, solo que en este caso el rango consiste en los valores de hue de cada pixel.
interp(0 a 32, por defecto 16): se usa para interpolar (de forma lineal) los valores de minSat y maxSat, en el rango [minSat-interp,minSat] y [maxSat,maxSat+interp]. Con interp=0 no hay interpolacion, util por ejemplo cuando el video se compone unicamente de colores uniformes (anime por ej).



Ajustes de Framerate

Filtros destinados a trabajar sobre los frames por segundo o FPS de un video.


AssumeFPS
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Sintaxis:
AssumeFPS(fps,sync_audio)
AssumeFPS(numerator,denominator,sync_audio)
AssumeFPS(clip1,clip2,sync_audio)
AssumeFPS(preset,sync_audio)


Se ocupa de modificar el framerate de reproduccion sin modificar el conteo de frames (causando que el video se reprodusca mas rapido o mas lento de lo normal).
Si se usa sync_audio=true (false por defecto) tambien modificara el sample rate del audio para igualar la duracion del video. Esto tambien constituye un metodo para modificar unicamente el sample rate del audio.
fps es un numero real que representa los frames por segundo, aunque es mas conveniente cuando se trata de NTSC utilizar la relacion 30000/1001 (en vez de 29.97) o 24000/1001 (en vez de 23.976), utilizando los valores numerator y denominator para el numerador y el denominador respectivamente. Esto se recomienda dado que cuando especifican un numero real avisynth lo pasa a una relacion, entonces siendo 23.976 y 29.97 resultados aproximados de las relaciones ya mencionadas en la realidad cuando avisynth los pase no dara la relacion estandar exacta.
Tambien pueden valerse de presets ya existentes para elegir los FPS segun los estandares, mediante el valor preset, y segun los mencionados en la tabla de esta pagina.
Si otro video esta presente (mediante clip2 es posible agregarlo) entonces el frame rate del video original (clip1) sera igualado al mismo, util cuando se desean unir dos videos de framerate ligeramente distintos.

Ejemplo:
AssumeFPS(24000,1001,true)
Permite modificar los FPS a 23,976 y tambien modifica el audio.


ChangeFPS
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Modifica el frame-rate eliminando o duplicando frames, sin modificar la duracion.

Sintaxis:
ChangeFPS(fps,linear)
ChangeFPS(numerator,denominator,linear)
ChangeFPS(clip1,clip2,linear)
ChangesFPS(preset,linear)


linear=false (por defecto en true) evita que AviSynth pida los frames de una forma lineal.
El resto de parametros y su funcion coinciden con el filtro AssumeFPS, asi que pueden guiarse con dicha descripcion.


Decimate
[YUY2-YV12]

Elimina frames de un video. Util para reducir el frame rate de videos con frames duplicados. Opera eliminando un frame de un grupo de N frames, siendo N un parametro configurable, metodo tambien llamado 1-in-N.

Sintaxis:
Decimate(cycle,mode,threshold,threshold2,quality,ovr,show)

cycle fija el valor de N, es decir que se elimina un frame cada N frames. Rango: 2-25 (por defecto: 5).
mode determina el modo de operacion del filtro. Rango: 0-3 (por defecto: 0).
mode=0: el filtro descarta el frame del ciclo de N frames que se determina como el mas similar a su predecesor.
mode=1: en vez de eliminar el frame detectado como duplicado, lo reemplaza por una interpolacion entre dicho frame y el siguiente, o lo deja pasar. El algoritmo elige que opcion tomar basandose en: si el ciclo de frames es de un video con pulldown 3:2 o video puro(sin frames duplicados); el valor de threshold. Este modo esta recomendado para material hibrido, es decir con partes del video con frames duplicados y partes con el frame rate puro.
mode=2: elimina un frame de la seguidilla mas larga de frames detectados como duplicados. Este modo se recomienda como el mas confiable para usar con Anime o material donde el movimiento ocurre solo en cada segundo, tercero, cuarto, etc frame.
mode=3: en vez de eliminar el frame mas similar, el filtro aplica diferentes estrategias al ciclo de frames segun sea un ciclo con pulldown 3:2 o un cliclo puro. Ciclos de video puro los procesa de forma normal. A los ciclos con duplicados se les aplica una mezcla de frames, de tal forma que de 5 frames queden 4. Hay dos factores que le permiten decidir al filtro como proceder: si el ciclo de frames es o no puro y en el valor de threshold.
Este modo es util para videos hibridos que tienen mayormente video sin frames duplicados.
threshold, valor decimal, por defecto 0.0; como se dijo en mode=1 los frames detectados como duplicados se pueden tratar de dos formas, se los interpola o se los deja pasar cuando la diferencia metrica entre frames supera el valor del threshold (siempre y cuando este sea mayor que cero). Esto es ultil porque permite configurar el filtro para que sepa que considerar como duplicado y que no en un determinado video. Para saber que valor usar se aplica la funcion show(true,false), que muestra sobre el video el valor de la diferencia metrica entre frames.
Este valor afecta mode=3 de forma similar. No sirve para mode=0.
threshold2: valor real, por defecto 3.0; en mode=2 este parametro establece cuan cerca dos frames deben estar para ser considerados duplicados
quality: entre 0 y 3, por defecto en 2, regula la calidad de la deteccion de frames duplicados. 0 es mas rapido y 3 mas lento.
ovr: acepta texto donde se especifique la ubicacion de un archivo para forzar la desicion del filtro, es decir en ciertos casos el video habra salido perfecto salvo un par de frames en donde el filtro se equivoco, entonces pueden forzar la aplicacion del filtro sobre esos frames en particular mediante un archivo de texto de extension .dec, sonde deben especificar dichos frames con su correspondiente numero, uno por renglon. Ej: ovr="C\...\anular.dec".


FDecimate
[YV12-YUY2]

Permite remover frames de un video, con el objetivo de variar la tasa de frames por segundo, sin producir desincronizacion audio/video.
La diferencia con el filtro Decimate es que permite reducir el frame rate a cualquier valor de forma eficaz, dado que no esta restringido a solo eliminar 1 frame cada tantos (metodo tambien llamado 1-in-N) sino que es capaz de detectar y eliminar los frames duplicados cuando le es posible. El metodo de 1-in-N para remover frames no puede ser utilizado cuando el proceso que se aplico para duplicar los frames en primer lugar no fue de la misma indole (ej: videos a 120FPS).

Sintaxis:
FDecimate(29.97)

Por supuesto en vez de 29.97 ponen el valor deseado.


PullDown
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Sintaxis:
PullDown(a,b)

Proceso tambien llamado telecine, se trata de representar el primer frame mediante a campos y el segundo mediante b campos, y asi se repite hasta el final del video.
Por ejemplo: un telecine 2:3 o 3:2 (a:b) modifica el framerate de 23.976 a 29.97 agregando campos duplicados, dos para el primer frame y tres para el segundo, y asi hasta el fin del video.
Usar a=0 y b=3 (0:3) es lo mismo que deshacer el pulldown 3:2 (29.97 -> 23.976).
Este ultimo no lo probe asi que ignoro si realmente funciona, aunque el pulldown 2:3 o 3:2 si debiera hacerlo sin problemas.


Oscurecimiento de Lineas

Con videos de anime como objetivo, sirven para remarcar las lineas negras.


FastLineDarken 1.3 MT MOD
[YV12]

FastLineDarknen cumple la función de marcar los bordes, dejándolos mas negros de lo normal y según mis pruebas, algo muy levemente engrosados. Ayuda bastante para bordes que se ven pálidos o se ven poco. cumple la misma función que toon, pero obviamente conlleva a artifacts por ser rápido pero no me refiero a q si se ocupa de manera común salga, todo lo contrario si se hace abuso de este como sucede con toon, saldrán los molestos puntos negros dentro de los cuerpos de los elementos.
*Nota: en espacio de color, no importa el formato que tenga el video en dicho aspecto, pues con el filtro ConvertToYV12() se anula el error de color que nos saldría en megui o virtualdub al ocupar el script, pues este nos hará la conversión a dicho formato de color. Claro que este comando debe colocarse como el primer filtro dentro del script, porque hay casos en los cuales algunos filtros no lo detectan si no esta entre los primeros.

Requerimientos: MaskTools2

Funcionamiento:

FastLineDarkenMOD(strength, luma_cap, threshold, thinning)

*Nota: en la información saldrá puesto FastLineDarken(strength, luma_cap, threshold, thinning), pues bien, debemos agregarle la frase MOD al final, de lo contrario lanzará el ejecutor del script (Megui, Virtualdub, VirtualdunMod) el error de función no existente.

strength (Fuerza): desde 0 hasta 256. Default: 48
Regula la fuerza del filtro. Representa la maxima reduccion de luminancia, es decir el maximo oscurecimiento que puede sufrir una linea.

luma_cap (Luminancia): desde 0 a 255. Default: 191
0 representa el blanco, 255 representa el negro, es decir, aquí adecuamos la cantidad de color del borde, de claro a oscuro.

threshold (Umbral): Default: 4.
No hay información certera del parámetro máximo de esta opción.
Valor de 0 inhabilita este parámetro. Se recomienda poner el valor 4, ya que hay una gran cantidad de pixeles que son marcados al azar, los cuales se oscurecen débilmente. El valor 4 viene a solucionar eso.

thinning (Adelgazamiento): desde 0 a 256. Default: 24
Cantidad de adelgazamiento opcional de la linea. El valor 0 desactiva esta función, y esto a la vez da una gran velocidad en el filtrado.

*Nota 1: hay que tener en cuenta que el adelgazamiento oscurece un poco os pixeles restantes en cada linea.

*Nota 2: se recomienda dejar thinning=0, si se pone valores mas altos que 0, y si mal no estoy es un parametro que quedo mal editado creo, el video queda completamente cubierto de una capa verde por encima, quedando los detalles por detrás. Para evitar esto dejar, como ya mencione, thinning=0.


Recuerden copiar el texto en un archivo .avs, es decir, abren el block de notas, copian el texto, lo pegan en el block de notas, van al menú archivo, luego hacen click en guardar como, colocan el nombre del filtro con extension .avs (ejemplo: FastLineDarken 1.3 MT MOD.avs) y hacen click en guardar. Si se fijan se guardará en un archivo .avs y esta listo para usarse.

Insertar CODE, HTML o PHP:
##############################
# FastLineDarken 1.3x MT MOD #
##############################
#
# Written by Vectrangle
# Didée: - Speed Boost, Updated: 11th May 2007
#
# * requires mt_masktools v2
# * requires yv12 input
#
# Usage is FastLineDarkenMOD(strength, luma_cap, threshold, thinning),
# named parameters are supported eg FastLineDarken(thinning=0)
#
# Note that you must import this avs into your script using import("...\FastLineDarken.avs")
#
# Parameters are:
# strength (integer) - Line darkening amount, 0-256. Default 48. Represents the _maximum_ amount
# that the luma will be reduced by, weaker lines will be reduced by
# proportionately less.
# luma_cap (integer) - value from 0 (black) to 255 (white), used to stop the darkening
# determination from being 'blinded' by bright pixels, and to stop grey
# lines on white backgrounds being darkened. Any pixels brighter than
# luma_cap are treated as only being as bright as luma_cap. Lowering
# luma_cap tends to reduce line darkening. 255 disables capping. Default 191.
# threshold (integer) - any pixels that were going to be darkened by an amount less than
# threshold will not be touched. setting this to 0 will disable it, setting
# it to 4 (default) is recommended, since often a lot of random pixels are
# marked for very slight darkening and a threshold of about 4 should fix
# them. Note if you set threshold too high, some lines will not be darkened
# thinning (integer) - optional line thinning amount, 0-256. Setting this to 0 will disable it,
# which is gives a _big_ speed increase. Note that thinning the lines will
# inherently darken the remaining pixels in each line a little. Default 24.
#
# Changelog:
# 1.3 - added ability to thin lines, now runs much slower unless thinning=0. Changed the defaults (again)
# 1.2 - huge speed increase using yv12lutxy =)
# - weird darkening issues gone (they were caused by yv12layer)
# - show option no longer available due to optimizations. Use subtract() instead
# 1.1 - added luma_cap option
# 1.0 - initial release
#


function FastLineDarkenMOD( clip c, int "strength", int "luma_cap", int "threshold", int "thinning")
{
## parameters ##
str = string(default(strength, 48) /128.)
lum = string(default(luma_cap, 191))
thr = string(default(threshold, 4))
thinning = default(thinning,24)
thn = string(thinning /16.)

## filtering ##
exin = c.mt_expand().mt_inpand()
diff = mt_lutxy(c,exin,yexpr="y "+lum+" < y "+lum+" ? x "+thr+" + > x y "+lum+" < y "+lum+" ? - 0 ? 127 +",uexpr="x",vexpr="x",u=2, v=2)
linemask= mt_lut(diff.mt_inpand(),"x 127 - "+thn+" * 255 +").RemoveGrain(20,-1)
thick = mt_lutxy(c, exin, yexpr="y "+lum+" < y "+lum+" ? x "+thr+" + > x y "+lum+" < y "+lum+" ? - 0 ? "+str+" * x +",uexpr="x",vexpr="x",u=2, v=2)
thin = mt_lutxy(c.mt_expand(),diff,yexpr="x y 127 - "+str+" 1 + * +",u=2, v=2)

return (thinning == 0) ? thick : mt_merge(thin,thick,linemask,y=3,u=2,v=2)
}


Toon

El filtro Toon nos ayuda prácticamente a remarcar las lineas de los dibujos animados, los bordes. Por ejemplo, si poseemos una fuente de video en donde las lineas de los bordes están o muy suavizados o simplemente no vienen con un buen marcado como corresponde, este nos ayudara a darle el realce que necesita. Recordar siempre que no se debe abusar del filtro en su parámetro, si se abusa, por ejemplo, en fuentes buenas que solo necesitan de 0.3 de parámetro, pero se le coloca 0.6, es muy probable que aparezcan puntos negros en el cuerpo del dibujo en escenas de movimiento, que es donde mas se notará, pero no se quedaran fijas, sino que saldrán en ciertos frames del video y de manera rápida, no sera constante, pero aparecerán esos defectos.

Requisitos: aWarpSharp

Como se usa:

Toon(strength)

Nota: valor máximo de strength: 1.0

Recomendados:

Toon(0.25) - Para fuentes en buen estado y que necesitan solo un marcado suave de bordes

Toon(0.30) - Para fuentes donde las lineas necesiten un poco mas de filtrado.

Toon(0.35)- Para Fuentes que necesiten marcar bastante las lineas, de bordes algo débiles

Toon(0.40) - Potencia algo mas que fuerte ya para bordes bien malas

Hice pruebas con 0.65, y ahí ya me salieron fallas como las mencionadas anteriormente, la de aparición de puntos negros en el cuerpo del dibujo, todo lo q esta dentro de los bordes, no en exceso, pero con buen ojo se nota.

ya del Toon(0.40) hacia adelante, les dejo la responsabilidad a cada uno y según su propio criterio.

Existe una version modificada del filtro aWarpSharp (ver seccion filtros sharpen), que posee mejoras de estabilidad, calidad y optimizaciones.
La version 1.1 del filtro Toon es la version 1.0 modificada para poder trabajar con la nueva version de aWarpSharp.

Efectos

AddGrainC
[YV12-YUY2-RGB]

Genera ruido tipo grano y otros efectos derivados, como por ejemplo ruido que simula la lluvia.

Sintaxis y valores por defecto:
AddGrainC(var=1.0, uvar=0, hcorr=0, vcorr=0, seed=-1, constant=false)

var y uvar: desviacion estandar para la generacion de ruido para luma y chroma respectivamente. En español: la intensidad de generacion de ruido.
hcorr y vcorr(0.0-1.0): correlacion horizontal y vertical. Aparentemente aumentar estos valores produce un efecto de suavizado.
seed>-1 implica usar una secuencia de grano que se repita, o sea a mayores valores el grano se vuelve mas estatico.
constant=true implica un grano constante a lo largo del video, es decir que un patron de grano se repita en todos los frames.

Ejemplo de efecto lluvia:
AddGrainC(var=800,vcorr=0.9)


GrainFactory3

Funcion generadora de ruido cuya intencion es simular un tipo de ruido llamado grano plateado (silver grain).
Ademas de lograr dicho efecto, introducir ruido de grano en un video puede servir para hacer mas "visibles" para el codec ciertas zonas del video donde hay muy poco detalle (ideal para zonas oscuras), y que de otra forma serian sobrecomprimidas llevando a la aparicion de los nefastos bloques.
Tambien podria servir para disimular la falta de detalle muy fino (texturas), y evitar una apariencia plastica.

Usese con precaucion, agregar ruido significa enormes perdidas de compresibilidad.

Filtros requeridos:
AddGrainC
MaskTools2

Sintaxis y valores por defecto:
GrainFactory3(g1str=13, g2str=15, g3str=25, g1shrp=60, g2shrp=66, g3shrp=80, g1size=1.50, g2size=1.20, g3size=0.90, g1tex=0, g2tex=0, g3tex=0, temp_avg=0, ontop_grain=0)

#=1 -> areas oscuras, #=2 -> areas intermedias, #=3 -> areas brillantes

g#str(0-???): intensidad de aplicacion.
g#shrp(0-100): nitidez del grano.
g#size(0.5-4.0): tamaño del grano.
g#tex(0-100): intensidad de la apariencia de textura.
temp_avg(0-100): porcentaje de uniformidad temporal. Es decir que si se usa temp_avg=100 el ruido sera estatico durante todo el video, o dicho de otra forma no variara de posicion entre frames. Valores intermedios son posibles por supuesto. El valor por defecto representa ruido completamente aleatorio.
ontop_grain(0-???): ruido adicional que se puede agregar sobre una aplicacion previa.

La aplicacion por defecto quizas produce demasiado ruido, si buscan un efecto ligero pueden probar reduciendo los valores de g#str, por ejemplo:
GrainFactory3(g1str=7, g2str=8, g3str=13)


Reverse
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Simple, se ocupa de que el video sea reproducido al reves, de atras hacia adelante.
En origen entrelazado la paridad entre campo superior e inferior se modifica.

Sintaxis:
Reverse()


Subtitulado

Subtitle
[RGB24-RGB32-YUY2-Y8-YV411-YV12-YV16-YV24]

Una instancia de este filtro (incluido con AviSynth) agrega una linea de texto fija a un determinado rango de frames. De necesitarse agregar diferentes lineas se deben usar varias instancias del filtro.
No es un filtro para subtitulado de traduccion, para ello esta VSFilter.

Sintaxis:
Subtitle(text, x=8, y=size, first_frame=0, last_frame=ultimoframedelvideo-1, font="Arial", size=18.0, text_color=$00FFFF00, halo_color=0, align=4, spc=0, font_width=pordefectodelsistema, font_angle=0.0, interlaced=false)

El texto del subtitulo va en text.
x e y son las coordenadas en las que se centra el subtitulo.
font: fuente del texto. Todas las fuentes instaladas en el sistema estan disponibles.
size: altura del texto en pixeles.
text_color(por defecto amarillo 100% opaco) y halo_color(por defecto negro 100% opaco): color del texto y color del borde del subtitulo, se fijan en codigo hexadecimal $aarrggbb , salvo por las primeras dos cifras que representan el porcentaje de transparencia, donde 00 es completamente opaco, y FF completamente transparente. Pueden usar esto ultimo para desactivar el borde.
Para elegir como se alinea al subtitulo respecto de la coordenada fijada con x e y se hace uso de align.
spc: modificar el espacio entre caracteres.
font_width: ancho de cada letra.
font_angle: angulo de inclinacion de la letra.
interlaced: activar en videos entrelazados.


VSFilter

Filtro dedicado a pegar subtitulos sobre el video. Archivos soportados: .sub, .srt, .ssa, .ass, .pcb, .smi

Sintaxis:
TextSub("C\...\subtitulos.ass") -> para archivos de subtitulos que contienen texto (SRT, SSA, ASS)

VobSub("C\...\subtitulos.sub") -> para archivos de subtitulos que contienen imagenes, como aquellos extraidos de un DVD-Video.

Descarga (buscar en DirectShow Filters -> DirectVobSub)

AnimeIVTC

Filtros y funciones necesarias
:

Pueden descargar un pack con todos los filtros y funciones necesarias AQUI.
Nota: el archivo también se encuentra adjunto al final de este mensaje.

TIVTC, TDeint y TMM
nnEDI2, EEDI2 y yadifmod
TGMCmod
MVTools2
RemoveGrain y Repair
MaskTools
MaskTools2
Vinverse
MedianBlur
srestore
Average
ReduceFlicker
SangNom
Toon
LSFmod
aWarpSharp2 y Toon-v1.1
Microsoft Visual C++
AvsRecursion

I) Sobre el telecine del anime

Aplica TComb antes de AnimeIVTC si necesitas corregir el efecto dotcrawl.

No es recomendado usar animeivtc con múltiples procesadores y/o utilizando animeivtc varias veces en el mismo script. Si necesitas usar múltiples procesadores, mira el ejemplo.

Esta función puede también trabajar con cualquier live action totalmente telecine (hard telecined), hibrido o una fuente con campos mezclados (Field Blended).

Lo primero de todo, hay que comprender algunas cosas básicas antes de leer esta guía. Aqui podéis iniciaros. Los plugins mencionados son antiguos, pero el concepto general del IVTC está bien explicado y es más que suficiente como preparación para lo que sigue. Tu puedes ignorar las secciones “Bad telecines” y “Anime” desde que AnimeIVTC() es la solución a los problemas que exponen.


Particularidades del anime:

Mientras un film es creado a 24 frames por Segundo, el anime es animado a 24 fps por lo que no hay necesariamente movimiento en todos los frames.

Cuando no hay gran cantidad de movimiento, puede ser visualizado a bajos framerates como 8 o 12 fps y con duplicación de algunos frames se puede mantener un framerate constante de 24 fps.

La ilusión de crear rápidos movimientos en partes diferentes del video es porque pueden reproducirse a diferentes framerates. En esta situación, la imagen es dividida en 2 partes (frontal y posterior) y hay muchas posibles combinaciones de “intra-frame variable framerate”. Esto no es constante en todo el episodio/película, ya que cambia dependiendo de la cantidad de movimiento que se va a mostrar.

La animación CG a 30 fps es a veces usado en anime, también puedes tener secuencias con movimiento en algunos frames sin ningún tipo de entrelazado o duplicado.

Los créditos pueden ser verdaderamente entrelazados haciéndoles desplazarse los más rápido juddery y sin ser ilegibles, lo que deja más espacio para ser mostrado

Los créditos pueden también ser totalmente progresivo en la parte frontal y telecined en la posterior.

Porque de todo esto, alguna detección automatizada (DGIndex, megui, automkv... name it!) te permitirán saber qué tipo de tratamiento tu fuente necesita para ser IVTC/desentrelazado aunque seguramente fallara. La única manera de sacar una fiable información es la siguiente…y tus ojos.

Conceptos básicos:

Soft telecined.
El flujo de frames es codificado a 24 fps y el pulldown es aplicado durante la reproducción. Se matiene un 3:2 pattern en todo el video.

Hard telecined.
Tu fuente fue telecined antes de ser codificada en el DVD( or before airing).

Double hard telecined (DHT).
Tu fuente tiene por lo menos una situación del tipo "intra-frame variable framerate" y el telecining fue aplicado separadamente de las partes del frame, por lo que el patrón no es constante y muchos frames son entrelazados.

Field blended norm-conversion.(Campos mezclados)
En lugar de transformar el video a 24fps (film rate), el flujo es directamente convertido desde NTSC (29.97fps) a PAL (25fps) o viceversa, creando una mezcla de campos desagradables (parecido al DHT cuando inspeccionamos un frame).

Hybrid.(Hibrido)
Mezcla de material telecined a 24 fps y material progresivo a 30 fps.

Truly interlaced.(Verdaderamente entrelazado)
Cada fotograma contiene la mitad de la información de los dos frames, lo que significa que pueden ser separados (método Bob) a 60 frames progresivos (veremos movimiento en cada cuadro, sin entrelazar o mezcla, tras aplicar dicha técnica).

Progressive.(Progresivo)
Sin entrelazado alguno.

3:2 pattern.
Este patrón se repite desde el principio hasta el final de su clip: 3 fotogramas progresivo seguido por 2 más entrelazado.


[*]Variable Frame Rate (VFR) - Variable Frame Rate.
Las secciones de un fragmento de una película van a framerates diferentes, así permite tener menos frames para el mismo movimiento. Los duplicados son eliminados y visualizados en la misma línea de tiempo, como si hubiese la misma cantidad de frames originales.

Lossless rendering pass
Guarde el archivo como YV12 sin comprimir o Lagarith para aplicar el script sólo una vez y posterior filtrado / codificación más rápida. Se necesita mucho espacio en disco: 5GB de alrededor de 22 minutos con clip@23.976fps y 20GB con Lagarith sin YV12.

Pulldown.
Técnica empleada en material soft telecined, para desentrelazar el video pasando de 29.97fps a 23.976fps

Ejemplos:

Double hard telecine
– Al inicio, tu fuente debe parecerse a un típico Hard Telecined , pero después de una inspección más a fondo, verá que es realmente una DHT: la misma fuente, con diferentes escenas con gran movimiento.

Interlaced on top of telecined (puede ser hard o double hard) – En este caso, la fuente fue un hard telecined.
Obviamente, dado que no hay ningún patrón de DHT y entrelazado en cada cuadro con puro material entrelazado, regular la salida IVTC mezclas de frames (blends) y sacudidas(jerkiness).


Posibles situaciones:

Para todos los casos, tú debes cargar un proyecto d2v creado en DGindex con la opción "Honor pulldown flags”. O mediante AviSynth revisar frame por frame con VirtualDub, VirtualDubMod o AvsP.

La identificación del tipo de tu fuente, si es de suma importancia, porque una mala evaluación del problemas dará lugar a otros como las mezclas y sacudidas (Blends y jerkiness). Para ello cargaremos nuestra fuente de video en el programa DGIndex, y haremos un preview apretando F5

1. DGIndex te dice "100% Film" y ves un patrón de movimiento de 3:2 pattern. En este caso nuestra fuente de video es un soft telecined, y para desentrelazar únicamente deberemos localizar y seleccionar, en el programa, la opción "Forced Film". Guarda el proyecto y olvídate del resto de esta guía. ^_^

2. DGIndex te dice "100% Film" y al inspeccionar el video, frame a frame; ves frames progresivos y entrelazados sin un patrón de movimiento especifico. Es un Double hard telecined encodeado como progresivo por lo que necesitaras utilizar la opción mode=3 en
AnimeIVTC.

3. DGIndex te dice "algo menos que 100% Film" y al inspeccionar el video, frame a frame; ves un 3:2 pattern. Este es un material del tipo Hard Telecined, utilizar la opción mode=1 en AnimeIVTC.

4. DGIndex te dice "100% Video (NTSC o PAL)" y al inspeccionar el video, frame a frame; observas que son progresivos y entrelazados, sin un patrón especifico. Es un Double hard telecined encodeado como progresivo por lo que necesitaras utilizar la opción mode=3 en AnimeIVTC.

Si observamos que los créditos (opening, ending y preview) son entrelazados y/o progresivos, debemos dirigirnos al apartado créditos entrelazados y progresivos, ya que es necesario configurar AnimeIVTC para que funcione correctamente.

5. DGIndex te dice "100% Video (NTSC)" y al inspeccionar el video, frame a frame; ves un 3:2 pattern y los créditos son entrelazados y/o progresivos. Este es un material del tipo Hard Telecined, utilizar la opción mode=1 en AnimeIVTC.

Si observamos que los créditos (opening, ending y preview) son entrelazados y/o progresivos, debemos dirigirnos al apartado créditos entrelazados y progresivos, ya que es necesario configurar AnimeIVTC para que funcione correctamente.

6. DGIndex te da un porcentaje de "Film o Video desde 50 a 95%" y al inspeccionar el video, frame a frame; ves un 3:2 pattern y secuencias progresivas (no únicamente los créditos, sino en la totalidad de los frames). En este caso, el material es hybrid y debemos seleccionar la opción mode= 4.

7. DGIndex te da un porcentaje de "Film o Video desde 50 a 100%" y al inspeccionar el video, frame a frame; ves un 3:2 pattern y secuencias progresivas (no únicamente los créditos, sino en la totalidad de los frames) y los créditos son entrelazados y/o progresivos. En este caso, el material es hybrid y debemos seleccionar la opción mode= 4.
En este caso, también deberemos dirigirnos al apartado créditos entrelazados y progresivos, ya que es necesario configurar AnimeIVTC para que funcione correctamente.


Recomiendo encarecidamente que realices un lossless rendering pass(recordemos que es guardar como archivo de video sin comprimir, mira hacia arriba si no te acuerdas) sin función alguna (y quizás algo como tcomb or jaquemate antes si tú tienes arcoíris/punto de rastreo), porque es muy lento cuando la configuración de alta calidad son usadas. Podrías también intentar bajar la calidad del filtrado... pero no queremos. Perfeccionismo ftw!! :p


II) Descripción de las funciones


AnimeIVTC (clip i, int "mode", int "aa", int "precision", int "killcomb", int "cache", bool "ifade" , bool "chrfix" , bool "blend" , bool "normconv" , int "pattern" , int "pass", bool "rendering" , int "bbob", int "cbob", string "edimode", int "degrain", int "omode" , int "i1", int "i2", int "e1", int "e2", int "e3", int "p1", int "p2" , int "overlap", int "pel", int "search", bool "nnedi2pel", string "credconv" , float "dark", int "thin", int "sharp", int "smooth", bool "stabilize", int "tradius", int "aapel", int "aaov", int "aablk", int "aatype")

Parámetros Generales (usado para todos los modos)

mode : Parámetro requerido. Define el comportamiento de la función.
• 1 : Hard telecined
• 2 : Field blended (conversión normal de campos mezclados)
• 3 : Double hard telecined
• 4 : Hibrido

Chrfix: Úsalo para corregir el intercambio de croma entre campos (para saber si se produce este problema, aplicar Bob() en el clip y examinar los frames. Si en algún punto, el croma de un frame está en el otro y viceversa, el problema está presente).

ifade : Detecta y corrige, la aparición de entrelazado. Úsalo para modo=1 o 4, ya que el clip se equilibra en el modo=2 y 3.
• True. Habilitado pues ser más seguro.
• False (por defecto). Se refiere a velocidad.

cache : Establece cierta cantidad de fotogramas en la cache para todas las funciones, mediante el uso de un script del clip para prevenir la búsqueda de fallos + cambios de orden en los frames con filtros temporales. Si utiliza demasiada cantidad, se provocara un crash, por lo que usa menos si obtienes fallos de memoria.
• 0 to inf. (por defecto=10)
killcomb : Elimina algún resto de entrelazado. Úsalo para modo=1 o 4, ya que el clip se equilibra en el modo=2 y 3.
• 0 : No elimina entrelazado
• 1 : Elimina entrelazado (por defecto)
• 2 : Lento, pero más agresivo que la opción 1.
• 3: Incluso más lento, pero la mejor preservación de detalles y nitidez. Muy parecido como aa=3 [daa()]

aa : Sin dar ningún valor a este argumento significa que tendrás que comparar los 4 métodos para seleccionar el mejor para tu fuente. Ninguno es necesariamente mejor que otro, pero uno es el que mejor se adapta a tus necesidades.
• 0 : No aa. Selecciona esta opción si prefieres llamar externamente las funciones antialiasing que se enumeran a continuación: ediaa(), daa(), SharpAAMCmod().

• 1 : AA basado en EEDI2() basado aa [puede ser llamado externamente como ediaa()]

• 2 : Hace un promedio de 2 interpolaciones espaciales manteniendo diferentes campos + un contra-sharpening(afinamiento). [puede ser llamado externamente como daa()]

• 3 : Bordes específicos Sangnom() AA – cuidado con la perdida de detalles... si puedes añadir un poco de tiempo en el procesamiento, échale un vistazo a la opción aa=4 [puede ser llamado externamente como maa()]

• 4 : Realiza varias cosas: Line darkening (remarca bordes), warp sharpening (enfoque de la imagen), edge targeted Sangnom() AA (Previene al pixelización de bordes en forma de sierra), limited sharpening (denoiser y sharpen) y estabilizador temporal [puede ser llamado externamente como SharpAAMCmod()]

Las siguientes opciones se configuran, en el caso de utilizar la opción aa=4 - [SharpAAMCmod()]

aatype : Selecciona el filtro usado para AA
• "Sangnom" (por defecto)
• "EEDI2" (lento, pero a veces tiene una mejor preservación de detalle que Sangnom)

dark : Remarca y obscurece las líneas de los bordes usando la función Toon, Da un efecto de enfoque.
• 0 a 1 (por defecto = 0.2)

thin : A mayor valor = líneas más finas, por el uso de aWarpSharp
• Por defecto = 10

sharp : Nivel de post-enfoque, realizado por LSFmod
• 0 a 100. (por defecto = 100)
• -1= La función intentara auto calcular el mejor valor

smooth : Nivel de post-suavizado, realizado por LSFmod
• 0 a 100 (por defecto = 100)
• -1 = La función intentara autocalcular un buen valor

stabilize : Estabilización de bordes a través de la compensación de movimiento (previene parpadeo), realizado por con un promedio temporal de MDegrain – úsalo si los bordes son inestables (temblor, parpadeo,…) o como un borde-dirigido inteligente soothe()
• True (por defecto)
• False

tradius : Radio temporal (# of frames*2+1) de la estabilización.
• 0 to 3 (por defecto =2)

aapel : Factor de supermuestreo para cálculos del vector de movimiento cuando usamos stabilize=true. A mayor valor = mejor, pero más lento.
• 1, 2 or 4 (por defecto =1)

aablk : Determina el tamaño de los bloques para los cálculos del vector de movimiento cuando usamos stabilize=true. Bloques más grandes son menos sensibles al ruido, son más rápidos, pero también menos precisos.
• 4, 8 or 16 (por defecto =8 para SD y 16 para HD)

aaov : Determina el solapamiento de los bloques para el cálculo del vector de movimiento cuando usamos stabilize=true. A mayor valor = mejor, pero más lento.
• Debe ser incluso y superior a la mitad de aablk (por defecto =4 para SD y 8 para HD)

Créditos entrelazados o progresivos

i1/i2/p1/p2/e1/e2/e3: Toma los números de los frames para la función, de modo que cada sección es correctamente procesada. Usa el numero de frames de tu fuente de video. No tienes que especificar todos ellos. Para ello, puedes crear un sencillo script, llamando al proyecto que se generó en DGIndex:

DGDecode_MPEG2Source("ruta del archivo.d2v")

De esta manera, podremos cargarlo en virtualdub, y examinar el numero del último frame de cada sección, para posteriormente especificarlo correctamente.

• i1 : Ultimo frame de la primera sección entrelazada del clip
• i2 : Ultimo frame de la segunda sección entrelazada del clip
• p1 : Ultimo frame de la primera sección progresiva del clip
• p2 : Ultimo frame de la segunda sección progresiva del clip
• e1 : Ultimo frame de la primera sección telecined/double hard telecined/field blended/hibrida del clip
• e2 : Ultimo frame de la segunda sección telecined/double hard telecined/field blended/hibrida del clip
• e3 : Ultimo frame de la tercera sección telecined/double hard telecined/field blended/hibrida del clip

Ejemplo:
Si una parte de un episodio es: telecined (e1) + créditos del opening entrelazados (i1) + episodio (e2) + créditos del endings progresivos (p1) + avance del próximo episodio (e3).

AnimeIVTC(mode=1, e1=500, i1=2500, e2=30000, p1=31200, e3=33000)

omode : Determina el framerate de salida
• 1 : Convierte los créditos a el framerate de el episodio para mantener un framerate constante. Norma obligatoria para las conversiones.
• 2 : Los créditos se mantienen 29.97 fps (la mitad de su completa resolución temporal) para crear un VFR clip. Obligatorio para mode=6 ya que el episodio también es hybrid. Destinados para los archivos mkv.

credconv : Determina como los créditos serán convertidos para omode=1
• “mocomp” : Usa la compensación de movimiento. Úsalo cuando tengas antecedentes de bajo movimiento para obtener una mezcla libre y estable del clip.
• "blend" : Los frames se combinan para reducir la tasa de fotogramas (framerate)

overlap : Solapamiento de los bloques para el cálculo de vectores de movimiento. A valores más altos = mejor, pero más lento. Úsalo para “mocomp”
• 0, 2 o 4 para SD (defecto=4)
• 0, 2, 4, 6 o 8 para HD (defecto=8)

pel : Factor de supermuestreo para cálculos del vector de movimiento. A mayor valor = mejor, pero más lento. Úsalo para “mocomp”
• 1, 2 o 4 (defecto=2)

search: Las pruebas son divertidas. 4 y 5 son generalmente mejor que 2 para una velocidad parecida. Úsalo para “mocomp”
• 2 (Búsqueda logarítmica, también llamada búsqueda Diamond) (defecto)
• 3 (búsqueda exhaustiva) – la más lenta, pero los mejores resultados SAD-wise (básicamente el mo-comp es hecho para calcular la suma de las diferencias absolutas entre bloques para determinar si el mismo elemento se ha movido o es diferente).
• 4 (búsqueda hexagonal – similar a x264) (default)
• 5 (Desigual multibusqueda hexagonal – similar a x264)

nnedi2pel: Usa nnEDI para interpolación. True = normalmente el mejor. Úsalo para “mocomp”
• true
• false (defecto)

pass: Crear un clip VFR, requiere dos pasadas. El archivo que debes usar para el codificado final/secuencia filtrada, debe ser la única generada por pass=2. Úsalo para omode= 2
• 1 : Ábrelo con VirtualDub, en la pestaña file selecciona “run video analysis pass”, espera hasta que termine, y luego cierra VirtualDub O haz una pasada rendering("rendering pass") del archivo AVI, para su uso posterior y evitar el cálculo de la misma cosa dos veces, una para el análisis y otra para decímate (guardando el clip filtrado en un lossless (sin perdidas)). Por ejemplo con Lagarith o HuffYUV. A esto se refiere a filtrar el video sin comprimir.
• 2 : Recarga el mismo script con pass=2. Usa el nuevo archivo AVI como fuente si hiciste el rendering pass. Después de filtrar todo, Codifica. Entonces, coge el “timecode.txt” y añádelo como timecode para la cadena de video en mkvmerge

rendering : Si hiciste un rendering pass, esto será basado únicamente VFR decimation en los archives escritos por pass=1. Usalo para omode=2 y pass=2.
• True (hiciste un rendering pass únicamente necesitas hacer decimate en pass=2)
• False (no creaste ningún archive intermedio (default)

cbob: A mayor valor = más lento, pero más preciso... Aquí, la elección es calidad frente a velocidad. Úsalo para créditos entrelazados.
• 0 : El mas rápido, solo TDeint
• 1 : Bueno (TDeint + nnedi2 para interpolación)
• 2 : Algo mejor (TDeint + nnedi2 + motion mask)
• 3 : Alternativo (Yadifmod + nnedi2 para interpolación)
• 4 : El más estable bobber - TGMC. Lento. (default)

edimode: Te dice que filtro usar para la interpolación con cbob=4. El mejor depende de tu fuente. Úsalo para créditos entrelazados.
• "yadif"
• "eedi2"
• "nnedi2" (default)

degrain: Radio temporal [(numero de fotogramas a usar X 2) + 1] para el paso final de degraining con cbob=4. Mayor valor = Más lento + más lenta eliminación de ruido + más estable. Úsalo para créditos entrelazados.
• 1 (default)
• 2
• 3

Hard Telecine (mode=1)

precision: A mayor valor= más lento, pero más preciso…Aquí, la diferencia de opciones consisten en la necesidad entre calidad y velocidad de procesamiento.
• 0 : La más rápida, pero más probabilidad de producción de efectos deja (bordes en sierra, restos de entrelazado, etc. etc.)
• 1 : Muy bueno (usa Tdeint para desentrelazar)
• 2 : Incluso mejor (Tdeint + nnedi para interpolación)
• 3 : Optimo (Tdeint + nnedi + motion mask) (defecto)

blend: Si tienes un caso de blend telecine, o imagenes blend-deinterlacing de telecined. Patrón 3:2 - 3 limpios, 2 mezclados (blended). En total debe ser 50/50.
• True
• False (default)

Field blended (mode=2)

bbob: A mayor valor = más lento, pero más preciso…Es calidad en contra de velocidad. Mo-comp NO es recomendado para material mezclado (blended), pero lo deje por si en tu caso tienes problemas de estabilidad con otros bobbers.
• 0 : El más rápido, solo TDeint
• 1 : Bueno (TDeint + nnedi2 para interpolación)
• 2 : Algo mejor (Tdeint + nnedi + motion mask)
• 3 : Alternativo (Yadifmod + nnedi2 para interpolación)
• 4 : El más estable bobber - TGMC. Lento. (default)

edimode: Le dice que filtro usar para interpolación espacial usando cbob=4. El mejor depende de tu fuente de video.
• "yadif"
• "eedi2"
• "nnedi2" (defecto)

degrain: Radio temporal [(numero de frames para usar * 2) + 1] para el último paso con cbob=4. Mayor valor = Más lento + más lenta eliminación de ruido + más estable
• 1 (defecto)
• 2
• 3

normconv: Establece true si tu fuente fue blend-converted desde PAL a NTSC o viceversa.
• True : Cambia framerate a 25 fps si la fuente es NTSC o a 23.976 fps si es PAL
• False : Mantiene 25 fps si la fuente es PAL y 23.976 si la fuente es NTSC (default)

Double Hard Telecine (mode=3)

cbob: A mayor valor = más lento, pero más preciso... Aquí, la elección es calidad frente a velocidad. Úsalo para créditos entrelazados.
• 0 : El más rápido, solo TDeint
• 1 : Bueno (TDeint + nnedi2 para interpolación)
• 2 : Algo mejor (Tdeint + nnedi + motion mask)
• 3 : Alternativo (Yadifmod + nnedi2 para interpolación)
• 4 : El más estable bobber - TGMC. Lento. (default)

edimode: Le dice que filtro usar para interpolación espacial usando cbob=4. El mejor depende de tu fuente de video.
• "yadif"
• "eedi2"
• "nnedi2" (defecto)

degrain: Radio temporal [(numero de frames para usar * 2) + 1] para el último paso con cbob=4. Mayor valor = Más lento + más lenta eliminación de ruido + más estable
• 1 (defecto)
• 2
• 3

pattern: Le dice a la función como aplicar decímate a 23.976 fps.
• 0 El más seguro. Use TDecimate(defecto)
• -1 Compara de 1 a 5
• 1 a 5. Si tu fuente tiene un patrón fijo, encuéntralo con -1 usando el apropiado será el más rápido y visualmente mejor, pero tan pronto como haya un cambio, todo será un desastre. Se cuidadoso


Hybrid (mode=4)

precision: Valor más alto = más lento, pero más preciso…La única diferencia es entre la calidad y la velocidad.
• 0 : El más rápido (bordes en sierra, entrelazado, etc. etc.)
• 1 : El mejor (usa un desentrelazador externo)
• 2 : Incluso mejor (Tdeint + nnedi para interpolación)
• 3 : Optimo (Tdeint + nnedi + motion mask) (defecto)

omode: Determina el framerate de salida
• 1 : Convierte las secciones 30p to 24p, mediante la mezcla de frames juntos, para mantener un framerate constante.
• 2 : Las secciones 30p se mantienen a 29.97 fps para crear un VFR clip. Destinados para los archivos mkv.

pass: Crear un clip VFR, requiere dos pasadas. El archivo que debes usar para el codificado final/secuencia filtrada, debe ser la única generada por pass=2. Úsalo para omode= 2
• 1 : Ábrelo con VirtualDub, en la pestaña file selecciona “run video analysis pass”, espera hasta que termine, y luego cierra VirtualDub.

Otra opción es hacer un lossless rendering pass (En VirtualDub, fast recompress y codec lossless). De esta manera, a la par que hacemos la primera pasada para el cálculo de VFR, podemos filtrar el video generando un archivo sin perdidas (lossless) para su uso posterior en la segunda pasada. Por ejemplo con Lagarith o HuffYUV. Ejemplo:

DGDecode_MPEG2source("E:\DB_23\133\133.d2v", info=3)
Animeivtc(mode=4, aa=0, omode=2, pass=1)
Lsfmod()
Toon()


Este seria, el código del script AVS con nuestro filtrado, que cargaremos en VirtualDub o MeGui. Y haríamos, un lossless rendering pass. Y creara un archivo AVI.

• 2 : Recarga el mismo script con pass=2. Usa el nuevo archivo AVI como fuente si hiciste el rendering pass. Cargas el archivo y lo codificas. A su vez se creara un archivo llamado “timecode.txt”, el cual tendras que añadirlo en mkvmerge.

Avisource("E:\DB_23\133\133.avi")
Animeivtc(mode=4, aa=0, omode=2, pass=2)


Con este código codificaríamos nuestro archivo y obtendríamos el timecodes.

rendering: Si hiciste un rendering pass, esto será basado únicamente VFR decimation en los archives escritos por pass=1. Úsalo para omode=2 y pass=2.

• True (hiciste un rendering pass únicamente necesitas hacer decimate en pass=2)
• False (no creaste ningún archive intermedio (default)


AnimeIVTC es fácil de usar… si tienes preguntas después de leer el manual, por favor postéalas en nuevo hilo en el subforo de Edicion de Video.
Aquí hay manera de multiprocesado, pero puedes usar el concepto de diferentes maneras (cargando desde diferentes discos duros + salida a diferentes discos duros y así sucesivamente). Solo he utilizado 3 núcleos, porque fue demasiado para la fuente del disco duro, incluso cuando se escribe a 4 diferentes. NO utilizarlo para codificar VFR, donde el análisis y la decimation debe hacerse de un sola vez.

xxxsource("file.ext")

AnimeIVTC([Settings])

threads = 3

x=(framecount()/threads)

A=trim(0,x)
B=trim(x+1,2*x)
C=trim(2*x+1,0)

A#Carga éste script en virtualdub y guardalo como rendering1. Despues cambia A por la B, guardalo en otro script y abrelo en virtualdub y guardalo como rendering2, idelamente en otro disco duro... etc. De esta manera tendriamos tres instancias de virtualdub trabajando a la vez, y reduciendo el tiempo de codificacion por tres.

#Despues de codificar las tres partes, carga los diferentes archivos, mediante otro script como este:
#a=avisource(rendering1 file with path)
#b=avisource(rendering2 file with path)
a+b+.....#Con este script ya podriamos comprimir el video.

Recordad que un filtrado rendering, consiste en cargar un script en virtualdub, seleccionar la opcion FAST RECOMPRESS, y elegir un codec de compresion sin perdidas, ya sea Lagarith o Huffyuv
 
Estado
Cerrado para nuevas respuestas
Arriba Pie