#!/bin/sh
#
def_interlace=2
def_docrop=1

help(){
	cat <<END
Usage: $0 [options] <filename.[mov|avi|dv|mpg|qt]>
Options:
    -i n      n=1 top, n=2 bot                      ($def_interlace)
    -c n      croping, n=0 pillarbox n=1 crop       ($def_docrop)
END
	exit 0
}

docrop=$def_docrop
interlace=$def_interlace

while getopts i:c:h name "$@"
do
	case $name in
i)
	interlace=$OPTARG ;;
c)
	docrop=$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$//"` ;;
*.mpg)
	input="$1"
	base=`echo $input | sed "s/\.mpg$//"` ;;
*.dv)
	input="$1"
	base=`echo $input | sed "s/\.dv$//"` ;;
*.avi)
	input="$1"
	base=`echo $input | sed "s/\.avi$//"` ;;
*)
	help ;;
esac

case $interlace in
1)
    iflag_m=INTERLACED_TOP_FIRST ;;
*)
    iflag_m=INTERLACED_BOTTOM_FIRST ;;
esac

echo Rescaling $input 4:3 video to ${base}-169.avi 16:9 video...

ffmpeg -i $input -f wav -y $base.wav
ffmpeg -i $input -f yuv4mpegpipe -pix_fmt yuv411p -y /dev/stdout |
case $docrop in
0)
	yuvcorrect -T PROGRESSIVE 2>/dev/null |
	y4mscaler -v 0 -O size=720x480 |
	y4mscaler -v 0 -I sar=NTSC -O sar=NTSC_WIDE \
		-O size=720x480 -O active=540x480+90+0 |
case $interlace in
1)
    y4mscaler -v 0 -I active=720x479+0+0 \
		 -O active=720x479+0+1 -O size=720x480 ;;
esac |
	yuvcorrect -T INTERLACED_BOTTOM_FIRST 2>/dev/null ;;
*)
	yuvcorrect -T $iflag_m 2>/dev/null |
	yuvdeinterlace -d |
	yuvcorrect -T PROGRESSIVE 2>/dev/null |
	y4mscaler -v 0 -O size=720x480 |
	y4mscaler -v 0 -I sar=NTSC -O sar=NTSC_WIDE \
		-O size=720x480 -I active=720x360+0+60 |
    yuvfps -s 60000:1001 -r 60000:1001 |
	y4minterlace -ib ;;
esac |
ffmpeg -f yuv4mpegpipe -i /dev/stdin -i $base.wav \
	-interlace 1 -ildct -ilme -top 0 \
	-vcodec dvvideo -acodec pcm_s16le \
	-target dv -y ${base}-169.avi
