#!/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...                                                                                #



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.