#!/bin/sh

# tvrec 2.1, (c) 2003-2008 Jan ONDREJ (SAL) <ondrejj(at)salstar.sk>
# This script is under GPL license.

# Usage:
#   tvrec [--channel CHANNEL] [--poweroff] [--filename FILENAME.mpg] \
#     [--path filepath] [--noxterm] [--play] \
#     [--snapshot FILENAME.jpg] [--mins num_of_minuts] OTHER_ARGS

PARAMS=""
CHANNEL=0
POWEROFF=0
SNAPSHOT=0
MPLAY=0
FPATH="$HOME/tmp/video/"
FILENAME="`date +%Y%m%d-%H%M%S`.avi"
XFONT='-fn -*-courier-*-r-*-*-30-*-*-*-*-*-*-*'
XTERM="xterm $XFONT -geometry 90x4 -e"
export PATH="$HOME/bin:/usr:/usr/bin:/usr/X11R6/bin:/usr/local/bin:$PATH:/sbin:/usr/sbin"

while [ $# -gt 0 ]; do
  if [ "$1" = "--channel" ]; then
    CHANNEL="$2"
    shift 2
  elif [ "$1" = "--poweroff" ]; then
    POWEROFF=1
    shift 1
  elif [ "$1" = "--noxterm" ]; then
    XTERM=""
    shift 1
  elif [ "$1" = "--play" ]; then
    MPLAY=1
    shift 1
  elif [ "$1" = "--path" ]; then
    FPATH="$2"
    shift 2
  elif [ "$1" = "--filename" ]; then
    FILENAME="$2"
    FPATH=""
    shift 2
  elif [ "$1" = "--mins" ]; then
    #PARAMS="$PARAMS -F `expr 1500 \* $2`"
    PARAMS="$PARAMS -endpos $2:0"
    shift 2
  elif [ "$1" = "--snapshot" ]; then
    if [ "$2" = "0" ]; then
      FILENAME="`date +%Y%m%d-%H%M%S`.jpg"
    else
      FILENAME="$2"
    fi
    SNAPSHOT=1
    shift 2
  else
    PARAMS="$PARAMS $1"
    shift 1
  fi
done

if [ ! "$CHANNEL" = "0" ]; then
  export DISPLAY=:0
  (tvtime || tvtime -D SDL) >/dev/null 2>&1 &
  sleep 2s
  #/usr/bin/X11/xawtv-remote setstation $CHANNEL
  for c in `echo $CHANNEL | sed 's/\([0-9]\)\([0-9]\)/\1 \2 /g'`; do
    tvtime-command CHANNEL_$c
  done
  tvtime-command ENTER
fi

mixer="amixer -c0"
if [ "$MPLAY" = "1" ]; then
  (
    sleep 15s
    $mixer set Line mute record
    #cat "$FPATH$FILENAME" | mplayer -nocache - >/dev/null 2>&1
    mplayer -nocache "$FPATH$FILENAME"
    $mixer set Line unmute
  ) &
fi
$mixer set 'Mic' mute
$mixer set 'Capture' cap unmute
$mixer set 'Line' cap unmute
$mixer set 'Input Source',0 Line

if [ "$SNAPSHOT" = "1" ]; then
  tvtime-command SCREENSHOT
else
  tvtime-command QUIT
  sleep 1s
  #CMD="ffmpegrec -vb 1800 -vq 20 -v /dev/video0 -s stereo -w 640 -h 480 -deint bob -o $FPATH$FILENAME $PARAMS"
  CMD="mencoder
         -tv driver=v4l2:device=/dev/video0:width=768:height=480
         -of avi -oac lavc -ovc lavc -vf pp=fd -lavcopts
         acodec=mp2:abitrate=128:vcodec=mpeg4:vbitrate=1200:aspect=4/3:threads=2:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3
         tv:// -o $FPATH$FILENAME $PARAMS"
  echo "$CMD"
  $XTERM $CMD
fi

if [ "$POWEROFF" = "1" ]; then
  /sbin/poweroff
fi
