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

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

signal=$def_signal
ratio=$def_ratio

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

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

if test "$#" != "1"
then
	help
fi

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 | 
yuvscaler -OSIZE_${fwidth}x${fheight} -n$Nflag |
mpeg2enc -f6 -T120 -F$Fflag -n$Nflag -o $base.m2v
mplex -f6 "$base".m2v -o "$base".mpg
