mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	resample-native: only do full resample when rate == 1.0
Otherwise choose the interpollating resampler.
This commit is contained in:
		
							parent
							
								
									80face4b92
								
							
						
					
					
						commit
						93006d6d90
					
				
					 1 changed files with 4 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -94,8 +94,9 @@ static inline uint32_t calc_gcd(uint32_t a, uint32_t b)
 | 
			
		|||
static void impl_native_update_rate(struct resample *r, double rate)
 | 
			
		||||
{
 | 
			
		||||
	struct native_data *data = r->data;
 | 
			
		||||
	uint32_t in_rate, out_rate, phase, gcd;
 | 
			
		||||
	uint32_t in_rate, out_rate, phase, gcd, old_out_rate;
 | 
			
		||||
 | 
			
		||||
	old_out_rate = data->out_rate;
 | 
			
		||||
	in_rate = r->i_rate / rate;
 | 
			
		||||
	out_rate = r->o_rate;
 | 
			
		||||
	phase = data->phase;
 | 
			
		||||
| 
						 | 
				
			
			@ -105,7 +106,7 @@ static void impl_native_update_rate(struct resample *r, double rate)
 | 
			
		|||
	out_rate /= gcd;
 | 
			
		||||
 | 
			
		||||
	data->rate = rate;
 | 
			
		||||
	data->phase = phase * out_rate / data->out_rate;
 | 
			
		||||
	data->phase = phase * out_rate / old_out_rate;
 | 
			
		||||
	data->in_rate = in_rate;
 | 
			
		||||
	data->out_rate = out_rate;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -118,7 +119,7 @@ static void impl_native_update_rate(struct resample *r, double rate)
 | 
			
		|||
	if (data->in_rate == data->out_rate)
 | 
			
		||||
		data->func = do_resample_copy_c;
 | 
			
		||||
	else {
 | 
			
		||||
		bool is_full = r->i_rate == in_rate;
 | 
			
		||||
		bool is_full = rate == 1.0;
 | 
			
		||||
 | 
			
		||||
		data->func = is_full ? do_resample_full_c : do_resample_inter_c;
 | 
			
		||||
#if defined (HAVE_SSE)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue