lavd: fix iterating of input and output devices
In the previous implementation the first input or output device was skipped when device_next was called with prev = NULL Signed-off-by: Felix Matouschek <felix@matouschek.org> Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
This commit is contained in:
		
							parent
							
								
									3e7fa34d3b
								
							
						
					
					
						commit
						ce1d77a5e7
					
				| @ -126,16 +126,13 @@ static void *device_next(void *prev, int output, | |||||||
| 
 | 
 | ||||||
|     ff_thread_once(&av_device_next_init, av_device_init_next); |     ff_thread_once(&av_device_next_init, av_device_init_next); | ||||||
| 
 | 
 | ||||||
|     if (!prev && !(prev = (output ? (void*)outdev_list[0] : (void*)indev_list[0]))) |  | ||||||
|         return NULL; |  | ||||||
| 
 |  | ||||||
|     do { |     do { | ||||||
|         if (output) { |         if (output) { | ||||||
|             if (!(prev = ((AVOutputFormat *)prev)->next)) |             if (!(prev = prev ? ((AVOutputFormat *)prev)->next : (void*)outdev_list[0])) | ||||||
|                 break; |                 break; | ||||||
|             pc = ((AVOutputFormat *)prev)->priv_class; |             pc = ((AVOutputFormat *)prev)->priv_class; | ||||||
|         } else { |         } else { | ||||||
|             if (!(prev = ((AVInputFormat *)prev)->next)) |             if (!(prev = prev ? ((AVInputFormat *)prev)->next : (void*)indev_list[0])) | ||||||
|                 break; |                 break; | ||||||
|             pc = ((AVInputFormat *)prev)->priv_class; |             pc = ((AVInputFormat *)prev)->priv_class; | ||||||
|         } |         } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user