From: Josh Coalson Date: Wed, 7 Jul 2004 00:36:45 +0000 (+0000) Subject: fix bug where calling FLAC__seekable_stream_decoder_set_metadata_ignore_*() to ignore... X-Git-Tag: 1.2.0~894 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ab5c1d15c188bd6189137aa188142ea10b0db806;p=platform%2Fupstream%2Fflac.git 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 --- diff --git a/src/libFLAC/seekable_stream_decoder.c b/src/libFLAC/seekable_stream_decoder.c index 94b6f58..f74063b 100644 --- a/src/libFLAC/seekable_stream_decoder.c +++ b/src/libFLAC/seekable_stream_decoder.c @@ -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)