[Ffmpeg-devel] FLAC encoder

Justin Ruggles jruggle
Fri Jun 2 07:36:19 CEST 2006


Hello,

I wrote:
> Well, the FLAC encoder is getting better by the day.  I'll post some
> results some time soon of my most recent version, which has marked
> improvement in compression.

Here are some current results.  The latest version is here:

http://home.earthlink.net/~jruggle/flake/flake-02.tar.bz2

I still haven't integrated with FFmpeg...that's coming soon though.  The
biggest improvement I have made is the application of a window function
before calculating the LPC coefficients.  After testing several
different window types, I found that for most audio clips, either the
Hamming window or the Bartlett window was the best choice.  So I changed
the encoder to calculate LPC coefficients using each of these windows.
Optimal LPC order estimation is done for each set, and the smaller order
of the 2 is used along with the corresponding coeffs.  It's amazing how
such a simple thing can increase compression so much!  I got the idea
from a general description of MPEG-4 ALS.  It could be patented for all
I know...

If anyone wants to do tests with the clip I used for the test below:
http://home.earthlink.net/~jruggle/flake/answering_bell.flac

-Justin


Benchmark tests on K6-2 300MHz
------------------------------
30-sec test clip
"Answering Bell" by Ryan Adams

Original WAV file size: 5294636 bytes

flac:
standard options: -P 0
custom1 options: -P 0 -b 16384 -m -l 12 -e -q 0 -r 0,8
custom2 options: --lax -P 0 -b 32768 -m -l 11 -e -q 0 -r 0,8

level   real time     bytes    ratio   kbps
-----  -----------  ---------  -----  -------
  0      0m3.416s    3253661   0.615   867.6
  1      0m3.540s    3245248   0.613   865.4
  2      0m4.474s    3229304   0.610   861.1
  3      0m4.477s    2994149   0.566   798.4
  4      0m5.458s    2950946   0.557   786.9
  5      0m6.664s    2937031   0.555   783.2
  6      0m7.484s    2934347   0.554   782.5
  7     0m24.189s    2926650   0.553   780.4
  8     0m31.143s    2913871   0.550   777.0
custom1 0m50.850s    2845706   0.537   758.9 * (Subset)
custom2 0m50.103s    2835670   0.536   756.2 * (non-Subset)

flake:

level   real time     bytes    ratio   kbps
-----  -----------  ---------  -----  -------
  0      0m5.269s    3414019   0.645   910.4
  1      0m7.220s    3209480   0.606   855.9
  2      0m7.489s    3012291   0.569   803.3
  3      0m7.767s    2854938   0.539   761.3
  4      0m7.794s    2777988   0.525   740.8
  5      0m8.877s    2786305   0.526   743.0
  6      0m9.135s    2674994   0.505   713.3
  7     0m10.938s    2618914   0.495   698.4
  8     0m19.905s    2584319   0.488   689.2 *

1st posted flake version:
 10     0m16.379s    2818070   0.532   751.5

2nd posted flake version:
  8     0m13.796s    2812340   0.531   750.0


OTHER LOSSLESS CODECS (just for fun)

mp4als:

level   real time     bytes    ratio   kbps
-----  -----------  ---------  -----  -------
default 0m11.058s    2556653   0.483   681.4
  7     9m31.726s    2300589   0.435   613.2 * <-- great but SLOW


wavpack:

level   real time     bytes    ratio   kbps
-----  -----------  ---------  -----  -------
  f      0m4.948s    3143676   0.594   838.3
default  0m6.343s    2983470   0.563   795.6
  h     0m11.596s    2612892   0.493   696.8 *


monkey's audio 3.99:

level   real time     bytes    ratio   kbps
-----  -----------  ---------  -----  -------
 1000    0m4.730s    2902108   0.548   773.9
 2000    0m8.484s    2554252   0.482   681.1
 3000   0m14.281s    2534252   0.479   675.8
 4000   0m43.360s    2392384   0.452   638.0 <-- wow.
 5000   3m28.707s    2390972   0.452   637.6 *




More information about the ffmpeg-devel mailing list