#!/bin/sh
LANG=C

# Variables
VideoBitrate_Start="64"  # [kbps]
VideoBitrate_End="1024"  # [kbps]
VideoBitrate_Step="64"   # [kbps]
AudioBitrate="56"        # [kbps]

RECTIME="10"             # [sec]

IterateTimes="3"

# Output Files
WORK_DIR=$HOME
DIVX4_VideoFile="${WORK_DIR}/aho-divx4.avi"
XVID_VideoFile="${WORK_DIR}/aho-xvid.avi"
DIVX3_VideoFile="${WORK_DIR}/aho-divx3.avi"

DIVX4_DATA_FILE="${WORK_DIR}/bitrate-divx4.dat"
XVID_DATA_FILE="${WORK_DIR}/bitrate-xvid.dat"
DIVX3_DATA_FILE="${WORK_DIR}/bitrate-divx3.dat"

PLOT_FILE="${WORK_DIR}/bitrate.plt"

# Commands
DIVX4REC="DIVX4rec"
DIVXREC="DIVXrec"
GNUPLOT="/usr/bin/gnuplot"


# Fixed by NVrec. Do not change this value.
FRAME_RATE="30"   # [fps]
FRAMES=`expr $FRAME_RATE \* $RECTIME`

# Clean old data file
for file in "$DIVX4_DATA_FILE" "$XVID_DATA_FILE" "$DIVX3_DATA_FILE"; do
    if test -f $file; then
	rm -f $file
    fi
done


i="1"
while test "$i" -le "$IterateTimes"; do

    VideoBitrate=$VideoBitrate_Start
    while test "$VideoBitrate" -le "$VideoBitrate_End"; do
	echo "Target Video Bitrate = $VideoBitrate kbps ($i/$IterateTimes times)"

        ##### record by DivX4 #####
	echo -n "executing DIVX4rec by DivX4: ... "
	$DIVX4REC -vb $VideoBitrate -ab $AudioBitrate \
	          -F $FRAMES -o $DIVX4_VideoFile 2&>1 /dev/null
	echo "done"
	#sleep 1s

	size1=`ls -l $DIVX4_VideoFile | awk '{print $5;}'`
	bitrate1=`expr $size1 \* 8 / $RECTIME / 1024 - $AudioBitrate`

	echo "result = $size1 bytes ($bitrate1 kbps)"
	echo "$VideoBitrate $size1" >> $DIVX4_DATA_FILE


        ##### record by XviD #####
	echo -n "executing DIVX4rec by XviD : ... "
	$DIVX4REC -vb $VideoBitrate -ab $AudioBitrate -xvid \
	          -F $FRAMES -o $XVID_VideoFile 2&>1 /dev/null
	echo "done"
	#sleep 1s

	size2=`ls -l $XVID_VideoFile | awk '{print $5;}'`
	bitrate2=`expr $size2 \* 8 / $RECTIME / 1024 - $AudioBitrate`

	echo "result = $size2 bytes ($bitrate2 kbps)"
	echo "$VideoBitrate $size2" >> $XVID_DATA_FILE


        ##### record by DivX ;-) 3.11 Low motion #####
	#echo -n "executing DIVXrec          : ... "
	#divx3_videorate_value=`expr $VideoBitrate \* 4`
	#$DIVXREC -db $divx3_videorate_value -mb $AudioBitrate \
	#         -F $FRAMES --o $DIVX3_VideoFile 2&>1 /dev/null
	#echo "done"
	#sleep 1s

	#size3=`ls -l $DIVX3_VideoFile | awk '{print $5;}'`
	#echo "result = $size3 bytes"
	#echo "$VideoBitrate $size2" >> $DIVX3_DATA_FILE

	# Clean tmp video files
	rm -f $DIVX4_VideoFile
	rm -f $XVID_VideoFile
	#rm -f $DIVX3_VideoFile

        # next ...
	echo ""
	VideoBitrate=`expr $VideoBitrate + $VideoBitrate_Step`
    done

    i=`expr $i + 1`
done


# Plot
echo "#!$GNUPLOT -persist
f(x)= (x+$AudioBitrate)*$RECTIME*1024/8

set key left top
#set linestyle 1 lt 3 lw 2
#set key box linestyle 1

set xlabel \"Target Video Rate [kbps]\"
set ylabel \"File size [bytes]\"

set grid

plot f(x) ti \"Target\" with line, \\
     \"$DIVX4_DATA_FILE\" index 0:0 ti \"DivX4\", \\
     \"$XVID_DATA_FILE\" index 0:0 ti \"XviD\"
pause -1" > $PLOT_FILE

chmod 755 $PLOT_FILE

#gnuplot $PLOT_FILE

