diff options
Diffstat (limited to 'src/pulsecore/svolume_arm.c')
-rw-r--r-- | src/pulsecore/svolume_arm.c | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/src/pulsecore/svolume_arm.c b/src/pulsecore/svolume_arm.c index 3973e518..42e8cbf9 100644 --- a/src/pulsecore/svolume_arm.c +++ b/src/pulsecore/svolume_arm.c @@ -29,22 +29,21 @@ #include <pulsecore/macro.h> #include <pulsecore/g711.h> #include <pulsecore/core-util.h> +#include <pulsecore/endianmacros.h> #include "cpu-arm.h" #include "sample-util.h" -#include "endianmacros.h" #if defined (__arm__) && defined (HAVE_ARMV6) #define MOD_INC() \ " subs r0, r6, %2 \n\t" \ + " itt cs \n\t" \ " addcs r0, %1 \n\t" \ " movcs r6, r0 \n\t" -static void -pa_volume_s16ne_arm (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length) -{ +static void pa_volume_s16ne_arm(int16_t *samples, int32_t *volumes, unsigned channels, unsigned length) { int32_t *ve; /* Channels must be at least 4, and always a multiple of the original number. @@ -129,11 +128,11 @@ pa_volume_s16ne_arm (int16_t *samples, int32_t *volumes, unsigned channels, unsi #ifdef RUN_TEST #define CHANNELS 2 -#define SAMPLES 1023 +#define SAMPLES 1022 #define TIMES 1000 #define PADDING 16 -static void run_test (void) { +static void run_test(void) { int16_t samples[SAMPLES]; int16_t samples_ref[SAMPLES]; int16_t samples_orig[SAMPLES]; @@ -142,21 +141,21 @@ static void run_test (void) { pa_do_volume_func_t func; pa_usec_t start, stop; - func = pa_get_volume_func (PA_SAMPLE_S16NE); + func = pa_get_volume_func(PA_SAMPLE_S16NE); - printf ("checking ARM %zd\n", sizeof (samples)); + printf("checking ARM %zd\n", sizeof(samples)); - pa_random (samples, sizeof (samples)); - memcpy (samples_ref, samples, sizeof (samples)); - memcpy (samples_orig, samples, sizeof (samples)); + pa_random(samples, sizeof(samples)); + memcpy(samples_ref, samples, sizeof(samples)); + memcpy(samples_orig, samples, sizeof(samples)); for (i = 0; i < CHANNELS; i++) - volumes[i] = rand() >> 1; + volumes[i] = PA_CLAMP_VOLUME(rand() >> 1); for (padding = 0; padding < PADDING; padding++, i++) volumes[i] = volumes[padding]; - func (samples_ref, volumes, CHANNELS, sizeof (samples)); - pa_volume_s16ne_arm (samples, volumes, CHANNELS, sizeof (samples)); + func(samples_ref, volumes, CHANNELS, sizeof(samples)); + pa_volume_s16ne_arm(samples, volumes, CHANNELS, sizeof(samples)); for (i = 0; i < SAMPLES; i++) { if (samples[i] != samples_ref[i]) { printf ("%d: %04x != %04x (%04x * %04x)\n", i, samples[i], samples_ref[i], @@ -166,16 +165,16 @@ static void run_test (void) { start = pa_rtclock_now(); for (j = 0; j < TIMES; j++) { - memcpy (samples, samples_orig, sizeof (samples)); - pa_volume_s16ne_arm (samples, volumes, CHANNELS, sizeof (samples)); + memcpy(samples, samples_orig, sizeof(samples)); + pa_volume_s16ne_arm(samples, volumes, CHANNELS, sizeof(samples)); } stop = pa_rtclock_now(); pa_log_info("ARM: %llu usec.", (long long unsigned int) (stop - start)); start = pa_rtclock_now(); for (j = 0; j < TIMES; j++) { - memcpy (samples_ref, samples_orig, sizeof (samples)); - func (samples_ref, volumes, CHANNELS, sizeof (samples)); + memcpy(samples_ref, samples_orig, sizeof(samples)); + func(samples_ref, volumes, CHANNELS, sizeof(samples)); } stop = pa_rtclock_now(); pa_log_info("ref: %llu usec.", (long long unsigned int) (stop - start)); @@ -185,14 +184,14 @@ static void run_test (void) { #endif /* defined (__arm__) && defined (HAVE_ARMV6) */ -void pa_volume_func_init_arm (pa_cpu_arm_flag_t flags) { +void pa_volume_func_init_arm(pa_cpu_arm_flag_t flags) { #if defined (__arm__) && defined (HAVE_ARMV6) pa_log_info("Initialising ARM optimized functions."); #ifdef RUN_TEST - run_test (); + run_test(); #endif - pa_set_volume_func (PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_arm); + pa_set_volume_func(PA_SAMPLE_S16NE, (pa_do_volume_func_t) pa_volume_s16ne_arm); #endif /* defined (__arm__) && defined (HAVE_ARMV6) */ } |