Log in

View Full Version : Something better than CoreAVC for playback?


alkasecond
29th August 2008, 01:26
Hi, been searching for quite awhile and finally decided to go back to the source.
What's your scoop on the h264 codecses?
Here's what I used to have:
A p4 3.0 GHz machine with integrated video (I865 chipset)
playback of mpeg2 up to 1080i was passable (720p great with cpu usage ~65%, 1080i not so much , but still watchable at ~75% cpu).
Here comes h264 encoded stream and cpu jumps to ~99% and frame los of 30%+, a slideshow.
So I went out and bought myself new box hoping to improve the situation.
Here's what I have now:
an AMD 4850x2 cpu on asus M3N78-VM mobo , spourting nvidia geforce G8200 chipset, taunted as supporting hardware decoding of h264 , VC1 and others that I dont care about.
Installed the latest version of WinDVD that supposedly includes the latest version of Nvidia's PureVideoHD, guess what ?
In the app that I'm using it doesnt even show h264 codec?
What gives?
Now I know that I can go back to software only CoreAVC , but that will negate all the GPU potential built in to the mobo?
If I knew i wouldnt be able to hardware accelerate H264 decoding I would've gone with intel G35 mobo and core2 duo.
Now I'm aware that cyberlink powerDVD h264 codec has some
harware acceleration , but almost everybody using it reports severe audio syns issues, so I'm rather reluctant to try it.
Aha the aplication I'm using is DvbDream .
Any suggestions highly apreciated.

Sulik
29th August 2008, 06:31
MPC-HC (free) and Cyberlink's PowerDVD are the two most widely available codecs that support H.264 decode acceleration. Intervideo/Corel's WinDVD9 and Arcsoft's TotalMedia also supports H.264 HW acceleration (but not sure these last 2 work with other apps).

bob0r
29th August 2008, 18:27
CoreAVC is still faster than any GPU solution today.
Also the upcoming version has the much needed things fixed and added, like H.264-2007-11 spec update, it's all you need.

MPC/DVBVIEWER CoreAVC never failed me once... where others even bluescreened me, no GPU isn't all that you need for stability.

If you have any issues with CoreAVC, now would be a great time to report it to me, or to BetaBoy.... other then that, stick to CoreAVC if you can!

shon3i
29th August 2008, 19:29
CoreAVC is still faster than any GPU solution today.
Hell no, how can be?

1080p on for example AMD Athlon 2800+ can't played smoothly even with CoreAVC, when any GPU decoder with proper graphic card can decode any 1080p video smoothly.

Blue_MiSfit
29th August 2008, 20:26
+1

Very much correct.

CoreAVC is the fastest software solution, without a doubt, but DXVA can let virtually any system play 25mbps 1080p high profile H.264 without any problems whatsoever.


As to the OP's question, you need to setup Media Player Classic - Home Cinema properly. This means a few things:

1) Use the proper renderer. For Vista, that means EVR. For XP, it means overlay mixer, VMR7/9 (windowed or renderless), or EVR (install .NET 3.0 to get EVR on XP).

2) Connect the decoder directly to the renderer. So that means no ffdshow processing, or any other intermediate filters.

If you do this, your GPU will decode with DXVA and you will get flawless playback of almost any H.264 video file - provided it sticks to DXVA compliant specs. Most stuff in the intarwebs will be ;)

~MiSfit

alkasecond
29th August 2008, 21:26
+1

Very much correct.

CoreAVC is the fastest software solution, without a doubt, but DXVA can let virtually any system play 25mbps 1080p high profile H.264 without any problems whatsoever.


As to the OP's question, you need to setup Media Player Classic - Home Cinema properly. This means a few things:

1) Use the proper renderer. For Vista, that means EVR. For XP, it means overlay mixer, VMR7/9 (windowed or renderless), or EVR (install .NET 3.0 to get EVR on XP).

2) Connect the decoder directly to the renderer. So that means no ffdshow processing, or any other intermediate filters.

If you do this, your GPU will decode with DXVA and you will get flawless playback of almost any H.264 video file - provided it sticks to DXVA compliant specs. Most stuff in the intarwebs will be ;)

~MiSfit


Thanks alot, quick question:
Do you know a way to use MPC h264 codec directly ?
I mean to use it with DvbDream without streaming to MPC?
Thanks again.

Blue_MiSfit
30th August 2008, 08:16
The DirectShow filters used are available as discrete filters, but I don't know if this DVBDream software can load custom decoders / renderers, because as I said, it has to be configured just so :)

~MiSfit

CruNcher
30th August 2008, 10:59
Hell no, how can be?

1080p on for example AMD Athlon 2800+ can't played smoothly even with CoreAVC, when any GPU decoder with proper graphic card can decode any 1080p video smoothly.

It's not that easy tough nobody yet has made very big testing where CoreAVC becomes unefficient (Bitrate/Complexity) compared to CPU + GPU decoding you have to measure the Power Usage of the whole Process to determine this efficiency, but sure is @ such low CPU Power CoreAVC isn't efficient enough anymore for Blu-Ray Playback (but it all depends on the usage Scenario) don't forget a GPU is drawing alot of Power (just recently also Nvidia begann to lower even the idle consumption and brought in Hybrid Power, and there are still issues tough the way is clear ultra low power consumption). First Platform Nvidia is gonna realize this with is their Mobile Tegra Platform CoreAVC can't beat this (1W Power draw for 720p HD Playback (complexity uknown tough)).
I doubt there is any Device currently out there that can do this http://www.youtube.com/watch?v=U7R90A7ZqLU based on CoreAVC i guess there is even no other solution on the Planet that can do this with that Power Draw ;).

Sulik
30th August 2008, 11:26
The biggest thing about H.264 is that CABAC decode is horribly inefficient on a CPU, but works extremely well with low-clocked dedicated hardware. I wouldn't be surprised if a HW arithmetic decoder can decode 1 bin in 2 cycles, whereas a CPU probably needs at least 40 cycles per bin.
At 40Mbps, ie let's say 60Mbin/s, a CPU would need 60Mx40~=2.4GHz wheras dedicated HW would only need to run at 120MHz for the same results (just to do binary arithmetic decode).
Multi-core helps only if the content is split in multiples slices. Now that's getting me curious: it would be interesting to measure how many cycles per bin does ffmpeg needs.

Sagekilla
30th August 2008, 18:13
@Blue_MiSfit: How do I set mpc hc to use the internal DXVA codec in favor of CoreAVC? I unticked "Preferred decoder" in CoreAVC settings and I still can't get hardware acceleration. I'm using Overlay mixer to render the video.

Adub
30th August 2008, 20:51
Make sure that under "Internal Filters", H264 is ticked. And this is with the Home Cinema version, just to be clear.

Also, not all video's work with DXVA, so keep that in mind. They have to be encoded within a certain spec for them to work. See Sharktooth's profiles for specific settings.

Sagekilla
30th August 2008, 21:05
Yes, I have MPC-HC and I make sure each video I encode is specc'd to DXVA :) In this case I happen to be using a blu-ray source disk (Pirates of the Carribean 3, to be exact)

Sorry if I'm going off topic though. Honestly though, CoreAVC works wonders on any modern processor. My 2 GHz Opteron 170 (Basically an Athlon X2) can decode any 1080p source with ~50% - 70% usage and never stutters. I don't see why any new system built today will be unable to decode using it, especially yours.

Adub
30th August 2008, 23:45
So, were you successful in getting hardware acceleration?

Oh, and just a thought, if you didn't, you do have a graphics card that supports it correct?

Sagekilla
4th September 2008, 01:24
Yes, I did get the DXVA running properly -- I had an outdated version of mpc apparently. Works great on my 9800 GTX, just wish we had a way to have the decoder on the GPU pass it back to the main system for encoding for example ;)

ajp_anton
4th September 2008, 11:46
IMO, if you are going to buy a new computer for HD playback, skip HW acceleration. Just getting the damn thing to work isn't worth the effort. Then you're limited to some very few renderers, and it won't even work on all h264 videos (!).
Buying a CPU that can't handle 1080p video with CoreAVC is stupid, because almost every CPU can do it. Not sure what you got ((HD) 4850x2 is a graphics card), but 4800+ and 4850e (same freq) WILL handle everything (if it doesn't, neither will DXVA).
Only reasons I can find for using DXVA is if you already have an old computer with a slow CPU, of if you need the CPU for something else while watching movies.

Sagekilla
4th September 2008, 16:19
Any sufficiently modern CPU should run 1080p perfectly fine as ajp_anton said -- My CPU is a nearly 3 year old Opteron 170 @ 2 GHz. A Phenom (even if it's slower than 2 Ghz) and just about every core 2 should run that without issue under CoreAVC. Come to think of it, I rarely saw 1080p eating up more than 40-70% of my CPU.

alkasecond
5th September 2008, 03:48
Just went back to coreavc, and everything seems to work fine, cpu stays at ~30%.(for 1080i playback).
Nonetheless I still fell cheated, could've gone with G35 mobo and lowelly pentium dual core , well , live and learn.
Now if somebody could tell me how the hell get this thing to output any audio through HDMI, I'll be fine.

Sagekilla
5th September 2008, 05:29
You do realize a Pentium Dual Core is nothing but a rebadged Core 2 processor? :) Even those can decode 1080p fairly easily w/ CoreAVC I believe.

ajp_anton
5th September 2008, 10:44
Nonetheless I still fell cheated, could've gone with G35 mobo and lowelly pentium dual core , well , live and learn.I don't think you would've wanted a G35. They suck. I would've chosen a 780G board though, but I believe a GF8200 is't that bad either.

Rumbah
5th September 2008, 12:40
In the last review I read one month ago the video decoding with GF8200 onboard graphics was horrible unstable to non working. Perhaps they fixed it with a new driver though.

Coolpplse
5th September 2008, 19:54
You do realize a Pentium Dual Core is nothing but a rebadged Core 2 processor? :) Even those can decode 1080p fairly easily w/ CoreAVC I believe.

Only the fairly recent ones, the old ones with the 2 Pentium 4 cores in one chip design was just.... :rolleyes:

Sharktooth
5th September 2008, 20:09
Pentium-Ds where 2 p4 cores slapped on a single package...

jwhyche
5th September 2008, 21:25
IMO, if you are going to buy a new computer for HD playback, skip HW acceleration. Just getting the damn thing to work isn't worth the effort. Then you're limited to some very few renderers, and it won't even work on all h264 videos (!).


Damn straight on this. I never understood why people go to so much work just to save a few cpu cycles. Any modern computer that you get will be able to handle it with software. Some of them not even using CoreAVC. I use fddshow for playback and it works fine.

I really don't understand htpc builders who do this. If your computer is just for watching video who cares how much cpu resources its consuming as long as it works?

Also hardware decoding limits you to what profiles that you can use. Some of the better profiles won't work with it.

Get a good graphics card, the fastest cpu you can afford and shell out 15 bucks for CoreAVC and be done with it.

Blue_MiSfit
5th September 2008, 23:59
Part of the argument is low power.

A basic Radeon 2400 can decode BluRay, can be got for under $40, and uses hardly any power (passively cooled).

Pair that with a low power CPU, and you can decode BluRay quality H.264 with very low power usage, and therefore heat generation, and therefore noise.

~MiSfit

Guest
6th September 2008, 00:11
If you are transcoding using a software encoder such as x264, any CPU cycles you can gain by offloading the source decoding to the GPU will make the encoding faster.

saint-francis
6th September 2008, 00:30
The requirements for DXVA in MPC HC are pretty forgiving compared to other players. That being said, I was happy to find that the settings I normally use with x264 work perfectly fine to achieve DXVA. I don't find the restrictions to cripple my encoding in any way. If I encoded 1080p, that would be a different story. The limitations there are a little severe for me. I can, of course, use FFDShow to decode h.264. Anyone who has a PC powerful enough to encode with x264 does. The point is, if I can decode with the GPU....... why not? :confused:
I normally use MPC HC x64 for playback but I keep a copy of MPC HC x86 on board in case I do need to use FFDShow for some kind of post processing on xvid movies I encoded like a moron back when I knew next to nothing about what I was doing.

alkasecond
6th September 2008, 00:52
Part of the argument is low power.

A basic Radeon 2400 can decode BluRay, can be got for under $40, and uses hardly any power (passively cooled).

Pair that with a low power CPU, and you can decode BluRay quality H.264 with very low power usage, and therefore heat generation, and therefore noise.

~MiSfit

Right on the spot!
IMHO if you decide to build a true HTPC (one that sits below TV in your living room , where VHS deck used to be) the only sensible way
to do it is to use ITX case/mobo or at the latest a true microATX case, slim notebook style optical drive etc.
I'm using microATX with 300W psu with arificially slowed fan to make it "quaiet enough" for my taste.
Noise was also the reason behind a CPU choice , sure I could've picked phenom 9850 or such, but 140W ? give me a break.
Thats why I said I feel cheated, caause G35 + pentium DC 2180 would probably be enough to do software only processing
while consuming less power than what I have now.
Why G35 ? cause HDMI is a must and true slim desktop mATX cases usually dont allow any expansion cards, plus any video card = more power/noise.

nm
6th September 2008, 15:31
Thats why I said I feel cheated, caause G35 + pentium DC 2180 would probably be enough to do software only processing
while consuming less power than what I have now.
I would guess that GeForce 8200 + Athlon64 x2 4850e consumes significantly less energy than G35 and E2180 and this review seems to confirm it:
http://www.anandtech.com/showdoc.aspx?i=3288&p=6

4850e is also a bit faster than E2180 unless you overclock, which is probably not a good idea in a slim HTPC anyway.

So there's no reason to feel cheated even if you don't manage to get DXVA working.

RedDwarf1
6th September 2008, 19:11
CoreAVC is still faster than any GPU solution today.
Also the upcoming version has the much needed things fixed and added, like H.264-2007-11 spec update, it's all you need.

MPC/DVBVIEWER CoreAVC never failed me once... where others even bluescreened me, no GPU isn't all that you need for stability.

If you have any issues with CoreAVC, now would be a great time to report it to me, or to BetaBoy.... other then that, stick to CoreAVC if you can!

That might be your experience, but it certainly isn't mine and I don't agree with your comments about CoreAVC being faster than ANY GPU solution.

If you are transcoding using a software encoder such as x264, any CPU cycles you can gain by offloading the source decoding to the GPU will make the encoding faster.

A bit off topic but an interesting point.

GPU decoding would be very welcome when transcoding as it would free up a fair few CPU cycles for the encoding process. Software decoding 1080p using CoreAVC uses approx 25 to 30% of my CPU (Q9450) whereas playing back using MPC-HC uses around 5% using my HD3850 to assist decoding. That is a fairly significant amount of CPU time that could be used for re-encoding if the video could be passed back to main memory after decoding.

I have only had very brief attempts at doing it but so far unsuccessfully. Maybe there is a Graph that could be constructed to allow it to happen, perhaps by using additional renders so it gets back to main memory so it could be worked on. But I don't have much experience with using Graphedit and I have only done brief experimenting with using it.

I would certainly be something that would useful if it could be made to happen.

Guest
6th September 2008, 19:26
I have only had very brief attempts at doing it but so far unsuccessfully. Maybe there is a Graph that could be constructed to allow it to happen, perhaps by using additional renders so it gets back to main memory so it could be worked on. But I don't have much experience with using Graphedit and I have only done brief experimenting with using it.

I would certainly be something that would useful if it could be made to happen. I'm currently adding GPU support to DGAVCDec and later to DGMPGDec (Nvidia CUDA first).

Snowknight26
6th September 2008, 22:34
GPU decoding would be very welcome when transcoding as it would free up a fair few CPU cycles for the encoding process. Software decoding 1080p using CoreAVC uses approx 25 to 30% of my CPU (Q9450) whereas playing back using MPC-HC uses around 5% using my HD3850 to assist decoding. That is a fairly significant amount of CPU time that could be used for re-encoding if the video could be passed back to main memory after decoding.

..but thats when running realtime. If you were encoding that 1080p stream, I highly doubt that you'll be encoding that fast.

Guest
7th September 2008, 00:36
He just said he'd have more cycles available for encoding. He made no claim about the rate.

Snowknight26
7th September 2008, 02:05
True. However, the ratio of CPU cycles used on decoding compared to encoding wouldn't be significantly lower when you switch from CPU to GPU decoding. With that said though, I'd probably use GPU decoding. :p

plonk420
7th September 2008, 03:42
In the last review I read one month ago the video decoding with GF8200 onboard graphics was horrible unstable to non working. Perhaps they fixed it with a new driver though.

i never got it working period on my 8200 onboard (MPC HC). it DOES work perfectly with my HD3850. i DO use CoreAVC rather than MPC HC, tho, and i can't remember why, tho. i LOVE how MPC HC has all of its codecs built in. if only it could be used with AAC HEv2 streams from Shoutcast...

Guest
7th September 2008, 06:27
However, the ratio of CPU cycles used on decoding compared to encoding wouldn't be significantly lower when you switch from CPU to GPU decoding. Why not?

alkasecond
7th September 2008, 18:54
I would guess that GeForce 8200 + Athlon64 x2 4850e consumes significantly less energy than G35 and E2180 and this review seems to confirm it:
http://www.anandtech.com/showdoc.aspx?i=3288&p=6

4850e is also a bit faster than E2180 unless you overclock, which is probably not a good idea in a slim HTPC anyway.

So there's no reason to feel cheated even if you don't manage to get DXVA working.


Thanks, I haven't seen that review before.
I did'nt make such a bad choice afterall, but in any case it's a pity to have all that GPU sitting there wasting it's potential.
Guess I jusst wait for the right codec.

saint-francis
7th September 2008, 21:05
I'm currently adding GPU support to DGAVCDec and later to DGMPGDec (Nvidia CUDA first).

Are you eventually planning on adding some kind of ATI support for those of us who bought ATI cards for their native VC-1 DXVA on top of the h.264 that Nvidia can decode?

ajp_anton
7th September 2008, 21:19
Part of the argument is low power.

A basic Radeon 2400 can decode BluRay, can be got for under $40, and uses hardly any power (passively cooled).

Pair that with a low power CPU, and you can decode BluRay quality H.264 with very low power usage, and therefore heat generation, and therefore noise.

~MiSfitMy HTPC is a Hiper Media Center (43x5.3x27 cm) with an E4300 @ 2.7GHz, Zalman VF900 cooler at low/silent speed. picoPSU with 110W external converter, only goes up to 90W usage at full load 2.7GHz. What do I need GPU decoding for?

Instead of buying a hardware decoder that will only be used when actually decoding, I would put the money on a better CPU if encoding while decoding is important - that way you will get even faster encodings when not watching movies.

tetsuo55
7th September 2008, 21:25
I would guess that GeForce 8200 + Athlon64 x2 4850e consumes significantly less energy than G35 and E2180 and this review seems to confirm it:
http://www.anandtech.com/showdoc.aspx?i=3288&p=6

4850e is also a bit faster than E2180 unless you overclock, which is probably not a good idea in a slim HTPC anyway.

So there's no reason to feel cheated even if you don't manage to get DXVA working.

They made a mistake when reviewing that, i don't remember where i read it but the differences where actually minimal. Seeing as the 8200 is crippled as hell too i wouldn't recommend it.


Instead of buying a hardware decoder that will only be used when actually decoding, I would put the money on a better CPU if encoding while decoding is important - that way you will get even faster encodings when not watching movies.

I agree but not everyone is building a new system. Depending on your options available a DXVA solution is often way cheaper

@Everyone:

the reason those systems work fine with CoreAVC is because the streams most people watch aren't exactly pushing the limits of what h264 is capable of.

Decoding a Bluray 2.0 Disc with a 40+MBS stream and TrueHD/DTS Master is VERY demanding, add to this the 2nd commentary video track and many systems start to crawl. a radeon 4XXX card has no trouble offloading all of this except for the decrypting and audio.
Hardware TrueHD/DTS Master decoders are on the way too. Only decrypting is left which will be a breeze for intels upcoming CPU's

nm
7th September 2008, 21:51
They made a mistake when reviewing that, i don't remember where i read it but the differences where actually minimal.
Maybe so. Looking at some other reviews, seems that all three platforms have comparable energy consumption at full load, but when idling, 8200 and 780G consume noticeably less than G35.

tetsuo55
7th September 2008, 22:06
Maybe so. Looking at some other reviews, seems that all three platforms have comparable energy consumption at full load, but when idling, 8200 and 780G consume noticeably less than G35.

Some people have built ultra-low-power servers based on the 8200, they wouldn't recommend it.

Still i think all 3 use too much power. I hope Intel continues its power-usage lowering campaing and reduces the idle consumtion for G55 significantly

nm
7th September 2008, 22:17
Some people have built ultra-low-power servers based on the 8200, they wouldn't recommend it.
Well, servers usually have different hardware requirements than HTPCs. I think that both 780g/790g and 8200 are good choices for the latter purpose. G45 too, but not quite yet because of driver issues.

Still i think all 3 use too much power. I hope Intel continues its power-usage lowering campaing and reduces the idle consumtion for G55 significantly
Indeed.

amango
8th September 2008, 13:35
I have a HTPC with the 780g-chipset and all my created H264-files works without problems with GPU acceleration with the help of MP Cinema. Around 2-5% CPU usage for a 1080P MKV. :p

Even "not DXVA-profile encoded" videos are decoded without problems (Using the Anime-HQ profile in StaxRip).