Hi,> If I understand this correctly, these new apodization functions only > affect compression and that files compressed with these new functions > will still decode correctly with older versions of the FLAC decoder. > > Is that right?Yes, that is correct. These functions are used to window the audiodata, but only for the predictor stage. What these new function enable, practically speaking, is using only part of the signal to generate a predictor. My theory is that this helps because short transients introduce noise into the predictor. The predictor becomes very good at prediciting one part of the signal, instead of mediocre for the whole block. For more information on the whole window-thing, it might be a good idea to see this hydrogenaudio-post by Josh himself: http://www.hydrogenaud.io/forums/index.php?showtopic=44229 One thing to note is that this patch only affects the encoder stage that evaluates various possible predictors, not the actual coding stage. This patch only add the new windows to the codebase. My follow-up e-mail (Retuning compression levels) suggests one possible retuning of the compression levels 6, 7 and 8 that make use of these new functions.
Martijn van Beurden wrote:> Hi, > > > If I understand this correctly, these new apodization functions only > > affect compression and that files compressed with these new functions > > will still decode correctly with older versions of the FLAC decoder. > > > > Is that right? > > Yes, that is correct. These functions are used to window the > audiodata, but only for the predictor stage. What these new > function enable, practically speaking, is using only part of the > signal to generate a predictor. My theory is that this helps > because short transients introduce noise into the predictor. The > predictor becomes very good at prediciting one part of the > signal, instead of mediocre for the whole block. > > For more information on the whole window-thing, it might be a > good idea to see this hydrogenaudio-post by Josh himself: > http://www.hydrogenaud.io/forums/index.php?showtopic=44229 > > One thing to note is that this patch only affects the encoder > stage that evaluates various possible predictors, not the actual > coding stage.Great, thanks for the explanation. I committed this patch and then amended the commit message with some of the info from your email.> This patch only add the new windows to the codebase. My > follow-up e-mail (Retuning compression levels) suggests one > possible retuning of the compression levels 6, 7 and 8 that make > use of these new functions.I'll address that separately. Cheers, Erik -- ---------------------------------------------------------------------- Erik de Castro Lopo http://www.mega-nerd.com/
Erik de Castro Lopo wrote:>> One thing to note is that this patch only affects the encoder >> stage that evaluates various possible predictors, not the actual >> coding stage. > > Great, thanks for the explanation. > > I committed this patch and then amended the commit message with some of > the info from your email.Nitpicking: all window functions in window.c are separated by an empty line, but there's no empty line between FLAC__window_partial_tukey() and FLAC__window_punchout_tukey() functions.