view TVout/matroxtv @ 9966:9aeb20839969

patch by Albeu, corrected by Diego Biurrun & me
author nicolas
date Mon, 21 Apr 2003 21:04:59 +0000
parents ab635db0c549
children 649f1089d94d
line wrap: on
line source

#!/bin/sh
#
# Gabucino - no warranty, this script can BOOM your TV and/or monitor, or else.
# v2.5
# This script has been tested and configured on a Matrox G400DH, a PAL TV,
# a 14" analog and a 15" digital monitor.
#
# INSTALLATION:
#	1. READ MPLAYER'S TVOUT DOCUMENTATION!
#	2. Edit 'defaultmode', 'TVdefaultmode', and 'SetTVstandard' functions
#	   below to fit your needs.
#	3. Remove 'exit 1' safety check.
#

function defaultmode {
	# You can choose the mode to use in monitor-only mode
	# 640x480 60Hz 32bpp	(14" monitors)
	fbset -a -xres 640 -yres 480 -vxres 640 -vyres 480 -depth 32 -pixclock 39721 -left 48 -right 16 -upper 33 -lower 10 -hslen 96 -vslen 2 -hsync high -accel true -laced false
	# 768x576 60Hz 32bpp	(14" monitors)
	# fbset -a -xres 768 -yres 576 -vxres 768 -vyres 5460 -depth 32 -pixclock 26101 -left 144 -right 16 -upper 28 -lower 6 -hslen 112 -vslen 4 -accel true -laced false
	# 800x600 76Hz 32bpp	(15" monitors)
	# fbset -a -xres 800 -yres 600 -vxres 800 -vyres 1440 -depth 32 -pixclock 20000 -left 128 -right 16 -upper 24 -lower 2 -hslen 96 -vslen 6 -laced false
	# 1024x768 70Hz 32bpp	(15" monitors)
	# fbset -a -xres 1024 -yres 768 -vxres 1024 -vyres 1440 -depth 32 -pixclock 12500 -left 144 -right 32 -upper 30 -lower 2 -hslen 192 -vslen 6 -laced false
}

function TVdefaultmode {

	##
	## PAL modes
	##

	# 640x512 80Hz 32bpp
	fbset -a -depth 32 -left 60 -right 0 -upper 70 -lower 39 -hslen 76 -vslen 4 -xres 640 -yres 512 -bcast true -laced false
	# 640x528 83Hz 32bpp
	# fbset -a -depth 32 -left 40 -right 0 -upper 63 -lower 29 -hslen 56 -vslen 4 -xres 640 -yres 528 -vxres 640 -vyres 528 -laced false -bcast true
	# 720x576 78Hz 32bpp
	# fbset -a -depth 32 -left 54 -right -36 -upper 55 -lower -6 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -laced false -bcast true

	##
	## NTSC modes
	##

	# 640x240 non-interlaced 32bpp
	# fbset -a -depth 32 -xres 640 -yres 240 -vxres 640 -vyres 240 -pixclock 79443 -left 72 -right 40 -upper 15 -lower 5 -hslen 48 -vslen 3 -laced false
	# 640x480 interlaced 32bpp
	# fbset -a -depth 32 -xres 640 -yres 480 -vxres 640 -vyres 480 -pixclock 79443 -left 72 -right 40 -upper 30 -lower 10 -hslen 48 -vslen 5 -laced true
}

function SetTVstandard {
	matroxset 1		# PAL
	# matroxset 2		# NTSC
}

function SetMonitorMode {
        matroxset 128
}

function mappingreset {
	matroxset -f /dev/fb0 -m 0
	matroxset -f /dev/fb1 -m 0
	matroxset -f /dev/fb0 -m 1
	con2fb /dev/fb0 /dev/tty1
	con2fb /dev/fb0 /dev/tty2
	SetMonitorMode
	defaultmode
}

function warn {
	clear
	echo "Display routing is about to come! Due to certain limitations"
	echo "(kernel? driver?), you MUST switch ttys a few times for"
	echo "these changes to take effect!!!!! After pressing a key now."
	echo
	echo "I.e.: press alt-f1, alt-f2, alt-f3, then back to alt-f1"
	echo
	echo "NOTE: you won't automatically get consoles on the new display."
	echo "      To achieve that, use the con2fb utility:"
	echo "        $ con2fb /dev/fb1 /dev/tty1"
	echo "      (and don't forget to change ttys a few times...)"
	echo
	echo
	echo "If you read this, PRESS ANY KEY TO CONTINUE"
	read
}

function warn2 {
	clear
	echo
	echo
	echo
	echo
	echo Routing done!
	echo Change consoles!
	echo
	echo Then PRESS ANY KEY TO RETURN to menu
	read
}	

echo
echo "Please read MPlayer's TV-out documentation, and install 'matroxset' and 'fbset'."
echo "Then edit this script to suit your monitor+TV set."
echo
exit 1

while [ 1 ]; do

clear

echo " [ 0 ]    Clear & blank screen"
echo " [ 1 ]    Monitor only"
echo "                          /---> Monitor"
echo " [ 2 ]    Cloning - CRTC1"
echo "                          \\---> TV"
echo
echo "                          /---> Monitor1"
echo " [ 3 ]    Cloning - CRTC1"
echo "                          \\---> Monitor2"
echo
echo "                     CRTC1 ---> Monitor1"
echo " [ 4 ]    DualHead -"
echo "                     CRTC2 ---> Monitor2"
echo
echo "                     CRTC1 ---> Monitor2"
echo " [ 5 ]    DualHead -                      SWAP!"
echo "                     CRTC2 ---> Monitor1"

echo

echo -- TV MODES
echo
echo " [ A ]	640x512		PAL"
echo " [ S ]	640x528		PAL"
echo " [ D ]	720x576		PAL"
echo " [ F ]	640x240		NTSC"
echo " [ G ]	640x480		NTSC, Interlaced"

read ABC

case "$ABC" in
	0)
	clear
	setterm -cursor off
	setterm -blank 0
	read
	setterm -cursor on
	;;

	1)
	mappingreset
	echo
	;;

	2)
	mappingreset
	matroxset -f /dev/fb0 -m 3
	SetTVstandard
	TVdefaultmode
	;;

	3)
	mappingreset
	matroxset -f /dev/fb0 -m 3
	;;

	4)
	warn
	mappingreset
	matroxset -f /dev/fb0 -m 1
	matroxset -f /dev/fb1 -m 2
	warn2
	;;

	5)
	warn
	mappingreset
	matroxset -f /dev/fb0 -m 2
	matroxset -f /dev/fb1 -m 1
	warn2
	;;

	a)
	# 640x512 80Hz 32bpp
	fbset -a -depth 32 -left 60 -right 0 -upper 70 -lower 39 -hslen 76 -vslen 4 -xres 640 -yres 512 -bcast true -laced false
	;;

	s)
	# 640x528 83Hz 32bpp
	fbset -a -depth 32 -left 40 -right 0 -upper 63 -lower 29 -hslen 56 -vslen 4 -xres 640 -yres 528 -vxres 640 -vyres 528 -laced false -bcast true
	;;

	d)
	# 720x576 78Hz 32bpp
#	fbset -a -depth 32 -left 54 -right -36 -upper 55 -lower -6 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -laced false -bcast true
	fbset -a -depth 32 -right -36 -lower -6 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -laced false -bcast true
	;;

	f)
	# 640x240 non-interlaced 32bpp
	fbset -a -depth 32 -xres 640 -yres 240 -vxres 640 -vyres 240 -pixclock 79443 -left 72 -right 40 -upper 15 -lower 5 -hslen 48 -vslen 3 -laced false
	;;

	g)
	# 640x480 interlaced 32bpp
	fbset -a -depth 32 -xres 640 -yres 480 -vxres 640 -vyres 480 -pixclock 79443 -left 72 -right 40 -upper 30 -lower 10 -hslen 48 -vslen 5 -laced true
	;;
esac

done