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