H.264 decoder

xtknight

Elite Member
Oct 15, 2004
12,974
0
71
It's high time I be able to utilize both of my cores! Are there any SMP-aware H.264 decoders in the works, or available currently? Personally I'm not a fan of the GPU solution because it is not cross-platform compatible and it is limiting (very direct output, no postprocessing available yet, etc).
 

TheRyuu

Diamond Member
Dec 3, 2005
5,479
14
81
Not that I'm aware of (I'm no expert though).

Is a multi-threaded decoder really needed though?
Last I checked, ffdshow can do H.264 and post processing. Not multi-threaded though (it can do multiple threads on mpeg1/2 but it's pretty buggy).
Might be your best shot (if your not already using it) right now.

And I imagine that the developers of ffdshow have some sort of multi-threaded/smp aware stuff in the works (the mpeg1/2 one is already there, although buggy).

Edit:
Also, check out this over at Doom9

After reading a little bit, the libavcodec that ffdshow uses is just as fast as any of the other ones out there although I'm not sure how up to date that info is.
What'd know. The free one is just as good as the other :p

It was in this thread.

- libavcodec in mplayer and ateme are nearly always the fastest

when looking only at the directshow decoders you see that
- moonlight is faster than ffdshow and nero (but not than mplayer)
- ffdshow is as good as always faster than nero
- videosoft is performing in the middle
- elecard and mainconcept are slow

There is also an up to date codec list too.
Text
 

ethebubbeth

Golden Member
May 2, 2003
1,740
5
91
I would like to know this as well... decoding HD-DVD with h.264 content on a card without HD AVIVO or PureVideoHD support requires a hell of a lot of CPU muscle.

I would love an SMP capable version of ffdshow and it various codecs in order to facilitate decoding of HD-DVD content on my X2 3800+ without dropping frames.

Even with a DVD-5 sized rip of Sin City in h.264 @ 1280x720, my Socket 754 Athlon64 3000+ cannot keep up in certain scenes with higher bitrates. I do not even want to think about something with full HD-DVD bitrates.
 

CapYoda

Member
Aug 28, 2001
63
0
0
most efficient software decoder: http://www.coreavc.com/

you'll have to get the professional edition to get SMP support, and so far limit to 2 core.. the supposedly coming enterprise edition will support more core.

IMO, the standard edition of coreavc is pretty hot already.. lets me run 1080p content on my athlon xp 2.3 ghz w/o too much issue. occasionally there may be slight frame drop but.. miles ahead of other software h264 decoder (e.g., ffdshow)

highly recommended, either version should be fine.

off the top of my head (dont quote on this):

I tested standard edition on my friend's core 2 duo 2.0 ghz laptop and it was only utilizing 20-30% of 1 of his core.. so yeah. pretty wild. (ffdshow 50-60%)

on a core 1 duo 1.6 ghz laptop, it was utilizing about 40-50% (ffdshow 70-80%)




 

xtknight

Elite Member
Oct 15, 2004
12,974
0
71
Actually I may consider purchasing CoreAVC. It seems like the best by far, I have no idea how they get it so fast. Quality at stake?

The main thing I have against it is that it isn't cross-platform (or open source, or free for that matter). There is a hack that lets you run CoreAVC under mplayer (Linux). I really like ffmpeg and I'd like to see them add multi-threaded support.

 

ViRGE

Elite Member, Moderator Emeritus
Oct 9, 1999
31,516
167
106
Originally posted by: xtknight
Actually I may consider purchasing CoreAVC. It seems like the best by far, I have no idea how they get it so fast. Quality at stake?

The main thing I have against it is that it isn't cross-platform (or open source, or free for that matter). There is a hack that lets you run CoreAVC under mplayer (Linux). I really like ffmpeg and I'd like to see them add multi-threaded support.
According to the Doom9 guys, the quality is superb. I think it's just a matter of the CoreAVC guys writing really tight code from scratch, rather than using the reference implementation as a base.
 

Auric

Diamond Member
Oct 11, 1999
9,591
2
71
On the other hand there has been plenty o' speculation about Core taking shortcuts to favour performance over quality. In some cases it can suffer macro blocking (even without disabling standard in-loop deblocking) or the colour can be off and require RBG32 mode which then taxes peformance significantly.

For single core, Cyberlink is clearly higher quality and performance given DxVA (GPU and SSE2+). It will be interesting if/when Core ever adds DxVA support but I wouldn't spend $15 on the hope and the network activation scheme stinks. Maybe it is worth it for older/borderline performance dual core where GPU support is not available or undesirable as OP.

Personally, I prefer to maintain multi-tasking ability for running other schtuff at the same time as a movie so am not sure an SMP decoder function would even be much of a benefit on dual core in lieu of DxVA -that is, wouldn't it just be better in that case to have one core decoding and one running everthing else?
 

ViRGE

Elite Member, Moderator Emeritus
Oct 9, 1999
31,516
167
106
Originally posted by: Auric
wouldn't it just be better in that case to have one core decoding and one running everthing else?
Not since pre-emptive multitasking was invented.
 

Auric

Diamond Member
Oct 11, 1999
9,591
2
71
More succinctly, I mean specifically not use an SMP decoder (or its option) and let the DC CPU manage load. So presumably it would manage total (multi-tasking) utilization better than having the decoder possibly hog more resources of each. Or does an SMP app actually allow for better management by the CPU?
 

xtknight

Elite Member
Oct 15, 2004
12,974
0
71
Originally posted by: Auric
More succinctly, I mean specifically not use an SMP decoder (or its option) and let the DC CPU manage load. So presumably it would manage total (multi-tasking) utilization better than having the decoder possibly hog more resources of each. Or does an SMP app actually allow for better management by the CPU?

I'm not quite sure what you mean.

Right now, libavcodec's H.264 decoder starts one thread, and it can be managed amongst an SMP system however the kernel's scheduler desires. That may mean using 40% of CPU0 and 60% of CPU1, or 100% of CPU0 or CPU1. However, the scheduler can not create or anticipate work, so no more than 100% is being used across both cores. When you have n threads, the scheduler can distribute those n threads across the number of available cores and fully utilize them. With 1 thread, you are limited to the power of one core no matter how the load is distributed.

Both of the threads started by libavcodec could very well be assigned to the first CPU if you have lots using the second CPU, and it would in effect not be any faster. But with the second CPU being unused, any scheduler (worth mentioning) would assign the second thread to the second CPU so that both could be used for 200% more POWER!!

If the decoder is fully using both cores and a small app needs to run, the kernel can preempt that app and give it 5% CPU (or whatever) for a short period of time. When you move your mouse cursor, preemption is occuring.

I tried overclocking my CPU from 1.86 GHz to 2.20 GHz and my C2D was still struggling with just one core being utilized.