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

help(){
	cat <<END
Usage: $0 [options] <filename.avi|filename.dv|filename.mpg>
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
*.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 $docrop in
0)
    scaleopt="-O active=540x480+90+0" ;;
*)
    scaleopt="-I active=720x360+0+60" ;;
esac

case $interlace in
1)
    shiftdn="y4mscaler -v 0 -I active=720x479+0+0 \
		 -O active=720x479+0+1 -O size=720x480"
	iflag_m=INTERLACED_TOP_FIRST ;;
*)
    shiftdn="cat"
	iflag_m=INTERLACED_BOTTOM_FIRST ;;
esac

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

#ffmpeg -i $input -pix_fmt yuv411p -target dv \
#	-s 540x480 -padleft 90 -padright 90 \
#	-interlace 1 -ildct -ilme -top 0 \
#	-vcodec dvvideo -acodec pcm_s16le \
#	-y ${base}-169.avi
#ffmpeg -i $input -pix_fmt yuv411p \
#	-s 540x480 -padleft 90 -padright 90 \
#	-interlace 1 -ildct -ilme -top 0 \
#	-vcodec dvvideo -acodec pcm_s16le \
#	-target dv -y ${base}-169.avi

ffmpeg -i $input -f wav -y $base.wav
ffmpeg -i $input -f yuv4mpegpipe -pix_fmt yuv411p -y /dev/stdout |
	yuvcorrect -T $iflag_m 2>/dev/null |
	yuvdeinterlace -d |
	yuvcorrect -T PROGRESSIVE 2>/dev/null |
	y4mscaler -v 0 -O size=720x480 |
	$shiftdn |
	y4mscaler -v 0 -I sar=NTSC -O sar=NTSC_WIDE \
		-O size=720x480 $scaleopt |
    yuvfps -s 60000:1001 -r 60000:1001 |
	y4minterlace -ib |
	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
