aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder/flac_decoder_plugin.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2010-01-06 09:54:09 +0100
committerMax Kellermann <max@duempel.org>2010-01-06 10:17:16 +0100
commita942384fbf4bc939086671a1741ee72244a70f28 (patch)
tree04a4c51ef656f29ef299d4b64570bd48a5f04a12 /src/decoder/flac_decoder_plugin.c
parentde0cdee4aaf891f69b876134c14dd7df6af4f331 (diff)
downloadmpd-a942384fbf4bc939086671a1741ee72244a70f28.tar.gz
mpd-a942384fbf4bc939086671a1741ee72244a70f28.tar.xz
mpd-a942384fbf4bc939086671a1741ee72244a70f28.zip
decoder/flac: support streams without STREAMINFO block
Diffstat (limited to 'src/decoder/flac_decoder_plugin.c')
-rw-r--r--src/decoder/flac_decoder_plugin.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/decoder/flac_decoder_plugin.c b/src/decoder/flac_decoder_plugin.c
index d139354b8..022ee7045 100644
--- a/src/decoder/flac_decoder_plugin.c
+++ b/src/decoder/flac_decoder_plugin.c
@@ -247,6 +247,18 @@ flac_decoder_initialize(struct flac_data *data, FLAC__StreamDecoder *sd,
return false;
}
+ if (data->initialized)
+ /* done */
+ return true;
+
+ if (data->input_stream->seekable)
+ /* allow the workaround below only for nonseekable
+ streams*/
+ return false;
+
+ /* no stream_info packet found; try to initialize the decoder
+ from the first frame header */
+ FLAC__stream_decoder_process_single(sd);
return data->initialized;
}