+ # Remove background line:
+ ${SED} -i -e /label:${bg_layer_name},.*/d ${layers}
+
+ # Remove reference lines:
+ ${SED} -i -e /label:${ref_layer_prefix}.*/d ${layers}
+
+ # Create background frame:
+ convert -size ${size} xc:none ${dest}/background.png
+
+ nf=""
+ oldnf=""
+ files=""
+ group=""
+
+ while read l; do
+ scene=$(get_scene_id "${l}")
+ label=$(get_label "${l}")
+ p=$(get_pos "${l}")
+ nf=$(get_frame_id "${l}")
+ ng=$(get_group_id "${l}")
+
+ # Only change group if ng is set...
+ if [ x"${ng}" != x"" ]; then
+ if which ffmpeg 1> /dev/null 2>&1; then
+ if [ -f ${dest}/${group}-f1.png ]; then
+ if [ ${dry_run} -eq 0 ]; then
+ # Conversion vidéo:
+ ffmpeg ${FFMPEG_OPTS} -r ${fps} -start_number 1 -i ${dest}/${group}-f%d.png ${dest}/${group}.mp4
+ fi
+ fi
+ fi
+
+ group="${ng}"
+ log_dbg "New group: ${ng}"
+
+ nf=""
+ oldnf=""
+ files=""
+
+ # Skip image from group ID...
+ continue
+ fi
+
+ log_dbg "Layer ${scene}"
+ log_dbg " nom: ${label}"
+ log_dbg " pos: ${p}"
+
+ files="${files} -page ${p} ${src}[${scene}]"
+
+ if [ x"${nf}" != x"" ]; then
+ # Only check expected frame if oldnf is set...
+ if [ x"${oldnf}" != x"" ]; then
+ expected_nf=$((${oldnf} + 1))
+
+ if [ ${expected_nf} -ne ${nf} ]; then
+ echo "Error: invalid frame sequence: ${nf}"
+ echo " previous: ${oldnf}"
+ echo " expected: ${expected_nf}"
+ files=""
+ continue
+ fi
+ fi
+
+ log_dbg "New frame ID: ${nf}"
+
+ if [ ${dry_run} -eq 1 ]; then
+ touch ${dest}/${group}-f${nf}.png
+ else
+ convert -colorspace sRGB -page +0+0 ${dest}/background.png \
+ ${files} -background none -layers merge \
+ ${dest}/${group}-f${nf}.png
+ fi
+
+ files=""
+ oldnf="${nf}"
+ fi
+ done <${layers}