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.