Thursday, September 14, 2006

wavrms changes

I have done some modification to the wavrms utility program which can be used to give a dialnorm setting recommendation.
  1. enabled piped input for Windows
  2. added an option to specify a time range to analyze
  3. simplified the calculation
Now dialnorm is estimated by taking the average RMS, ignoring those blocks which have RMS outside a specific range. For now the range is -40dB to -15dB, but this may change after more testing is done.

Monday, September 11, 2006

Thank you Xiphorous

I have substituted the FFmpeg MDCT implementation with the one from libvorbis, which is faster. The only side-effect is that there are 2 files now (mdct.c, mdct.h) which fall under the Xiph BSD-style license rather than the LGPL like the rest of Aften.

The AC-3 short-block MDCT is not a standard MDCT, so I had to modify it a bit to get it to work properly. The result is a small slow-down (but still faster than the previous MDCT) which I hope to fix before too long.

Friday, September 08, 2006

new optional speed-up

I've added a new encoding option which will sacrifice some accuracy in the bit allocation by skipping the binary search. This gives about a 4% to 5% speed-up. The commandline option for Aften is "-fba 1" (stands for fast bit allocation).

update & small speed increase

It's been several days since my last update. I've mostly been trying to iron-out the dynamic range compression. In the meantime, I've applied a couple minor changes to dsp.c which together give about a 3%-4% speed-up on my system.

Saturday, September 02, 2006

new cbr search method

I implemented a new search method for CBR bit allocation which gives about 6% 10% faster encoding than with the old method.

old method:
  1. estimate snr based on last frame
  2. decrement snr in large steps until data fits in frame
  3. increment snr in medium steps while data still fits in frame
  4. increment snr in small steps while data still fits in frame
new method:
  1. estimate snr based on last frame
  2. narrow the search range by doing a weighted increment or decrement of snr based on how close it is to optimal sliding a 16-wide window up or down until it overlaps the optimal value.
  3. do a binary search for the optimal snr value