mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-11-03 09:01:52 -05:00 
			
		
		
		
	Try to fix period_time/period_size problems for direct plugin slaves
This commit is contained in:
		
							parent
							
								
									00fba04f01
								
							
						
					
					
						commit
						b7e8f57314
					
				
					 4 changed files with 16 additions and 3 deletions
				
			
		| 
						 | 
					@ -1044,6 +1044,7 @@ snd_pcm_sframes_t snd_pcm_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
 | 
				
			||||||
 * \param pcm PCM handle
 | 
					 * \param pcm PCM handle
 | 
				
			||||||
 * \param frames wanted skip in frames
 | 
					 * \param frames wanted skip in frames
 | 
				
			||||||
 * \return a positive number for actual skip otherwise a negative error code
 | 
					 * \return a positive number for actual skip otherwise a negative error code
 | 
				
			||||||
 | 
					 * \retval 0 means no action
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#ifndef DOXYGEN
 | 
					#ifndef DOXYGEN
 | 
				
			||||||
snd_pcm_sframes_t INTERNAL(snd_pcm_forward)(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
 | 
					snd_pcm_sframes_t INTERNAL(snd_pcm_forward)(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1206,7 +1206,7 @@ int _snd_pcm_dmix_open(snd_pcm_t **pcmp, const char *name,
 | 
				
			||||||
	params.format = SND_PCM_FORMAT_S16;
 | 
						params.format = SND_PCM_FORMAT_S16;
 | 
				
			||||||
	params.rate = 48000;
 | 
						params.rate = 48000;
 | 
				
			||||||
	params.channels = 2;
 | 
						params.channels = 2;
 | 
				
			||||||
	params.period_time = 125000;	/* 0.125 seconds */
 | 
						params.period_time = -1;
 | 
				
			||||||
	params.buffer_time = -1;
 | 
						params.buffer_time = -1;
 | 
				
			||||||
	bsize = psize = -1;
 | 
						bsize = psize = -1;
 | 
				
			||||||
	params.periods = 3;
 | 
						params.periods = 3;
 | 
				
			||||||
| 
						 | 
					@ -1223,6 +1223,10 @@ int _snd_pcm_dmix_open(snd_pcm_t **pcmp, const char *name,
 | 
				
			||||||
	if (err < 0)
 | 
						if (err < 0)
 | 
				
			||||||
		return err;
 | 
							return err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* set a reasonable default */  
 | 
				
			||||||
 | 
						if (psize == -1 && params.period_time == -1)
 | 
				
			||||||
 | 
							params.period_time = 125000;    /* 0.125 seconds */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* sorry, limited features */
 | 
						/* sorry, limited features */
 | 
				
			||||||
        if (params.format != SND_PCM_FORMAT_S16 &&
 | 
					        if (params.format != SND_PCM_FORMAT_S16 &&
 | 
				
			||||||
            params.format != SND_PCM_FORMAT_S32) {
 | 
					            params.format != SND_PCM_FORMAT_S32) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -874,7 +874,7 @@ int _snd_pcm_dshare_open(snd_pcm_t **pcmp, const char *name,
 | 
				
			||||||
	params.format = SND_PCM_FORMAT_S16;
 | 
						params.format = SND_PCM_FORMAT_S16;
 | 
				
			||||||
	params.rate = 48000;
 | 
						params.rate = 48000;
 | 
				
			||||||
	params.channels = 2;
 | 
						params.channels = 2;
 | 
				
			||||||
	params.period_time = 125000;	/* 0.125 seconds */
 | 
						params.period_time = -1;
 | 
				
			||||||
	params.buffer_time = -1;
 | 
						params.buffer_time = -1;
 | 
				
			||||||
	bsize = psize = -1;
 | 
						bsize = psize = -1;
 | 
				
			||||||
	params.periods = 3;
 | 
						params.periods = 3;
 | 
				
			||||||
| 
						 | 
					@ -890,6 +890,10 @@ int _snd_pcm_dshare_open(snd_pcm_t **pcmp, const char *name,
 | 
				
			||||||
	if (err < 0)
 | 
						if (err < 0)
 | 
				
			||||||
		return err;
 | 
							return err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* set a reasonable default */
 | 
				
			||||||
 | 
						if (psize == -1 && params.period_time == -1)
 | 
				
			||||||
 | 
							params.period_time = 125000;	/* 0.125 seconds */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	params.period_size = psize;
 | 
						params.period_size = psize;
 | 
				
			||||||
	params.buffer_size = bsize;
 | 
						params.buffer_size = bsize;
 | 
				
			||||||
	err = snd_pcm_dshare_open(pcmp, name, ipc_key, ipc_perm, ¶ms, bindings, slowptr, root, sconf, stream, mode);
 | 
						err = snd_pcm_dshare_open(pcmp, name, ipc_key, ipc_perm, ¶ms, bindings, slowptr, root, sconf, stream, mode);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -824,7 +824,7 @@ int _snd_pcm_dsnoop_open(snd_pcm_t **pcmp, const char *name,
 | 
				
			||||||
	params.format = SND_PCM_FORMAT_S16;
 | 
						params.format = SND_PCM_FORMAT_S16;
 | 
				
			||||||
	params.rate = 48000;
 | 
						params.rate = 48000;
 | 
				
			||||||
	params.channels = 2;
 | 
						params.channels = 2;
 | 
				
			||||||
	params.period_time = 125000;	/* 0.125 seconds */
 | 
						params.period_time = -1;
 | 
				
			||||||
	params.buffer_time = -1;
 | 
						params.buffer_time = -1;
 | 
				
			||||||
	bsize = psize = -1;
 | 
						bsize = psize = -1;
 | 
				
			||||||
	params.periods = 3;
 | 
						params.periods = 3;
 | 
				
			||||||
| 
						 | 
					@ -840,6 +840,10 @@ int _snd_pcm_dsnoop_open(snd_pcm_t **pcmp, const char *name,
 | 
				
			||||||
	if (err < 0)
 | 
						if (err < 0)
 | 
				
			||||||
		return err;
 | 
							return err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* set a reasonable default */  
 | 
				
			||||||
 | 
						if (psize == -1 && params.period_time == -1)
 | 
				
			||||||
 | 
							params.period_time = 125000;    /* 0.125 seconds */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	params.period_size = psize;
 | 
						params.period_size = psize;
 | 
				
			||||||
	params.buffer_size = bsize;
 | 
						params.buffer_size = bsize;
 | 
				
			||||||
	err = snd_pcm_dsnoop_open(pcmp, name, ipc_key, ipc_perm, ¶ms, bindings, slowptr, root, sconf, stream, mode);
 | 
						err = snd_pcm_dsnoop_open(pcmp, name, ipc_key, ipc_perm, ¶ms, bindings, slowptr, root, sconf, stream, mode);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue