fix bug where calling FLAC__seekable_stream_decoder_set_metadata_ignore_*() to ignore STREAMINFO or SEEKTABLE would also prevent the seekable stream decoder from getting the blocks later, which it needs to be able to seek

This commit is contained in:
Josh Coalson 2004-07-07 00:36:45 +00:00
parent b7fcd59171
commit ab5c1d15c1
1 changed files with 12 additions and 4 deletions

View File

@ -420,11 +420,16 @@ FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_metadata_ignore(FLAC__Seek
FLAC__ASSERT(0 != decoder->private_->stream_decoder);
if(decoder->protected_->state != FLAC__SEEKABLE_STREAM_DECODER_UNINITIALIZED)
return false;
if(type == FLAC__METADATA_TYPE_STREAMINFO)
if(type == FLAC__METADATA_TYPE_STREAMINFO) {
decoder->private_->ignore_stream_info_block = true;
else if(type == FLAC__METADATA_TYPE_SEEKTABLE)
return true;
}
else if(type == FLAC__METADATA_TYPE_SEEKTABLE) {
decoder->private_->ignore_seek_table_block = true;
return FLAC__stream_decoder_set_metadata_ignore(decoder->private_->stream_decoder, type);
return true;
}
else
return FLAC__stream_decoder_set_metadata_ignore(decoder->private_->stream_decoder, type);
}
FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_metadata_ignore_application(FLAC__SeekableStreamDecoder *decoder, const FLAC__byte id[4])
@ -448,7 +453,10 @@ FLAC_API FLAC__bool FLAC__seekable_stream_decoder_set_metadata_ignore_all(FLAC__
return false;
decoder->private_->ignore_stream_info_block = true;
decoder->private_->ignore_seek_table_block = true;
return FLAC__stream_decoder_set_metadata_ignore_all(decoder->private_->stream_decoder);
return
FLAC__stream_decoder_set_metadata_ignore_all(decoder->private_->stream_decoder) &&
FLAC__stream_decoder_set_metadata_respond(decoder->private_->stream_decoder, FLAC__METADATA_TYPE_STREAMINFO) &&
FLAC__stream_decoder_set_metadata_respond(decoder->private_->stream_decoder, FLAC__METADATA_TYPE_SEEKTABLE);
}
FLAC_API FLAC__SeekableStreamDecoderState FLAC__seekable_stream_decoder_get_state(const FLAC__SeekableStreamDecoder *decoder)