diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-08-11 16:25:44 +0200 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-08-20 11:29:47 +0200 |
commit | 5b8b6544e205237d41bc502a7fd9f79051af78ec (patch) | |
tree | d66cfd863e9d62ac635f7dc136add2d912a5fac3 /src | |
parent | 26839c4b9eb549eebf8db6eae2399ed6fd94efa8 (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')
-rw-r--r-- | src/pulsecore/sample-util.c | 99 |
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); |