diff options
-rw-r--r-- | src/decoder/plugins/SndfileDecoderPlugin.cxx | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/decoder/plugins/SndfileDecoderPlugin.cxx b/src/decoder/plugins/SndfileDecoderPlugin.cxx index a1a426752..388c2d594 100644 --- a/src/decoder/plugins/SndfileDecoderPlugin.cxx +++ b/src/decoder/plugins/SndfileDecoderPlugin.cxx @@ -154,6 +154,12 @@ sndfile_sample_format(const SF_INFO &info) return SampleFormat::S32; } +static sf_count_t +sndfile_read_frames(SNDFILE *sf, void *buffer, sf_count_t n_frames) +{ + return sf_readf_int(sf, (int *)buffer, n_frames); +} + static void sndfile_stream_decode(Decoder &decoder, InputStream &is) { @@ -183,14 +189,16 @@ sndfile_stream_decode(Decoder &decoder, InputStream &is) decoder_initialized(decoder, audio_format, info.seekable, sndfile_duration(info)); - int buffer[4096]; + char buffer[16384]; const size_t frame_size = audio_format.GetFrameSize(); const sf_count_t read_frames = sizeof(buffer) / frame_size; DecoderCommand cmd; do { - sf_count_t num_frames = sf_readf_int(sf, buffer, read_frames); + sf_count_t num_frames = + sndfile_read_frames(sf, + buffer, read_frames); if (num_frames <= 0) break; |