From 7665f60cc08c4b83e79acc96aa3bd7e9c4f1086d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?poljar=20=28Damir=20Jeli=C4=87=29?= Date: Thu, 11 Jul 2013 19:28:29 +0200 Subject: [PATCH] resampler: choose_work_format use switch instead of if/else This way the function for choosing the work format should be more readable and easier to expand in the future. --- src/pulsecore/resampler.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c index c79a5df46..89ff5a131 100644 --- a/src/pulsecore/resampler.c +++ b/src/pulsecore/resampler.c @@ -256,13 +256,27 @@ static pa_sample_format_t pa_resampler_choose_work_format( pa_assert(method >= 0); pa_assert(method < PA_RESAMPLER_MAX); - if ((method >= PA_RESAMPLER_SPEEX_FIXED_BASE && method <= PA_RESAMPLER_SPEEX_FIXED_MAX) || - (method == PA_RESAMPLER_FFMPEG)) - work_format = PA_SAMPLE_S16NE; - else if (method == PA_RESAMPLER_TRIVIAL || method == PA_RESAMPLER_COPY || method == PA_RESAMPLER_PEAKS) { + if (method >= PA_RESAMPLER_SPEEX_FIXED_BASE && method <= PA_RESAMPLER_SPEEX_FIXED_MAX) + method = PA_RESAMPLER_SPEEX_FIXED_BASE; - if (map_required || a != b || method == PA_RESAMPLER_PEAKS) { + switch (method) { + /* This block is for resampling functions that only + * support the S16 sample format. */ + case PA_RESAMPLER_SPEEX_FIXED_BASE: /* fall through */ + case PA_RESAMPLER_FFMPEG: + work_format = PA_SAMPLE_S16NE; + break; + /* This block is for resampling functions that support + * any sample format. */ + case PA_RESAMPLER_COPY: /* fall through */ + case PA_RESAMPLER_TRIVIAL: + if (!map_required && a == b) { + work_format = a; + break; + } + /* Else fall trough */ + case PA_RESAMPLER_PEAKS: if (a == PA_SAMPLE_S16NE || b == PA_SAMPLE_S16NE) work_format = PA_SAMPLE_S16NE; else if (a == PA_SAMPLE_S32NE || a == PA_SAMPLE_S32RE || @@ -276,12 +290,11 @@ static pa_sample_format_t pa_resampler_choose_work_format( work_format = PA_SAMPLE_FLOAT32NE; else work_format = PA_SAMPLE_S16NE; + break; - } else - work_format = a; - - } else - work_format = PA_SAMPLE_FLOAT32NE; + default: + work_format = PA_SAMPLE_FLOAT32NE; + } return work_format; }