[Flac-dev] Problem in FLAC__stream_decoder_process_metadata

Ingo Ralf Blum ingoralfblum at gmx.de
Thu Nov 1 10:20:05 PST 2001


Hi,

I have a problem when I try to open a file, which is not a FLAC file. When I
open a non-flac file with the stream decoder API, one of the first things called
is FLAC__stream_decoder_process_metadata, which itself calls
stream_decoder_find_metadata_. Unfortunately the non-flac file contains some
content, which leads to the state set to FLAC__STREAM_DECODER_READ_FRAME.

However in FLAC__stream_decoder_process_metadata there isn't a case label for
FLAC__STREAM_DECODER_READ_FRAME and so the assert is called.

I can't workaroud this, because DirectShow sometimes tries all source filters
available on the system and so, when opening an AVI or MPEG files with my
DirectShow filter this happens. I also don't have access to the file
information, because I get the data as an anonymous stream, which can also be
some sort of streaming data or such, so I can't check for the file extension to
be ".flac" or similar. So I fixed this for now by adding another case label in
FLAC__stream_decoder_process_metadata.

case FLAC__STREAM_DECODER_READ_FRAME:
 decoder->protected_->state=FLAC__STREAM_DECODER_UNPARSEABLE_STREAM;
 return false;

Perhaps this or something similar can be added to the CVS, if this behaviour is
a bug and not a feature.

Regards,

Ingo






More information about the Flac-dev mailing list