Hmm, that was fun, a week of playing around with xcel to massage some data before it was loaded. I’m surprised how crap xcel is when you really have to use it to do something. All of it’s little quirks and funny ways of doing things – it’s something that just feels old and out of date. Well hopefully the data loads and I wont have to worry about using it again in anger for some time.
I had been busy redesigning a lot of code in our application – slimming down the db layer, fixing a lot of outstanding problems, adding multiple select copy/paste/undo and the like, but I got a bit sidetracked by this utterly boring data load stuff. In the end trying to remove the aux table for trees in the database didn’t work too well – it slowed down some queries too much. Still the work wasn’t wasted – they are handy functions I needed anyway.
At home I finally booted ps3 linux again after a bit of a break. I’m working on yet-another-patch to mplayer to support the ps3 framebuffer. So far i’ve got a basic module which just copies the yuv data to the screen buffer, but I’ve already worked on some SPU code which will accelerate the process. Even without any rendering the PPE can’t decode a HD stream though – so no amount of video acceleration will help there, but it’s a start. Someone’s already done the same thing, but I really just want to get some experience coding with the SPU, so i’m basically doing the whole lot from scratch. mplayer dumps the raw YUV planes to some buffers and an SPU can load those, do YUV conversion and scaling – which provides a good speed boost. I guess if I get that to work nicely I can look into other stages to pipeline through an SPU, but I think that’ll be a long time coming – it’s a big codebase to grok and there’s a lot to learn about the CBE.
For starters I wrote a SIMD YUV converter – maps nicely to SIMD. I’m trying fixed-point rather than floating point, although over time I hope to try several different variations to see what works and what doesn’t. I’ve also worked out some code to do software scaling. Interesting problem to convert to SIMD – and it’s really nice to be able to do basically assembly language from within C, so you get access to all the nice shuffle/rotate/bit functions you can’t get to from within C which makes a real difference to speed. Although some of the intrinsics are a bit of a pain to use – lots of casting and crap that just makes it harder to do in C than it would in assembly – but with so many registers and scheduling issues I just can’t be bothered with approaching it from the assembly side.
Once I’ve tested that it actually works, I’ll have to post some code somewhere.
So wait, are you one of the guys helping with the Ubuntu PS3 port?
..Hardy is on its way, but there was some problem with X that they’re trying to figure out..
…and it needs to be lightened up a bit, imo….
If you show up on #ubuntu-ps3 on freenode sometime we can have a nice long talk ;)
Hey, could you please please make that a GStreamer patch instead of a mplayer patch :)