#!/bin/bash

if [ "$1" = "" -o "$2" = "" ] ; then
	echo "Usage: avi-recode-2pass target filename"
	echo "filename can also be dvd://1 (or any other track number"
	echo "target should be paldvd ntscdvd fmvvga palm n770 w-n770 n800 w-n800 w-zaurus zaurus"
	exit
fi

#FOURCC=DX50	# nokia tablet doesnt like this
FOURCC=DIVX

TARGET=$1
if [ "$TARGET" = "3gpp" ] ; then
	# X & Y res
	OUT_X=320
	OUT_Y=240
	# video bit rate
	VIDBR=2566
	# audio sample rate and compressed bit rate
	AUDSR=16000
	AUDBR=96
	ROTATE="rotate=0"
	OPTS=""
	CODEC=libamrnb3
elif [ "$TARGET" = "640x360m4" ] ; then
	# X & Y res
	OUT_X=640
	OUT_Y=360
	# video bit rate
	VIDBR=1280
	# audio sample rate and compressed bit rate
	AUDSR=48000
	AUDBR=160
	ROTATE=""
	OPTS=""
	CODEC=mpeg4
elif [ "$TARGET" = "paldvd" ] ; then
	# X & Y res
	OUT_X=720
	OUT_Y=576
	# video bit rate
	#VIDBR=1792
	VIDBR=1536
	# audio sample rate and compressed bit rate
	AUDSR=48000
	AUDBR=192
	ROTATE=""
	OPTS=""
	CODEC=mpeg4
elif [ "$TARGET" = "ntscdvd" ] ; then
	# X & Y res
	OUT_X=720
	OUT_Y=480
	# video bit rate
	VIDBR=1536
	# audio sample rate and compressed bit rate
	AUDSR=48000
	AUDBR=192
	ROTATE=""
	OPTS=""
	CODEC=mpeg4
elif [ "$TARGET" = "fmvvga" ] ; then
	# X & Y res
	OUT_X=640
	OUT_Y=480
	# video bit rate
	VIDBR=1792
	# audio sample rate and compressed bit rate
	AUDSR=48000
	AUDBR=160
	ROTATE=""
	OPTS=""
	CODEC=mpeg4
elif [ "$TARGET" = "zaurus" -o "$TARGET" = "w-zaurus" ] ; then
	# X & Y res
	OUT_X=640
	OUT_Y=480
	if [ "$TARGET" = "w-zaurus" ] ; then
		OUT_Y=360
	fi
	# video bit rate
	VIDBR=1024
	# audio sample rate and compressed bit rate
	AUDSR=24000
	AUDBR=96
	ROTATE="rotate=0"
	OPTS="-ofps 15"
	CODEC=mpeg4
elif [ "$TARGET" = "n800" -o "$TARGET" = "w-n800" ] ; then
	OUT_X=320
	OUT_Y=240
	if [ "$TARGET" = "w-n800" ] ; then
		OUT_X=400
	fi
	VIDBR=640
	# http://wiki.maemo.org/Video_encoding
	#AUDSR=48000
	#AUDSR=24000
	AUDSR=44100
	AUDBR=128
	ROTATE=""
	OPTS="-ofps 15"
	CODEC=mpeg4
elif [ "$TARGET" = "n770" -o "$TARGET" = "w-n770" ] ; then
	OUT_X=320
	OUT_Y=240
	if [ "$TARGET" = "w-n770" ] ; then
		OUT_X=400
	fi
	VIDBR=640
	# http://wiki.maemo.org/Video_encoding
	#AUDSR=48000
	#AUDSR=24000
	AUDSR=44100
	AUDBR=96
	ROTATE=""
	OPTS="-ofps 15"
	CODEC=mpeg4
elif [ "$TARGET" = "apple" ] ; then
	# X & Y res
	OUT_X=480
	OUT_Y=320
	# video bit rate
	VIDBR=800
	# audio sample rate and compressed bit rate
	AUDSR=48000
	AUDBR=160
	ROTATE=""
	OPTS=""
	CODEC=mpeg4
elif [ "$TARGET" = "palm" ] ; then
	OUT_X=480
	OUT_Y=320
	VIDBR=1024
	AUDSR=24000
	AUDBR=96
	ROTATE=""
	OPTS="-ofps 15"
	CODEC=mpeg4
else
	echo "bad target $TARGET"
	exit
fi

while [ "$2" != "" ] ; do
	INFILE=$2
	OUTFILE=`echo $INFILE | sed -e "s/\.avi/.$TARGET.avi/i"`
	echo $INFILE | grep '^dvd://' > /dev/null
	if [ $? -eq 0 ] ; then
		OUTFILE=`echo $INFILE | sed "s#dvd://#dvd_$TARGET.avi_#g"`
		echo "Source is DVD, destination is $OUTFILE"
	else
		OUTFILE=`echo $INFILE | sed -e "s/\.avi/.$TARGET.avi/i"`
		if [ ! -f $2 ] ; then
			echo "file doesn't exist"
			exit
		fi
	fi


	if [ "$INFILE" = "$OUTFILE" ] ; then
		echo "error in generating output name - was same as input"
		exit
	fi

	echo "Encoding $INFILE to $OUTFILE"
	# sws is gaussian blur
	set -x
	mencoder $INFILE $OPTS -quiet -subfont-autoscale 3  -subcp "latin1" -font /usr/share/doc/packages/efont-serif-ttf   -noodml  -nosound -vf scale=$OUT_X:$OUT_Y $ROTATE -sws 9   -ovc lavc -lavcopts vcodec=${CODEC}:turbo:vhq:vmax_b_frames=0:vbitrate=$VIDBR:vpass=1 -ffourcc $FOURCC -o /dev/null
	mencoder $INFILE $OPTS -quiet -audio-preload 0.8 -delay 0.1  -af volnorm  -srate $AUDSR -oac mp3lame -lameopts mode=3:cbr:br=$AUDBR   -subfont-autoscale 3  -subcp "latin1" -font /usr/share/doc/packages/efont-serif-ttf   -noodml  -vf scale=$OUT_X:$OUT_Y -sws 9   -ovc lavc -lavcopts vcodec=${CODEC}:vhq:vmax_b_frames=0:vbitrate=$VIDBR:vpass=2 -ffourcc $FOURCC -o $OUTFILE
	set +x

	shift
done

