ConvertToRGB
(clip [,
string "matrix"] [, bool "interlaced"])
ConvertToRGB24
(clip [, string
"matrix"] [, bool "interlaced"])
ConvertToRGB32
(clip [, string
"matrix"] [, bool "interlaced"])
ConvertToYUY2
(clip [, string
"matrix"] [, bool "interlaced"])
ConvertToYV12
(clip [, string
"matrix"] [, bool "interlaced"])
ConvertBackToYUY2
(clip [, string
"matrix"])
matrix: par défaut sur la valeur unspecified (non-spécifiée). Contrôle les coefficients de couleur et les facteurs d'échelle utilisés dans les conversions RGB - YUV.
interlaced: par défaut sur false (faux). Utilise un profil entrelacé pour les conversions de chrominance YV12 - YUY2/RGB.
Avant v2.50, Avisynth pouvait gérer en interne deux espaces
de couleur:
RGB et YUY2. A partir de v2.50, AviSynth gère un
troisième espace de couleur: le YV12. Ces filtres permettent de
passer de l'un à l'autre. Si la video est déjà
dans le format demandé, elle est transmise sans être
modifiée. Dans toute cette documentation, le terme RGB
désigne en fait RGBA = RGB32. ConvertToRGB
converti en RGB32
sauf si votre clip est en RGB24. Si vous avez besoin de RGB 24-bit pour une quelconque raison, utilisez ConvertToRGB24
explicitement et ConvertToRGB32
pour faire le contraire.
La syntaxe et le fonctionnement de ConvertToRGB24
est identique à celui de ConvertToRGB
, sauf que le format de sortie est en 24-bit. Si la source est en RGB32, le canal alpha sera supprimé.
Depuis v2.51/v2.52 l'option facultative interlaced a été ajoutée (interlaced=false (faux) est le paramètre par défaut). Quand ce paramètre est sur false (faux), cela veut dire que le clip est progressif, quand il est sur true (vrai), cela veut dire que le clipest entrelacé. Voici un exemple qui montre pourquoi cette option à été rajoutée (on suppose au départ que le clip est en YV12 et qu'il est entrelacé):
SeparateFields(clip)Le clip sera mal rééchantillonné. C'est mieux d'utiliser la commande suivante:
ConvertToYV12
Weave
ConvertToYV12(clip, interlaced=true)Notez que interlaced=true ne fonctionne que si une conversion YV12 <-> YUY2/RGB est demandée; dans les autres cas, elle est ignorée. Vous pouvez en savoir plus en consultant "Conversions de couleurs et video entrelacé / basé sur des champs" (en anglais).
Contrairement à ce que l'on pourrait penser, il n'y a pas une façon unique d'effectuer la conversion de l'espace YUV en RGB. Dans AviSynth, les deux lesfaçons les plus utilisées sont implémentées: Rec.601 et Rec.709 (nom des spécifications officielles). Bien que ça ne soit pas correct dans tout les cas, les commandes suivantes devrait être correctes dans la plupart des cas:
La première méthode (Rec.601) doit être utilisée quand votre source est de type DivX/XviD ou sur une capture analogique:
ConvertToRGB(clip)
La seconde méthode (Rec.709) doit être utilisée si votre source est de type DVD ou HDTV:
ConvertToRGB(clip, matrix="rec709")
Dans v2.56, le contraire est également possible:
ConvertToYUY2(clip, matrix="rec709") or ConvertToYV12(clip, matrix="rec709")
Dans v2.56, matrix="pc.601" (et matrix="pc.709") vous permettent de faire la conversion RGB <-> YUV en conservant la plage de luminance, c'est à dire RGB [0,255] <-> YUV [0,255] (à la place de la conversion habituelle/par défaut RGB [0,255] <-> YUV [16,235]).
Tout les filtres VirtualDub (chargés avec la commande LoadVirtualdubPlugin
, voir
Plugins) utilisent une entrée en RGB32.
RGB24, RGB32: Les valeurs sont enregistrées en tant que valeurs rouge, vert et bleu. En RGB32, il y a un canal Alpha en plus pour la transparence. Les image peuvent avoir n'importe quelle taille.
YUY2: L'image est enregistrée comme la combinaison d'une valeur de luminance Y et de deux valeurs de chrominance U et V. Pour deux pixels horizontaux, il y a seulement une valeur de chrominance et deux valeurs de luminance (deux Y, une U, une V). La largeur doit donc être multiple de 2
YV12: Même chose que pour YUY2, mais il y a seulement une valeur de chrominance pour 4 pixels (un carré 2x2). les deux dimensions de l'image doivent donc être un multiple de 2. Si la video est entrelacée, la hauteur doit être multiple de 4 parce que le carré 2x2 est pris sur un champ et pas sur une image.
Certaines fonctions vérifient les dimensions des images, certaine arrondissent les valeurs, il peut donc y avoir certaines parties de l'image avec des distorsions ou des erreurs.
Travailler en YUY2 est plus rapide qu'en RGB. YV12 est encore plus rapide que YUY2 et est de plus le format natif du format MPEG; il y a donc moins de conversions d'espaces de couleurs.
Ces conversions ne sont pas sans pertes, utilisez en donc le moins
possible. Si des conversions multiples sont absolument
nécessaires, utilisez ConvertBackToYUY2
pour revenir en YUY2 si votre source à déjà été dans ce format.
Cela réduira le lissage des couleurs, mais il y aura toujours un peu de perte de détail.
Dans la plupart des cas, le filtre ConvertToRGB
n'est
pas nécessaire. Si AviSynth renvoie une image dans le format
YUY2 et qu'une application attend du RGB, un codec YUY2 du
système déjà installé fera la conversion.
Cependant, si aucun codec YUY2 n'est installé, ou bien si le
codec converti mal (comme c'est le cas avec les codecs ATI et
d'autres), vous pouvez utiliser le filtre interne d'AviSynth à
la place.
Huffyuv
agit comme le codec YUY2 si aucun autre codec n'est installé.
Donc, si vous installez Huffyuv ET desinstallez tout les autres codecs
YUY2, vous n'aurez jamais besoin de ConvertToRGB
.
ConvertToRGB24
et ConvertToRGB32
peuvent
être utilisés pour forcer
AviSynth à utiliser une méthodes spécifique pour
enregistrer les données RGB. Les données RGB24 sont
souvent plus lentes à traiter que les données RGB32,
donc si votre source est en RGB24, vous pouvez gagner de la vitesse en
convertissant en RGB32. Il n'y a aucun avantage à utiliser le
RGB24 sauf avec TMPGEnc et VFApi qui demandent ce format en
entrée.
# Il existe une légère distorsion créée par la conversion entre YUV et RGB.
# Voyons si nous pouvons la voir.
control = ConvertToYUY2()
test = ConvertToYUY2(ConvertToRGB(ConvertToYUY2(ConvertToRGB(control))))
test = ConvertToYUY2(ConvertToRGB(test))
return Subtract(test,control)
$English date: 2004/12/05 22:31:44 $
French translation date: 2005/11/05 JasonFly macpaille@users.sourceforge.net