mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-10-29 05:40:25 -04:00 
			
		
		
		
	Added snd_pcm_sw_params_get_boundary() function.
Implemented refine function in dmix.
This commit is contained in:
		
							parent
							
								
									073dff1ba1
								
							
						
					
					
						commit
						7c5e5f5728
					
				
					 3 changed files with 41 additions and 21 deletions
				
			
		|  | @ -453,10 +453,47 @@ static int snd_pcm_dmix_info(snd_pcm_t *pcm, snd_pcm_info_t * info) | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static inline snd_mask_t *hw_param_mask(snd_pcm_hw_params_t *params, | ||||
| 					snd_pcm_hw_param_t var) | ||||
| { | ||||
| 	return ¶ms->masks[var - SND_PCM_HW_PARAM_FIRST_MASK]; | ||||
| } | ||||
| 
 | ||||
| static inline snd_interval_t *hw_param_interval(snd_pcm_hw_params_t *params, | ||||
| 						snd_pcm_hw_param_t var) | ||||
| { | ||||
| 	return ¶ms->intervals[var - SND_PCM_HW_PARAM_FIRST_INTERVAL]; | ||||
| } | ||||
| 
 | ||||
| static int snd_pcm_dmix_hw_refine(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) | ||||
| { | ||||
| 	snd_pcm_dmix_t *dmix = pcm->private_data; | ||||
| 	//snd_interval_refine_set(
 | ||||
| 	snd_pcm_hw_params_t *hw_params = &dmix->shmptr->hw_params; | ||||
| 	static snd_mask_t access = { .bits = {  | ||||
| 					(1<<SNDRV_PCM_ACCESS_MMAP_INTERLEAVED) | | ||||
| 					(1<<SNDRV_PCM_ACCESS_MMAP_NONINTERLEAVED) | | ||||
| 					(1<<SNDRV_PCM_ACCESS_RW_INTERLEAVED) | | ||||
| 					(1<<SNDRV_PCM_ACCESS_RW_NONINTERLEAVED), | ||||
| 					0, 0, 0 } }; | ||||
| 
 | ||||
| 	snd_mask_refine(hw_param_mask(params, SND_PCM_HW_PARAM_ACCESS), &access); | ||||
| 	snd_mask_refine_set(hw_param_mask(params, SND_PCM_HW_PARAM_FORMAT), | ||||
| 			    snd_mask_value(hw_param_mask(hw_params, SND_PCM_HW_PARAM_FORMAT))); | ||||
| 	//snd_mask_none(hw_param_mask(params, SND_PCM_HW_PARAM_SUBFORMAT));
 | ||||
| 	snd_interval_refine_set(hw_param_interval(params, SND_PCM_HW_PARAM_CHANNELS), | ||||
| 				snd_interval_value(hw_param_interval(hw_params, SND_PCM_HW_PARAM_CHANNELS))); | ||||
| 	snd_interval_refine_set(hw_param_interval(params, SND_PCM_HW_PARAM_RATE), | ||||
| 				snd_interval_value(hw_param_interval(hw_params, SND_PCM_HW_PARAM_RATE))); | ||||
| 	snd_interval_refine_set(hw_param_interval(params, SND_PCM_HW_PARAM_BUFFER_SIZE), | ||||
| 				snd_interval_value(hw_param_interval(hw_params, SND_PCM_HW_PARAM_BUFFER_SIZE))); | ||||
| 	snd_interval_refine_set(hw_param_interval(params, SND_PCM_HW_PARAM_BUFFER_TIME), | ||||
| 				snd_interval_value(hw_param_interval(hw_params, SND_PCM_HW_PARAM_BUFFER_TIME))); | ||||
| 	snd_interval_refine_set(hw_param_interval(params, SND_PCM_HW_PARAM_PERIOD_SIZE), | ||||
| 				snd_interval_value(hw_param_interval(hw_params, SND_PCM_HW_PARAM_PERIOD_SIZE))); | ||||
| 	snd_interval_refine_set(hw_param_interval(params, SND_PCM_HW_PARAM_PERIOD_TIME), | ||||
| 				snd_interval_value(hw_param_interval(hw_params, SND_PCM_HW_PARAM_PERIOD_TIME))); | ||||
| 	snd_interval_refine_set(hw_param_interval(params, SND_PCM_HW_PARAM_PERIODS), | ||||
| 				snd_interval_value(hw_param_interval(hw_params, SND_PCM_HW_PARAM_PERIODS))); | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jaroslav Kysela
						Jaroslav Kysela