#!/bin/bash

# This script is meant to be executed in the root directory of a dvd structure
# at the same level as the VIDEO_TS directory after a backup of the dvd with
# > dvdbackup -M -i /dev/cdrom -o .

# It requires one parameter to select a set of encoding parameters:
# 1, 2 up to 14 or 'all' if you want to run all sets.
# And a second parameter to select the bitrate (default 800)

# The result will be a corresponding a01.avi, a02.avi up to a14.avi encoded movie.

#--- Functions ---------------------------------------------------------------

SetEncodeParam()
{
	# This sets the global variables used to configure the
	# RunEncode function. It requires one parameter to select
	# a set of encoding parameters: 1, 2 up to 14
	# and a second one to select the bitrate
	
	COMMAND="mencoder"
	SOURCE="-dvd-device . dvd://1 -chapter 5-6 -frames 12252"
	TARGET="a-${2}.avi"
	GENERAL="-ffourcc DIVX -mc 0 -noskip -skiplimit 0 -quiet"

	SUBTARGET0=""
	SUBTARGET1=""
	SUBTARGET2=""
	SUBTARGET3=""
	
	SOUND0=""
	SOUND1="-nosound"
	SOUND2="-nosound"
	SOUND3="-nosound"
	
	VIDEO0=""
	VIDEOOPT=""
	VIDEO1=""
	VIDEO2=""
	VIDEO3=""
	
	FILTER0=""
	FILTER1="-vf crop=680:572:20:0,scale=624:368"
	FILTER2=$FILTER1
	FILTER3=$FILTER1
	
	if [ -n "${2}" ]; then
		BITRATE=${2}
		TARGETSUF="-${2}"
	else
		BITRATE=800
		TARGETSUF=""
	fi
	
	case "${1}" in
		1)
			TARGET="a01${TARGETSUF}.avi"
			VIDEOOPT="vqmax=20:mbd=1:v4mv"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		2)
			TARGET="a02${TARGETSUF}.avi"
			VIDEOOPT="vqmax=20:mbd=2:v4mv:vmax_b_frames=1:vcelim=7:precmp=2:cmp=2:subcmp=2:predia=1:dia=1:trell:cbp:mv0"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		3)
			TARGET="a03${TARGETSUF}.avi"
			VIDEOOPT="vqmax=20:mbd=1:v4mv:vmax_b_frames=1:trell:qpel"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		4)
			TARGET="a04${TARGETSUF}.avi"
			VIDEOOPT="vqmax=20:mbd=2:v4mv:vmax_b_frames=1:vcelim=7:precmp=2:cmp=2:subcmp=2:predia=1:dia=1:trell:cbp:mv0:qpel"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		5)
			TARGET="a05${TARGETSUF}.avi"
			VIDEOOPT="mbd=1:vlelim=-4:vcelim=7:lumi_mask=0.05:dark_mask=0.01"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		6)
			TARGET="a06${TARGETSUF}.avi"
			VIDEOOPT="mbd=2:v4mv:vmax_b_frames=1:cmp=2:subcmp=2:predia=3:dia=-1:trell:qpel:last_pred=2:preme=2"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		7)
			TARGET="a07${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2:last_pred=1:mbcmp=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:v4mv:mbd=2:vpass=2:cmp=2:subcmp=2:predia=3:trell:dia=1:vbitrate=$BITRATE:last_pred=2:preme=2:vqcomp=0.6:autoaspect:psnr -o $TARGET"
			;;
		8)
			TARGET="a08${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2:mbcmp=2:subcmp=2:last_pred=1 -o /dev/null"
			VIDEOOPT="$VIDEOOPT:vqmin=1:vqmax=5:vqcomp=0.6:mbd=2:v4mv:trell:vpass=3:vbitrate=$BITRATE"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:subcmp=2:dia=-1:last_pred=2:autoaspect:psnr -o $TARGET"
			VIDEO3="-ovc lavc -lavcopts $VIDEOOPT:cmp=2:subcmp=6:dia=2:predia=3:last_pred=3:preme=2:cbp:mv0:qprd:qns=2:autoaspect:psnr -o $TARGET"
			;;
		9)
			TARGET="a09${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		9pre)
			TARGET="a09pre${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=2:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		9dia)
			TARGET="a09dia${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:cmp=2:subcmp=2:dia=1:predia=1:last_pred=2:preme=2"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		9v)
			TARGET="a09v${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vbitrate=$BITRATE -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		9c)
			TARGET="a09c${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:cbp:mv0:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		9f)
			TARGET="a09f${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2:vqdiff=2"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		9p6)
			TARGET="a09p6${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2:vqcomp=0.6"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		9p7)
			TARGET="a09p7${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2:vqcomp=0.7"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		9x2)
			TARGET="a09x2${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2:vqmax=20"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		9x6)
			TARGET="a09x6${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2:vqmax=6"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		9xb)
			TARGET="a09xb${TARGETSUF}.avi"
			VIDEOOPT="mbd=2:v4mv:trell:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		9m)
			TARGET="a09m${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2:vlelim=-4:vcelim=7"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		10)
			TARGET="a10${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:cmp=2:subcmp=6:dia=3:predia=3:last_pred=3:preme=2:cbp:mv0:qprd:qns=2"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		11)
			TARGET="a11${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=6:cmp=6:subcmp=6:dia=3:predia=3"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		12)
			TARGET="a12${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=2:cmp=2:subcmp=2:dia=1:predia=1"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		13)
			TARGET="a13${TARGETSUF}.avi"
			VIDEOOPT="mbd=2:v4mv:trell:mbcmp=3:cmp=3:subcmp=3:vbitrate=$BITRATE"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:autoaspect:psnr -o $TARGET"
			;;
		13v)
			TARGET="a13v${TARGETSUF}.avi"
			VIDEOOPT="mbd=2:v4mv:trell:mbcmp=3:cmp=3:subcmp=3"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vqscale=2 -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		14)
			TARGET="a14${TARGETSUF}.avi"
			VIDEOOPT="max_bframes=1:gmc:trellis:vhq=4:me_quality=6"
			VIDEO1="-ovc xvid -xvidencopts $VIDEOOPT:pass=1 -o /dev/null"
			VIDEO2="-ovc xvid -xvidencopts $VIDEOOPT:pass=2:bitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		15)
			TARGET="a15${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=2:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2:vqmax=20:vqcomp=0.6:cbp:mv0"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vbitrate=$BITRATE -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		15p)
			TARGET="a15p${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=2:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=2:vqmax=20:cbp:mv0"
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vbitrate=$BITRATE -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		15L0)
			TARGET="a15L0${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=2:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=0:preme=2:vqmax=20:cbp:mv0"
			if [ "${BITRATE}" == "800" ]; then
				VIDEOOPT="$VIDEOOPT:vqcomp=0.6";
			fi
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vbitrate=$BITRATE -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		15L1)
			TARGET="a15L1${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=2:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=1:preme=2:vqmax=20:cbp:mv0"
			if [ "${BITRATE}" == "800" ]; then
				VIDEOOPT="$VIDEOOPT:vqcomp=0.6";
			fi
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vbitrate=$BITRATE -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		15L3)
			TARGET="a15L3${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=2:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=3:preme=2:vqmax=20:cbp:mv0"
			if [ "${BITRATE}" == "800" ]; then
				VIDEOOPT="$VIDEOOPT:vqcomp=0.6";
			fi
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vbitrate=$BITRATE -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		15L4)
			TARGET="a15L4${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=2:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=4:preme=2:vqmax=20:cbp:mv0"
			if [ "${BITRATE}" == "800" ]; then
				VIDEOOPT="$VIDEOOPT:vqcomp=0.6";
			fi
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vbitrate=$BITRATE -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		15L4q)
			TARGET="a15L4q${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=2:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=4:preme=2:cbp:mv0"
			if [ "${BITRATE}" == "800" ]; then
				VIDEOOPT="$VIDEOOPT:vqcomp=0.6:vqmax=10";
			else
				VIDEOOPT="$VIDEOOPT:vqmax=6";
			fi
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vbitrate=$BITRATE -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		15m0)
			TARGET="a15m0${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=2:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=0:vqmax=20:cbp:mv0"
			if [ "${BITRATE}" == "800" ]; then
				VIDEOOPT="$VIDEOOPT:vqcomp=0.6";
			fi
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vbitrate=$BITRATE -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		15m1)
			TARGET="a15m1${TARGETSUF}.avi"
			VIDEOOPT="vmax_b_frames=1:mbd=2:v4mv:trell:precmp=2:cmp=2:subcmp=2:dia=-1:predia=1:last_pred=2:preme=1:vqmax=20:cbp:mv0"
			if [ "${BITRATE}" == "800" ]; then
				VIDEOOPT="$VIDEOOPT:vqcomp=0.6";
			fi
			VIDEO1="-ovc lavc -lavcopts $VIDEOOPT:vpass=1:vbitrate=$BITRATE -o /dev/null"
			VIDEO2="-ovc lavc -lavcopts $VIDEOOPT:vpass=2:vbitrate=$BITRATE:autoaspect:psnr -o $TARGET"
			;;
		*)
			echo "Please specify the ID of the parameter set you want to encode with."
			exit 1
			;;
	esac
}

RunEncode()
{
	# This function encode a movie in 4 pass according to
	# presets variables. The first pass is used to encode
	# sound and the subsequent 3 pass are used to encode
	# video. All 4 pass can be used to extract subtitles.
	# A given pass or extraction is only run if it has a
	# configured preset variable.
	
	if [ -n "$SOUND0" ]; then
		[ -f frameno.avi ] && rm frameno.avi
		if [ -n "$SUBTARGET0" ]; then
			SUBTTL0="-slang $SUBTARGET0 -vobsubout $SUBTARGET0 -vobsuboutid $SUBTARGET0 -vobsuboutindex 0";
			[ -f $SUBTARGET0.idx ] && rm $SUBTARGET0.idx
			[ -f $SUBTARGET0.sub ] && rm $SUBTARGET0.sub
		else
			SUBTTL0="";
		fi
		$COMMAND $SOURCE $GENERAL $SOUND0 $FILTER0 $VIDEO0 $SUBTTL0;
	fi
	
	if [ -n "$VIDEO1" ]; then
		[ -f divx2pass.log ] && rm divx2pass.log
		[ -f xvid-twopass.stats ] && rm xvid-twopass.stats
		[ -f old$TARGET ] && rm old$TARGET
		[ -f $TARGET ] && mv $TARGET old$TARGET 
		[ -f $TARGET ] && rm $TARGET
		rm psnr_*.log 2> /dev/null
		if [ -n "$SUBTARGET1" ]; then
			SUBTTL1="-slang $SUBTARGET1 -vobsubout $SUBTARGET1 -vobsuboutid $SUBTARGET1 -vobsuboutindex 0";
			[ -f $SUBTARGET1.idx ] && rm $SUBTARGET1.idx
			[ -f $SUBTARGET1.sub ] && rm $SUBTARGET1.sub
		else
			SUBTTL1="";
		fi
		$COMMAND $SOURCE $GENERAL $SOUND1 $FILTER1 $VIDEO1 $SUBTTL1;
	fi
	
	if [ -n "$VIDEO2" ]; then
		[ -f old$TARGET ] && rm old$TARGET
		[ -f $TARGET ] && mv $TARGET old$TARGET 
		[ -f $TARGET ] && rm $TARGET
		rm psnr_*.log 2> /dev/null
		if [ -n "$SUBTARGET2" ]; then
			SUBTTL2="-slang $SUBTARGET2 -vobsubout $SUBTARGET2 -vobsuboutid $SUBTARGET2 -vobsuboutindex 0";
			[ -f $SUBTARGET2.idx ] && rm $SUBTARGET2.idx
			[ -f $SUBTARGET2.sub ] && rm $SUBTARGET2.sub
		else
			SUBTTL2="";
		fi
		$COMMAND $SOURCE $GENERAL $SOUND2 $FILTER2 $VIDEO2 $SUBTTL2;
	fi
	
	if [ -n "$VIDEO3" ]; then
		[ -f old$TARGET ] && rm old$TARGET
		[ -f $TARGET ] && mv $TARGET old$TARGET 
		[ -f $TARGET ] && rm $TARGET
		rm psnr_*.log 2> /dev/null
		if [ -n "$SUBTARGET3" ]; then
			SUBTTL3="-slang $SUBTARGET3 -vobsubout $SUBTARGET3 -vobsuboutid $SUBTARGET3 -vobsuboutindex 0";
			[ -f $SUBTARGET3.idx ] && rm $SUBTARGET3.idx
			[ -f $SUBTARGET3.sub ] && rm $SUBTARGET3.sub
		else
			SUBTTL3="";
		fi
		$COMMAND $SOURCE $GENERAL $SOUND3 $FILTER3 $VIDEO3 $SUBTTL3;
	fi
}

#--- Main code ---------------------------------------------------------------

if [ "${1}" == "all" ] || [ "${1}" == "ALL" ]; then
	[ -f results${2}.txt ] && rm results${2}.txt
	for (( i=1; i<16; i=$i+1 )); do
		echo "running encode $i"
		${0} $i ${2} >> results${2}.txt
	done
	for i in 9v 9c 9f 9p6 9p7 9x2 9x6 9xb 9m 9pre 9dia 13v 15p 15L0 15L1 15L3 15L4 15L4q 15m0 15m1; do
		echo "running encode $i"
		${0} $i ${2} >> results${2}.txt
	done
	
	[ -f tmpstats.txt ] && rm tmpstats.txt
	[ -f tmperrors.txt ] && rm tmperrors.txt
	[ -f tmptime.txt ] && rm tmptime.txt
	[ -f divx2pass.log ] && rm divx2pass.log
	[ -f xvid-twopass.stats ] && rm xvid-twopass.stats
	rm psnr_*.log 2> /dev/null
else
	[ -f tmpstats.txt ] && rm tmpstats.txt
	[ -f tmperrors.txt ] && rm tmperrors.txt
	[ -f tmptime.txt ] && rm tmptime.txt
	rm psnr_*.log 2> /dev/null
	
	SetEncodeParam ${1} ${2}
	( time RunEncode > tmpstats.txt 2> tmperrors.txt ) 2> tmptime.txt
	cat psnr_*.log > psnr-${TARGET%%.*}.log
	
	echo "### ${1} @ ${2} kbit/s ####################################"
	grep "kbit" tmpstats.txt
	grep "PSNR" tmpstats.txt
	grep "user" tmptime.txt
fi