[mythtv-users] PS3 Patches - anyone want to test them?

Mark Kendall mark.kendall at gmail.com
Thu Jun 21 08:49:07 UTC 2007


As I'm off for a week from tomorrow, I thought it was about time I
shared my work on ps3 video playback. The patch is against the
mythtv-vid branch but this will work fine with a recent version of svn
head on your backend. All installed on top of Yellow Dog Linux 5
though I see no reason why it shouldn't work with any other PS3 linux
distro.

Hopefully I've covered off most of the detail in the brain dump below
but in general it's working pretty well - some of the 720p playback is
about as good I've seen anywhere and all without the extensive grief
of buggy drivers, xorg.conf files etc etc.

Relevant files are:-

http://www.btinternet.com/~mark_kendall/mythtvps3.diff
http://www.btinternet.com/~mark_kendall/joystickmenurc
http://www.btinternet.com/~mark_kendall/revert.cpp

Any and all feedback much appreciated and I'll get back to it when I'm
back from my travels.

Regards

Mark


Sanity warning

The kernel process that controls the framebuffer is disabled during
playback. If mythtv crashes during this time (and remember, this patch
is a work in progress), you will be left with a seemingly unresponsive
ps3. In reality the framebuffer is not being updated. Rather than
using control-alt-backspace, download and compile this short program
and install it in your path (instructions below). Run
mythtv/mythfrontend from a console and if it crashes it should return
you to the text prompt (although you won't be able to see it) - just
type revert to restore your desktop.

cd ~
mkdir revert
cd revert
wget http://www.btinternet.com/~mark_kendall/revert.cpp
g++ -o revert revert.cpp
su
cp revert /usr/bin/revert


What's New

 - new configure option --enable-ps3
 - new, configurable exit option to boot into the game os. Switch
seemlessly between wasting your time gaming and wasting your time
watching tv:)
 - new video output method and vertical sync that accesses the ps3
framebuffer directly. This defaults to using ffmpeg for software
colour conversion and scaling.
 - if libspe2 is detected, deinterlacing, yuv to rgb colour conversion
and scaling are offloaded to (some of) the PS3s 'SPE's.


Performance/Setup

Once installed, Go to Settings->TV Settings->Playback->Playback
Profiles and setup 1 or more profiles using ps3fb as the renderer.
Turn off OSD fade and enable Adaptive x2 as the default deinterlacer
(unless it gives you problems - see below).

If playback is poor (ie low framerate), you've either not compiled
with libspe2 support and it's falling back to ffmpeg
conversion/scaling (check your logs for lack of SPU type messages and
recompile) or mythtv is using the xvideo display method and falling
back to software/x-lib scaling (check your logs and adjust your
display profiles).

Without the patches, the ps3 is almost unusable as a frontend for even
standard definition. Using the 'accelerated' video output, I can
comfortably play 720p and 1080i mpeg2 material. I don't have any 1080p
mpeg2 source clips so can't test. The only playback that is currently
erratic for me is 1080i displayed downscaled to 720p using the double
frame rate deinterlacer - and this looks like it's a limitation with
the main processor/memory rather than the spe's. Hidef h.264 playback
does not work.

I'd recommend using a lightweight window manager, lightweight mythtv
theme and turning off as many unnecessary services as you can. This
will save memory and speed up menu navigation, playback startup etc.
It may just make things that much more stable as well as any
instability seems to be memory related.

Alternatively, try qt-embedded (video output works just as well
without X). I've run it successfully using qt-embedded-3.3.5.


Using the sixaxis controller

With YDL 5.0, the sixaxis controller works 'out of the box' when
connected via usb. I've put together a simple joystick config file
that you'll need to copy to ~/.mythtv - It's useful if you do try
qt-embedded as setting up the mouse/keyboard can be a pain.

http://www.btinternet.com/~mark_kendall/joystickmenurc


Issues

Generally it seems to be pretty stable - but re-read the sanity
warning above:) Otherwise the main, obvious issue is that the program
guide/watch recordings/find programs screens are not rendered properly
when called from playback (livetv or recording). There are also
occasional issues with videomode validation - especially when using
vesa modes in fullscreen (this appears to be a driver/ioctl bug but
you shouldn't need to select a vesa mode using the -f option anyway as
they are already fullscreen). I'd recommend you use something like
720p in fullscreen to get you going and experiment from there.


To Do

Code clean up - especially a re-write of mythspuhandler...
Performance management - currently hardcoded to share the load between
2 of the 6 available spu's. This should be adjusted on the fly.
xrandr/display res support - should be simple enough to enable display
resolution switching but I want to extend the mythtv code to support
interlaced modes as well.
deinterlacer - the inbuilt deinterlacer is OK but there should be
plenty of horsepower available for better quality.


Requirements (over and above a normal mythtv installation from source)

 - libspe2 and libspe2-devel (which enable access to the spe's). You
can download these from:-
 http://www.bsc.es/projects/deepcomputing/linuxoncell/cellsimulator/sdk2.0/libspe2-2.0.1-1.ppc.rpm
   http://www.bsc.es/projects/deepcomputing/linuxoncell/cellsimulator/sdk2.0/libspe2-devel-2.0.1-1.ppc.rpm

 - the spu development toolchain. If you have spu-gcc and embedspu,
you're there...

Installation

cd ~
svn co http://svn.mythtv.org/svn/branches/mythtv-vid
cd mythtv-vid
wget http://www.btinternet.com/~mark_kendall/mythtvps3.diff
patch -p 1 -i mythtvps3.diff
chmod +x libs/libmythtv/cell/make_spu.sh
libs/libmythtv/cell/make_spu.sh
./configure --enable-ps3
qmake mythtv.pro
make
sudo make install

Installation notes

 - be patient, it takes a couple of hours to compile...
 - do not try and speed things up by using make -j 2 or similar -
you'll just slow it down due to the lack of memory.
 - you might want to disable a number of the backend options (e.g.
--disable-dvb etc) to shorten compile times.


More information about the mythtv-users mailing list