[Flac-dev] FLAC__stream_decoder_seek_absolute with FLAC__STREAM_DECODER_SEEK_ERROR in 1.1.3 but it worked before

Gilles Boccon-Gibod bok at bok.net
Tue Dec 26 15:14:07 PST 2006

I've upgraded to FLAC 1.1.3, and now I have some streams where seek does 
not work anymore, but they used to work before.
After a bit of debugging, it looks like those streams (created a long 
time ago with an old version of FLAC) have a seek table where all the 
entries have a stream offset of 0.
The result is that in the function seek_to_absolute_sample_, on line 
3076 (file stream_decoder.c), the following test returns:

/* make sure we are not seeking in corrupted stream */
if (this_frame_sample < lower_bound_sample) {
     decoder->protected_->state = FLAC__STREAM_DECODER_SEEK_ERROR;
     return false;

because 'this_frame_sample' is equal to 0 (because the seek table caused 
the seek search to start at the beginning of the stream)

Now, since seeking in that file worked perfectly fine with older 
libraries, I think it would be great if 1.1.3 and above would keep this 
feature of still being able to seek even if the seek table is bogus like 
this one (because people may have old streams like this one created by 
an old verion of FLAC that did not create a correct seek table).

-- Gilles

More information about the Flac-dev mailing list