PDA

View Full Version : H.264 decoding performance question


lahartford
14th June 2007, 01:11
Hi,

I'm fairly new to video compression and recently started experimenting with H.264 and other codecs. My goal is to archive ~5 hours per year of standard definition home video footage, in a format my great-grandchildren will be able to read in 50 years.

My PC is an Intel Core 2 Duo E4300, overclocked to 2.7ghz. The video card is a low-end NVidia GeForce 7100 GS.

I'm starting with edited DV-AVI from Pinnacle Studio 9. I have Quicktime Pro and an eval copy of Nero Recode. I also used Moviemaker to convert to WMV.

With both Nero and Quicktime, the picture quality of the playback is very good. But the motion is somewhat jerky - not nearly as smooth as the DV-AVI file.

The WMV of approximately the same file size plays back much smoother - almost as good as the raw AVI (though the quality is not as good). I've also tried burning standard MPEG-2 DVDs and they play back very smooth on the Sony DVD player connected to my TV.

Any idea why H.264 doesn't playback as smooth as the AVI or MPEG-2? My system is brand new and I thought it would be fast enough for this task.

Thank you!
- Lance

Dark Shikari
14th June 2007, 02:37
H.264 is vastly more CPU-intensive than most other codecs. The only codec I know that has more CPU use at similar bitrates (of the lossy codecs designed for distribution) is VP7, which in my experience is about 10% slower on decode than H.264 High Profile.

Solution is to use CoreAVC, which is about twice as fast as FFDshow and is multithreaded.

Eno / Omni
14th June 2007, 05:16
It's strange, cause with Core 2 Duo it does no matter which decoder you're using...
What's your bitrate & resolution you used ?

Dark Shikari
14th June 2007, 06:18
It's strange, cause with Core 2 Duo it does no matter which decoder you're using...
What's your bitrate & resolution you used ?
If you use a single-threaded decoder like FFDShow there are some things that won't play.

1920x1080 (1080p) video might barely not play if its at 30FPS, depending on the speed of the Core 2. I know that my 2Ghz Core 2 Duo just barely, barely plays 1080p video at 30FPS. Also, lossless or extremely high bitrate H.264 using CABAC might also not play at full speed.

sysKin
14th June 2007, 07:47
Can it be deinterlacing issue?

audyovydeo
14th June 2007, 08:51
Hi,

I'm fairly new to video compression and recently started experimenting with H.264 and other codecs. My goal is to archive ~5 hours per year of standard definition home video footage, in a format my great-grandchildren will be able to read in 50 years.

My PC is an Intel Core 2 Duo E4300, overclocked to 2.7ghz. The video card is a low-end NVidia GeForce 7100 GS.

I'm starting with edited DV-AVI from Pinnacle Studio 9. I have Quicktime Pro and an eval copy of Nero Recode. I also used Moviemaker to convert to WMV.

With both Nero and Quicktime, the picture quality of the playback is very good. But the motion is somewhat jerky - not nearly as smooth as the DV-AVI file.

The WMV of approximately the same file size plays back much smoother - almost as good as the raw AVI (though the quality is not as good). I've also tried burning standard MPEG-2 DVDs and they play back very smooth on the Sony DVD player connected to my TV.

Any idea why H.264 doesn't playback as smooth as the AVI or MPEG-2? My system is brand new and I thought it would be fast enough for this task.

Thank you!
- Lance


Hello

you dont mention the data rate you used to encode.

For the "wmv is faster" aspect, dont forget that you get native wmv hardware support with your 7100 card and wmp. The same is not true for h264 (see this thread : http://forum.doom9.org/showthread.php?t=125835 ).

I am finding that all my DV/PAL footage that I encode in x264 on my dualcore has problems on most of my friends' pentium4, data rates of 3000 - 5000 kbps, which are the data rates of DVD, more or less.

for playback, I tested QuickTime, WMP 11, Cyberlink PowerDVD 7.0 Demo and VLC. The least CPU-intensive is definitely VLC.

audyovydeo

Theliel
14th June 2007, 13:11
you shouldn't have any problems for decode DV movie in h264 with your system. All geforce 7 have h264 hardware support too for decoding.

Nero and QT dont are very... "nice" players, try PowerDVD 7.3 (with hardware support for your Video card), or VLC. Other good options are haali splitter+ffdshow or haali+CoreAVC. You shouldn't have any problem.

audyovydeo
14th June 2007, 13:59
you shouldn't have any problems for decode DV movie in h264 with your system. All geforce 7 have h264 hardware support too for decoding.



@Theliel : if you dont mind, let's qualify the above statement.
Quoting from Nvidia's website :

"PureVideo's decode acceleration for unprotected H.264 (also known as MPEG-4 Part 10 or AVC) content is available through a special application programming interface (API). The following applications feature the PureVideo H.264 decode acceleration:

* CyberLink PowerDVD 7 Deluxe
* InterVideo WinDVD 8 Platinum

Note:
Microsoft® Windows® XP and Windows® XP Media Center Edition already contain a WMV video CODEC – No additional codec are required in order to experience PureVideo’s WMV decode acceleration. "

@lahartford : try play back with VLC and see what that gives, before spending $$$ or €€€ on the above software.
Also check if your hard disk isn't the problem (or other apps running at same time ?). Again, check your file's data rate vs your playback circuit's capacity.
We all concur the CPU most probably isn't the problem, so look for it in some other subsystem.

cheers
audyovydeo

Theliel
14th June 2007, 22:57
audyovydeo, I never said he dont need other codec. Only i'd said that all serie 7 have h264 hardware accel.

If you want use hardware acceleration for h264 content you need a codec that support dxva2 under Vista or dxva1 (compatible with PureVideo) under XP. In both cases, you can use WMP or any other player that use those directshow filters (or media fundation too in vista)


VLC use libavcodec if i dont remember well, so you can use ffdshow and any player you want, no only VLC. For me, the best are use codec with dxva, or ffdshow.

Jay Bee
15th June 2007, 03:33
Any idea why H.264 doesn't playback as smooth as the AVI or MPEG-2? My system is brand new and I thought it would be fast enough for this task.

Thank you!
- Lance

Probably because of the deinterlacing method you are using. Play your files with Zoom Player and press the "I" key to get the information screen. My guess: smooth=50 fps, jerky=25 fps.

KoD
15th June 2007, 10:04
If you want use hardware acceleration for h264 content you need a codec that support dxva2 under Vista or dxva1 (compatible with PureVideo) under XP.

In how many threads and by how many people this has to be repeated to be understood ? Dxva has nothing to do with h264 acceleration on XP. It's a proprietray API from Nvidia, not DXVA.

lahartford
15th June 2007, 13:46
Thank you all for the replies!
CPU utilization appears around 11% on both CPUs when playing back in Quicktime. CoreAVC downloads are disabled on their website but will try when it comes available (assuming there is a free trial copy).

will also try VLC, ffdshow, etc...

I've tried both interlaced and deinterlaced. The bitrate is 2048 or 4096 bits/second, and resolutions of 640x480 and 720x544.
I will try playing with frame rates too.

Dark Shikari
15th June 2007, 16:38
Thank you all for the replies!
CPU utilization appears around 11% on both CPUs when playing back in Quicktime. CoreAVC downloads are disabled on their website but will try when it comes available (assuming there is a free trial copy).

will also try VLC, ffdshow, etc...

I've tried both interlaced and deinterlaced. The bitrate is 2048 or 4096 bits/second, and resolutions of 640x480 and 720x544.
I will try playing with frame rates too.
There haven't been CoreAVC downloads for ages, and there is no free trial.

However, a quick google can find you various codec packs that include (probably illegally) various versions of CoreAVC.

Jay Bee
15th June 2007, 17:30
I've tried both interlaced and deinterlaced.

At some point you are going to have to deinterlace. If you encode it as interlaced it will have to get deinterlaced during playback. If you encode it as progressive you will have to deinterlace it yourself.

Now here's the important part: proper deinterlacing of video content will always result in 50/60 frames per second while many of the popular codecs and deinterlacers only end up with 25/30 fps.

Now if you playback an interlaced video in DV or MPEG-2 format on an average Windows XP system, usually the hardware deinterlacing of your graphics card will kick in and give you the smooth motion you are talking about.

If you are playing back interlaced xvid or x264 it is very unlikely that you are getting high quality deinterlacing on playback due to lack of codec support. This may be the reason for the jerkiness you mention.

To find out for sure: use Zoom Player as I mentioned above to find out the true playback framerate or use leakkernelbob to deinterlace before encoding and see if the result is smoother.

Theliel
16th June 2007, 11:19
In how many threads and by how many people this has to be repeated to be understood ? Dxva has nothing to do with h264 acceleration on XP. It's a proprietray API from Nvidia, not DXVA.

My english is very bad, but I belive that my phase was correct :):

Dxva1 dont have native support for h264, and is purevideo a feature or enhancing from Nvidia to enable h264 hardware acelleration through dxva1. Under dxva2 aren't necesary because dxva2 have native support.