#!/bin/sh
#
#  high bitrate -a224 -b6500 if it underruns
#  medium bitrate -a224 -b6000 if it underruns
#  low bitrate -a192 -b5500 if it underruns
#  very low bitrate -a96 -b5000 if it underruns
#
# quantizer values are essentially half that of mjpegtools
#
def_abitrate=224
def_bitrate=6000
def_interlace=2
def_ratio=2
def_signal=1

help(){
    cat <<END
Usage: $0 [options] <filename.[mov|qt|dv|mpg|avi]>
Options:
    -a n      Set the audio bitrate                 ($def_abitrate)
    -b n      Set the bitrate                       ($def_bitrate)
    -i n      n=0 progressive, n=1 top, n=2 bottom  ($def_interlace)
    -r n      aspect ratio, n=1 4:3, n=2 16:9       ($def_ratio)
    -v n      Video Signal, n=1 ntsc n=2 pal        ($def_signal)
    -h        Print this help message
END
    exit 0
}

abitrate=$def_abitrate
bitrate=$def_bitrate
interlace=$def_interlace
ratio=$def_ratio
signal=$def_signal

while getopts v:a:b:i:r:h name "$@"
do
    case $name in
v)
    signal=$OPTARG ;;
a)
    abitrate=$OPTARG ;;
b)
    bitrate=$OPTARG ;;
i)  
    interlace=$OPTARG ;;
r)
    ratio=$OPTARG ;;
*)
    help ;;
    esac
done
let shiftind=$OPTIND-1
shift $shiftind

if test "$#" != "1"
then
	help
fi
case $1 in
*.qt)
    input="$1"
    base=`echo $input | sed "s/\.qt$//"` ;;
*.mov)
    input="$1"
    base=`echo $input | sed "s/\.mov$//"` ;;
*.avi)
    input="$1"
    base=`echo $input | sed "s/\.avi$//"` ;;
*.dv)
    input="$1"
    base=`echo $input | sed "s/\.dv$//"` ;;
*.mpg)
    input="$1"
    base=`echo $input | sed "s/\.mpg$//"`-dvd ;;
*)
    help ;;
esac

echo Encoding $input to $base.mpg....

case $signal in
2)
	Frate="-r pal" ;;
*)
	Frate="-r ntsc" ;;
esac
case $interlace in
0)
	flags="-interlace 0"
    ;;
1)
	flags="-interlace 1 -ildct -ilme -top 1"
    ;;
*)
	flags="-interlace 1 -ildct -ilme -top 0"
    ;;
esac
case $ratio in
2)
    aflag="-aspect 16:9" ;;
*)
    aflag="-aspect 4:3" ;;
esac

echo ffmpeg -i $input $aflag $flags $Frate \
	-target dvd -qmin 4 -b $bitrate -ab $abitrate -y $base.mpg

sleep 5

ffmpeg -i $input $aflag $flags $Frate\
	-target dvd -qmin 4 -b $bitrate -ab $abitrate -y $base.mpg
