#!/bin/sh
#
# Date:    2006-11-01
# Author:  Petter Reinholdtsen
# License: GNU General Public License
#
# Convert DV files (.avi) to the files NUUG publish.  Based on
# instructions from <URL: http://wiki.skolelinux.de/nuug/video-recording >

# Adjust basename according to inputfile-extension /Jarle 2008-04-28
# Exit if extension != .avi or .dv /Jarle 2008-04-28 

#debug=echo

#quick=yes

[ -z "$quick" ] && quick=no

set -e


if [ -z "$1" ] ; then
    echo "Usage: $0 <dv/avi-file>"
    exit 1
fi

process_dv() {
    dv="$1"

    case $dv in
    *.dv ) 
      extension='.dv'
      ;;
    *.avi ) 
      extension='.avi'
      ;;
    *.m2t ) 
      extension='.m2t'
      ;;
    *.wmv ) 
      extension='.wmv'
      ;;
    * ) 
      echo "Not supported extension in '$dv'"
      return
      ;;
    esac

    basename="`basename $dv $extension`"

    # Argument guessed.  Resolution set to the same as the MPEG movie.
    if [ ! -f "${basename}.ogv" ] ; then
	echo "Generating ${basename}.ogv"
        $debug ffmpeg2theora --width 384 --height 288 -o "${basename}.ogv" "$dv"
    fi

    if [ ! -f "$basename.mpeg" ] ; then
	echo "Generating $basename.mpeg"
	$debug ffmpeg -i "$dv" -vcodec mpeg1video -s 384x288 -b 240000 -g 96 \
	    -ab 64000 -ac 1 -ar 32000 "$basename.mpeg"
    fi

    extractwav() {
	if [ ! -f "$basename.wav" ] ; then
	    echo "Generating $basename.wav"
	    $debug mplayer -vc null -vo null -ao pcm:file="$basename.wav:fast" "$dv"
	fi
    }

    if [ ! -f "$basename.mp3" ] ; then
	extractwav
	echo "Generating $basename.mp3"
	$debug lame -b 64 -a "$basename.wav" "$basename.mp3"
    fi

    if [ ! -f "$basename.ogg" ] ; then
	extractwav
	echo "Generating $basename.ogg"
	$debug oggenc --downmix -b 64 -o "$basename.ogg" "$basename.wav"
    fi

    if [ -f "$basename.wav" ] ; then
	rm "$basename.wav"
    fi

    # Based on http://ubuntuforums.org/showthread.php?t=114946
    if [ no = "$quick" ] && [ ! -f "${basename}_ipod.mov" ] ; then
	echo "Generating ${basename}_ipod.mov"
        #$debug ffmpeg -i "$dv" -f mp4 -vcodec mpeg4 -maxrate 1000k -b 700k -qmin 3 -qmax 5 \
        #    -bufsize 4096 -g 300 -acodec aac -ab 192k -s 320x240 -aspect 4:3 "${basename}_ipod.mov"
        $debug ffmpeg -i "$dv" -f mp4 -vcodec mpeg4 -maxrate 1000k -b 700k -qmin 3 -qmax 5 \
            -bufsize 4096k -g 300 -acodec libfaac -ab 192k -s 320x240 -aspect 4:3 "${basename}_ipod.mov"
    fi

    if [ no = "$quick" ] && [ ! -f "${basename}_x264.avi" ] ; then
	echo "Generating ${basename}_x264.avi"
	if $debug mencoder -ovc x264 -x264encopts \
	    subq=6:8x8dct:frameref=5:bframes=3:b_pyramid:weight_b \
	    -lameopts br=64 -oac mp3lame -o "${basename}_x264.avi" $dv ; then
	    :
	else
	    rm "${basename}_x264.avi"
	    false
	fi
    fi
}

for dv in $@ ; do
    process_dv $dv
done
