op_tvout.sh: rewrite, make usable for other GUIs
[openpandora.oe.git] / recipes / pandora-system / pandora-scripts / op_tvout.sh
index 22c7d2b..3f64e93 100755 (executable)
 #!/bin/bash
-# These are just some very basic TV-Out scripts. The picture will most likely not properly be centered, etc. An enhanced one is currently being scripted. 
 
-while mainsel=$(zenity --title="TV-Out Configuration" --width="380" --height="200" --list --column "id" --column "Please select" --hide-column=1 --text="This is a very simple TV Out Script. It will be enhanced." "pal" "Enable TV Out in PAL Mode" "ntsc" "Enable TV Out in NTSC Mode" "disable" "Disable TV Out"); do
+# defaults
+tv_type="pal"
+conn_type="svideo"
+layer=0
+pal_size="658,520"
+pal_pos="35,35"
+ntsc_size="655,455"
+ntsc_pos="40,15"
+size=$pal_size
+pos=$pal_pos
 
-case $mainsel in
-  "pal")
+usage()
+{
+  echo "usage: $0 [-d] [-t pal|ntsc] [-c composite|svideo] [-l 0|1] [-{p|n}s w,h] [-{p|n}p x,y]"
+  exit 1
+}
+
+setup_scaler()
+{
+  # we must preallocate enough memory for the scaler layer
+  # since the app won't be able to change this
+  # the whole time TV-out is running..
+  ofbset -fb /dev/fb1 -mem $[3*1024*1024] -size 512 256 -en 0
+}
+
+enable_it()
+{
+  echo "${tv_type}, ${conn_type}, layer $layer $pos $size"
   cd /sys/devices/platform/omapdss
   echo 0 > overlay0/enabled
-  echo 0 > overlay2/enabled
   echo 0 > overlay1/enabled
-  echo 0 > display1/enabled
+  echo 0 > overlay2/enabled
   echo "" > /sys/class/graphics/fb2/overlays
-  echo "0,2" > /sys/class/graphics/fb0/overlays
-  echo "658,520" > overlay2/output_size
+  echo "" > /sys/class/graphics/fb1/overlays
+  if [ $layer -eq 1 ]; then
+    setup_scaler
+    echo "0" > /sys/class/graphics/fb0/overlays
+    echo "1,2" > /sys/class/graphics/fb1/overlays
+  else
+    # assume layer 0 for now
+    echo "0,2" > /sys/class/graphics/fb0/overlays
+    echo "1" > /sys/class/graphics/fb1/overlays
+  fi
+  echo $conn_type > display1/venc_type
   echo "tv" > overlay2/manager
-  echo "35,35" > overlay2/position 
-  echo "pal" > display1/timings
+  echo $size > overlay2/output_size
+  echo $pos > overlay2/position 
+  echo $tv_type > display1/timings
   echo 1 > overlay0/enabled
   echo 1 > overlay2/enabled
   echo 1 > display1/enabled
-  zenity --info --title="TV Out" --text "TV Out (PAL Mode) has been enabled." --timeout 6
-  ;;
+}
 
-  "ntsc")
+disable_it()
+{
   cd /sys/devices/platform/omapdss
   echo 0 > overlay0/enabled
-  echo 0 > overlay2/enabled
   echo 0 > overlay1/enabled
-  echo 0 > display1/enabled
-  echo "" > /sys/class/graphics/fb2/overlays
-  echo "0,2" > /sys/class/graphics/fb0/overlays
-  echo "655,455" > overlay2/output_size
-  echo "tv" > overlay2/manager
-  echo "40,15" > overlay2/position 
-  echo "ntsc" > display1/timings
-  echo 1 > overlay0/enabled
-  echo 1 > overlay2/enabled
-  echo 1 > display1/enabled   
-  zenity --info --title="TV Out" --text "TV Out (NTSC Mode) has been enabled." --timeout 6  
-  ;;
-
-  "disable")
-  cd /sys/devices/platform/omapdss
-  echo 0 > overlay0/enabled
   echo 0 > overlay2/enabled
-  echo 0 > overlay1/enabled
   echo 0 > display1/enabled
   echo "" > /sys/class/graphics/fb2/overlays
-  echo "0" > /sys/class/graphics/fb0/overlays
+  echo "" > /sys/class/graphics/fb1/overlays
+  echo 0 > /sys/class/graphics/fb0/overlays
+  echo 1 > /sys/class/graphics/fb1/overlays
+  echo 2 > /sys/class/graphics/fb2/overlays
   echo 1 > overlay0/enabled
-  zenity --info --title="TV Out" --text "TV Out has been disabled." --timeout 6
-  ;;    
+}
+
+# parse args
+got_args=false
+while true; do
+  case $1 in
+    "-d")
+      disable_it
+      exit 0
+      ;;
+    "-t")
+      shift
+      tv_type=$1
+      ;;
+    "-c")
+      shift
+      conn_type=$1
+      ;;
+    "-l")
+      shift
+      layer=$1
+      ;;
+    "-ps")
+      shift
+      pal_size=$1
+      ;;
+    "-pp")
+      shift
+      pal_pos=$1
+      ;;
+    "-ns")
+      shift
+      ntsc_size=$1
+      ;;
+    "-np")
+      shift
+      ntsc_pos=$1
+      ;;
+    "")
+      ;;
+    *)
+      usage
+      ;;
   esac
+
+  if ! shift; then break; fi
+  got_args=true
 done
+
+if [ "$tv_type" != "pal" -a "$tv_type" != "ntsc" ]; then
+  usage
+fi
+
+if [ "$conn_type" != "svideo" -a "$conn_type" != "composite" ]; then
+  usage
+fi
+
+if [ "$layer" != "0" -a "$layer" != "1" ]; then
+  usage
+fi
+
+if [ "$tv_type" = "ntsc" ]; then
+  size=$ntsc_size
+  pos=$ntsc_pos
+fi
+
+
+if $got_args; then
+  enable_it
+else
+  # old zenity menu, to be removed
+  while mainsel=$(zenity --title="TV-Out Configuration" --width="420" --height="248" --list \
+    --column "id" --column "Please select" --hide-column=1 \
+    --text="This is a very simple TV Out Script. It will be enhanced." \
+    "pal" "Enable TV Out in PAL Mode" \
+    "ntsc" "Enable TV Out in NTSC Mode" \
+    "pal2" "Enable TV Out in PAL Mode, overlay" \
+    "ntsc2" "Enable TV Out in NTSC Mode, overlay" \
+    "disable" "Disable TV Out" \
+    )
+  do
+
+  case $mainsel in
+    "pal")
+    layer=0
+    pos=$pal_pos
+    size=$pal_size
+    enable_it
+    zenity --info --title="TV Out" --text "TV Out (PAL Mode) has been enabled." --timeout 6
+    ;;
+
+    "pal2")
+    layer=1
+    pos=$pal_pos
+    size=$pal_size
+    enable_it
+    zenity --info --title="TV Out" --text "TV Out (PAL Mode) has been enabled." --timeout 6
+    ;;
+
+    "ntsc")
+    layer=0
+    pos=$ntsc_pos
+    size=$ntsc_size
+    enable_it
+    zenity --info --title="TV Out" --text "TV Out (NTSC Mode) has been enabled." --timeout 6  
+    ;;
+
+    "ntsc2")
+    layer=1
+    pos=$ntsc_pos
+    size=$ntsc_size
+    enable_it
+    zenity --info --title="TV Out" --text "TV Out (NTSC Mode) has been enabled." --timeout 6  
+    ;;
+
+    "disable")
+    disable_it
+    zenity --info --title="TV Out" --text "TV Out has been disabled." --timeout 6
+    ;;    
+  esac
+  done
+fi