#!/bin/sh
#
#  bitrate is 7500 by default for DVD      (lower is worse)
#  quality factor is 8 by default for DVD  (higher is worse)
#  The peak bit-rate and average bit-rate should differ by 20-25%
#  Suggested -b7500 -q8  / -b6750 -q9 / -b6000 -q10
# 
#  .mov files from mobo are top interlaced first
#  .dv files are bottom interlaced first
#
def_interlace=2
def_ratio=2
def_bitrate=6750
def_abitrate=224

help(){
	cat <<END
Usage: $0 [options] <filename.[avi|mov|qt]>
Options:
    -a n      set audio bitrate n kbps              ($def_abitrate)
    -b n      set video bitrate to n kbps           ($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)
    -h        Print this help message
END
	exit 0
}

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

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

case $interlace in
0)
    fields=NOT_INTERLACED ;;
1)
    fields=INTERLACED_TOP_FIRST ;;
*)
    fields=INTERLACED_BOTTOM_FIRST ;;
esac
case $ratio in
2)
	aflag="-a3" ;;
*)
	aflag="-a2" ;;
esac

if test "$#" != "1"
then
	help
fi

case $1 in
*.qt)
	input="$1"
	base=`echo $input | sed "s/\.qt$//"` ;;
*.avi)
	input="$1"
	base=`echo $input | sed "s/\.avi$//"` ;;
*.mov)
	input="$1"
	base=`echo $input | sed "s/\.mov$//"` ;;
*)
	help ;;
esac

echo Encoding $input to $base.mpg....
# alternative yuvdenoise -s0,0,0 -g0,128,128 -t8,12,12 | 

sleep 1
(	lav2wav "$input" >"$base".wav;
	mp2enc <"$base".wav -r48000 -b$abitrate -o "$base".m2a ) &
(	lav2yuv "$input" | \
	yuvcorrect -T $fields | \
	yuvscaler -O DVD | \
	yuvdenoise -g 2,4,4 -t 6,10,10 -M 3,5,5 | \
	mpeg2enc -M3 -nn $aflag -f8 -G18 -b$bitrate -V230 -q9 -o "$base".m2v ) &
wait
mplex -f8 "$base".m2v "$base".m2a -o "$base".mpg
#rm "$base".m2v "$base".m2a "$base".wav
