diff options
author | Max Kellermann <max@duempel.org> | 2014-08-23 15:14:16 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-08-23 15:14:16 +0200 |
commit | 40db9dff3b74dfde97a537d10b11d649ab93d459 (patch) | |
tree | 7be947dadd28fd0786e5b1990a9786fc2c1b7dfa | |
parent | fa82264604e6a8e342c932e8fd526017622e3f9f (diff) | |
download | mpd-40db9dff3b74dfde97a537d10b11d649ab93d459.tar.gz mpd-40db9dff3b74dfde97a537d10b11d649ab93d459.tar.xz mpd-40db9dff3b74dfde97a537d10b11d649ab93d459.zip |
decoder/dsdiff: support only one "DSD" chunk
Eliminate the loop from dsdiff_stream_decode(). It makes the code
complex, real-world files with multiple DSD chunks are outside of the
specification, and the "chunk_size" variable would be bogus anyway.
-rw-r--r-- | src/decoder/plugins/DsdiffDecoderPlugin.cxx | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/src/decoder/plugins/DsdiffDecoderPlugin.cxx b/src/decoder/plugins/DsdiffDecoderPlugin.cxx index 941cfbc7b..a771ecf01 100644 --- a/src/decoder/plugins/DsdiffDecoderPlugin.cxx +++ b/src/decoder/plugins/DsdiffDecoderPlugin.cxx @@ -434,27 +434,10 @@ dsdiff_stream_decode(Decoder &decoder, InputStream &is) /* every iteration of the following loop decodes one "DSD" chunk from a DFF file */ - while (true) { - chunk_size = chunk_header.GetSize(); - - if (chunk_header.id.Equals("DSD ")) { - if (!dsdiff_decode_chunk(decoder, is, - metadata.channels, - metadata.sample_rate, - chunk_size)) - break; - } else { - /* ignore other chunks */ - if (!dsdlib_skip(&decoder, is, chunk_size)) - break; - } - - /* read next chunk header; the first one was read by - dsdiff_read_metadata() */ - if (!dsdiff_read_chunk_header(&decoder, - is, &chunk_header)) - break; - } + dsdiff_decode_chunk(decoder, is, + metadata.channels, + metadata.sample_rate, + chunk_size); } static bool |