[vlc-devel] Re: Mac OS X MPEG-2 Acceleration - It's Here, Let's Use It

galenz at zinkconsulting.com galenz at zinkconsulting.com
Mon Aug 28 19:59:16 CEST 2006

On Aug 28, 2006, at 7:28 AM, Derk-Jan Hartman wrote:

> On 28-aug-2006, at 4:58, galenz at zinkconsulting.com wrote:
>> 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/libmpeg2/QuickTime based decoders 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 there's a bit  
>> more than just dropping this into another player that uses  
>> libavcodec to have it playing/
>> Is it possible that this could be integrated into VLC as an  
>> option? Is anybody associated with VLC working with this already?  
>> VLC under OS X has a great interface and is an elegant player, it  
>> would be great if it could be the best performing player, by far.
>> Feel free to contact me off list if you prefer.
> Ah, Accellent.
> I looked at this several times already, but there are several problems
> 1: it's not really well documented
> 2: It requires preparsing the video, setting up the video window  
> and then decoding with DVDVideo. In VLC decoding usually occurs  
> before the display core is aware of anything. It would require  
> adding a specific preparser to the avcodec decoder and opening up  
> the window earlier in the proces (perhaps this can be avoided, but  
> i'm not sure yet)
> 3: it uses libavcodec, whereas we usually use libmpeg2 because of  
> it's superior speed and resilience. ( a special submodule with a  
> higher score could take care of this)
> 4: we need a way to find out at the decoder level wether we are  
> going to be streaming/transcoding, because then we need to disable  
> the hardware decoding.
> It's all possible, but at the moment #1 is a blocker for me.  
> (besides lack of time :D )
> DJ


I've emailed John and cc'd you. We'll see if he's willing to provide  
more documentation. It's a real waste if he won't put together a  
little documentation, considering all the effort that went into it.

I would agree that I prefer libmpeg2, but with the kind of  
performance you see from Accellent, it warrants serious  
consideration. I found an HD clip that consumed 90-110% of the CPU on  
a 2 GHz Core Duo using VLC, yet used less than 25% of the CPU on a  
1.33 GHz PowerBook G4 using Accellent. And if you've seen any  
benchmarks of the Core Duo versus the G4, I think you can get an idea  
that is an absolutely night and day difference.


This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://developers.videolan.org/lists.html

More information about the vlc-devel mailing list