MythTV and the Playstation 3: current state

So I've had a week or so playing with the PS3 and MythTV. I just posted this to the Myth user list, but I suspect some of the readers here would be interested in how it's going.

I'm attempting to use a PS3 as the frontend to my Myth system, replacing the silent, solid state SD frontend I used to have. My backend records from two DVB-t cards, so I'm recording. But I've encountered a few problems and I'm wondering if anyone else has encountered these, or has suggestions of lines of attack.

Ideally Sony would open access to the graphics hardware through the "Other OS" feature, and then I could just run native Myth. Unfortunately this hasn't happened so I've been forced to use the UPnP approach. This means there's a bunch of features missing, like commercial flagging and the ability to delete recordings after watching, but I can live with that. These other problems are more serious.

Solving these would make the PS3 a pretty damn decent frontend, especially for people wanting HD. When it works, 1080i and 720p look pretty damn spectacular. A PS3 frontend has the added benefits of Blu Ray playback, UPnP client (for downloaded video) and a games console to boot.

Transport stream support

The PS3 supports many permutations of MPEG Program Stream(PS), but only MPEG2 video with MPEG2 Layer 2 audio inside a Transport Stream (TS). Australian DVB-t seems to (sometimes?) use AC3 audio, so inside a TS the PS3 can't play it back. I either get the video with white noise sound, or it refuses to play back at all.

It seems my Myth setup sometimes produces TS, and sometimes produces things that the PS3 is happy with. Output from "file" looks like this. Interestingly, the files labelled "data" play back, but the TS doesn't.

Output from "file":
1020_20090221181900.mpg: data
1020_20090221190000.mpg: data
1020_20090222050000.mpg: MPEG transport stream data
1020_20090222190000.mpg: TeX font metric data (\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377

So the approach I've been looking at is demuxing the TS into a PS in a transcode job. I haven't succeeded yet, so if anyone has a nice script I'd appreciate it. Ideally MythTV would be able to do this as it records, because otherwise I can't really watch a program that's still recording and there'll be a bunch of hard drive thrashing that could be avoided.

What's strange is that my tuners are almost identical. lspci output:
03:0c.0 Multimedia controller: Philips Semiconductors SAA7134/SAA7135HL Video Broadcast Decoder (rev 01)
04:0f.0 Multimedia controller: Philips Semiconductors SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (rev d0)

So I'm assuming the problem is due to Myth being relatively relaxed about the streams it produces, and really all it's doing is pulling out the appropriate TS from the multiplex and dumping it to disk. This is fine when mythfrontend (or mplayer or xine or whatever) is playing back, but the PS3 is a bit pickier about it.

So has anyone got any suggestions here? I'd love to find a way to get Myth to just product something I can play on the PS3, without having to transcode. I can post up some more diagnostic information if people want it.

Refreshing UPnP shares

It seems like the PS3 only refreshes listings from the UPnP server after being shut down and restarted. That means any recordings that kick off after you boot the PS3 don't show up. Anyone worked out a way to get these listings to refresh?

Playback stops with FF/RW

When I fast forward or rewind, playback doesn't restart when I press play. The play icon shows up on-screen, but the playback doesn't actually start. I have to stop and restart the playback to get it moving again. Weird, but not a show stopper I guess.

Playback while recording

Related to the UPnP share refreshing thing, if I watch a programme that's currently being recorded, it seems the PS3 takes the end time of the stream when first started, so it gets to the point where you started watching (as coming off the air) and stops. Kinda annoying -- it'd be nice if it just kept reading until the stream stops.

0 responses