#!/bin/csh

#######################################################################################################################################
#                                                                                                                                     #
#         C O N V E R S I O N   ' $MPEG '   D ' U N E   L I S T E   D ' I M A G E S  :                                 #
#                                                                                                                                     #
#                                                                                                                                     #
#         Utilisation :                                                                                                               #
#                                                                                                                                     #
#    $xci/Gen_MPEG$vv$Z  <Racine_images> <premiere> <derniere> <palette> <FluxResultat> [<Rep> [<Quality> [<Signature> [<Pas>]]]]     #
#    $xci/Gen_MPEG$vv$Z  <Racine_images> <premiere> <derniere>    RVB    <FluxResultat> [[<Rep> <Quality> [<Signature> [<Pas>]]]]     #
#                                                                                                                                     #
#                                                                                                                                     #
#         Nota :                                                                                                                      #
#                                                                                                                                     #
#                     On notera que la sequence peut etre                                                                             #
#                   aussi bien generee en marche avant                                                                                #
#                   (premiere < derniere) qu'en marche                                                                                #
#                   arriere (premiere > derniere)...                                                                                  #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xci/Gen_MPEG$vv$Z' :                                                                                            #
#                                                                                                                                     #
#                     Jean-Francois COLONNA (LACTAMME, 20030601155958).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

commandeX $FFMPEG
                                        # Introduit le 20180718163153 (a cause de certaines MACHINEs '$CMAP28' sur lesquelles cette   #
                                        # commande n'est pas installee...).                                                           #

set       RacineP=($1)
set       premiereI=$2
set       derniereI=$3
set       Palette=$4
set       FluxResultat=$5
set       ListeRepetitions=($6)
                                        # La liste optionnelle des repetitions a ete introduite le 20180209082546...                  #
set       Quality=$7
                                        # La possibilite de changer la qualite (afin de changer la taille du fichier '$FluxResultat') #
                                        # a ete introduite le 20030603092445. A titre d'exemple en passant de 100 a 20 pour le        #
                                        # parametre '$Quality', la taille du fichier '$FluxResultat' est divisee par 9 (resultat      #
                                        # obtenu avec les 16 premieres images de celles qui ont generees 'v $xiad/MORL.52$MPEG').     #
set       Signature=$8
                                        # La possibilite de signer les animations a ete introduite le 20030602165057.                 #
set       Pas=$9
                                        # Pas de parcours de la liste sequentielle des images.                                        #

set       Racine=$RacineP[1]
                                        # Recuperation de la racine...                                                                #

if        ("$ListeRepetitions" == "$K_VIDE") then
          @         NoMbRe_ImAgEs = $derniereI - $premiereI
          @         NoMbRe_ImAgEs = $NoMbRe_ImAgEs + 1

          set       ListeRepetitions=`GenListe $NoMbRe_ImAgEs 1`
                                        # Par defaut, chaque image ne sera repetee qu'une seule fois...                               #
else
endif

@         NRacine = $derniereI - $premiereI
@         NRacine = $NRacine + 1

if        ($NRacine != $#ListeRepetitions) then
          EROR      "La liste des images et celles des repetitions n'ont pas le meme nombre d'elements."
else
endif

setArgum  Quality                       100
                                        # Par defaut, la qualite maximale est demandee...                                             #

setArgum  Signature                     FAUX
                                        # Par defaut, les animations ne sont pas signees...                                           #

setArgum  Pas                           1
                                        # Lorsque cet argument est absent, on lui donne la valeur '1' parce que c'est la valeur la    #
                                        # plus logique (qui etait aussi la valeur implicite anterieure...).                           #

switch    ("$mHOTE")
                                        # Definition de la qualite (introduit le 20180604171740...).                                  #
                                        #                                                                                             #
                                        # Discrimination des differentes MACHINEs possibles :                                         #
     case "$CCVR11":
     case "$CCVR12":
     case "$CCVR13":
     case "$CCVR14":
     case "$CCVR21":
     case "$CMAP21":
     case "$CMAP22":
     case "$CMAP23":
     case "$CMAP24":
     case "$CMAP25":
     case "$CMAP26":
     case "$CMAP27":
     case "$CMAP28":
     case "$CMAP29":
     case "$EDFR12":
     case "$EDFR13":
     case "$EDFR14":
     case "$EDFR15":
     case "$EDFR21":
     case "$EDFR22":
     case "$EDFR22h":
     case "$IDRI11":
     case "$IDRI21":
     case "$INFO11":
     case "$INFO21":
     case "$INFO22":
     case "$INFO23":
     case "$INFO24":
     case "$INFO25":
     case "$INFO26":
     case "$LACT11":
     case "$LACT12":
     case "$LACT14":
     case "$LACT15":
     case "$LACT16":
     case "$LACT17":
     case "$LACT18":
     case "$LACT19":
     case "$LACT71":
     case "$LACT21":
     case "$LACT22":
     case "$LACT23":
     case "$EDFR11":
     case "$HOME11":
     case "$LACT27":
     case "$LACT28":
     case "$LACT29":
     case "$LHYX11":
     case "$LINX11":
     case "$LINX12":
          saut
#20190316222700____:          ATTENTION "Sur ces MACHINEs, la qualite du $K_QS$K_DOLLAR""MPEG$K_QS genere n$K_QS""est pas garantie."  #
ATTENTION "Sur cette MACHINE, la qualite du $K_QS$K_DOLLAR""MPEG$K_QS genere n$K_QS""est pas garantie : utiliser $K_QS""LACT1A$K_QS."
          saut
ATTENTION "Mais le $K_QS$K_DOLLAR""MPEG$K_QS genere sur $K_QS""LACT1A$K_QS n$K_QS""est pas lisible sur $K_QS""LACT19$K_QS""."
                                        # Introduit le 20241112100025 apres la regeneration de 'v $xiac/VONK.63$R16' sur '$LACT19'... #
          saut
          breaksw
     case "$LACT1A":
                                        # Ici, au moins on sait que la qualite est excellente (note le 20180604171740...).            #
          breaksw
     case "$LACT1B":
                                        # A priori, le 20210701142843 on ne sait encore rien...                                       #
          breaksw
     default:
                                        # Cas des MACHINEs non reconnues :                                                            #
          EROR      "MACHINE 'mHOTE' (='$mHOTE') inconnue ('sHOTE'='$sHOTE')."
          breaksw
endsw

set       Postfixe="$K_VIDE"
                                        # A priori, on considere qu'il n'y a pas de postfixe...                                       #
if        ($#RacineP > 1) then
          set       NoError_DKVP=$EXIST
          source    $Fdisk_video_P
          unset     NoError_DKVP

          if        ("$Palette" == "$RVB_DKVP") then
                    EROR      "En mode 'RVB' les noms des images ne peuvent etre postfixes."
          else
                    set       Postfixe=$RacineP[2]
                                        # Cas ou il y a un postfixe et que l'on est en mode "palette"...                              #
          endif
else
endif

if        ($?Licence_MPEG == $EXIST) then

#20180205170252____:          set       P_PostScript_RVB=$PostScript                                                                  #
          set       P_PostScript_RVB=$RVB
                                        # Introduit le 20180205164811...                                                              #

          if        ($P_PostScript_RVB == $RVB) then
                    setenv              PostScript_RVB      $EXIST
          else
          endif

          $DELETE   $FluxResultat$MP4
          $DELETE   $FluxResultat$MPEG
                                        # Nettoyage prelimianire a priori complete par '$MP4' le 20180207091026...                    #

          switch    ("$SYSTEME")
                                        # Definition du convertisseur 'MPEG'...                                                       #
                                        #                                                                                             #
                                        # Discrimination des differents SYSTEMEs possibles :                                          #
               case "SYSTEME_CRAY2_UNICOS_CC":
               case "SYSTEME_CRAY2_UNICOS_SCC":
               case "SYSTEME_CRAYC98_UNICOS_CC":
               case "SYSTEME_CRAYC98_UNICOS_SCC":
               case "SYSTEME_CRAYC916_UNICOS_CC":
               case "SYSTEME_CRAYC916_UNICOS_SCC":
               case "SYSTEME_CRAYYMP1_UNICOS_CC":
               case "SYSTEME_CRAYYMP1_UNICOS_SCC":
               case "SYSTEME_CRAYYMP2_UNICOS_CC":
               case "SYSTEME_CRAYYMP2_UNICOS_SCC":
               case "SYSTEME_CRAYYMP4_UNICOS_CC":
               case "SYSTEME_CRAYYMP4_UNICOS_SCC":
               case "SYSTEME_DECALPHA340_OSF1_CC":
               case "SYSTEME_DECALPHA340_OSF1_GCC":
               case "SYSTEME_DECALPHA350_OSF1_CC":
               case "SYSTEME_DECALPHA350_OSF1_GCC":
               case "SYSTEME_DPX2000_SPIX_CC":
               case "SYSTEME_DPX5000_SPIX_CC":
               case "SYSTEME_ES9000_AIX_CC":
               case "SYSTEME_FX2800_CONCENTRIX_FXC":
               case "SYSTEME_FX2800_CONCENTRIX_PCC":
               case "SYSTEME_FX2800_CONCENTRIX_SCC":
               case "SYSTEME_FX40_CONCENTRIX_CC":
               case "SYSTEME_FX40_CONCENTRIX_FXC":
               case "SYSTEME_HP705_HPUX_CC":
               case "SYSTEME_HP710_HPUX_CC":
               case "SYSTEME_HP720_HPUX_CC":
               case "SYSTEME_HP750_HPUX_CC":
               case "SYSTEME_HP755_HPUX_CC":
               case "SYSTEME_NWS3000_NEWSOS_CC":
               case "SYSTEME_NWS3000_NEWSOS_2CC":
               case "SYSTEME_RS6000_AIX_CC":
               case "SYSTEME_SPS9_ROS_CC":
               case "SYSTEME_SPS9_ROS_RC":
               case "SYSTEME_SUN3_SUNOS_CC":
               case "SYSTEME_SUN4_SUNOS_CC":
               case "SYSTEME_SUN4NCUBE2S_SUNOS_CC":
               case "SYSTEME_SUN4NCUBE2S_SUNOS_NCC":
               case "SYSTEME_VAX8600_ULTRIX_CC":
               case "SYSTEME_VAX8600_ULTRIX_VCC":
               case "SYSTEME_VAX9000_ULTRIX_CC":
               case "SYSTEME_VAX9000_ULTRIX_GCC":
               case "SYSTEME_VAX9000_ULTRIX_VCC":
                    EROR      "L'encodage 'MPEG' n'est pas disponible sur '$SYSTEME' (1)."
                    breaksw
               case "SYSTEME_APC_LinuxDebian_GCC":
               case "SYSTEME_APC_LinuxMandrake_GCC":
               case "SYSTEME_APC_LinuxRedHat_GCC":
               case "SYSTEME_APC_LinuxUbuntu_GCC":
               case "SYSTEME_APC_LinuxUbuntu_ICC":
               case "SYSTEME_APC_LinuxUlmint_GCC":
               case "SYSTEME_APC_LinuxUlmint_ICC":
#20180204083136____:                    FileTmpB  FCoDaGe $Y                                                                          #
                    FileTmpB  FCoDaGe

                    set       SeQuEnCe=`Genom6`
                                        # Afin de generer des noms tres courts et donc une liste '$LSeQuEnCe' ci-apres qui ne         #
                                        # deborde pas...                                                                              #

#20111101103219____:                    alias     CoDaGe    'set       ImAgE=\!*                                             ;    \\  #
#2011110110: $xci/PostScript$Z  $Racine$ImAgE$Postfixe $Palette $xT/$SeQuEnCe.$ImAgE 1 $Signature "$K_VIDE" $dimX $dimY 0 0  ;    \\  #
#20111101103219____:                                         unset     ImAgE'                                                         #

#20111103142329____:                    alias     CoDaGe    'set       ImAgE=\!*                                             ;    \\  #
#: $xci/PostScript$Z  $Racine$ImAgE$Postfixe $Palette $xT/$SeQuEnCe.$ImAgE 1 $Signature "$K_VIDE" $dimX $dimY 0 0 VRAI VRAI  ;    \\  #
#20111103142329____:                                         unset     ImAgE'                                                         #

#20180204083136____:                    alias     CoDaGe    'set       ImAgE=\!*                                             ;    \\  #
#: $xci/PostScript$Z  $Racine$ImAgE$Postfixe $Palette $xT/$SeQuEnCe.$ImAgE 1 $Signature "$K_VIDE" $dimX $dimY 0 0 VRAI VRAI  ;    \\  #
#20180204083136____:                                         unset     ImAgE'                                                         #

                    set       CoDaGe1="$xci/PostScript$Z  $Racine"
                    set       CoDaGe2="$Postfixe $Palette $xT/$SeQuEnCe."
                    set       CoDaGe3="1 $Signature $K_QD$K_VIDE$K_QD $dimX $dimY 0 0 VRAI VRAI"
                                        # Conversion '$PostScript' en un seul exemplaire, en conservant les echelles {$dimX,$dimY}    #
                                        # et avec une translation nulle {0,0}.                                                        #

#20180204083136____:                    $CA       $xcs/csh$Y                                                                       \  #
#20180204083136____:                                                                                                    >   $FCoDaGe  #

                    set       LSeQuEnCe=`$xci/nombres$X A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas lignes=VRAI CAL1=FAUX`
                                        # Generation de la liste des numeros d'images a encoder en '$MPEG'.                           #
                                        #                                                                                             #
                                        # Le 'CAL1=FAUX' a ete introduit le 20030602174333 afin d'eliminer les messages emis dans     #
                                        # le cas ou le pas n'est pas egal a l'unite ('v $xil/defi_K2$vv$DEF DoQu')...                 #

                    set       VaLiDe1=`echo "$LSeQuEnCe" | $R "$K_BLANC" "$K_NL" | $xcp/ferme_K_NL$X | $WCl`
                    set       VaLiDe2=`$xci/nombres$X A=$K_VIDE p=$premiereI d=$derniereI pas=$Pas lignes=VRAI CAL1=FAUX | $WCl`

                    if        ($VaLiDe1 != $VaLiDe2) then
                              EROR      "Il y a trop d'images a encoder : la liste '$K_DOLLAR""LSeQuEnCe' deborde."
                    else
                    endif

                    unset     VaLiDe1
                    unset     VaLiDe2

#20180204083136____:                    echo      "$LSeQuEnCe"                                                               |     \  #
#20180204083136____:                    $R        "$K_BLANC" "$K_NL"                                                         |     \  #
#20180204083136____:                    $xcp/ferme_K_NL$X                                                                    |     \  #
#20180204083136____:                    $GRE      -v '^ *$'                                                                  |     \  #
#20180204083136____:                    $SE       -e "s/^/CoDaGe  /"                                                               \  #
#20180204083136____:                                                                                                    >>! $FCoDaGe  #

                    echo      "$LSeQuEnCe"                                                                                        |     \
                    $R        "$K_BLANC" "$K_NL"                                                                                  |     \
                    $xcp/ferme_K_NL$X                                                                                             |     \
                    $GRE      -v '^ *$'                                                                                           |     \
                    $SE       -e 's+^\(.*\)$'"+$CoDaGe1\1 $CoDaGe2\1 $CoDaGe3+"                                                         \
                                                                                                              >>! $FCoDaGe
                                        # Generation du programme de conversion '$PostScript' de la sequence argument...              #

#20180204083136____:                    source    $FCoDaGe                                                                            #

                    setenv    TaillePaquetsLinda  8
                    setenv    FindExec_MessagesBP $NEXIST
                    $xcg/ExecParallele.01$Z       $FCoDaGe
                    unsetenv  FindExec_MessagesBP
                    unsetenv  TaillePaquetsLinda
                                        # Conversion '$PostScript' de la sequence argument...                                         #
                                        #                                                                                             #
                                        # Le 20180206093754, 'v $xci/PostScript$Z ' etant finalement assez rapide, fut introduit      #
                                        # le regoupement des commandes par paquets de 8...                                            #

                    set       RSeQuEnCe=`Genom6`
                                        # Definition de la nouvelle '$SeQuEnCe' Repetee...                                            #

                    set       NuMeRo_ImAgEA=$premiereI
                    set       NuMeRo_ImAgER=$premiereI

                    alias     genere    'set      gImAgE_A="\!*"                                                                  ;    \\
                               set      ImAgE_R=`$xci/nombres$X A=$RSeQuEnCe. premiere=$NuMeRo_ImAgER derniere=$NuMeRo_ImAgER`    ;    \\
                                         $CP      $gImAgE_A$P_PostScript_RVB $xT/$ImAgE_R$P_PostScript_RVB                        ;    \\
                                         @        NuMeRo_ImAgER = $NuMeRo_ImAgER + 1                                              ;    \\
                                         unset    gImAgE_A ImAgE_R'

                    foreach   NImAgE_A1($LSeQuEnCe)
                              set       NoMbRe_Repetitions=$ListeRepetitions[$NuMeRo_ImAgEA]
                              set       ItErAtIoN=1

                              while     ($ItErAtIoN <= $NoMbRe_Repetitions)
                                        genere    $xT/$SeQuEnCe.$NImAgE_A1
                                        # La repetition possible de chaque image a ete introduite le 20180209091848...                #
                                        @         ItErAtIoN = $ItErAtIoN + 1
                              end

                              @         NuMeRo_ImAgEA = $NuMeRo_ImAgEA + 1
                    end

                    @         derniereI = $NuMeRo_ImAgER - 1

                    set       SeQuEnCe=$RSeQuEnCe
                                        # La sequence est remplacee par la sequence Repetee...                                        #

                    FileTmpE  FCoDaGe

                    @         NImAgEs = $derniereI - $premiereI + 1
                    @         MuLtIpLe_12 = $NImAgEs % $NombreImages_MPEG
                    if        ($MuLtIpLe_12 > 0) then
                                        # Dispositif introduit le 20180204083136 afin que le nombre d'images soit un multiple de 12.  #
                                        # En effet, une sequence d'images doit etre la repetition de blocs de 12 images du type :     #
                                        #                                                                                             #
                                        #                   IBBPBBPBBPBBI                                                             #
                                        #                                                                                             #
                                        # Avec :                                                                                      #
                                        #                                                                                             #
                                        #                   I : image de reference avec codage Interne et sans lien avec les autres,  #
                                        #                   P : image Predictive obtenue par difference avec les images precedentes,  #
                                        #                   B : image predictive obtenue par difference avec la precedente et la      #
                                        #                       suivante.                                                             #
                                        #                                                                                             #
                              @         PrEmiErE = $derniereI + 1

                              @         DeRnIeRe = $NImAgEs / $NombreImages_MPEG
                              @         DeRnIeRe = $DeRnIeRe + 1
                              @         DeRnIeRe = $DeRnIeRe * $NombreImages_MPEG

                              set       LaSt_ImAgE=`ls $xT/$SeQuEnCe.*$P_PostScript_RVB | $TAI -1`

                              set       LSeQuEnCe12=`$xci/nombres$X A=$xT/$SeQuEnCe. p=$PrEmiErE d=$DeRnIeRe pas=$Pas CAL1=FAUX`
                              foreach   ISeQuEnCe12 ($LSeQuEnCe12)
#20180309130143____:               $CP       $xT/$SeQuEnCe.$LSeQuEnCe[$#LSeQuEnCe]$P_PostScript_RVB $ISeQuEnCe12$P_PostScript_RVB     #
                                        $CP       $LaSt_ImAgE $ISeQuEnCe12$P_PostScript_RVB
                                        # Ainsi, on ajoute suffisamment d'images afin que le nombre d'images soit un multiple de 12.  #
                                        #                                                                                             #
                                        # ATTENTION : cette copie '$CP' a ete supprimee (par accident ?) le 20180209105803. Il me     #
                                        # me semble qu'il faut la retablir, ce qui est fait le 20180309130143. A cette date, je crois #
                                        # comprendre que c'est a l'occasion de l'introduction qu'a eu lieu cette destruction...       #
                              end
                    else
                    endif

#20111103140351____:                    set       Nombre_NOIR=2                                                                       #
                                        # Sequence introduite le 20030619095403 afin d'introduire des images NOIRes en tete de        #
                                        # chaque sequence convertie en '$MPEG' afin de supprimer des defauts de codage qui            #
                                        # apparaissent sur la premiere image du flux '$MPEG'. Cela s'est vu avec les flux             #
                                        # 'v $xiak/NCOR.f1$MPEG' et 'v $xiak/NCOR.f9$MPEG'...                                         #

                    switch    ("$mHOTE")
                                        # Definition de '$Nombre_NOIR'...                                                             #
                                        #                                                                                             #
                                        # Discrimination des differentes MACHINEs possibles :                                         #
                         case "$CCVR11":
                         case "$CCVR12":
                         case "$CCVR13":
                         case "$CCVR14":
                         case "$CCVR21":
                         case "$CMAP21":
                         case "$CMAP22":
                         case "$CMAP23":
                         case "$CMAP24":
                         case "$CMAP25":
                         case "$CMAP26":
                         case "$CMAP27":
                         case "$CMAP28":
                         case "$CMAP29":
                         case "$EDFR12":
                         case "$EDFR13":
                         case "$EDFR14":
                         case "$EDFR15":
                         case "$EDFR21":
                         case "$EDFR22":
                         case "$EDFR22h":
                         case "$IDRI11":
                         case "$IDRI21":
                         case "$INFO11":
                         case "$INFO21":
                         case "$INFO22":
                         case "$INFO23":
                         case "$INFO24":
                         case "$INFO25":
                         case "$INFO26":
                         case "$LACT11":
                         case "$LACT12":
                         case "$LACT14":
                         case "$LACT15":
                         case "$LACT16":
                         case "$LACT17":
                         case "$LACT71":
                         case "$LACT21":
                         case "$LACT22":
                         case "$LACT23":
                         case "$EDFR11":
                         case "$HOME11":
                         case "$LACT27":
                         case "$LACT28":
                         case "$LACT29":
                         case "$LHYX11":
                         case "$LINX11":
                         case "$LINX12":
                              set       Nombre_NOIR=2
                                        # Sequence introduite le 20030619095403 afin d'introduire des images NOIRes en tete de        #
                                        # chaque sequence convertie en '$MPEG' afin de supprimer des defauts de codage qui            #
                                        # apparaissent sur la premiere image du flux '$MPEG'. Cela s'est vu avec les flux             #
                                        # 'v $xiak/NCOR.f1$MPEG' et 'v $xiak/NCOR.f9$MPEG'...                                         #
                              breaksw
                         case "$LACT18":
                         case "$LACT19":
                         case "$LACT1A":
                         case "$LACT1B":
                              set       Nombre_NOIR=0
                                        # Sequence supprimee le 20111103140351 car, en effet, sa presence fait perdre a l'animation   #
                                        # ses couleurs sur '$LACT19'. De plus sur '$LACT18' c'est tout simplement inutile, si ce      #
                                        # n'est que l'animation apparait alors plein ecran dans sa fenetre, alors qu'anterieurement   #
                                        # il y avait pas mal de NOIR a gauche, en dessous et a droite...                              #
                              breaksw
                         default:
                                        # Cas des MACHINEs non reconnues :                                                            #
                              EROR      "MACHINE 'mHOTE' (='$mHOTE') inconnue ('sHOTE'='$sHOTE')."
                              breaksw
                    endsw

                    if        ($Nombre_NOIR > 0) then
                              FileTmpB  Image_NOIR

                              $xci/init$X                                                                                               \
                                        niveau=$NOIR                                                                                    \
                                        R=$Image_NOIR                                                                                   \
                                                                                                                        $formatI
                                        # Generation d'une image 'NOIR'...                                                            #

                              set       NSeQuEnCe=`Genom6`
                              set       NLSeQuEnCe=`$xci/nombres$X A=$NSeQuEnCe. p=1 d=$Nombre_NOIR pas=1 lignes=VRAI CAL1=FAUX`
                                        # Generation de la liste des numeros d'images a encoder en '$MPEG'.                           #

                              foreach   INLSeQuEnCe         ($NLSeQuEnCe)
#20111103142329____:                    $xci/PostScript$Z   $Image_NOIR $xiP/noir $xT/$INLSeQuEnCe 1 FAUX "$K_VIDE" $dimX $dimY 0 0   #

                              $xci/PostScript$Z   $Image_NOIR $xiP/noir $xT/$INLSeQuEnCe 1 FAUX "$K_VIDE" $dimX $dimY 0 0 VRAI VRAI
                              end

                              set       NLSeQuEnCe=`echo $NLSeQuEnCe | $R "$K_BLANC" "$K_NL" | $SE -e 's/$/'"$P_PostScript_RVB/"`
                                        # Generation de la liste des images NOIRes a encoder en '$MPEG'.                              #

                              FileTmpE  Image_NOIR
                    else
                              set       NLSeQuEnCe="$K_VIDE"
                                        # Afin de ne pas ajouter d'images NOIRes en tete...                                           #
                    endif

#20111103142329____:                    PushdC    $xT                                                                                 #
#20170602143613____:                    PushdC    $xTV                                                                                #
                    PushdC    $xT
                                        # On se place explicitement dans '$xT' (directory contenant la sequence '$SeQuEnCe') afin     #
                                        # que la liste '$LSeQuEnCe' ci-apres ne deborde pas...                                        #

#20180204110159____:set  LSeQuEnCe=`echo "$LSeQuEnCe" | $R "$K_BLANC" "$K_NL" | $SE -e "s/^/$SeQuEnCe./" -e 's/$/'"$PostScript/"`     #
                    set       LSeQuEnCe=`ls $SeQuEnCe.*$P_PostScript_RVB`
                                        # Generation de la liste des images a encoder en '$MPEG'.                                     #

                    set       SaMpLiNg=`$CONVERT -help | $GRE "\-sampling.factor" | $AW ' { print $1 } '`
                                        # Ceci a ete introduit le 20040301113633 car, en effet, on trouve :                           #
                                        #                                                                                             #
                                        #                   -sampling_factor                                                          #
                                        #                                                                                             #
                                        # sur '$LACT15' et :                                                                          #
                                        #                                                                                             #
                                        #                   -sampling-factor                                                          #
                                        #                                                                                             #
                                        # sur '$LACT16'...                                                                            #

                    switch    ("$mHOTE")
                                        # Definition complementaire de '$SaMpLiNg'...                                                 #
                                        #                                                                                             #
                                        # Discrimination des differentes MACHINEs possibles :                                         #
                         case "$CCVR11":
                         case "$CCVR12":
                         case "$CCVR13":
                         case "$CCVR14":
                         case "$CCVR21":
                         case "$CMAP21":
                         case "$CMAP22":
                         case "$CMAP23":
                         case "$CMAP24":
                         case "$CMAP25":
                         case "$CMAP26":
                         case "$CMAP27":
                         case "$CMAP28":
                         case "$CMAP29":
                         case "$EDFR12":
                         case "$EDFR13":
                         case "$EDFR14":
                         case "$EDFR15":
                         case "$EDFR21":
                         case "$EDFR22":
                         case "$EDFR22h":
                         case "$IDRI11":
                         case "$IDRI21":
                         case "$INFO11":
                         case "$INFO21":
                         case "$INFO22":
                         case "$INFO23":
                         case "$INFO24":
                         case "$INFO25":
                         case "$INFO26":
                         case "$LACT11":
                         case "$LACT12":
                         case "$LACT14":
                         case "$LACT15":
                         case "$LACT17":
                         case "$LACT71":
                         case "$LACT21":
                         case "$LACT22":
                         case "$LACT23":
                         case "$EDFR11":
                         case "$HOME11":
                         case "$LACT27":
                         case "$LACT28":
                         case "$LACT29":
                         case "$LHYX11":
                         case "$LINX11":
                         case "$LINX12":
                              set       SaMpLiNg="$SaMpLiNg 2x1"
                              breaksw
                         case "$LACT16":
                              set       SaMpLiNg="$K_VIDE"
                                        # Le 20040302140553, cette option a du etre supprimee pour eviter le message :                #
                                        #                                                                                             #
                                        #                   /usr/bin/convert: Unable to write MPEG parameters (/tmp/magic...)         #
                                        #                   [No such file or directory].                                              #
                                        #                                                                                             #
                                        # provoquant ensuite l'abort de '$CONVERT'...                                                 #
                              breaksw
                         case "$LACT18":
                              set       SaMpLiNg="$K_VIDE"
                                        # Le 20111101092313, cette option a du etre supprimee pour eviter le message :                #
                                        #                                                                                             #
                                        #                   convert: unable to write MPEG parameters `.../magick-...'.                #
                                        #                                                                                             #
                                        # et qui donnait un fichier '$MPEG' vide (d'ou un taux de compression infini...).             #
                              breaksw
                         case "$LACT19":
                              set       SaMpLiNg="$K_VIDE"
                                        # Introduit le 20111101092313 pour voir...                                                    #
                              breaksw
                         case "$LACT1A":
                              set       SaMpLiNg="$K_VIDE"
                              breaksw
                         case "$LACT1B":
                              set       SaMpLiNg="$K_VIDE"
                              breaksw
                         default:
                                        # Cas des MACHINEs non reconnues :                                                            #
                              EROR      "MACHINE 'mHOTE' (='$mHOTE') inconnue ('sHOTE'='$sHOTE')."
                              breaksw
                    endsw

                    FileTmpB  FCoNvErSiOn $Y

                    set       MuLtIpLy="x"

                    set       ArGs_CONVERT="$K_VIDE"
                    set       ArGs_CONVERT="$ArGs_CONVERT"" -size $dimX$MuLtIpLy$dimY"
                    set       ArGs_CONVERT="$ArGs_CONVERT"" -depth $NBitsOctet"
                    set       ArGs_CONVERT="$ArGs_CONVERT"" -quality $Quality"
                    set       ArGs_CONVERT="$ArGs_CONVERT"" $SaMpLiNg"

                    echo      "$LSeQuEnCe"                                                                                        |     \
                    $R        "$K_BLANC" "$K_NL"                                                                                  |     \
                    $SE       -e "s/$P_PostScript_RVB"'$//'                                                                       |     \
                    $AW       ' { print "$CONVERT  $ArGs_CONVERT -flip " $1 "$P_PostScript_RVB JPEG:" $1 "$JPEG" } '                    \
                                                                                                              >>! $FCoNvErSiOn
                    (source    $FCoNvErSiOn)                                                                                      |&    \
                    $GRE      -v -f $xci/Gen_MPEG$vv$D/SupMesErreurs$vv$gre
                                        # Cette conversion intermediaire '$P_PostScript_RVB' en '$JPEG' a ete inspiree par le         #
                                        # probleme decrit dans 'v $xiMo/creation$Z implantee.le.20071128140757'. Elle fut introduite  #
                                        # le 20180206103229...                                                                        #
                                        #                                                                                             #
                                        # En cette absence, le mode "-verbose" de '$CONVERT' ('$RVB's --> '$MPEG') donnait pour la    #
                                        # premiere image :                                                                            #
                                        #                                                                                             #
                                        #                   (...).jpg RGBA 780x575 780x575+0+0 8-bit sRGB                             #
                                        #                                                                                             #
                                        # et pour toutes les suivantes :                                                              #
                                        #                                                                                             #
                                        #                   (...).jpg[...] RGBA 780x575 780x575+0+0 8-bit Bilevel Gray                #
                                        #                                                                                             #
                                        # qui etaient donc en tout ou rien et donnaient du NOIR. Le '$MPEG' alors genere montrait     #
                                        # la premiere image correcte et toutes les suivantes NOIR...                                  #
                                        #                                                                                             #
                                        # On notera que contrairement a 'v $xiMo/creation$Z implantee.le.20071128140757' cette        #
                                        # conversion intermediaire '$P_PostScript_RVB' en '$JPEG' est faite pour tous les SYSTEMEs    #
                                        # de type 'SYSTEME_APC_Linux', mais cela ne peut faire de mal...                              #

                    FileTmpE  FCoNvErSiOn

                    set       LSeQuEnCe=`echo $LSeQuEnCe | $SE -e "s/$P_PostScript_RVB/$JPEG/g"`

                    switch    ("$mHOTE")
                                        # Conversion '$MP4' effective (introduit sous cette forme le 20180718115343).                 #
                                        #                                                                                             #
                                        # Discrimination des differentes MACHINEs possibles :                                         #
                         case "$CCVR11":
                         case "$CCVR12":
                         case "$CCVR13":
                         case "$CCVR14":
                         case "$CCVR21":
                         case "$CMAP21":
                         case "$CMAP22":
                         case "$CMAP23":
                         case "$CMAP24":
                         case "$CMAP25":
                         case "$CMAP26":
                         case "$CMAP27":
                         case "$CMAP28":
                         case "$CMAP29":
                         case "$EDFR12":
                         case "$EDFR13":
                         case "$EDFR14":
                         case "$EDFR15":
                         case "$EDFR21":
                         case "$EDFR22":
                         case "$EDFR22h":
                         case "$IDRI11":
                         case "$IDRI21":
                         case "$INFO11":
                         case "$INFO21":
                         case "$INFO22":
                         case "$INFO23":
                         case "$INFO24":
                         case "$INFO25":
                         case "$INFO26":
                         case "$LHYX11":
                         case "$LINX11":
                         case "$LINX12":
                              set       A0_9="[$Alphabet_0_9][$Alphabet_0_9][$Alphabet_0_9][$Alphabet_0_9]"
                    set       GLSeQuEnCe=`echo "$LSeQuEnCe" | $R "$K_BLANC" "$K_NL" | $SE -e "s/$A0_9\($JPEG\)"'$/%04d\1/' | $SOR -u`
                              unset     A0_9

                              $FFMPEG   -loglevel quiet -i $GLSeQuEnCe $FluxResultat$MP4
                                        # Cela a ete implemente sous cette forme le 20180718115343 car, en effet, sur toutes les      #
                                        # MACHINEs de type '$CMAP28' le passage par '$CONVERT' donnait le message :                   #
                                        #                                                                                             #
                                        #         convert: delegate failed `"ffmpeg" -v -1 -mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 300 #
                                        #                                                                                             #
                                        # En fait, 'ffmpeg' etait bien appele, mais il renvoyait un '$status' (=1) qui correspondait  #
                                        # au probleme suivant :                                                                       #
                                        #                                                                                             #
                                        #         Codec AVOption mbd (...) is not a decoding option.                                  #
                                        #                                                                                             #
                                        # et en fait, il faut supprimer toutes les options de '$FFMPEG' qui sont definies dans        #
                                        # 'v  /etc/ImageMagick/delegates.xml encode=.mpeg:encode.' pour que cela marche. Ne pouvant   #
                                        # pas modifier ce fichier de definition des "delegates" de '$CONVERT', j'ai decide d'appeler  #
                                        # directement '$FFMPEG' sans aucune option et cela marche...                                  #
                              breaksw
                         case "$LACT11":
                         case "$LACT12":
                         case "$LACT14":
                         case "$LACT15":
                         case "$LACT16":
                         case "$LACT17":
                         case "$LACT18":
                         case "$LACT19":
                         case "$LACT1A":
                         case "$LACT1B":
                         case "$LACT71":
                         case "$LACT21":
                         case "$LACT22":
                         case "$LACT23":
                         case "$EDFR11":
                         case "$HOME11":
                         case "$LACT27":
                         case "$LACT28":
                         case "$LACT29":
                              $CONVERT  $ArGs_CONVERT                                                                                   \
                                        $NLSeQuEnCe                                                                                     \
                                        $LSeQuEnCe                                                                                      \
                                        $FluxResultat$MP4                                                                         |&    \
                              $GRE      -v -f $xci/Gen_MPEG$vv$D/SupMesErreurs$vv$gre
                                        # Et enfin, compression 'MPEG'. Les facteurs de qualite ont ete introduits le 20030602105446  #
                                        # grace aux indications de 'v http://studio.imagemagick.org/www/utilities$HTML', les          #
                                        # options choisies etant destinees a donner la meilleure qualite :                            #
                                        #                                                                                             #
                                        #                   -quality 100                          : qualite maximale (100%),          #
                                        #                   $SaMpLiNg  2x1                        : echantillonnage de type 4:2:2.    #
                                        #                                                                                             #
                                        # avec la '$Quality' par defaut...                                                            #
                                        #                                                                                             #
                                        # A la date du 20180206131551 le '$MPEG' est tres mauvais, alors qu'individuellement,         #
                                        # chaque image '$JPEG' est parfaite. Ou est donc le probleme de qualite ?                     #
                                        #                                                                                             #
                                        # La solution a ete trouvee le 20180206132323 : il faut genere du '$MP4' et non pas du        #
                                        # '$MPEG', puis rebaptiser...                                                                 #
                              breaksw
                         default:
                                        # Cas des MACHINEs non reconnues :                                                            #
                              EROR      "MACHINE 'mHOTE' (='$mHOTE') inconnue ('sHOTE'='$sHOTE')."
                              breaksw
                    endsw

                    $MV       $FluxResultat$MP4 $FluxResultat$MPEG

                    $DELETE   $SeQuEnCe*
                                        # Nettoyage des fichiers '$PostScript' generes...                                             #

                    PopdC
                                        # Et enfin, sortie de '$xT'...                                                                #
                    breaksw
               case "SYSTEME_SG4D20G_IRIX_CC":
               case "SYSTEME_SG4D25TG_IRIX_CC":
               case "SYSTEME_SG4D310VGX_IRIX_CC":
               case "SYSTEME_SG4D35TG_IRIX_CC":
               case "SYSTEME_SG4D85GT_IRIX_CC":
               case "SYSTEME_SGIND308_IRIX_CC":
               case "SYSTEME_SGIND324_IRIX_CC":
               case "SYSTEME_SGIND3GA_IRIX_CC":
               case "SYSTEME_SGIND408_IRIX_CC":
               case "SYSTEME_SGIND424_IRIX_CC":
               case "SYSTEME_SGIND4GA_IRIX_CC":
               case "SYSTEME_SGIND508_IRIX_CC":
               case "SYSTEME_SGIND524_IRIX_CC":
               case "SYSTEME_SGIND5GA_IRIX_CC":
               case "SYSTEME_SGIND808_IRIX_CC":
               case "SYSTEME_SGIND824_IRIX_CC":
               case "SYSTEME_SGIND8GA_IRIX_CC":
               case "SYSTEME_SGINDA08_IRIX_CC":
               case "SYSTEME_SGINDA24_IRIX_CC":
               case "SYSTEME_SGINDAGA_IRIX_CC":
               case "SYSTEME_SGPCM801_IRIX_CC":
               case "SYSTEME_SGPCMA01_IRIX_CC":
                    EROR      "L'encodage 'MPEG' n'est pas disponible sur '$SYSTEME' (1)."
                    breaksw
               case "SYSTEME_IMPOSSIBLE":
                                        # Cas des SYSTEMEs pour lesquels cette sequence n'a pas de sens :                             #
                    EROR "Sequence insensee pour '"$SYSTEME"'."
                    breaksw
               default:
                                        # Cas des SYSTEMEs non reconnus :                                                             #
                    EROR "'SYSTEME' definit un systeme inconnu,"
                    EROR      "elle vaut : '"$SYSTEME"'."
                    breaksw
          endsw

          if        ($P_PostScript_RVB == $RVB) then
                    unsetenv            PostScript_RVB
          else
          endif
else
          EROR      "L'encodage 'MPEG' n'est pas disponible sur '$SYSTEME' (2)."
                                        # On ne genere pas de fichier '$MPEG' (meme vide) afin de ne rien transmettre au serveur.     #
endif



Copyright © Jean-François COLONNA, 2019-2025.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2025.