[Ffmpeg-cvslog] r5747 - trunk/libavcodec/flacenc.c

Justin Ruggles jruggle
Sat Jul 15 06:24:57 CEST 2006

Justin Ruggles wrote:
> michael wrote:
>>Author: michael
>>Date: Fri Jul 14 20:48:38 2006
>>New Revision: 5747
>>   trunk/libavcodec/flacenc.c
>>optionally (use_lpc=2) support Cholesky factorization for finding the lpc coeficients
>>  this will find the coefficients which minimize the sum of the squared errors, 
>>  levinson-durbin recursion OTOH is only strictly correct if the autocorrelation matrix is a
>>  toeplitz matrix which it is only if the blocksize is infinite, this is also why applying
>>  a window (like the welch winodw we currently use) improves the lpc coefficients generated
>>  by levinson-durbin recursion ...
>>optionally (use_lpc>2) support iterative linear least abs() solver using cholesky 
>>  factorization with adjusted weights in each iteration
>>compression gain for both is small, and multiple passes are of course dead slow
> Wow. I'm gone for a few days and come back to this.  This is great!  So
> how is the single-pass speed compared to Levinson-Durbin?  I will try it
> myself, but I am curious if you did a comparison already.

I answered my own question.  It is quite a bit slower, but at least it
helps in pushing the theoretical limits of the FLAC format since it
gives consistantly better compression with multiple passes.  Combined
with an exhaustive optimum order search and eventually variable block
size, FFmpeg should get pretty close to that theoretical limit.  Maybe
FFmpeg should have something analogous to flac's
"--super-secret-totally-impractical-compression-level"...which would use
all settings which maximize compression with no regard to speed.

Here are a couple quick tests.

test 1:
     lpc method  enc time    ratio
Levinson-Durbin     4.51s   36.69%
Cholesky 1-pass    13.37s   36.80%
Cholesky 2-pass    32.26s   36.77%
Cholesky 4-pass    70.62s   36.74%
Cholesky 10-pass  182.40s   36.66%

test 2:
     lpc method  enc time    ratio
Levinson-Durbin     4.65s   68.02%
Cholesky 1-pass    13.56s   68.20%
Cholesky 2-pass    32.48s   68.06%
Cholesky 3-pass    51.09s   67.99%
Cholesky 4-pass    70.04s   67.94%
Cholesky 10-pass  182.42s   67.85%


More information about the ffmpeg-cvslog mailing list