#!/bin/bash
# Deliver mixer1 output to screen.
# Taken from the original snowmix sources

if [ -z "$1" ]; then
	echo "Usage $0 <remote ip>"
	exit
fi

remote_ip="$1"

tmpfile=/tmp/output2screen.tmp.$$
echo 'system info' | nc 127.0.0.1 9999 >$tmpfile
geometry=`grep 'STAT:  System geometry' $tmpfile |cut -f3 -d: |cut -f2 -d' '|tr 'x' ' '`
framerate=`grep 'STAT:  Frame rate' $tmpfile |cut -f3 -d: |cut -f2 -d' '`
ctrsocket=`grep 'STAT:  Output ctr socket' $tmpfile |cut -f3 -d: |cut -f2 -d' '`

rm $tmpfile

VIDEOCONVERT=ffmpegcolorspace
VIDEO=video/x-raw-rgb
AUDIO=audio/x-raw-int


frameratefraction()
{
  echo $1 | awk '{ rate=$1 ;
         factor=1;
         intrate=int(rate);
         while (factor*rate > intrate) {
           factor = factor * 10;
           intrate = int(rate*factor);
         }
         printf("%d/%d\n",intrate,factor);
       }'
}
ratefraction=`frameratefraction $framerate`
           
width=`echo $geometry |cut -f1 -d' '`
height=`echo $geometry |cut -f2 -d' '`

MIXERFORMAT=$VIDEO', bpp=(int)32, depth=(int)32, endianness=(int)4321, format=(fourcc)BGRA, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)'$width', height=(int)'$height', framerate=(fraction)'$ratefraction', pixel-aspect-ratio=(fraction)1/1, interlaced=(boolean)false'
OUTPUTFORMAT=$VIDEO', width=1024, height=768'


while true ; do
  gst-launch-0.10 -v shmsrc socket-path=$ctrsocket do-timestamp=true is-live=true ! \
    $MIXERFORMAT        ! \
    queue leaky=2		!\
	videoscale		    ! \
    $OUTPUTFORMAT	    ! \
    $VIDEOCONVERT	    ! \
	tee name=atee		! \
	queue				! \
    ximagesink          \
	atee.				!\
	queue				!\
	timeoverlay			!\
	ffmpegcolorspace	!\
	'video/x-raw-yuv'   !\
	jpegenc 			!\
	rtpjpegpay			!\
	udpsink host=$remote_ip port=9998 sync=true 
  sleep 2
done
