All pastes #909417 Raw Edit

Unnamed

public shellscript v1 · immutable
·published 2008-02-19 03:11 UTC
rendered paste body
--- big --- snip ----    IMGENC_CMD=(ffmpeg -f yuv4mpegpipe -r $FRAME_RATE -i - -s $VIDSIZE \    $SS_FFMOPTS $HQ_FLAGS -r $FRAME_RATE -bf 2 $NR -y "$WORK_DIR/slideshow.m2v")    # make a fifo to send raw yuv to, to be encoded by ffmpeg    mkfifo "$WORK_DIR/enc.fifo"    "${IMGENC_CMD[@]}" 2>/dev/null < "$WORK_DIR/enc.fifo" &    exec 3> "$WORK_DIR/enc.fifo"    if [[ $EFFECT = "fade" ]]; then        [[ $TV_STANDARD = "ntsc" ]] && fade_frames=15 || fade_frames=12        fade_incr=$(bc -l <<< "scale=2; 100 / $fade_frames") >&2    elif [[ $EFFECT = "crossfade" ]]; then        [[ $TV_STANDARD = "ntsc" ]] && fade_frames=30 || fade_frames=25        fade_incr=$(bc -l <<< "scale=2; 100 / $fade_frames") >&2    fi    TOYUV_FADE_CMD=(ppmtoy4m -v 0 -n $fade_frames -A 10:11 -I p -r -S 420mpeg2)    TOYUV_STILLS_CMD=(ppmtoy4m -n $MIX_VFRAMES -A 10:11 -I p -S 420mpeg2 -r)    # transitions    echo >&2    for f in ${!MIX_IN[@]}; do        base_ppm="$WORK_DIR/${f}.ppm"        if [[ $EFFECT = "crossfade" ]]; then            if ((f == (${#MIX_IN[@]} - 1) )); then                overlay_ppm="$WORK_DIR/0.ppm"            else                overlay_ppm="$WORK_DIR/$((f+1)).ppm"            fi        fi#        spin "Encoding and fading  ${base_ppm##*/}" >&2        # encode fadein frames - keep yuv header        if [[ $EFFECT = "fade" ]]; then            # yuvcorrect (remove headers) only if we are not on 1st slide fadein            ((f==0)) && YUVCORRECT="cat"            do_transitions fadein            # encode transition frames            cat "$WORK_DIR"/animenu/*.ppm |            "${TOYUV_FADE_CMD[@]}" 2>/dev/null | $YUVCORRECT 2>/dev/null            rm -f "$WORK_DIR"/animenu/*.ppm        fi        # encode still frames        # need yuvcorrect if for fade style (remove headers)        [[ $EFFECT = "fade" ]] && YUVCORRECT="yuvcorrect -T NO_HEADER"        if [[ $EFFECT = "crossfade" ]]; then            # encoding 1st slide            if ((f==0)); then                YUVCORRECT="cat"            else # subsequent slides and fades need header removed                YUVCORRECT="yuvcorrect -T NO_HEADER"            fi        fi        "${TOYUV_STILLS_CMD[@]}" "${MIX_IN[f]}" 2>/dev/null | ${YUVDENOISE[f]} |        ${YUVMEDIAN[f]} | $YUVCORRECT 2> /dev/null        # now we need yuvcorrect for everything        YUVCORRECT="yuvcorrect -T NO_HEADER"        # do a transition to the next slide        if [[ $EFFECT = "crossfade" ]]; then            do_transitions crossfade        elif [[ $EFFECT = "fade" ]]; then            do_transitions fadeout        fi        # encode transition frames        cat "$WORK_DIR"/animenu/*.ppm |        "${TOYUV_FADE_CMD[@]}" 2>/dev/null | $YUVCORRECT 2> /dev/null        SS_PID=$!        echo "SS_PID is $SS_PID" >&2        rm -f "$WORK_DIR"/animenu/*.ppm        # do crossfade looping to 1st slide if doing crossfade effect        if (($f == (${#MIX_IN[@]} - 1) )); then            if [[ $EFFECT = "crossfade" ]]; then                base_ppm=${MIX_IN[0]}                do_transitions crossfade                # encode transition frames                cat "$WORK_DIR"/animenu/*.ppm |                "${TOYUV_FADE_CMD[@]}" 2>/dev/null | $YUVCORRECT 2> /dev/null                rm -f "$WORK_DIR"/animenu/*.ppm            fi        fi        while kill -0 $SS_PID &>/dev/null; do            sleep 0.5            spin "Encoding and fading  ${base_ppm##*/}   $SPINNER" >&2        done    done >&3    # close the pipe    exec 3>&---- big --- snip ---