summaryrefslogtreecommitdiff
path: root/src/pulsecore/resampler.c
diff options
context:
space:
mode:
authorpoljar (Damir Jelić) <poljarinho@gmail.com>2013-07-11 19:28:29 +0200
committerpoljar (Damir Jelić) <poljarinho@gmail.com>2013-08-27 12:33:09 +0200
commit7665f60cc08c4b83e79acc96aa3bd7e9c4f1086d (patch)
tree7553455b535a4b87d26c884dee6a6cec8b6f2a5b /src/pulsecore/resampler.c
parent78c18e71e0ce329be84e40cd1a437c9c78db96b1 (diff)
downloadpulseaudio-7665f60cc08c4b83e79acc96aa3bd7e9c4f1086d.tar.gz
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.
Diffstat (limited to 'src/pulsecore/resampler.c')
-rw-r--r--src/pulsecore/resampler.c33
1 files 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;
}