## ConvertToRGB / ConvertToRGB24 / ConvertToRGB32
ConvertToYUY2 / ConvertBackToYUY2 / ConvertToYV12

`ConvertToRGB` (clip [, string "matrix"], bool "interlaced")
`ConvertToRGB24` (clip [, string "matrix"], bool "interlaced")
`ConvertToRGB32` (clip [, string "matrix"], bool "interlaced")
`ConvertToYUY2` (clip, bool "interlaced")
`ConvertBackToYUY2` (clip, bool "interlaced")
`ConvertToYV12` (clip, bool "interlaced")

AviSynth prima della v2.5 lavorava con 2 formati di colore, RGB e YUY2. A partire dalla v2.5 AviSynth può lavorare con un terzo formato colore, YV12. Questi filtri convertono fra loro questi formati. Se il video è già nel formato specificato , non subirà cambiamenti. (si presuppone che RGB sia RGBA.) `ConvertToRGB` converte in RGB32 a meno che il clip sia RGB24. Se per qualche ragione ci fosse bisogno di RGB 24-bit, si usi in modo esplicito `ConvertToRGB24` e `ConvertToRGB32` per fare il contrario.

La televisione Standard e quella ad alta definizione usano differenti routine di conversione del colore. Se la sorgente è high definition e si vuole convertire da YUV a RGB si deve usare

    ConvertToRGB(clip, "rec709", true) o ConvertToRGB(clip, "rec709", false) # in funzione del fatto che la sorgente sia interlacciata o progressiva

in caso contrario

    ConvertToRGB(clip, true) o ConvertToRGB(clip, false) # in funzione del fatto che la sorgente sia interlacciata o progressiva

A partire dalla v2.51/v2.52 è stato aggiunto il parametro optionale interlaced (interlaced=`false` è il default). Quando impostato a false si assume che il clip sia progressivo, quando impostato a true si assume che il clip sia interlacciato. Questa optione è stata aggiuta in quanto (assumendo che il clip sia interlacciato YV12):

    SeparateFields(clip)
    ConvertToYV12
    Weave

è campionato in modo errato. Al suo posto è meglio usare:

    ConvertToYV12(clip, interlaced=true)

Tutti i filtri di VirtualDub (caricati con `LoadVirtualdubPlugin`, vedere Plugins) supportano SOLO input RGB32.

RGB24, RGB32: I colori sono memorizzati come valori di red, green e blue. In RGB32 c'è un canale extra "Alpha" per l'opacity. Le dimensioni delle immagini possono assumere qualsiasi valore.

YUY2: L'immagine è memorizzata come un valore Y del luma e 2 valori di colore U, V. Per 2 pixels orizzontali ci sono un solo valore di chroma e due valori di luma (2 Y, 1 U, 1 V). Per questa ragione la larghezza deve essere multipla di 2.

YV12: Stessa cosa di YUY2 ma c'è un solo valore di chroma per 4 pixels (un quadrato 2x2). Entrambe le dimensioni dell'immagine devono essere multiple di 2, se il video è interlacciato l'altezza deve essere un multiplo di 4 perchè il quadrato 2x2 è preso da un field, non da un frame.

Alcune funzioni testano le regole di dimensionamento, alcune arrotondano i parametri, ce ne sono altre che generano una distorsione dell'immagine o un errore.

Lavorare in YUY2 è più veloce che in RGB. YV12 è perfino più veloce edè il formato nativo MPEG, sicchè vi sono meno conversioni di colorspace.

La conversione avanti e indietro non è senza perdite , sicchè si facciano meno conversioni possibile. Se fossero necessarie conversioni multiple , si usi `ConvertBackToYUY2` per ritornare in YUY2, se il sorgente originario era YUY2. Questo ridurrà il colorblurring, ma ci sarà comunque una perdita di precisione.

In molti casi, il filtro `ConvertToRGB` non dovrebbe essere necessario. Se l'output di AviSynth è in formato YUY2 ed una applicazione si aspetta RGB, il sistema userà per fare la conversione il codec YUY2 installato. Tuttavia, se non c'è un codec YUY2 installato o se (come nel caso del codec ATI YUY2) il codec converte da YUY2 in RGB in modo sbagliato, si possono usare al posto suo i filtri built-in in Avisynth.

Huffyuv opera come se fosse il solo codec YUY2 installato, sicchè se si installa Huffyuv e si disinstallano tutti gli altri codec YUY2, non c'è più bisogno di `ConvertToRGB`.

`ConvertToRGB24` e `ConvertToRGB32` possono essere usati per costringere AviSynth ad usare un modo specifico per memorizzare dati RGB . RGB24 è spesso molto più lento di RGB32, sicchè se la sorgente è RGB24, si può guadagnare in velocità convertendo in RGB32. Non ci sono vantaggi ad usare RGB24 eccezion fatta per TMPGEnc e VFApi che richiedono input RGB24).

    # C'è una leggera distorsione causata dalla conversione tra YUY2 e RGB.
    # Vediamo se possiamo trovarla.
    control = ConvertToYUY2()
    test = ConvertToYUY2(ConvertToRGB(ConvertToYUY2(ConvertToRGB(control))))
    test = ConvertToYUY2(ConvertToRGB(test))
    return Subtract(test,control)

`$Date: 2004/09/26 19:49:40 $`