mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-10-29 05:40:27 -04:00 
			
		
		
		
	alsa-pcm: handle and warn about a driver bug wrt channels
If the driver returns a larger min than max channel count, log a warning and swap the two numbers. See #4687
This commit is contained in:
		
							parent
							
								
									d5e2cc94cd
								
							
						
					
					
						commit
						b2695f86cf
					
				
					 1 changed files with 6 additions and 0 deletions
				
			
		|  | @ -1563,6 +1563,12 @@ static int add_channels(struct state *state, bool all, uint32_t index, uint32_t | ||||||
| 	spa_log_debug(state->log, "channels (%d %d) default:%d all:%d", | 	spa_log_debug(state->log, "channels (%d %d) default:%d all:%d", | ||||||
| 			min, max, state->default_channels, all); | 			min, max, state->default_channels, all); | ||||||
| 
 | 
 | ||||||
|  | 	if (min > max) { | ||||||
|  | 		spa_log_warn(state->log, "driver bug! min > max channels: (%d > %d)", | ||||||
|  | 				min, max); | ||||||
|  | 		SPA_SWAP(min, max); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	if (state->default_channels != 0 && !all) { | 	if (state->default_channels != 0 && !all) { | ||||||
| 		if (min < state->default_channels) | 		if (min < state->default_channels) | ||||||
| 			min = state->default_channels; | 			min = state->default_channels; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Wim Taymans
						Wim Taymans