#! /usr/bin/sh
#http://f0rked.com/core/simplerip

VBR=700
CROP="crop=720:352:0:66"
SCALE="scale=704:304"
VOL_ADJ=3
FILE_OUT="temp.avi"
ENCODE_AUDIO=1;


while getopts "i:o:b:v:c:C s a h" opt
do
	case "$opt" in
		C) CROP_ONLY=1;;
		i) FILE_IN="$OPTARG";;
		o) FILE_OUT="$OPTARG";;
		b) VBR="$OPTARG";;
		c) 
			CROP="crop=$OPTARG"
		   USE_CROP=1
			;;
		v) VOL_ADJ="$OPTARG";;
		s) USE_SCALE=1;;
		a) ENCODE_AUDIO=0;;
		t) FORCE_TRACK="-aid=$OPTARG";
		l) FORCE_LANG="-alang=$OPTARG";
		h)
			echo "Usage: trans.sh -i file.in [-o file.out] [-b bitrate] [-c cropstring] [-v volume] [-s scalestring][-a][-C] [-t audio track (number for AID)] [-l audio language (abbreviation for alang)]"
			exit 0;
	esac
done



# remove conflicting files
rm -f divx2pass.log frameno.avi

if [ $CROP_ONLY ]
then
# crop detect
	CROP=`mencoder -ovc xvid -xvidencopts bitrate=800 -nosound -o /dev/null $FILE_IN -vf cropdetect -ss 15:00 -endpos .1 2>/dev/null |grep "crop area" | sed s'/.*-vf \(crop.*\))/\1/'|tail -n1`
	echo $CROP;
	USE_SCALE=1;
	USE_CROP=1;
fi

if [ $USE_SCALE ]  || [ $USE_CROP ]; then 
	VIDEO_FILTER='-vf '
	if [ $USE_CROP ]
  	then
		VIDEO_FILTER="${VIDEO_FILTER}$CROP"
	fi
	if [ $USE_SCALE ]
	then
		if [ $USE_CROP ]
		then
			VIDEO_FILTER="${VIDEO_FILTER},"
		fi
		VIDEO_FILTER="${VIDEO_FILTER}$SCALE"
	fi

	echo $VIDEO_FILTER
fi


# rip audio track (bitrate: 96, gain: 7)
if [ $ENCODE_AUDIO -eq 1 ]
then
  	nice -n 3 mencoder -oac mp3lame -lameopts mode=2:cbr:br=96:vol=${VOL_ADJ} $FORCE_TRACK $FORCE_LANG\
 	 	-ovc frameno -o frameno.avi $FILE_IN
	RETVAL=$?
 	if [ $RETVAL -ne 0 ]
  	then
	  	echo "Audio encoding fail."
	  	exit $RETVAL
  	fi
fi

# video track (pass: 1)
nice -n 3 mencoder -sws 2 -oac copy -ovc lavc \
 -lavcopts vcodec=mpeg4:vbitrate=${VBR}:vhq:vpass=1 $FORCE_TRACK $FORCE_LANG \
 -ffourcc XVID $VIDEO_FILTER $FILE_IN -o /dev/null
RETVAL=$?
if [ $RETVAL -ne 0 ]
then
	echo "Pass 1 fail."
	exit $RETVAL
fi
# video track (pass: 2)
nice -n 3 mencoder -sws 2 -oac copy -ovc lavc \
 -lavcopts vcodec=mpeg4:vbitrate=${VBR}:vhq:vpass=2 $FORCE_TRACK $FORCE_LANG\
 -ffourcc XVID $VIDEO_FILTER $FILE_IN -o $FILE_OUT
RETVAL=$?
if [ $RETVAL -ne 0 ]
then
	echo "Pass 2 fail."
	exit $RETVAL
fi
