[pulseaudio-discuss] [PATCH 02/18] resampler: Move the fix method logic into a separate function
poljar (Damir Jelić)
poljarinho at gmail.com
Mon Jul 15 06:48:24 PDT 2013
---
src/pulsecore/resampler.c | 52 ++++++++++++++++++++++++++++++-----------------
1 file changed, 33 insertions(+), 19 deletions(-)
diff --git a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c
index f70f186..35bcaf9 100644
--- a/src/pulsecore/resampler.c
+++ b/src/pulsecore/resampler.c
@@ -192,28 +192,18 @@ static int (* const init_table[])(pa_resampler*r) = {
[PA_RESAMPLER_PEAKS] = peaks_init,
};
-pa_resampler* pa_resampler_new(
- pa_mempool *pool,
- const pa_sample_spec *a,
- const pa_channel_map *am,
- const pa_sample_spec *b,
- const pa_channel_map *bm,
- pa_resample_method_t method,
- pa_resample_flags_t flags) {
-
- pa_resampler *r = NULL;
-
- pa_assert(pool);
- pa_assert(a);
- pa_assert(b);
- pa_assert(pa_sample_spec_valid(a));
- pa_assert(pa_sample_spec_valid(b));
+static pa_resample_method_t pa_resampler_fix_method(
+ pa_resample_flags_t flags,
+ pa_resample_method_t method,
+ const uint32_t rate_a,
+ const uint32_t rate_b) {
+
+ pa_assert(rate_a > 0 && rate_a <= PA_RATE_MAX);
+ pa_assert(rate_b > 0 && rate_b <= PA_RATE_MAX);
pa_assert(method >= 0);
pa_assert(method < PA_RESAMPLER_MAX);
- /* Fix method */
-
- if (!(flags & PA_RESAMPLER_VARIABLE_RATE) && a->rate == b->rate) {
+ if (!(flags & PA_RESAMPLER_VARIABLE_RATE) && rate_a == rate_b) {
pa_log_info("Forcing resampler 'copy', because of fixed, identical sample rates.");
method = PA_RESAMPLER_COPY;
}
@@ -244,6 +234,30 @@ pa_resampler* pa_resampler_new(
#endif
}
+ return method;
+}
+
+pa_resampler* pa_resampler_new(
+ pa_mempool *pool,
+ const pa_sample_spec *a,
+ const pa_channel_map *am,
+ const pa_sample_spec *b,
+ const pa_channel_map *bm,
+ pa_resample_method_t method,
+ pa_resample_flags_t flags) {
+
+ pa_resampler *r = NULL;
+
+ pa_assert(pool);
+ pa_assert(a);
+ pa_assert(b);
+ pa_assert(pa_sample_spec_valid(a));
+ pa_assert(pa_sample_spec_valid(b));
+ pa_assert(method >= 0);
+ pa_assert(method < PA_RESAMPLER_MAX);
+
+ method = pa_resampler_fix_method(flags, method, a->rate, b->rate);
+
r = pa_xnew0(pa_resampler, 1);
r->mempool = pool;
r->method = method;
--
1.8.3.2
More information about the pulseaudio-discuss
mailing list