#!/bin/sh
def_ratio=1
def_signal=1

help(){
	cat <<END
Usage: $0 <filename.[ppm|pnm|png]>
Options:
    -r n      aspect ratio, n=1 4:3, n=2 16:9       ($def_ratio)
    -v n      Video Signal, n=1 ntsc n=2 pal        ($def_signal)
END
	exit 0
}

ratio=$def_ratio
signal=$def_signal

while getopts v:a:b:i:r:h name "$@"
do
    case $name in
v)
    signal=$OPTARG ;;
r)
    ratio=$OPTARG ;;
*)
    help ;;
    esac
done
let shiftind=$OPTIND-1
shift $shiftind

case $signal in
2)
    Vflag="25:1"
    Nflag="pal"
    fwidth="720"
    fheight="576"
    case $ratio in
2)
		Aflag=3
        Rflag="236:99" ;;
*)
		Aflag=2
        Rflag="59:54" ;;
    esac ;;
*)
    Vflag="30000:1001"
    Nflag="ntsc"
    fwidth="720"
    fheight="480"
    case $ratio in
2)
        Aflag=3
        Rflag="40:33" ;;
*)
		Aflag=2
        Rflag="10:11" ;;
    esac ;;
esac

if test "$#" = "1"
then
	case $1 in
*.pnm)
		ifilter=cat
		input="$1"
		base=`echo $input | sed "s/\.pnm$//"` ;;
*.ppm)
		ifilter=cat
		input="$1"
		base=`echo $input | sed "s/\.ppm$//"` ;;
*.png)
		ifilter=pngtopnm
		input="$1"
		base=`echo $input | sed "s/\.png$//"` ;;
*)
		help ;;
	esac
    echo Transcoding $input to $base.mpg....
    sleep 1
	$ifilter $input |
	ppmtoy4m -A $Rflag -F $Vflag -n 1 -r -I p -S 420mpeg2 |
		mpeg2enc -a $Aflag -f 8 -n $Nflag -o "$base".m2v
	dd if=/dev/zero bs=4 count=1600 |
		toolame -b 128 -s 48 /dev/stdin "$base".m2a
	mplex -f 8 "$base".m2v "$base".m2a -o "$base"b.mpg
	if test ! -f $base.xml
	then
		cat <<EOF >$base.xml
<subpictures>
  <stream>
    <spu 
       force="yes"
       start="00:00:00.00" end="00:00:00.0"
       select="${base}h.png"
       highlight="${base}h.png"
       autooutline="infer"
       outlinewidth="8"
       autoorder="rows">
    </spu>
  </stream>
</subpictures>
EOF
	fi
	spumux $base.xml <"$base"b.mpg >$base.mpg
	
else
	help
fi
