#!/bin/sh

title=`tcprobe -i /dev/dvd 2>&1 | grep "DVD title" \
	| cut -d " " -f 4 | cut -d "/" -f 1`
echo "Detected feature title .. $title"
lsdvd -t 1 -a 2>&1 | egrep -m 1 \
        'Language: en - English, Format: ac3.*' \
        | cut -d " " -f 2 \
        | cut -d "," -f 1
track=`lsdvd -t 1 -a 2>&1 | egrep -m 1 \
	'Language: en - English, Format: ac3.*' \
	| cut -d " " -f 2 \
	| cut -d "," -f 1`
track=`echo "$track - 1" | bc`
echo "Detected audio track .... $track"

echo ""
echo "Copy with these settings will begin in 10 seconds."
echo "If these values look wrong, cancel now."
sleep 10
echo ""

echo "Copying the main feature to drive.."
mkfifo vid.fifo
mkfifo aud.fifo
tcextract -i aud.fifo -t vob -x ac3 -a $track > ofile.ac3 &
tcextract -i vid.fifo -t vob -x mpeg2 > ofile.m2v &
tccat -i /dev/dvd -T $title,-1 -L | tee aud.fifo vid.fifo > /dev/null &&

echo "Retrieving chapter list from disc.."
tcprobe -i /dev/dvd -T $title -H 10 2>&1 | egrep "\[Chapter ..\] " | \
        cut -d " " -f 4 | perl -pi -e 's/\n/,/' | \
        perl -pi -e 's/,$//' > chap.list &&

echo "Copying complete, please remove DVD and insert blank disc."
eject /dev/dvd

echo ""

# Calculate the requantization factor
vsize=`ls -l ofile.m2v | awk '{print $5 / 1048576}'`
asize=`ls -l ofile.ac3 | awk '{print $5 / 1048576}'`
req=`echo "1.05 * $vsize / (4400 - $asize)" | bc -ql`
echo Calculated requantization value: $req

if [ `echo "$req > 1.0" | bc` -ne 0 ]; then
	echo Performing requantization..
	tcrequant -i ofile.m2v -o movie.m2v -f $req
else
        echo No requantization required.
        mv ofile.m2v movie.m2v
fi

echo "Multiplexing audio and video.."
mplex -f 8 -S 0 -o movie.mpeg movie.m2v ofile.ac3 &&

echo "Creating DVD filesystem.."
mkdir -p dvd/VIDEO_TS &&
dvdauthor -t -a ac3+en -c `cat chap.list` -o dvd movie.mpeg &&
dvdauthor -T -o dvd &&

# Cleanup
rm *.fifo
