[Ffmpeg-devel] MPEG-2 Acceleration Under Mac OS X - Can We Move This Forward?

galenz at zinkconsulting.com galenz
Mon Aug 28 04:36:14 CEST 2006


I've been a little bit involved with an interesting project called  
Accellent which is a libavcodec-based reverse-engineer of Mac OS X's  
MPEG-2 hardware acceleration API. Apple refused to release any data  
on this, so John decided to reverse engineer it. After a few  
iterations and a bit of work, we now have a nice open source  
application that works under Mac OS 10.4 and 10.3. Take a look at it  
here: http://www.defyne.org/dvb/accellent.html

The performance is great. Even on G4s, full resolution HDTV decoding  
only consumes 15-35% of the CPU. On these same machines, ffmpeg-based  
players (and pretty much all other players) don't even come close to  
fluid playback - that's millions of Mac users who can't use their  
machines for HD playback. There's no reason it won't work on G3s with  
an acceptable graphics card as well. While newer machines are capable  
of software-only decoding, low end G5s sometimes have trouble with  
HD, and for any machine - why use the CPU, when you could use the  
GPU? It means that you can multi-task better, reduce power  
consumption (longer laptop battery life) and have a cooler machine  
(less fan noise, cooler lap.)

We've cracked open Apple's secret API, but the problem is that we are  
stuck. The application is a great proof-of-concept using libavcodec.  
But John's busy and the application isn't really useful for any  
function: it's crude demuxer and a window that displays the video. It  
only accepts MPEG program streams, but it would be far more useful if  
it accepted MPEG transport streams. There are no playback controls.  
It does not attempt to decode audio, but it really needs to decode  
AC3 audio to be useful. The interactions with libavcodec are a bit of  
a hack, so you can't just readily drop this into another player that  
uses libavcodec and be on your way.

I'm tossing this out to you all, as ffmpeg developers, in hopes that  
somebody has some interest in working further on this. It would be  
interesting if the functionality could somehow be integrated into  
libavcodec, or perhaps just simply an effective player be put  
together. There are millions of users who could benefit!

Feel free to contact me off list if you prefer.


More information about the ffmpeg-devel mailing list