#! /bin/bash -ex

SRC=${1:-.}
DST=${2:-/var/tmp/spielfilme}

declare -A FLAGS
FORMATS=${FORMATS:-( "ogg" "webm" "mp4" )}
FLAGS["ogg"]="-c:v libtheora -c:a libvorbis -q:v 6 -q:a 5"
FLAGS["webm"]="-vcodec libvpx -acodec libvorbis -f webm -aq 5 -ac 2 -qmax 25 -threads 2"
FLAGS["mp4"]="-vcodec libx264 -acodec aac -strict experimental -crf 19"

do_convert() {
    f="$1"
    for format in "${FORMATS[@]}"; do
        t="${f/$SRC/$DST}"
        t="${t%.*}.${format}"
        if test -s "${t}"; then
	    continue; # ignore if file exists and is not empty
        fi
        if test -e "$t"; then
	    rm "$t"; # remove existing empty file
        fi
        test -d "${t%/*}" || mkdir -p "${t%/*}"
        if ( ! avconv -i "$f" ${FLAGS[$format]} -filter:v yadif "$t" \
            || ! test -s "${t}") && test -e "$t"; then
	    rm "$t"; # remove file if conversion failed
        fi
    done
}

if test -d "$SRC"; then
    for f in $(find "$SRC" \( \( -name '.??*' -o -name '*.jpg' \) -prune \) -o -type f -print); do
        do_convert "$1"
    done
else
    IFS="
"
    for f in $SRC; do
        do_convert "$1"
    done
fi    
