From 124f79a2a69d2103bcaf460d38868c1718a5a1e3 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 23 Oct 2008 20:01:12 +0200 Subject: pcm_resample: don't resample partial samples Added assertions which ensure that there are no partial samples in the source buffer. --- src/pcm_resample_fallback.c | 5 +++++ src/pcm_resample_libsamplerate.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/pcm_resample_fallback.c b/src/pcm_resample_fallback.c index c5c4ae08c..59d095b66 100644 --- a/src/pcm_resample_fallback.c +++ b/src/pcm_resample_fallback.c @@ -20,6 +20,8 @@ #include "pcm_resample.h" #include "gcc.h" +#include + /* resampling code blatantly ripped from ESD */ size_t pcm_resample_16(uint8_t channels, @@ -33,6 +35,9 @@ pcm_resample_16(uint8_t channels, unsigned dest_samples = dest_size / sizeof(*dest_buffer); int16_t lsample, rsample; + assert((src_size % (sizeof(*src_buffer) * channels)) == 0); + assert((dest_size % (sizeof(*dest_buffer) * channels)) == 0); + switch (channels) { case 1: while (dest_pos < dest_samples) { diff --git a/src/pcm_resample_libsamplerate.c b/src/pcm_resample_libsamplerate.c index d4b85b811..fd778acc3 100644 --- a/src/pcm_resample_libsamplerate.c +++ b/src/pcm_resample_libsamplerate.c @@ -22,6 +22,7 @@ #include "log.h" #include "utils.h" +#include #include #include @@ -75,6 +76,9 @@ pcm_resample_16(uint8_t channels, size_t data_out_size; int error; + assert((src_size % (sizeof(*src_buffer) * channels)) == 0); + assert((dest_size % (sizeof(*dest_buffer) * channels)) == 0); + if (convalgo < 0) convalgo = pcm_resample_get_converter(); -- cgit v1.2.3