mirror of
https://github.com/claunia/flac.git
synced 2025-12-16 18:54:26 +00:00
Improve decoder's ability to distinguish between a FLAC sync code and an MPEG one (SF #2491433 https://sourceforge.net/tracker2/?func=detail&aid=2491433&group_id=13478&atid=113478
This commit is contained in:
@@ -121,6 +121,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>libFLAC encoder was defaulting to level 0 compression instead of 5 (<a href="https://sourceforge.net/tracker2/?func=detail&aid=1816825&group_id=13478&atid=113478">SF #1816825</a>).</li>
|
<li>libFLAC encoder was defaulting to level 0 compression instead of 5 (<a href="https://sourceforge.net/tracker2/?func=detail&aid=1816825&group_id=13478&atid=113478">SF #1816825</a>).</li>
|
||||||
<li>Fix bug in bitreader handling of read callback returning a short count (<a href="https://sourceforge.net/tracker2/?func=detail&aid=2490454&group_id=13478&atid=113478">SF #2490454</a>).</li>
|
<li>Fix bug in bitreader handling of read callback returning a short count (<a href="https://sourceforge.net/tracker2/?func=detail&aid=2490454&group_id=13478&atid=113478">SF #2490454</a>).</li>
|
||||||
|
<li>Improve decoder's ability to distinguish between a FLAC sync code and an MPEG one (<a href="https://sourceforge.net/tracker2/?func=detail&aid=2491433&group_id=13478&atid=113478">SF #2491433</a>).</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
|||||||
@@ -1121,7 +1121,7 @@
|
|||||||
<1>
|
<1>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
Reserved:<br />
|
Reserved: <a href="#frame_header_notes">[1]</a><br />
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<tt>0</tt> : mandatory value
|
<tt>0</tt> : mandatory value
|
||||||
@@ -1137,7 +1137,7 @@
|
|||||||
<1>
|
<1>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
Blocking strategy:<br />
|
Blocking strategy: <a href="#frame_header_notes">[2]</a> <a href="#frame_header_notes">[3]</a><br />
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<tt>0</tt> : fixed-blocksize stream; frame header encodes the frame number
|
<tt>0</tt> : fixed-blocksize stream; frame header encodes the frame number
|
||||||
@@ -1325,9 +1325,9 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
if(variable blocksize)<br />
|
if(variable blocksize)<br />
|
||||||
<8-56>:"UTF-8" coded sample number (decoded number is 36 bits)<br />
|
<8-56>:"UTF-8" coded sample number (decoded number is 36 bits) <a href="#frame_header_notes">[4]</a><br />
|
||||||
else<br />
|
else<br />
|
||||||
<8-48>:"UTF-8" coded frame number (decoded number is 31 bits)
|
<8-48>:"UTF-8" coded frame number (decoded number is 31 bits) <a href="#frame_header_notes">[4]</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -1360,8 +1360,11 @@
|
|||||||
<td>
|
<td>
|
||||||
</td>
|
</td>
|
||||||
<td bgcolor="#F4F4CC">
|
<td bgcolor="#F4F4CC">
|
||||||
<font size="+1">NOTES</font><br />
|
<a name="frame_header_notes"><font size="+1">NOTES</font></a><br />
|
||||||
<ul>
|
<ol>
|
||||||
|
<li>
|
||||||
|
This bit must remain reserved for <tt>0</tt> in order for a FLAC frame's initial 15 bits to be distinguishable from the start of an MPEG audio frame (<a href="http://lists.xiph.org/pipermail/flac-dev/2008-December/002607.html">see also</a>).
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
The "blocking strategy" bit must be the same throughout the entire stream.
|
The "blocking strategy" bit must be the same throughout the entire stream.
|
||||||
</li>
|
</li>
|
||||||
@@ -1371,7 +1374,7 @@
|
|||||||
<li>
|
<li>
|
||||||
The "UTF-8" coding used for the sample/frame number is the same variable length code used to store compressed UCS-2, extended to handle larger input.
|
The "UTF-8" coding used for the sample/frame number is the same variable length code used to store compressed UCS-2, extended to handle larger input.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ol>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -1407,7 +1407,7 @@ FLAC__bool find_metadata_(FLAC__StreamDecoder *decoder)
|
|||||||
decoder->private_->lookahead = (FLAC__byte)x;
|
decoder->private_->lookahead = (FLAC__byte)x;
|
||||||
decoder->private_->cached = true;
|
decoder->private_->cached = true;
|
||||||
}
|
}
|
||||||
else if(x >> 2 == 0x3e) { /* MAGIC NUMBER for the last 6 sync bits */
|
else if(x >> 1 == 0x7c) { /* MAGIC NUMBER for the last 6 sync bits and reserved 7th bit */
|
||||||
decoder->private_->header_warmup[1] = (FLAC__byte)x;
|
decoder->private_->header_warmup[1] = (FLAC__byte)x;
|
||||||
decoder->protected_->state = FLAC__STREAM_DECODER_READ_FRAME;
|
decoder->protected_->state = FLAC__STREAM_DECODER_READ_FRAME;
|
||||||
return true;
|
return true;
|
||||||
@@ -1977,7 +1977,7 @@ FLAC__bool frame_sync_(FLAC__StreamDecoder *decoder)
|
|||||||
decoder->private_->lookahead = (FLAC__byte)x;
|
decoder->private_->lookahead = (FLAC__byte)x;
|
||||||
decoder->private_->cached = true;
|
decoder->private_->cached = true;
|
||||||
}
|
}
|
||||||
else if(x >> 2 == 0x3e) { /* MAGIC NUMBER for the last 6 sync bits */
|
else if(x >> 1 == 0x7c) { /* MAGIC NUMBER for the last 6 sync bits and reserved 7th bit */
|
||||||
decoder->private_->header_warmup[1] = (FLAC__byte)x;
|
decoder->private_->header_warmup[1] = (FLAC__byte)x;
|
||||||
decoder->protected_->state = FLAC__STREAM_DECODER_READ_FRAME;
|
decoder->protected_->state = FLAC__STREAM_DECODER_READ_FRAME;
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user