mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-11-03 09:01:52 -05:00 
			
		
		
		
	pcm: ioplug: Provide avail helper function for plugins
This function can be called without calling snd_pcm_avail_update(). The call to snd_pcm_avail_update() can take some time. Therefore some developers would not like to call it from a real-time context (e.g. from JACK client context). Signed-off-by: Timo Wischer <twischer@de.adit-jv.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
		
							parent
							
								
									9bb985c382
								
							
						
					
					
						commit
						2972f2f966
					
				
					 2 changed files with 21 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -1215,6 +1215,21 @@ int snd_pcm_ioplug_set_state(snd_pcm_ioplug_t *ioplug, snd_pcm_state_t state)
 | 
			
		|||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get the available frames. This function can be used to calculate the
 | 
			
		||||
 * the available frames before calling #snd_pcm_avail_update()
 | 
			
		||||
 * \param ioplug the ioplug handle
 | 
			
		||||
 * \param hw_ptr hardware pointer in frames
 | 
			
		||||
 * \param appl_ptr application pointer in frames
 | 
			
		||||
 * \return available frames for the application
 | 
			
		||||
 */
 | 
			
		||||
snd_pcm_uframes_t snd_pcm_ioplug_avail(const snd_pcm_ioplug_t * const ioplug,
 | 
			
		||||
				       const snd_pcm_uframes_t hw_ptr,
 | 
			
		||||
				       const snd_pcm_uframes_t appl_ptr)
 | 
			
		||||
{
 | 
			
		||||
	return __snd_pcm_avail(ioplug->pcm, hw_ptr, appl_ptr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \brief Get the available frames. This function can be used to calculate the
 | 
			
		||||
 * the available frames before calling #snd_pcm_avail_update()
 | 
			
		||||
| 
						 | 
				
			
			@ -1230,8 +1245,9 @@ snd_pcm_uframes_t snd_pcm_ioplug_hw_avail(const snd_pcm_ioplug_t * const ioplug,
 | 
			
		|||
	/* available data/space which can be transferred by the user
 | 
			
		||||
	 * application
 | 
			
		||||
	 */
 | 
			
		||||
	const snd_pcm_uframes_t user_avail = __snd_pcm_avail(ioplug->pcm,
 | 
			
		||||
							     hw_ptr, appl_ptr);
 | 
			
		||||
	const snd_pcm_uframes_t user_avail = snd_pcm_ioplug_avail(ioplug,
 | 
			
		||||
								  hw_ptr,
 | 
			
		||||
								  appl_ptr);
 | 
			
		||||
 | 
			
		||||
	if (user_avail > ioplug->pcm->buffer_size) {
 | 
			
		||||
		/* there was an Xrun */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue