#!/bin/sh 
# 
#
# (c) 2005 Joachim Protze
# Freigegeben unter GNU GPL 
# License under http://www.gnu.org/copyleft/gpl.html
#
# version 0.5.0
#

###############
# Config

# Version
version="0.5.5 @ 05/12/14"
# Senderliste
LISTE=~/.record/senderliste
# Output directory
OUTPUT=/home/data/record
# Alsa Mixer
AMIXER=/usr/bin/amixer
# v4lctl path
V4LCTL=/usr/bin/v4lctl
# tvtime configfile
TVTIME=~/.tvtime/tvtime.xml

# End Config
###############

###############
# Defaultwerte

PREFIX="record"
TIME="30:00"
RES="width=640:height=480"
BANDW="1000"

# End Defaultwerte
###############

###############
# Parameter

while [ "$#" -gt 0 ]; do
  case $1 in
  -n|--name)
    PREFIX=$2
    shift;shift
    ;;
  -d|--duration) 
    TIME=$2
    shift;shift
    ;;
  -s|--sender)
    CHAN=$(cat ${LISTE} | egrep -i "\b$2\b" | cut -d' ' -f1)
    shift;shift
    ;;
  -a|--resolution)
    RES="width=$(echo $2 | cut -dx -f1):height=$(echo $2 | cut -dx -f2)"
    shift;shift
    ;;
  -b|--bitrate)
    BANDW=$2
    shift;shift
    ;;
  -V|--version)
    echo "version ${version}"
    exit
    ;;
  *)  
    echo "script to tvrip with mplayer"
    echo "Usage: $0" 
    echo "-n|--name prefix-filename"
    echo "-d|--duration in sekunden oder hh:mm:ss [30:00]"
    echo "-s|--sender"
    echo "-a|--resolution (hight)x(width) [640x480]"
    echo "-b|--bitrate [1000]"
    echo "-V|--version"
    exit
    ;;  
  esac  
done    
                                                                                                
# End Parameter
###############

# wenn tv läuft wird das gekillt
if [ $(ps -C motv | grep -c motv) -gt 0 ]; then
	killall motv
        sleep 1
fi
if [ $(ps -C xawtv | grep -c xawtv) -gt 0 ]; then
	killall xawtv
        sleep 1
fi
if [ $(ps -C tvtime | grep -c tvtime) -gt 0 ]; then
	killall tvtime
        sleep 1
fi

# sicherstellen, dass das Zielverzeichnis existiert
mkdir -p $OUTPUT 2>/dev/null

if [ $? -gt 0 ]; then
	echo "Kann Zielverzeichnis nicht erstellen"
	exit 2
fi
	
DATE=`date +%m-%d-%Y_%H.%M`


# Lautstärken regeln 

PLAY_VOL=`$AMIXER -c 0 cget name='Line Playback Volume' | grep : | sed 's/^.*=\([^,]*\).*$/\1/'`

# record von pcm -> aus
$AMIXER -c 0 -q cset name='PCM Capture Switch' 'off,off'
# linein -> 100%
$AMIXER -c 0 -q cset name='Line Playback Volume' 31
# record von linein -> an
$AMIXER -c 0 -q cset name='Line Capture Route' 'on,on,on,on' 
# playback von linein -> aus
$AMIXER -c 0 -q cset name='Line Playback Switch' 'off,off' 
# mastervol -> aus
#$AMIXER -c 1 -q cset name='Master Playback Volume' 0
# tvkarte auf 100% setzen
$V4LCTL volume 100%

# wenn die tvtimeconfigfile existiert, dann werden die default Werte übernommen
if [ -f $TVTIME ]; then
	CONTRAST=`cat ${TVTIME} | grep DefaultContrast | sed 's/^.*value="\([^"]*\).*$/\1/'`
	BRIGHTNESS=`cat ${TVTIME} | grep DefaultBrightness | sed 's/^.*value="\([^"]*\).*$/\1/'`
	COLOR=`cat ${TVTIME} | grep DefaultColour | sed 's/^.*value="\([^"]*\).*$/\1/'`
	HUE=`cat ${TVTIME} | grep DefaultHue | sed 's/^.*value="\([^"]*\).*$/\1/'`

	$V4LCTL bright ${BRIGHTNESS}% color ${COLOR}% contrast ${CONTRAST}% hue ${HUE}%
fi

###############
# Aufnahme

OPTS=" -tv driver=v4l2:${RES} tv://${CHAN} -o ${OUTPUT}/${PREFIX}_${DATE}.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$BANDW:aspect=4/3 -oac mp3lame -lameopts cbr:br=128 -endpos ${TIME}"
echo "mencoder $OPTS"
mencoder $OPTS

# End Aufnahme
###############

# tvkarte muten und auf 100%
$V4LCTL volume mute on
$V4LCTL volume 100%

# lautstärken zurücksetzen
$AMIXER -c 0 -q cset name='Line Playback Volume' $PLAY_VOL
$AMIXER -c 0 -q cset name='Line Capture Route' 'off,off,off,off' 
#$AMIXER -c 0 -q cset name='Master Playback Volume' $MASTER_VOL
$AMIXER -c 0 -q cset name='Line Playback Switch' 'on,on'
