summaryrefslogtreecommitdiffstats
path: root/src/pulsecore/sample-util.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-08-11 16:25:44 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2009-08-20 11:29:47 +0200
commit5b8b6544e205237d41bc502a7fd9f79051af78ec (patch)
treed66cfd863e9d62ac635f7dc136add2d912a5fac3 /src/pulsecore/sample-util.c
parent26839c4b9eb549eebf8db6eae2399ed6fd94efa8 (diff)
sample-utils: coding style cleanup
Make the coding style match the rest of pulseaudio more. Remove some liboil functions, they seem unoptimized and likely slower than our handrolled versions here.
Diffstat (limited to 'src/pulsecore/sample-util.c')
-rw-r--r--src/pulsecore/sample-util.c99
1 files changed, 46 insertions, 53 deletions
diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c
index ef435673..0d4e01ef 100644
--- a/src/pulsecore/sample-util.c
+++ b/src/pulsecore/sample-util.c
@@ -30,9 +30,6 @@
#include <stdio.h>
#include <errno.h>
-#include <liboil/liboilfuncs.h>
-#include <liboil/liboil.h>
-
#include <pulse/timeval.h>
#include <pulsecore/log.h>
@@ -977,59 +974,50 @@ pa_volume_s24_32re_c (uint32_t *samples, int32_t *volumes, unsigned channels, un
}
}
-typedef void (*pa_do_volume_func) (void *samples, void *volumes, unsigned channels, unsigned length);
-typedef void (*pa_calc_volume_func) (void *volumes, const pa_cvolume *volume);
+typedef void (*pa_do_volume_func_t) (void *samples, void *volumes, unsigned channels, unsigned length);
+typedef void (*pa_calc_volume_func_t) (void *volumes, const pa_cvolume *volume);
typedef union {
float f;
uint32_t i;
} volume_val;
-static pa_calc_volume_func calc_volume_funcs[] =
-{
- (pa_calc_volume_func) calc_linear_integer_volume,
- (pa_calc_volume_func) calc_linear_integer_volume,
- (pa_calc_volume_func) calc_linear_integer_volume,
- (pa_calc_volume_func) calc_linear_integer_volume,
- (pa_calc_volume_func) calc_linear_integer_volume,
- (pa_calc_volume_func) calc_linear_float_volume,
- (pa_calc_volume_func) calc_linear_float_volume,
- (pa_calc_volume_func) calc_linear_integer_volume,
- (pa_calc_volume_func) calc_linear_integer_volume,
- (pa_calc_volume_func) calc_linear_integer_volume,
- (pa_calc_volume_func) calc_linear_integer_volume,
- (pa_calc_volume_func) calc_linear_integer_volume,
- (pa_calc_volume_func) calc_linear_integer_volume
+typedef struct pa_sample_func_t {
+ pa_calc_volume_func_t calc_volume;
+ pa_do_volume_func_t do_volume;
+} pa_sample_func_t;
+
+static const pa_calc_volume_func_t calc_volume_table[] = {
+ [PA_SAMPLE_U8] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_ALAW] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_ULAW] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S16LE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S16BE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_FLOAT32LE] = (pa_calc_volume_func_t) calc_linear_float_volume,
+ [PA_SAMPLE_FLOAT32BE] = (pa_calc_volume_func_t) calc_linear_float_volume,
+ [PA_SAMPLE_S32LE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S32BE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S24LE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S24BE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S24_32LE] = (pa_calc_volume_func_t) calc_linear_integer_volume,
+ [PA_SAMPLE_S24_32BE] = (pa_calc_volume_func_t) calc_linear_integer_volume
};
-static pa_do_volume_func do_volume_funcs[] =
+static pa_do_volume_func_t do_volume_table[] =
{
- (pa_do_volume_func) pa_volume_u8_c,
- (pa_do_volume_func) pa_volume_alaw_c,
- (pa_do_volume_func) pa_volume_ulaw_c,
-#ifdef WORDS_BIGENDIAN
- (pa_do_volume_func) pa_volume_s16re_c,
- (pa_do_volume_func) pa_volume_s16ne_c,
- (pa_do_volume_func) pa_volume_float32re_c,
- (pa_do_volume_func) pa_volume_float32ne_c,
- (pa_do_volume_func) pa_volume_s32re_c,
- (pa_do_volume_func) pa_volume_s32ne_c,
- (pa_do_volume_func) pa_volume_s24re_c,
- (pa_do_volume_func) pa_volume_s24ne_c,
- (pa_do_volume_func) pa_volume_s24_32re_c
- (pa_do_volume_func) pa_volume_s24_32ne_c,
-#else
- (pa_do_volume_func) pa_volume_s16ne_c,
- (pa_do_volume_func) pa_volume_s16re_c,
- (pa_do_volume_func) pa_volume_float32ne_c,
- (pa_do_volume_func) pa_volume_float32re_c,
- (pa_do_volume_func) pa_volume_s32ne_c,
- (pa_do_volume_func) pa_volume_s32re_c,
- (pa_do_volume_func) pa_volume_s24ne_c,
- (pa_do_volume_func) pa_volume_s24re_c,
- (pa_do_volume_func) pa_volume_s24_32ne_c,
- (pa_do_volume_func) pa_volume_s24_32re_c
-#endif
+ [PA_SAMPLE_U8] = (pa_do_volume_func_t) pa_volume_u8_c,
+ [PA_SAMPLE_ALAW] = (pa_do_volume_func_t) pa_volume_alaw_c,
+ [PA_SAMPLE_ULAW] = (pa_do_volume_func_t) pa_volume_ulaw_c,
+ [PA_SAMPLE_S16NE] = (pa_do_volume_func_t) pa_volume_s16ne_c,
+ [PA_SAMPLE_S16RE] = (pa_do_volume_func_t) pa_volume_s16re_c,
+ [PA_SAMPLE_FLOAT32NE] = (pa_do_volume_func_t) pa_volume_float32ne_c,
+ [PA_SAMPLE_FLOAT32RE] = (pa_do_volume_func_t) pa_volume_float32re_c,
+ [PA_SAMPLE_S32NE] = (pa_do_volume_func_t) pa_volume_s32ne_c,
+ [PA_SAMPLE_S32RE] = (pa_do_volume_func_t) pa_volume_s32re_c,
+ [PA_SAMPLE_S24NE] = (pa_do_volume_func_t) pa_volume_s24ne_c,
+ [PA_SAMPLE_S24RE] = (pa_do_volume_func_t) pa_volume_s24re_c,
+ [PA_SAMPLE_S24_32NE] = (pa_do_volume_func_t) pa_volume_s24_32ne_c,
+ [PA_SAMPLE_S24_32RE] = (pa_do_volume_func_t) pa_volume_s24_32re_c
};
void pa_volume_memchunk(
@@ -1063,8 +1051,8 @@ void pa_volume_memchunk(
ptr = (uint8_t*) pa_memblock_acquire(c->memblock) + c->index;
- calc_volume_funcs[spec->format] ((void *)linear, volume);
- do_volume_funcs[spec->format] (ptr, (void *)linear, spec->channels, c->length);
+ calc_volume_table[spec->format] ((void *)linear, volume);
+ do_volume_table[spec->format] (ptr, (void *)linear, spec->channels, c->length);
pa_memblock_release(c->memblock);
}
@@ -1110,7 +1098,7 @@ void pa_interleave(const void *src[], unsigned channels, void *dst, size_t ss, u
d = (uint8_t*) dst + c * ss;
for (j = 0; j < n; j ++) {
- oil_memcpy(d, s, (int) ss);
+ memcpy(d, s, (int) ss);
s = (uint8_t*) s + ss;
d = (uint8_t*) d + fs;
}
@@ -1138,7 +1126,7 @@ void pa_deinterleave(const void *src, void *dst[], unsigned channels, size_t ss,
d = dst[c];
for (j = 0; j < n; j ++) {
- oil_memcpy(d, s, (int) ss);
+ memcpy(d, s, (int) ss);
s = (uint8_t*) s + fs;
d = (uint8_t*) d + ss;
}
@@ -1247,10 +1235,15 @@ void pa_sample_clamp(pa_sample_format_t format, void *dst, size_t dstr, const vo
s = src; d = dst;
if (format == PA_SAMPLE_FLOAT32NE) {
+ for (; n > 0; n--) {
+ float f;
- float minus_one = -1.0, plus_one = 1.0;
- oil_clip_f32(d, (int) dstr, s, (int) sstr, (int) n, &minus_one, &plus_one);
+ f = *s;
+ *d = PA_CLAMP_UNLIKELY(f, -1.0f, 1.0f);
+ s = (const float*) ((const uint8_t*) s + sstr);
+ d = (float*) ((uint8_t*) d + dstr);
+ }
} else {
pa_assert(format == PA_SAMPLE_FLOAT32RE);