[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
Hello,
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.
-Galen
More information about the ffmpeg-devel
mailing list