mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	sconv: Use optimized conversion function for both directions
for example, the conversion function for convert_from_float32ne(PA_SAMPLE_S16LE) can also be used for convert_to_s16ne(PA_SAMPLE_FLOAT32LE) v2: ARM can potentially be big- or little endian; only apply optimization on LE based on WORDS_BIGENDIAN #define (thanks, Tanu) Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
This commit is contained in:
		
							parent
							
								
									1499271f46
								
							
						
					
					
						commit
						6d9891e8b9
					
				
					 2 changed files with 6 additions and 1 deletions
				
			
		| 
						 | 
					@ -89,4 +89,8 @@ void pa_convert_func_init_neon(pa_cpu_arm_flag_t flags) {
 | 
				
			||||||
    pa_log_info("Initialising ARM NEON optimized conversions.");
 | 
					    pa_log_info("Initialising ARM NEON optimized conversions.");
 | 
				
			||||||
    pa_set_convert_from_float32ne_function(PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_neon);
 | 
					    pa_set_convert_from_float32ne_function(PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_neon);
 | 
				
			||||||
    pa_set_convert_to_float32ne_function(PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_to_f32ne_neon);
 | 
					    pa_set_convert_to_float32ne_function(PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_to_f32ne_neon);
 | 
				
			||||||
 | 
					#ifndef WORDS_BIGENDIAN
 | 
				
			||||||
 | 
					    pa_set_convert_from_s16ne_function(PA_SAMPLE_FLOAT32LE, (pa_convert_func_t) pa_sconv_s16le_to_f32ne_neon);
 | 
				
			||||||
 | 
					    pa_set_convert_to_s16ne_function(PA_SAMPLE_FLOAT32LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_neon);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -168,10 +168,11 @@ void pa_convert_func_init_sse(pa_cpu_x86_flag_t flags) {
 | 
				
			||||||
    if (flags & PA_CPU_X86_SSE2) {
 | 
					    if (flags & PA_CPU_X86_SSE2) {
 | 
				
			||||||
        pa_log_info("Initialising SSE2 optimized conversions.");
 | 
					        pa_log_info("Initialising SSE2 optimized conversions.");
 | 
				
			||||||
        pa_set_convert_from_float32ne_function(PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse2);
 | 
					        pa_set_convert_from_float32ne_function(PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse2);
 | 
				
			||||||
 | 
					        pa_set_convert_to_s16ne_function(PA_SAMPLE_FLOAT32LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse2);
 | 
				
			||||||
    } else if (flags & PA_CPU_X86_SSE) {
 | 
					    } else if (flags & PA_CPU_X86_SSE) {
 | 
				
			||||||
        pa_log_info("Initialising SSE optimized conversions.");
 | 
					        pa_log_info("Initialising SSE optimized conversions.");
 | 
				
			||||||
        pa_set_convert_from_float32ne_function(PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse);
 | 
					        pa_set_convert_from_float32ne_function(PA_SAMPLE_S16LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse);
 | 
				
			||||||
 | 
					        pa_set_convert_to_s16ne_function(PA_SAMPLE_FLOAT32LE, (pa_convert_func_t) pa_sconv_s16le_from_f32ne_sse);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* defined (__i386__) || defined (__amd64__) */
 | 
					#endif /* defined (__i386__) || defined (__amd64__) */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue