limit subset further if sample rate is <=48kHz: max blocksize is 4608 and max LPC order is 12

This commit is contained in:
Josh Coalson
2006-10-07 06:50:08 +00:00
parent 20ad84aa61
commit d0edb97a46
13 changed files with 62 additions and 46 deletions

View File

@@ -78,8 +78,9 @@
<li>
FLAC format:
<ul>
<li>New <a href="format.html#def_PICTURE"><span class="code">PICTURE</span></a> metadata block for storing things like cover art</li>
<li>Speaker assignments and channel orders for 3-6 channels (see <a href="format.html#frame_header">frame header</a>)</li>
<li>New <a href="format.html#def_PICTURE"><span class="code">PICTURE</span></a> metadata block for storing things like cover art.</li>
<li>Speaker assignments and channel orders for 3-6 channels (see <a href="format.html#frame_header">frame header</a>).</li>
<li>Further restrictions on the <a href="format.html#subset">FLAC subset</a> when the sample rate is &lt;=48kHz; in this case the maximum LPC order is now 12 and maximum blocksize is 4608. This is to further limit the processing and memory requirements for hardware implementations while not measurably affecting compression.</li>
</ul>
</li>
<li>

View File

@@ -642,7 +642,7 @@
<span class="argument">-b #</span>, <span class="argument">--blocksize=#</span>
</td>
<td>
Specify the block size in samples. The default is 1152 for -l 0, otherwise 4608. Subset streams must use one of 192/576/1152/2304/4608/256/512/1024/2048/4096/8192/16384/32768. The reference encoder uses the same block size for the entire stream.
Specify the block size in samples. The default is 1152 for -l 0, otherwise 4608. Subset streams must use one of 192/576/1152/2304/4608/256/512/1024/2048/4096 (and 8192/16384 if the sample rate is &gt;48kHz). The reference encoder uses the same block size for the entire stream.
</td>
</tr>
<tr>
@@ -799,7 +799,7 @@
<span class="argument">-l #</span>, <span class="argument">--max-lpc-order=#</span>
</td>
<td>
Specifies the maximum LPC order. This number must be &lt;= 32. If 0, the encoder will not attempt generic linear prediction, and use only fixed predictors. Using fixed predictors is faster but usually results in files being 5-10% larger.
Specifies the maximum LPC order. This number must be &lt;= 32. For Subset streams, it must be &lt;=12 if the sample rate is &lt;=48kHz. If 0, the encoder will not attempt generic linear prediction, and use only fixed predictors. Using fixed predictors is faster but usually results in files being 5-10% larger.
</td>
</tr>
<tr>

View File

@@ -304,7 +304,7 @@
<br />
<a name="tools__not_streamable"><b>Why did I get "ERROR initializing encoder, state = FLAC__STREAM_ENCODER_NOT_STREAMABLE"?</b></a><br />
<br />
You specified encoding options that are outside the <a href="format.html#subset">Streamable subset</a>. If that is what you really wanted, you must also use <span class="code">flac --lax</span>.<br />
You specified encoding options that are outside the <a href="format.html#subset">Streamable subset</a>. If that is what you really wanted and you understand the consequences, you can use <span class="code">flac --lax</span> to generate a non-Subset stream. The resulting file may not be streamable or play in all players.<br />
<br />
<a name="tools__different_sizes"><b>Why doesn't the same file compressed on different machines with the same options yield the same FLAC file?</b></a><br />
<br />

View File

@@ -286,7 +286,7 @@
<a name="subset" />FLAC specifies a subset of itself as the Subset format. The purpose of this is to ensure that any streams encoded according to the Subset are truly "streamable", meaning that a decoder that cannot seek within the stream can still pick up in the middle of the stream and start decoding. It also makes hardware decoder implementations more practical by limiting the encoding parameters such that decoder buffer sizes and other resource requirements can be easily determined. "flac" generates Subset streams by default unless the "--lax" command-line option is used. The Subset makes the following limitations on what may be used in the stream:
<ul>
<li>
The blocksize bits in the <a href="#frame_header">frame header</a> must be 0001-0101 or 1000-1110, specifying a fixed-blocksize stream (the exception being the last block as described in the table) and a few allowable blocksizes. This also means that the STREAMINFO metadata block must specify equal mininum and maximum blocksizes.
The blocksize bits in the <a href="#frame_header">frame header</a> must be 0001-0101 or 1000-1110, specifying a fixed-blocksize stream (the exception being the last block as described in the table) and a few allowable blocksizes. This also means that the STREAMINFO metadata block must specify equal mininum and maximum blocksizes. If the sample rate is &lt;= 48000Hz, the blocksize must be &lt;=4608, i.e. blocksize bits 0001-0101 or 1000-1100.
</li>
<li>
The sample rate bits in the <a href="#frame_header">frame header</a> must be 0001-1011.
@@ -294,6 +294,9 @@
<li>
The bits-per-sample bits in the <a href="#frame_header">frame header</a> must be 001-111.
</li>
<li>
If the sample rate is &lt;= 48000Hz, the filter order in <a href="#subframe_lpc">LPC subframes</a> must be less than or equal to 12, i.e. the subframe type bits in the <a href="#subframe_header">subframe header</a> may not be 101100-111111.
</li>
<li>
The Rice partition order in a <a href="#partitioned_rice">Rice-coded residual section</a> must be less than or equal to 8.
</li>