From 62e96e9a58812108fa77082e8114df4544deb06f Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 11 Jul 2016 23:24:48 +0200 Subject: [PATCH] decoder/flac: pass number of frames to flac_convert() --- src/decoder/plugins/FlacCommon.cxx | 2 +- src/decoder/plugins/FlacPcm.cxx | 37 +++++++++++++++--------------- src/decoder/plugins/FlacPcm.hxx | 4 +++- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/decoder/plugins/FlacCommon.cxx b/src/decoder/plugins/FlacCommon.cxx index c0d62054e..dbe5dfde4 100644 --- a/src/decoder/plugins/FlacCommon.cxx +++ b/src/decoder/plugins/FlacCommon.cxx @@ -179,7 +179,7 @@ FlacDecoder::OnWrite(const FLAC__Frame &frame, flac_convert(data, frame.header.channels, audio_format.format, buf, - 0, frame.header.blocksize); + frame.header.blocksize); unsigned bit_rate = nbytes * 8 * frame.header.sample_rate / (1000 * frame.header.blocksize); diff --git a/src/decoder/plugins/FlacPcm.cxx b/src/decoder/plugins/FlacPcm.cxx index c2ac4a219..bf4678898 100644 --- a/src/decoder/plugins/FlacPcm.cxx +++ b/src/decoder/plugins/FlacPcm.cxx @@ -24,11 +24,11 @@ static void flac_convert_stereo16(int16_t *dest, const FLAC__int32 * const buf[], - unsigned int position, unsigned int end) + size_t n_frames) { - for (; position < end; ++position) { - *dest++ = buf[0][position]; - *dest++ = buf[1][position]; + for (size_t i = 0; i != n_frames; ++i) { + *dest++ = buf[0][i]; + *dest++ = buf[1][i]; } } @@ -36,13 +36,13 @@ static void flac_convert_16(int16_t *dest, unsigned int num_channels, const FLAC__int32 * const buf[], - unsigned int position, unsigned int end) + size_t n_frames) { unsigned int c_chan; - for (; position < end; ++position) + for (size_t i = 0; i != n_frames; ++i) for (c_chan = 0; c_chan < num_channels; c_chan++) - *dest++ = buf[c_chan][position]; + *dest++ = buf[c_chan][i]; } /** @@ -52,53 +52,52 @@ static void flac_convert_32(int32_t *dest, unsigned int num_channels, const FLAC__int32 * const buf[], - unsigned int position, unsigned int end) + size_t n_frames) { unsigned int c_chan; - for (; position < end; ++position) + for (size_t i = 0; i != n_frames; ++i) for (c_chan = 0; c_chan < num_channels; c_chan++) - *dest++ = buf[c_chan][position]; + *dest++ = buf[c_chan][i]; } static void flac_convert_8(int8_t *dest, unsigned int num_channels, const FLAC__int32 * const buf[], - unsigned int position, unsigned int end) + size_t n_frames) { unsigned int c_chan; - for (; position < end; ++position) + for (size_t i = 0; i != n_frames; ++i) for (c_chan = 0; c_chan < num_channels; c_chan++) - *dest++ = buf[c_chan][position]; + *dest++ = buf[c_chan][i]; } void flac_convert(void *dest, unsigned int num_channels, SampleFormat sample_format, const FLAC__int32 *const buf[], - unsigned int position, unsigned int end) + size_t n_frames) { switch (sample_format) { case SampleFormat::S16: if (num_channels == 2) - flac_convert_stereo16((int16_t*)dest, buf, - position, end); + flac_convert_stereo16((int16_t *)dest, buf, n_frames); else flac_convert_16((int16_t*)dest, num_channels, buf, - position, end); + n_frames); break; case SampleFormat::S24_P32: case SampleFormat::S32: flac_convert_32((int32_t*)dest, num_channels, buf, - position, end); + n_frames); break; case SampleFormat::S8: flac_convert_8((int8_t*)dest, num_channels, buf, - position, end); + n_frames); break; case SampleFormat::FLOAT: diff --git a/src/decoder/plugins/FlacPcm.hxx b/src/decoder/plugins/FlacPcm.hxx index cb6d6c1f8..dd7a0eddd 100644 --- a/src/decoder/plugins/FlacPcm.hxx +++ b/src/decoder/plugins/FlacPcm.hxx @@ -24,10 +24,12 @@ #include +#include + void flac_convert(void *dest, unsigned int num_channels, SampleFormat sample_format, const FLAC__int32 *const buf[], - unsigned int position, unsigned int end); + size_t n_frames); #endif