Барт Гопник
2014-Jun-19 09:20 UTC
[flac-dev] How to check/test existing FLAC stream for Subset?
> check the resulting file for subset blocksizes, sample rates, bits per sample, LPC filter order and rice partition order.That's all parameters that I need to check? FLAC tools have a lots of warnings about non-subset files during encoding, but unfortunately don't have easy way to check/test existing FLAC stream for subset compliance. "flac -a" generates the big text file that has data about each frame and subframe. But looks like I need parser and statistics tools to answer on question about subset compliance of stream. Looks like "metaflac --show-min-blocksize --show-max-blocksize --show-sample-rate --show-bps" is more useful, but look like unfortunately there is no switches to show LPC filter order and Rice partition order in MataFLAC tool. It would be nice if anybody add switches to show more parameters like LPC filter order and Rice partition order and checking for subset compliance of stream to MetaFLAC tool. I understand that FLAC is free open source project and nobody owes nobody nothing and don't know how hard to implement these features, because I'm not a programmer, I'm just powered user only. My task (specific purpose is science research/experiment at the university) is achieve the maximum possible compression ratio using reference FLAC encoder and FFMPEG's FLAC encoder, but stream should be FLAC subset. With reference FLAC encoder all is clear due to excellent exhaustive documentation about each available parameters :), with FFMPEG's FLAC encoder unfortunately is not. :( Does the following FFMPEG's FLAC encoder options affect the subset compliance of stream? -lpc_type <int> E...A... LPC algorithm (from -1 to 3) (default -1) none E...A... fixed E...A... levinson E...A... cholesky E...A... -lpc_passes <int> E...A... Number of passes to use for Cholesky factorization during LPC analysis (from 1 to INT_MAX) (default 2) -prediction_order_method <int> E...A... Search method for selecting prediction order (from -1 to 5) (default -1) estimation E...A... 2level E...A... 4level E...A... 8level E...A... search E...A... log E...A... I can't find anything about e.g. Levinson-Durbin recursion with Welch window and Cholesky factorization (and number of its passes) LPC algorithms and estimation, 2level, 4level, 8level, search and log search methods for selecting prediction order in FLAC documentation, therefore I can't know how these parameters affect to subset compliance of stream.
Martijn van Beurden
2014-Jun-19 16:00 UTC
[flac-dev] How to check/test existing FLAC stream for Subset?
op 19-06-14 11:20, ???? ?????? schreef:> That's all parameters that I need to check?That is correct. See http://xiph.org/flac/format.html, it says> The Subset makes the following limitations on what may be used > in the stream: > > - The blocksize bits in the frame header must be 0001-1110. > The blocksize must be <=16384; if the sample rate is <= > 48000Hz, the blocksize must be <=4608. > - The sample rate bits in the frame header must be 0001-1110. > - The bits-per-sample bits in the frame header must be 001-111. > - If the sample rate is <= 48000Hz, the filter order in LPC > subframes must be less than or equal to 12, i.e. the subframe > type bits in the subframe header may not be 101100-111111. > - The Rice partition order in a Rice-coded residual section > must be less than or equal to 8.So those are all restrictions you have to check for.> but stream should be FLAC subset.What is the reason you're restricting yourself to subset? Does it have to be decodeable on certain hardware?> Does the following FFMPEG's FLAC encoder options affect the subset > compliance of stream? > > [...] > > I can't find anything about e.g. Levinson-Durbin recursion with Welch > window and Cholesky factorization (and number of its passes) LPC > algorithms and estimation, 2level, 4level, 8level, search and log > search methods for selecting prediction order in FLAC documentation, > therefore I can't know how these parameters affect to subset > compliance of stream.Those are parameters that affect the way the encoder searches for ways to compress, but it doesn't change the time or amount of memory the decoder needs to decode the file. They are not detailed in the documentation because those options do not show up in the resulting file, it is an encoder internal.
Possibly Parallel Threads
- Please help me understand what values of FFMPEG's "compression_level" preset generate subset FLAC stream and what not-subset?
- Matrix: how to re-use the symbolic Cholesky factorization?
- Altivec, automake
- integerization
- [PATCH] stream_encoder : Improve selection of residual accumulator width