Re: FLAC v1.4.x Performance Tests
Reply #229 – 2022-10-24 19:30:51

It is a bit tricky that the encoder accepts anything and silently drops stuff it doesn't understand. If you want to know what it does, read the explanation at the bottom of this page: https://xiph.org/flac/documentation_tools_flac.html TL;DR: for starters, just use whole numbers like subdivide_tukey(5) or something. If you feel like it, you can specify a second fraction between 0 and 1, like subdivide_tukey(5/0.2) The second value is locale-specific, so is subdivide_tukey(5/0,2) for many non-English PCs. Using scientific notation (2e-1) is a way around that. For other apodizations, see the linked document. Just a point: "/" is not a division slash, it is a separator between arguments, where the first is mandatory. tukey(P) takes only one argument in, and that is a number between 0 and 1. The subdivide_tukey can be specified as subdivide_tukey(N) and optionally subdivide_tukey(N/P) - but then again, the "/P" has nothing to do with division. As ktf says, for starters stick to N and remember that higher N will slow down. What this tukey function does ? For the block of the signal - 4096 samples, typically - it keeps the middle 1-P fraction and it downweighs the beginning and end according to a cosine function. Turns out, it typically gives a much better predictor than not applying any weight - that would be "rectangle". The subdivide_tukey "generates more functions" in a way that recycles lots of calculations. It takes time to try them all, but it doesn't make for more complicated decoding. They are several simple attempts, and the encoder picks the one that happens to fit best. The decoder doesn't know how hard the encoder tried. Thanks for the information. I did a test of different combinations of options, so see what kind of times vs compression I would get. I started the test before I asked the question, and it took over a day to complete. I had put in a couple random values for subdivide_tukey(X/Xe-1) It looks like "subdivide_tukey(21/15e-1)" shouldn't work, as that would exceed what should work for tukey, but it did seem to be helpful here.Ratio: Size: Enc Time Options used 59.41% 464.176M 8:32:57 -b 4096 -m -l 12 -r 8 -ep -A subdivide_tukey(21) 59.41% 464.178M 5:15:19 -b 4096 -m -l 12 -r 7 -ep -A subdivide_tukey(21) 59.41% 464.185M 5:34:39 -b 4096 -m -l 12 -r 8 -ep -A subdivide_tukey(17) 59.41% 464.187M 3:29:06 -b 4096 -m -l 12 -r 7 -ep -A subdivide_tukey(17) 59.42% 464.205M 3:15:35 -b 4096 -m -l 12 -r 8 -ep -A subdivide_tukey(13) 59.42% 464.206M 2:03:37 -b 4096 -m -l 12 -r 7 -ep -A subdivide_tukey(13) 59.43% 464.281M 31:07.50 -b 4096 -m -l 12 -r 7 -p -A subdivide_tukey(21/15e-1) 59.43% 464.281M 46:29.04 -b 4096 -m -l 12 -r 8 -p -A subdivide_tukey(21) 59.43% 464.283M 31:08.72 -b 4096 -m -l 12 -r 7 -p -A subdivide_tukey(21) 59.43% 464.292M 30:45.12 -b 4096 -m -l 12 -r 8 -p -A subdivide_tukey(17) 59.43% 464.293M 20:43.93 -b 4096 -m -l 12 -r 7 -p -A subdivide_tukey(17) 59.43% 464.297M 20:36.87 -b 4096 -m -l 12 -r 7 -p -A subdivide_tukey(17/12e-1) 59.43% 464.315M 18:20.15 -b 4096 -m -l 12 -r 8 -p -A subdivide_tukey(13) 59.43% 464.316M 12:19.42 -b 4096 -m -l 12 -r 7 -p -A subdivide_tukey(13) 59.43% 464.320M 12:20.79 -b 4096 -m -l 12 -r 7 -p -A subdivide_tukey(13/9e-1) 59.43% 464.342M 1:35:41 -b 4096 -m -l 12 -r 8 -ep -A subdivide_tukey(9) 59.43% 464.343M 23:23.17 -b 4096 -m -l 12 -r 6 -p -A subdivide_tukey(21) 59.43% 464.344M 59:58.54 -b 4096 -m -l 12 -r 7 -ep -A subdivide_tukey(9) 59.44% 464.352M 15:32.61 -b 4096 -m -l 12 -r 6 -p -A subdivide_tukey(17) 59.44% 464.373M 9:18.64 -b 4096 -m -l 12 -r 6 -p -A subdivide_tukey(13) 59.45% 464.444M 30:08.22 -b 4096 -m -l 12 -r 8 -ep -A subdivide_tukey(5) 59.45% 464.447M 19:02.92 -b 4096 -m -l 12 -r 7 -ep -A subdivide_tukey(5) 59.45% 464.466M 6:05.76 -b 4096 -m -l 12 -r 7 -p -A subdivide_tukey(9/6e-1) 59.45% 464.477M 9:01.27 -b 4096 -m -l 12 -r 8 -p -A subdivide_tukey(9) 59.45% 464.479M 6:05.86 -b 4096 -m -l 12 -r 7 -p -A subdivide_tukey(9) 59.46% 464.525M 4:39.14 -b 4096 -m -l 12 -r 6 -p -A subdivide_tukey(9) 59.47% 464.595M 2:00.80 -b 4096 -m -l 12 -r 7 -p -A subdivide_tukey(5/3e-1) 59.47% 464.598M 2:55.68 -b 4096 -m -l 12 -r 8 -p -A subdivide_tukey(5) 59.47% 464.600M 2:00.44 -b 4096 -m -l 12 -r 7 -p -A subdivide_tukey(5) 59.47% 464.644M 1:35.94 -b 4096 -m -l 12 -r 6 -p -A subdivide_tukey(5) 59.48% 464.661M 6:08.93 -b 4096 -m -l 12 -r 8 -A subdivide_tukey(21) 59.48% 464.663M 4:25.36 -b 4096 -m -l 12 -r 7 -A subdivide_tukey(21) 59.48% 464.670M 4:09.56 -b 4096 -m -l 12 -r 8 -A subdivide_tukey(17) 59.48% 464.671M 3:01.99 -b 4096 -m -l 12 -r 7 -A subdivide_tukey(17) 59.48% 464.691M 2:34.32 -b 4096 -m -l 12 -r 8 -A subdivide_tukey(13) 59.48% 464.692M 1:54.71 -b 4096 -m -l 12 -r 7 -A subdivide_tukey(13) 59.48% 464.723M 3:34.07 -b 4096 -m -l 12 -r 6 -A subdivide_tukey(21) 59.48% 464.730M 2:28.18 -b 4096 -m -l 12 -r 6 -A subdivide_tukey(17) 59.49% 464.748M 1:33.87 -b 4096 -m -l 12 -r 6 -A subdivide_tukey(13) 59.50% 464.849M 1:21.94 -b 4096 -m -l 12 -r 8 -A subdivide_tukey(9) 59.50% 464.850M 1:02.65 -b 4096 -m -l 12 -r 7 -A subdivide_tukey(9) 59.51% 464.896M 0:52.11 -b 4096 -m -l 12 -r 6 -A subdivide_tukey(9) 59.51% 464.962M 0:32.64 -b 4096 -m -l 12 -r 8 -A subdivide_tukey(5) 59.51% 464.963M 0:26.19 -b 4096 -m -l 12 -r 7 -A subdivide_tukey(5) 59.52% 465.009M 0:22.85 -b 4096 -m -l 12 -r 6 -A subdivide_tukey(5) 59.54% 465.197M 0:12.73 -b 4096 -m -l 12 -r 6 -A subdivide_tukey(3) # Same as preset -8 # 59.59% 465.591M 0:08.72 -b 4096 -m -l 12 -r 6 -A subdivide_tukey(2) # Same as preset -7 # 59.74% 466.717M 0:07.24 -b 4096 -m -l 8 -r 6 -A subdivide_tukey(2) # Same as preset -6 # 59.90% 467.965M 0:05.40 -b 4096 -m -l 8 -r 5 # Same as preset -5 # 64.92% 507.177M 0:03.73 -b 1152 -l 0 -r 3 --no-mid-side # Same as preset -0 #