#!/bin/bash
# Deliver mixer1 output and audio output to screen and audio

# IMPORTANT >>>>>You need to get port, ip and feed_id right<<<<<
if [ "X$SNOWMIX" = X ] ; then
  echo "You need to set the SNOWMIX environment variable to the base of the Snowmix installed directory"
  exit 1
fi
if [ "X$SNOWMIX_PORT" = X ] ; then export SNOWMIX_PORT=9999 ;fi
if [ "X$SNOWMIX_IP" = X ] ; then export SNOWMIX_IP=127.0.0.1 ;fi

# Check for the snowmix and gstreamer settings
if [ ! -f $SNOWMIX/scripts/gstreamer-settings -o ! -f $SNOWMIX/scripts/snowmix-settings ] ; then
  echo "Can not find the scripts/gstreamer-settings or the scripts/snowmix-settings in the directory set by the SNOWMIX environment variable"
  exit 1
fi

# Set video feed 
#feed_id=$1
#audio_feed_id=$1


# Load the Snowmix and GStreamer settings
. $SNOWMIX/scripts/gstreamer-settings
. $SNOWMIX/scripts/snowmix-settings
# This will set
# a) feed_rate
# b) feed_channels
# c) feed_control_pipe
# d) feed_width
# e) feed_height
# f) ctrsocket
# g) system_width
# h) system_height
# i) ratefraction
# j) snowmix
# k) channels
# l) rate

if [ X$ctrsocket = X -o X$system_width = X -o X$system_height = X ] ; then
  echo Failed to get control pipe or width or height from running snowmix
  exit 1
fi

VIDEOFORMAT=$VIDEOBGRA', width=(int)'$system_width', height=(int)'$system_height', framerate=(fraction)'$ratefraction
#OUTPUTFORMAT=$VIDEOBGRA', width=(int)'$system_width', height=(int)'$system_height
OUTPUTFORMAT=$VIDEOBGRA', width=888, height=480'
SNOWMIXVIDEOSRC=shmsrc
while true ; do
  echo  $gstlaunch -v $SNOWMIXVIDEOSRC socket-path=$ctrsocket do-timestamp=true is-live=true ! \
    queue leaky=2 max-size-buffers=2	!\
    $VIDEOFORMAT            ! \
    $VIDEOCONVERT	    ! \
    videoscale		    ! \
    $VIDEOCONVERT	    ! \
    autovideosink

  $gstlaunch -v $SNOWMIXVIDEOSRC socket-path=$ctrsocket do-timestamp=true is-live=true ! \
    queue leaky=2 max-size-buffers=2	!\
    $VIDEOFORMAT            ! \
    videoscale		    ! \
    $OUTPUTFORMAT	    ! \
    $VIDEOCONVERT	    ! \
    videorate           ! \
    x264enc bitrate=50  speed-preset=ultrafast ! \
    video/x-h264,profile=baseline ! \
    queue ! \
    mux. jackaudiosrc connect=0 ! \
    audioconvert ! \
    voaacenc bitrate=128000 ! \
    queue ! \
    mux. flvmux name=mux ! \
    filesink location=/tmp/leftover
    #rtmpsink location=\"rtmp://10.205.12.40:1935/myapp/leftover live=1\"

    #rtmpsink location=\"rtmp://10.0.0.105:1935/live/bla live=1\"
    #xvimagesink
    #x264enc bitrate=3500  speed-preset=ultrafast ! \
  sleep 2
done
