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

Justin Ruggles jruggle
Sat Jul 15 02:42:10 CEST 2006


michael wrote:
> Author: michael
> Date: Fri Jul 14 20:48:38 2006
> New Revision: 5747
> 
> Modified:
>    trunk/libavcodec/flacenc.c
> 
> Log:
> 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.  When I was
looking at trying to implement an alternative linear solver myself I got
a little lost in the math, so I just opted to keep the Levinson
recursion.  The understood Gaussian elimination well enough, but all
sources said it was slower than Levinson-Durbin, so I didn't bother
implementing it.

I do have a question.  The Levinson-Durbin recursion as implemented
essentially calculates all LPC coefficients for each order from 1 to
max_order.  Can Cholesky factorization do the same?  Currently it seems
to be only calculating coeffs for a single order (max_order).  I am
guessing it would be as simple as putting in another loop?  It seems
like this would be extremely slow.  Am I missing something?  This will
be needed for the LPC optimal order search.

-Justin




More information about the ffmpeg-cvslog mailing list