Displaying Video on an EPIA ME6000 on alternate TV-Out
(Part of the BuildingFreevo set.)
Using a PVR-350 on an EPIA ME-6000 board works great for hardware-accelerated MPEG1/2 playback, but cannot keep up with any type of software decoding (for AVI/XviD playback).
Solution: use the VIA onboard CLE266 graphics chip and mplayer's "xv" support, which is fast enough, use its S-Video out, and run an X server on this output only when it is required.
This allows the PVR-350 tv-out to be the main interface in MythTV, and then the user can switch to the other tv-out when they watch video files in MythVideo.
/usr/local/bin/viamplayer (alternative mplayer script which displays on the other tv-out):
#!/bin/sh set -x file="$*" # ensure there isn't one running, just to be sure sudo /usr/local/etc/kill_video_xserver rm /tmpfs/:1.pid # display a nice message on the PVR-350 tv out echo ' wm title . "Switch Video Input" label .lbl -text "Video file is now playing on the other video input." pack .lbl -side top -padx 10 -pady 10 ' > /tmpfs/busy.scr ; wish -f /tmpfs/busy.scr & wishpid=$! sudo /usr/local/etc/start_video_xserver & sleep 1 while [ ! -f /tmpfs/:1.pid ] ; do sleep 1 done pid=`cat /tmpfs/:1.pid` xauth merge /tmpfs/:1.auth mplayer -fs -zoom -quiet -framedrop \ -ao oss:/dev/dsp \ -vo xv -display :1 "$file" status=$! sudo /usr/local/etc/kill_video_xserver kill $wishpid exit $status
/usr/local/etc/start_video_xserver:
#!/bin/sh xinit /usr/local/etc/start_video_clients -- :1 \ -br -noreset -nolisten tcp -v \ -xf86config /etc/X11/XF86Config-4.via
/usr/local/etc/start_video_clients:
#!/bin/sh set -x echo $$ > /tmpfs/:1.pid tmpf=/tmpfs/:1.auth xauth extract - :1 > $tmpf chmod 644 $tmpf /tmpfs/:1.pid chown mythtv /tmpfs/:1.pid /tmpfs/:1.auth xset s off # wait for the X server to be killed before we exit while true ; do sleep 60 if xdpyinfo ; then echo "X is still running, not quitting client script" else echo "X no longer running, done" exit fi done
/usr/local/etc/kill_video_xserver:
#!/bin/sh pkill -f " :1 "
/etc/X11/XF86Config-4.via:
Section "ServerLayout" Identifier "XFree86 Configured" Screen 0 "TV Screen" InputDevice "PS/2 Mouse" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection Section "ServerFlags" Option "AllowMouseOpenFail" "true" EndSection Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" ModulePath "/usr/X11R6/lib/modules" FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi" FontPath "/usr/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/X11R6/lib/X11/fonts/PEX" # Additional fonts: Locale, Gimp, TTF... FontPath "/usr/X11R6/lib/X11/fonts/cyrillic" # FontPath "/usr/X11R6/lib/X11/fonts/latin2/75dpi" # FontPath "/usr/X11R6/lib/X11/fonts/latin2/100dpi" # True type and type1 fonts are also handled via xftlib, see /etc/X11/XftConfig! FontPath "/usr/X11R6/lib/X11/fonts/Type1" FontPath "/usr/share/fonts/ttf/western" FontPath "/usr/share/fonts/ttf/decoratives" FontPath "/usr/share/fonts/truetype" FontPath "/usr/share/fonts/truetype/openoffice" FontPath "/usr/share/fonts/truetype/ttf-bitstream-vera" FontPath "/usr/share/fonts/latex-ttf-fonts" FontPath "/usr/X11R6/lib/X11/fonts/defoma/CID" FontPath "/usr/X11R6/lib/X11/fonts/defoma/TrueType" EndSection Section "Module" #Load "ddc" # ddc probing of monitor # Load "GLcore" #Load "v4l" Load "dbe" Load "extmod" # Load "glx" #Load "bitmap" # bitmap-fonts #Load "speedo" Load "type1" Load "freetype" Load "record" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "keyboard" Option "CoreKeyboard" Option "XkbRules" "xfree86" Option "XkbModel" "pc105" Option "XkbLayout" "us" EndSection Section "InputDevice" Identifier "Serial Mouse" Driver "mouse" Option "Protocol" "Microsoft" Option "Device" "/dev/ttyS0" Option "Emulate3Buttons" "true" Option "Emulate3Timeout" "70" Option "SendCoreEvents" "true" EndSection Section "InputDevice" Identifier "PS/2 Mouse" Driver "mouse" Option "Protocol" "auto" Option "ZAxisMapping" "4 5" Option "Device" "/dev/psaux" Option "Emulate3Buttons" "true" Option "Emulate3Timeout" "70" Option "SendCoreEvents" "true" EndSection Section "InputDevice" Identifier "USB Mouse" Driver "mouse" Option "Device" "/dev/input/mice" Option "SendCoreEvents" "true" Option "Protocol" "IMPS/2" Option "ZAxisMapping" "4 5" Option "Buttons" "5" EndSection Section "Monitor" Identifier "NTSC Monitor" HorizSync 30-50 VertRefresh 60 # http://knoppmythwiki.homelinux.org/index.php?page=KnoppMythR5PreviewInstall # HorizSync 30-68 # VertRefresh 50-120 Mode "720x480" # D: 34.563 MHz, H: 37.244 kHz, V: 73.897 Hz DotClock 34.564 HTimings 720 752 840 928 VTimings 480 484 488 504 Flags "-HSync" "-VSync" EndMode EndSection Section "Device" Identifier "VIA CLE266 Framebuffer" Driver "via" VendorName "Via" BoardName "cle266" VideoRam 32768 Option "ActiveDevice" "CRT,TV" Option "TVType" "NTSC" Option "TVOutput" "S-Video" Option "PciRetry" "true" EndSection Section "Screen" Identifier "TV Screen" Device "VIA CLE266 Framebuffer" Monitor "NTSC Monitor" DefaultDepth 24 DefaultFbbpp 32 Subsection "Display" Depth 24 FbBpp 32 Modes "720x480" EndSubsection EndSection Section "DRI" Mode 0666 EndSection