#!/bin/bash

case $LANG in
	ca*)
		FULLSCREEN=" A pantalla completa"
		SELECTING=" Seleccionando una zona de la pantalla"

	;;
	es*)
		FULLSCREEN=" A pantalla completa"
		SELECTING=" Seleccionando una zona de la pantalla"
	;;
	gl*)
		FULLSCREEN=" A pantalla completa"
		SELECTING=" Seleccionando una zona de la pantalla"

	;;
	*)
		FULLSCREEN=" Fullscreen"
		SELECTING=" To select a screen zone"

	;;
esac


# Si no existe un archivo de configuración, crea carpeta y archivo
if [ ! -f ~/.config/videocaptura/config ];then
	mkdir ~/.config/videocaptura/
	echo "fullscreen" > ~/.config/videocaptura/config
else
	MODO=`cat ~/.config/videocaptura/config`
fi

mkdir /tmp/videocaptura

ESTADO="$1"
DATE=`date --rfc-3339=seconds`
COUNT=`cat /tmp/videocaptura/n`

if [ "$COUNT" = "" ];then
	COUNT="0" >/tmp/videocaptura/n
fi

		reanudando=`ls /tmp/videocaptura/*.avi`
		if [ "$reanudando" = "" ];then
			echo "No hay archivos, es la primera captura."
		else
			echo "Ya hay archivos, no es la primera captura."
		fi



case "$ESTADO" in

		start)
		RULANDO=`rulando avconv`
		if [ "$RULANDO" = "Yes" ];then
			killall avconv
			minino-habla "pausando la grabación"
			exit 0
		fi

		COUNT=$((COUNT+1))
		echo $COUNT >/tmp/videocaptura/n
		NAME=`cat /tmp/videocaptura/n`


if [ "$MODO" = "fullscreen" ];then

	echo "Modo de pantalla completa"
	W=`wmctrl -d|awk '{print $4}'|cut -d"x" -f1`
	H=`wmctrl -d|awk '{print $4}'|cut -d"x" -f2`
	X=0
	Y=0
fi

if [ "$MODO" = "selection" ] && [ "$reanudando" = "" ];then

	echo "capturamos un trozo, el que nos dé slop"
    slopoutput=$(slop -f "%x %y %w %h")
    X=$(echo $slopoutput | awk '{print $1}')
    Y=$(echo $slopoutput | awk '{print $2}')
    W=$(echo $slopoutput | awk '{print $3}')
    H=$(echo $slopoutput | awk '{print $4}')
	
	echo $X > /tmp/videocaptura/X
	echo $Y > /tmp/videocaptura/Y
	echo $W > /tmp/videocaptura/W
	echo $H > /tmp/videocaptura/H
fi

if [ "$MODO" = "selection" ] && [ "$reanudando" != "" ];then

	echo "Modo de selección y reanudando una grabación."
    
    X=`cat /tmp/videocaptura/X`
    Y=`cat /tmp/videocaptura/Y`
    W=`cat /tmp/videocaptura/W`
    H=`cat /tmp/videocaptura/H`
fi






		echo $W"x"$H @ $X"+"$Y;
		sleep 1;
		echo "Grabando..."

		reanudando=`ls /tmp/videocaptura/*.avi`
		if [ "$reanudando" = "" ];then
			minino-habla "Iniciando la grabación en 3. 2. 1."
		else
			minino-habla "Reanudando la grabación"
		fi


			AUDIO_DEVICE="-f pulse -i default -ac 2" # alsa?
			AUDIO_CODEC="-acodec libmp3lame"
			VIDEO_DEVICE="-f x11grab -s ${W}x${H} -i $DISPLAY+$X,$Y"
			VIDEO_CODEC="-vcodec libx264"
			QUALITY=0 	# mejor cuanto más bajo sea el número entre 0-30
			FPS=30		# sorprendentemente no me influye en la CPU poner menos FPS ¿? Así que lo dejo con valor alto.
	
			avconv \
			-vsync 1  -async 1 \
			$AUDIO_DEVICE $AUDIO_CODEC \
			$VIDEO_DEVICE $VIDEO_CODEC \
			-preset superfast \
			-qscale $QUALITY \
			-b:a 256k \
			-ar 44100 \
			-joint_stereo 1 \
			-r $FPS \
			-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" \
			"/tmp/videocaptura/$NAME.avi"

		;;

		stop)
			FINALNAME="videocaptura"
			killall avconv
			minino-habla "Terminando la grabación."
			rm /tmp/videocaptura.avi; rm /tmp/d;rm /tmp/d2
			# si hay archivos en /tmp/videocaptura unirlos todos y zenity para guardar
			cd /tmp/videocaptura
			mencoder -oac copy -ovc copy *.avi -o /tmp/videocaptura.avi
			DESTINO=`zenity --file-selection --save --confirm-overwrite --filename="$FINALNAME" --title "¿Dónde guardamos la vídeo captura?"`
			echo "${DESTINO}.avi" >/tmp/d
			if [ "$DESTINO" = "" ];then
				minino-habla "Grabación cancelada."
				rm -r /tmp/videocaptura
			else
				mv /tmp/videocaptura.avi "`cat /tmp/d`" 
				dirname "`cat /tmp/d`" >/tmp/d2
				mcaja "`cat /tmp/d2`"
				rm -r /tmp/videocaptura
			fi
		;;
		
		pause)
		RULANDO=`rulando avconv`
		if [ "$RULANDO" = "Yes" ];then
			killall avconv
			minino-habla "Pausando la grabación."
			exit 0
		else
			minino-habla "No ha iniciado aún la grabación."
		fi


		;;
		
		config)

		OPCIONES=$(yad --form --title "TAMAÑO DE LA GRABACIÓN" \
	      --image imagen128.png \
	      --text "<big>Elija el modo de grabación:</big>" \
	      --field "MODO:CB" \
	      '1. A pantalla completa!2. Seleccionando una zona de la pantalla' \
		)
		if [ `echo $?` = "1" ];then exit 0;fi

		MODO=`echo $OPCIONES|cut -d"." -f2|cut -d "|" -f1`
		echo $MODO
		echo $FULLSCREEN

		if [ "$MODO" = "$FULLSCREEN" ];then
			mkdir ~/.config/videocaptura/
			echo "fullscreen" > ~/.config/videocaptura/config
			minino-videocaptura
		else
			mkdir ~/.config/videocaptura/
			echo "selection" > ~/.config/videocaptura/config
			minino-videocaptura
		fi


		;;
esac




