#!/bin/csh
#######################################################################################################################################
# #
# E N T R E L A C A G E D E S I M A G E S D ' U N E A N I M A T I O N : #
# #
# #
# Utilisation : #
# #
# $xci/entrelace.01$Z <nom_animationA> <nom_animationR> <premiere> <derniere> [<postfixe>] #
# #
# #
# Principe : #
# #
# Lorsque qu'une image est diffusee en video (au #
# format 'Pal' par exemple), elle est composee d'une #
# trame "impaire" et d'une trame "paire" : #
# #
# IMAGE = (IMPAIRE,PAIRE). #
# #
# Soit alors une sequence d'images S(n) ; en notant #
# 'I(i)' et 'P(i)' les trames impaires et paires de #
# l'image 'S(i)', on : #
# #
# S = [(I(1),P(1)],[(I(2),P(2)],...,[(I(i),P(i)],...,[(I(n),P(n)] #
# #
# les instants etant : \ / \ / \ / \ / #
# \ / \ / \ / \ / #
# t+0 t+1 t+i t+n #
# #
# (ou 't+i' indique l'instant associe a l'image 'S(i)', ou l'on #
# suppose que les trames 'I(i)' et 'P(i)' sont calculees pour #
# le meme instant 't+i', puiqu'en effet, la notion de trame #
# "impaire" et "paire" n'existe pas au niveau des calculs...) #
# #
# A partir de la on genere une sequence Z(n/2) donnant #
# une version entrelacee de S(n) suivant la regle : #
# #
# Z = [(I(1),P(2)],[(I(3),P(4)],...,[(I(i),P(i+1)],...,[(I(n-1),P(n)] #
# #
# les instants etant : #
# \ /\ / \ /\ / \ /\ / \ /\ / #
# t+0 t+1 t+2 t+3 t+i-1 t+i t+n-1 t+n #
# #
# auquel cas, les trames 'I(i)' et 'P(i+1)' associees a #
# l'image 'Z((i+1)/2)' correspondent bien a des instants #
# successifs... #
# #
# #
# Author of '$xci/entrelace.01$Z' : #
# #
# Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss). #
# #
#######################################################################################################################################
set sequenceA=$1
set sequenceR=$2
set premiere=$3
set derniere=$4
set postfixe=$5
set horizontal=VRAI
FileTmpB nomI
FileTmpB nomP
# Generation de noms temporaires pour les "mires" d'entrelacage, #
FileTmpB nomTI
FileTmpB nomTP
# Generation de noms temporaires pour les images intermediaires... #
$xci/init$X n=$NOIR $formatI | $xci/entrelace$X R=$nomI horizontal=$horizontal impairs=VRAI $formatI
$xci/init$X n=$NOIR $formatI | $xci/entrelace$X R=$nomP horizontal=$horizontal impairs=FAUX $formatI
# Generation des mires d'entrelacage. #
set liste=`$xci/nombres$X A="$K_VIDE" p=$premiere d=$derniere pas=1`
# Recuperation de la liste des images a entrelacer... #
set numero=$premiere
# Numero des images de la sequence Resultat. #
set impaire=$EXIST
# Indicateur en bascule permettant de savoir quelles trames on traite, sachant que l'on #
# commence sur la trame impaire... #
foreach image ($liste)
if ($impaire == $EXIST) then
# Cas ou la trame courante a generer est "impaire" : #
$xci/and$X A1=$sequenceA$image$postfixe A2=$nomI R=$nomTI $formatI
# Recuperation des lignes de la trame impaire... #
set impaire=$NEXIST
# La trame suivante a generer sera "paire". #
else
# Cas ou la trame courante a generer est "paire" : #
$xci/and$X A1=$sequenceA$image$postfixe A2=$nomP R=$nomTP $formatI
# Recuperation des lignes de la trame paire... #
set Numero=`$xci/nombres$X A="$K_VIDE" p=$numero d=$numero pas=1`
# Recuperation de la liste des images a entrelacer... #
$xci/or_02$X A1=$nomTI A2=$nomTP R=$sequenceR$Numero$postfixe $formatI
# Multiplexage des lignes impaires et paires du couple '$sequenceA' courant... #
@ numero = $numero + 1
# Preparation du numero de l'image suivante a generer... #
set impaire=$EXIST
# La trame suivante a generer sera "impaire". #
endif
end
FileTmpE nomTP
FileTmpE nomTI
# Nettoyage... #
FileTmpE nomP
FileTmpE nomI
# Nettoyage... #