mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	svolume: cleanups
Use PA_MAX Use pa_rtclock_now() for benchmarks
This commit is contained in:
		
							parent
							
								
									f09b51198f
								
							
						
					
					
						commit
						f8ffe0dabc
					
				
					 3 changed files with 26 additions and 26 deletions
				
			
		| 
						 | 
					@ -47,7 +47,7 @@ pa_volume_s16ne_arm (int16_t *samples, int32_t *volumes, unsigned channels, unsi
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int32_t *ve;
 | 
					    int32_t *ve;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    channels = MAX (4, channels);
 | 
					    channels = PA_MAX (4U, channels);
 | 
				
			||||||
    ve = volumes + channels;
 | 
					    ve = volumes + channels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __asm__ __volatile__ (
 | 
					    __asm__ __volatile__ (
 | 
				
			||||||
| 
						 | 
					@ -137,7 +137,7 @@ static void run_test (void) {
 | 
				
			||||||
    int32_t volumes[CHANNELS + PADDING];
 | 
					    int32_t volumes[CHANNELS + PADDING];
 | 
				
			||||||
    int i, j, padding;
 | 
					    int i, j, padding;
 | 
				
			||||||
    pa_do_volume_func_t func;
 | 
					    pa_do_volume_func_t func;
 | 
				
			||||||
    struct timeval start, stop;
 | 
					    pa_usec_t start, stop;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    func = pa_get_volume_func (PA_SAMPLE_S16NE);
 | 
					    func = pa_get_volume_func (PA_SAMPLE_S16NE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -161,21 +161,21 @@ static void run_test (void) {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_gettimeofday(&start);
 | 
					    start = pa_rtclock_now();
 | 
				
			||||||
    for (j = 0; j < TIMES; j++) {
 | 
					    for (j = 0; j < TIMES; j++) {
 | 
				
			||||||
        memcpy (samples, samples_orig, sizeof (samples));
 | 
					        memcpy (samples, samples_orig, sizeof (samples));
 | 
				
			||||||
        pa_volume_s16ne_arm (samples, volumes, CHANNELS, sizeof (samples));
 | 
					        pa_volume_s16ne_arm (samples, volumes, CHANNELS, sizeof (samples));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pa_gettimeofday(&stop);
 | 
					    stop = pa_rtclock_now();
 | 
				
			||||||
    pa_log_info("ARM: %llu usec.", (long long unsigned int)pa_timeval_diff (&stop, &start));
 | 
					    pa_log_info("ARM: %llu usec.", (long long unsigned int) (stop - start));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_gettimeofday(&start);
 | 
					    start = pa_rtclock_now();
 | 
				
			||||||
    for (j = 0; j < TIMES; j++) {
 | 
					    for (j = 0; j < TIMES; j++) {
 | 
				
			||||||
        memcpy (samples_ref, samples_orig, sizeof (samples));
 | 
					        memcpy (samples_ref, samples_orig, sizeof (samples));
 | 
				
			||||||
        func (samples_ref, volumes, CHANNELS, sizeof (samples));
 | 
					        func (samples_ref, volumes, CHANNELS, sizeof (samples));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pa_gettimeofday(&stop);
 | 
					    stop = pa_rtclock_now();
 | 
				
			||||||
    pa_log_info("ref: %llu usec.", (long long unsigned int)pa_timeval_diff (&stop, &start));
 | 
					    pa_log_info("ref: %llu usec.", (long long unsigned int) (stop - start));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -100,7 +100,7 @@ pa_volume_s16ne_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* the max number of samples we process at a time, this is also the max amount
 | 
					    /* the max number of samples we process at a time, this is also the max amount
 | 
				
			||||||
     * we overread the volume array, which should have enough padding. */
 | 
					     * we overread the volume array, which should have enough padding. */
 | 
				
			||||||
    channels = MAX (4, channels);
 | 
					    channels = PA_MAX (4U, channels);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __asm__ __volatile__ (
 | 
					    __asm__ __volatile__ (
 | 
				
			||||||
        " xor %3, %3                    \n\t"
 | 
					        " xor %3, %3                    \n\t"
 | 
				
			||||||
| 
						 | 
					@ -170,7 +170,7 @@ pa_volume_s16re_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* the max number of samples we process at a time, this is also the max amount
 | 
					    /* the max number of samples we process at a time, this is also the max amount
 | 
				
			||||||
     * we overread the volume array, which should have enough padding. */
 | 
					     * we overread the volume array, which should have enough padding. */
 | 
				
			||||||
    channels = MAX (4, channels);
 | 
					    channels = PA_MAX (4U, channels);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __asm__ __volatile__ (
 | 
					    __asm__ __volatile__ (
 | 
				
			||||||
        " xor %3, %3                    \n\t"
 | 
					        " xor %3, %3                    \n\t"
 | 
				
			||||||
| 
						 | 
					@ -254,7 +254,7 @@ static void run_test (void) {
 | 
				
			||||||
    int32_t volumes[CHANNELS + PADDING];
 | 
					    int32_t volumes[CHANNELS + PADDING];
 | 
				
			||||||
    int i, j, padding;
 | 
					    int i, j, padding;
 | 
				
			||||||
    pa_do_volume_func_t func;
 | 
					    pa_do_volume_func_t func;
 | 
				
			||||||
    struct timeval start, stop;
 | 
					    pa_usec_t start, stop;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    func = pa_get_volume_func (PA_SAMPLE_S16NE);
 | 
					    func = pa_get_volume_func (PA_SAMPLE_S16NE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -278,21 +278,21 @@ static void run_test (void) {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_gettimeofday(&start);
 | 
					    start = pa_rtclock_now();
 | 
				
			||||||
    for (j = 0; j < TIMES; j++) {
 | 
					    for (j = 0; j < TIMES; j++) {
 | 
				
			||||||
        memcpy (samples, samples_orig, sizeof (samples));
 | 
					        memcpy (samples, samples_orig, sizeof (samples));
 | 
				
			||||||
        pa_volume_s16ne_mmx (samples, volumes, CHANNELS, sizeof (samples));
 | 
					        pa_volume_s16ne_mmx (samples, volumes, CHANNELS, sizeof (samples));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pa_gettimeofday(&stop);
 | 
					    stop = pa_rtclock_now();
 | 
				
			||||||
    pa_log_info("MMX: %llu usec.", (long long unsigned int)pa_timeval_diff (&stop, &start));
 | 
					    pa_log_info("MMX: %llu usec.", (long long unsigned int)(stop - start));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_gettimeofday(&start);
 | 
					    start = pa_rtclock_now();
 | 
				
			||||||
    for (j = 0; j < TIMES; j++) {
 | 
					    for (j = 0; j < TIMES; j++) {
 | 
				
			||||||
        memcpy (samples_ref, samples_orig, sizeof (samples));
 | 
					        memcpy (samples_ref, samples_orig, sizeof (samples));
 | 
				
			||||||
        func (samples_ref, volumes, CHANNELS, sizeof (samples));
 | 
					        func (samples_ref, volumes, CHANNELS, sizeof (samples));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pa_gettimeofday(&stop);
 | 
					    stop = pa_rtclock_now();
 | 
				
			||||||
    pa_log_info("ref: %llu usec.", (long long unsigned int)pa_timeval_diff (&stop, &start));
 | 
					    pa_log_info("ref: %llu usec.", (long long unsigned int)(stop - start));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,7 +81,7 @@ pa_volume_s16ne_sse (int16_t *samples, int32_t *volumes, unsigned channels, unsi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* the max number of samples we process at a time, this is also the max amount
 | 
					    /* the max number of samples we process at a time, this is also the max amount
 | 
				
			||||||
     * we overread the volume array, which should have enough padding. */
 | 
					     * we overread the volume array, which should have enough padding. */
 | 
				
			||||||
    channels = MAX (8, channels);
 | 
					    channels = PA_MAX (8U, channels);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __asm__ __volatile__ (
 | 
					    __asm__ __volatile__ (
 | 
				
			||||||
        " xor %3, %3                    \n\t"
 | 
					        " xor %3, %3                    \n\t"
 | 
				
			||||||
| 
						 | 
					@ -161,7 +161,7 @@ pa_volume_s16re_sse (int16_t *samples, int32_t *volumes, unsigned channels, unsi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* the max number of samples we process at a time, this is also the max amount
 | 
					    /* the max number of samples we process at a time, this is also the max amount
 | 
				
			||||||
     * we overread the volume array, which should have enough padding. */
 | 
					     * we overread the volume array, which should have enough padding. */
 | 
				
			||||||
    channels = MAX (8, channels);
 | 
					    channels = PA_MAX (8U, channels);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __asm__ __volatile__ (
 | 
					    __asm__ __volatile__ (
 | 
				
			||||||
        " xor %3, %3                    \n\t"
 | 
					        " xor %3, %3                    \n\t"
 | 
				
			||||||
| 
						 | 
					@ -257,7 +257,7 @@ static void run_test (void) {
 | 
				
			||||||
    int32_t volumes[CHANNELS + PADDING];
 | 
					    int32_t volumes[CHANNELS + PADDING];
 | 
				
			||||||
    int i, j, padding;
 | 
					    int i, j, padding;
 | 
				
			||||||
    pa_do_volume_func_t func;
 | 
					    pa_do_volume_func_t func;
 | 
				
			||||||
    struct timeval start, stop;
 | 
					    pa_usec_t start, stop;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    func = pa_get_volume_func (PA_SAMPLE_S16NE);
 | 
					    func = pa_get_volume_func (PA_SAMPLE_S16NE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -281,21 +281,21 @@ static void run_test (void) {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_gettimeofday(&start);
 | 
					    start = pa_rtclock_now();
 | 
				
			||||||
    for (j = 0; j < TIMES; j++) {
 | 
					    for (j = 0; j < TIMES; j++) {
 | 
				
			||||||
        memcpy (samples, samples_orig, sizeof (samples));
 | 
					        memcpy (samples, samples_orig, sizeof (samples));
 | 
				
			||||||
        pa_volume_s16ne_sse (samples, volumes, CHANNELS, sizeof (samples));
 | 
					        pa_volume_s16ne_sse (samples, volumes, CHANNELS, sizeof (samples));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pa_gettimeofday(&stop);
 | 
					    stop = pa_rtclock_now();
 | 
				
			||||||
    pa_log_info("SSE: %llu usec.", (long long unsigned int)pa_timeval_diff (&stop, &start));
 | 
					    pa_log_info("SSE: %llu usec.", (long long unsigned int)(stop - start));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_gettimeofday(&start);
 | 
					    start = pa_rtclock_now();
 | 
				
			||||||
    for (j = 0; j < TIMES; j++) {
 | 
					    for (j = 0; j < TIMES; j++) {
 | 
				
			||||||
        memcpy (samples_ref, samples_orig, sizeof (samples));
 | 
					        memcpy (samples_ref, samples_orig, sizeof (samples));
 | 
				
			||||||
        func (samples_ref, volumes, CHANNELS, sizeof (samples));
 | 
					        func (samples_ref, volumes, CHANNELS, sizeof (samples));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pa_gettimeofday(&stop);
 | 
					    stop = pa_rtclock_now();
 | 
				
			||||||
    pa_log_info("ref: %llu usec.", (long long unsigned int)pa_timeval_diff (&stop, &start));
 | 
					    pa_log_info("ref: %llu usec.", (long long unsigned int)(stop - start));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#endif /* defined (__i386__) || defined (__amd64__) */
 | 
					#endif /* defined (__i386__) || defined (__amd64__) */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue