All pastes #1032149 Raw Edit

Anonymous

public text v1 · immutable
#1032149 ·published 2008-05-28 14:47 UTC
rendered paste body
#!/bin/bash

cleanup()
{
    echo >&2
    echo "Cleaning up..." >&2
    for PID in $impids; do
        if kill -0 $PID  2> /dev/null; then
            kill $PID  2> /dev/null
        fi
        # get mean if it still exists
        if kill -0 $PID  2> /dev/null; then
            kill -9 $PID  2> /dev/null
        fi
    done
    # other cleanup stuff snipped
}

max_procs=$(grep -cs ^processor /proc/cpuinfo)

mkfifo "$WORK_DIR/enc.fifo" 2>/dev/null
"${TOYUV_CMD[@]}" < "$WORK_DIR/enc.fifo" | "${IMGENC_CMD[@]}" 2>/dev/null  &

# make intermediary fifos for images.  They will get catted to enc.fifo
for ((n=1; n<=max_procs; n++)); do
    [[ ! -e "$WORK_DIR/temp-${n}.ppm" ]] && mkfifo "$WORK_DIR/temp-${n}.ppm"
done

if $MENU_FADE ; then

    unset num_procs
    for ((frame=0; frame<ANIMENU_ENDFRAME; frame++)); do
        ((num_procs++)) # how many processes are running
        out_ppm="$WORK_DIR/temp-${num_procs}.ppm" # current frame

        # simplified command list
        MONTAGE_CMD01=(convert  -size $VIDSIZE xc:none -background none \
        ${sc_cmd[@]} $SC_VIDEO_CMD $MOSAIC)
        MONTAGE_CMD02=(convert -size $VIDSIZE -background none \
        - ${sc_thumb_title_cmd[@]} -mosaic)
        MONTAGE_CMD4=(composite -dissolve $C -gravity $TITLE_GRAVITY \
        -geometry ${title_xoffset}${title_yoffset} $WORK_DIR/title_txt.png - \
        -background none -depth 8 ppm:- )

        if $PLAYALL ; then
            MONTAGE_CMD5=(composite -dissolve $S -gravity SouthEast -geometry \
            $PLAYALL_BTN_OFFSETS "$WORK_DIR/Playall.png" - \
            -background none miff:-)
        else
            MONTAGE_CMD5=(cat)
        fi

        if $TITLESET_MODE && ! $VMGM_ONLY && $VMGM_MENU; then
            MONTAGE_CMD6=(composite -dissolve $S -gravity $RTN_BTN_GRAVITY \
            -geometry $RTN_BTN_OFFSETS "$WORK_DIR/Main.png" - \
            -background none miff:-)
        else
            MONTAGE_CMD6=(cat)
        fi
        MONTAGE_CMD7=(convert - -depth 8  "$out_ppm")

        # removed if else block to simplify
        { "${MONTAGE_CMD1[@]}" miff:- | "${MONTAGE_CMD2[@]}" miff:- |
        "${MONTAGE_CMD5[@]}" | "${MONTAGE_CMD6[@]}" |
        "${MONTAGE_CMD4[@]}"  | "${MONTAGE_CMD7[@]}" ; } &

        impids="$impids $!"

        unset ANI_PICS sc_cmd
        if ((num_procs==max_procs || frame >= ANIMENU_ENDFRAME-1)); then
            spin  "\rProcessing frame $(($frame + 1))  " >&2
            cat "${ppm_fifos[@]}"
            wait $impids
            unset num_procs ppm_fifos impids
        fi
    done > "$WORK_DIR/enc.fifo"

fi