View Single Post
Old 3rd December 2003, 20:06   #1  |  Link
karl_lillevold
Moderator
 
karl_lillevold's Avatar
 
Join Date: Oct 2002
Location: Seattle
Posts: 1,584
RV9-EHQ with fast 1st pass

Here is another much requested improvement: speed up RV9-EHQ encoding. I have been saying it already is as fast as possible without any sacrifices to quality. However, this is when doing the actual encoding, and this change only affects the 1st pass of a 2-pass encode.

erv4_xVBR_x1stPass_120203.zip

The above DLL allows the 1st pass of a 2-pass RV9-EHQ encode to be run at any complexity. Specifically, I recommend running it at 65, i.e. medium complexity. Since the output of the 1st pass is a list of recommended QP values to use for the 2nd pass, in this encoder these are automatically adjusted to accommodate the higher compression efficiency in the 2nd pass. The QP adjustment is just an estimate, but since having the exact value is not very critical, this appears to work very well, generally with less than 0.05 dB loss in average PSNR.

This encoder DLL is also completely compiled with the Intel Compiler 7.1, increasing the DLL size a little, but gains up to 5% overall encoding speed on top of the 1st pass speed-up. All CPU intensive modules are already fully ASM optimized, so this improvement is the result of better inlining and some loop unrolling by the Intel Compiler. It also includes Prescott optimized code from Intel, but no Prescott CPUs are yet available.

How to enable
1 ) Replace erv4.dll in producer's codecs directory. Milestone 7 is recommended.
2a) Enter this registry key

===>8===
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\RealNetworks\RV9]
"firstPassComplexity"=dword:00000041
===>8===

or

2b) use this option in the codecProperties section of the audience.
Code:
<codecProperties type="bag">
  <firstPassComplexity type="uint">65</firstPassComplexity>
</codecProperties>
That's it. If your 2-pass encodes took 24 hours before, they will now be 12 + (12/4) = 15 hours [AMD example *)]. On a 2.8 GHz P4, a previous 12 hour encode will now take 6 + (6/3) = 8 hours.

*) on an AMD without SSE2, EHQ is around 4X slower than medium complexity. On a P4 with SSE2, EHQ is ~3X slower than medium.
__________________
This information is provided "AS IS" with no warranties, grants no rights, and reflects my personal opinion.

Last edited by karl_lillevold; 4th December 2003 at 06:08.
karl_lillevold is offline   Reply With Quote