AssumeFPS

AssumeFPS (clip, float fps, bool "sync_audio")
AssumeFPS (clip, int numerator [, int denominator], bool "sync_audio")
AssumeFPS (clip1, clip2, bool "sync_audio")

Le filtre AssumeFPS change le taux de rafraîchissement des images par seconde (framerate) sans changer le nombre d'images du clip (entraînant une accélération ou un ralentissement de la lecture). Ce filtre modifie seulement le paramètre framerate du clip.
Si le paramètre sync_audio est true (vrai), le filtre change également le taux d'échantillonnage du flux audio, le pitch du flux audio résultant est donc différent.

Cela peut être une méthode pour changer le taux d'échantillonnage du flux audio seulement.

Dans v2.55, si clip2 est indiqué, le framerate de clip1 est ajusté pour être égal à celui de clip2. C'est utile lorsque vous voulez joindre deux clip avec des framerate presque identiques.

Exemple: conversion PAL et 4% Telecine

AVISource("FILM_clip.avi") # Charge un clip à 24 images par secondes.
LanczosResize(768,576) # Redimenssionnement au format d'image PAL avec pixel carrés.
AssumeFPS(25, 1, true) # Conversion du framerate en PAL, et ajuste également l'audio.
SSRC(44100) # Rétablis le taux d'échantillonnage audio à une valeur courante.

L'accélération de +4% est en général utilisée pour afficher des films à 24 images par seconde sur des télévision au format PAL. Cela entraîne une augmentation de la hauteur et du tempo du flux audio mais c'est généralement assez bien toléré par les spectateurs.

AssumeScaledFPS

AssumeScaledFPS (clip, int "multiplier", int "divisor", bool "sync_audio")

Le filtre AssumeScaledFPS applique un facteur d'échelle à un framerate sans changer le nombre d'images. Le numérateur est multiplié par le multiplicateur, le dénominateur est multiplié par le diviseur, le FPS (nombre d'images par seconde) rationnel obtenu est normalisé; si le numérateur ou le dénominateur du résultat dépasse 31 bits, le résultat est arrondi et se voit appliquer un facteur d'échelle. Cela permet d'appliquer correctement un facteur d'échelle rationnel au FPS d'un clip. 

Si sync_audio est true (vrai), le filtre change également le taux d'échantillonnage du flux audio du même facteur que la video; le pitch du flux audio résultant est donc différent. 

Disponible dans v2.56.

ChangeFPS

ChangeFPS (clip, float fps, bool "linear")
ChangeFPS (clip, int numerator [, int denominator], bool "linear")
ChangeFPS (clip1, clip2, bool "linear")

ChangeFPS change le taux de rafraîchissement des images par seconde (framerate) en supprimant ou en dupliquant des images.

Jusqu'à v2.05, la video était tronquée ou remplie pour conserver la vitesse de lecture et le temps de lecture (le nombre d'image était inchangé). Dans les versions suivantes, son comportement a été changé et le nombre d'images est augmenté ou diminué de la même manière que dans la fonction ConvertFPS.

Dans v2.54, une option linear = true/false (vrai/faux) a été ajouté à ChangeFPS. Cela indique à AviSynth de demander les images de manière linéaire quand il saute des images. Ce paramètre est par défaut fixé à la valeur true (vrai).

Dans v2.56, si clip2 est présent, le framerate de clip1 est ajusté pour correspondre à celui de clip2.

Exemple: conversion PAL->NTSC

AVISource("PAL_clip.avi") # Charge le clip
Bob(height=480) # Sépare les champs et fait une interpolation pour obtenir la hauteur complète de l'image
BicubicResize(640,480) # Redimenssionnement au format d'image NTSC avec pixels carrés
ChangeFPS(60000, 1001) # Conversion du nombre de champs par seconde PAL à NTSC en dupliquant certains champs
SeparateFields.SelectEvery(4,0,3) # Etape inverse à la fonction Bob (avec le champ paire en premier). Utilisez SelectEvery(4,1,2) pour obtenir le champ impaire en premier
Weave # Mélange des champs pour finir l'étape inverse à la fonction Bob

Cela agit comme le procédé connu sous le nom de "3-2 telecine pull down". Les habitués à visualiser des video PAL pourraient noter des sursauts dans les mouvements que les spectateurs NTSC ignorent aisément comme pour les films telecinés.

ConvertFPS [yuy2]

ConvertFPS (clip, float new_rate, int "zone", int "vbi")
ConvertFPS (clip, int numerator [, int denominator], int "zone", int "vbi")
ConvertFPS (clip1, clip2, int "zone", int "vbi")

Nécessite une entrée en YUY2.

Ce filtre essaye de convertir le framerate de clip au new_rate (nouveau framerate) sans supprimer ni ajouter d'images, en produisant une conversion douce comme le font des boîtiers externes de conversion. La sortie aura (approximativement) la même durée que clip, mais le nombre d'image changera de manière proportionnelle au ratio entre les framerates de la source et de la cible.

Dans v2.56, si clip2 est présent, le framerate de clip1 est ajusté pour correspondre à celui de clip2.

Le filtre procède de deux manières. Si l'argument optionnel zone n'est pas indiqué, il mélangera les images adjacentes, en attribuant un poids à l'image proportionnel au timing relatif (mode "mélange"). Si l'argument zone est présent, il changera d'une image à la suivante (mode "changement") quand une nouvelle image commence; qui correspond habituellement au milieu d'une image cible. Le mode "changement" suppose que la sortie sera affichée sur un moniteur TV où l'image est parcourue du haut vers le bas. Le paramètre zone précise la hauteur de la région de transition à utiliser pour le mélange de l'image actuelle avec la suivante.

Le mode de mélange (Blend Mode) provoquera un flou visible, quoique léger, pendant les mouvements. C'est un des effets typiques des conversions de taux de rafraîchissements et on peut même observer ce phénomène sur des videos commerciales ou sur des programmes TV. En présence d'une source entrelacée, il est important de laisser le filtre agir sur les champs séparément plutôt que sur l'image entrelacée (voir l'exemple ci dessous).

Le mode "changement" (Switch Mode) est une tentative pour éviter le flou pendant les mouvements, mais cela amène en revanche un sautillement de l'image et quelques artefacts visuels. Les travelling horizontaux et verticaux peuvent par exemple produire un léger tremblement. Avec ce type de conversion, les lignes verticales de l'image affichée seront "interrompues" avec une image fixe ou "incurvées" dans des scènes mobiles. Les changements de scènes peuvent intervenir au milieu d'une image. Cependant, le résultat est réellement moins flou qu'en utilisant le mode "mélange". 

Aucun de ces deux modes n'est parfait. Celui à choisir dépend de vos préférences personnelles et du type de matériel à convertir. Le mode "changement" peut paraître approprié si vous pensez envoyer le résultat sur un écran TV et pas sur un écran PC.

Les conversions de taux de rafraîchissement sont intrinsèquement difficiles. Ce filtre utilise deux des méthodes habituellement utilisées par des produits commerciaux de conversion. Les résultats sont habituellement assez bons. Les systèmes plus évolués utilisent des algorithmes de compensation de mouvement, qui sont bien plus difficiles à concevoir. S'ils sont bien conçus, les résultats sont meilleurs.

Une video convertie avec cette fonction ne doit pas être convertit une nouvelle fois. L'effet de flou s'accentuerait de façon exponentielle, produisant une video de piètre qualité.

Les données audio ne sont pas transformées par ce filtre. Les données audio seront synchronisées, bien que la durée des données audio puisse être légèrement différentes des durées des données video après conversion. Cela vient du fait que la sortie ne peut contenir qu'un nombre entier d'images. Cet effet sera plus prononcé avec des video courtes. La différence de longueur des durées doit être ignorée.

Paramètres:
new_rate Taux de rafraîchissement cible. Il peut être un entier ou un nombre à virgule. Dans le mode "mélange" (blend), new_rate doit être au moins de 2/3 (66.7%) du taux de rafraîchissement de la source, ou une erreur se produira. Ceci est pour éviter le saut de certaines images. Si vous devez ralentir votre vidéo plus que cela, utilisez le mode de "changement" (switch).
zone (Optionnel) S'il est spécifié, le filtre passe en mode "changement" à la place du mode "mélange". C'est un entier supérieur ou égal à zéro. S'il est égal à zéro, le filtre  produira un changement brutal, c'est à dire qu'il affichera immédiatement l'image suivante après la ligne de changement. Si cette valeur est supérieure à zéro, ce paramètre indique le nombre de ligne à utiliser pour la zone de transition, dans laquelle une image est progressivement mélangée avec la suivante. zone=80 donne de bon résultats pour une vidéo pleine résolution ((480/576 lignes). La transition est effectuée de la même manière qu'avec la fonction PeculiarBlend(). zone doit être moins grand ou égal au nombre de lignes de l'image de sortie qui corresponds à la durée de l'image source. Cela correspond habituellement à 5/6 ou 6/5 de la hauteur cible, c'est à dire quelques centaines de lignes. Une erreur se produit si vous choisissez une valeur trop grande.
vbi (Optionnel) Dans le mode "changement", ce paramètre indique que le filtre doit appliquer une correction de temps pour compenser le "vertical blanking interval" (VBI, correspond au temps mit par le canon à électron d'un écran à tube cathodique pour revenir en haut de l'écran quand il à fini d'afficher une image). C'est un entier supérieur à zéro, indiquant la hauteur (en lignes) du VBI de l'image cible. Habituellement, vbi=49 pour PAL et vbi=45 pour NTSC, mais ces valeurs ne sont pas critiques. Ce paramètre est ignoré en mode "mélange".

Exemple: conversion NTSC->PAL

AVISource("NTSC_clip.avi") # Chargement du clip
Bob(height=576) # Séparation des champs et interpolation pour obtenir la la hauteur complète de l'image
BicubicResize(768,576) # Redimmensionnement au format d'image de pixels carré PAL. (720,576 pour le CCIR (Consultative Committee for International Radio))
ConvertFPS(50) # Convertit le taux de rafraîchissement des champs à celui du format PAL, en utilisant le mode "mélange"
SeparateFields.SelectEvery(4,0,3) # Etape inverse à la fonction Bob (avec le champ paire en premier). Utilisez SelectEvery(4,1,2) pour obtenir le champ impaire en premier
Weave # Mélange des champs pour finir l'étape inverse à la fonction Bob

Cet exemple marcherait également avec une source NTSC basée sur des images, et même avec une source telecine. Cependant, pour une source de type "film", vous obtiendrez de meilleurs résultats en utilisant un filtre inverse-telecine en accélérant le taux de rafraîchissement des images de 23.976 à 25 images par seconde.

Notez que tout les paramètres sont contrôlés pour vérifier leur "bon sens".

Changements:

v2.56 ajout de AssumeScaledFPS
v2.56 ajout de l'option clip2 à ChangeFPS
v2.55 ajout de l'option clip2 à AssumeFPS
v2.54 ajout de linear=true/false à ChangeFPS

$English date: 2005/05/14 19:53:55 $
French translation date: 2006/01/23 JasonFly macpaille@users.sourceforge.net