mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-11-03 09:01:52 -05:00 
			
		
		
		
	Enriched hw_info with buffer_size info
This commit is contained in:
		
							parent
							
								
									8c080ce9dd
								
							
						
					
					
						commit
						93bad3b02a
					
				
					 1 changed files with 23 additions and 3 deletions
				
			
		| 
						 | 
					@ -121,6 +121,7 @@ void snd_pcm_hw_params_to_info(snd_pcm_hw_params_t *params, snd_pcm_hw_info_t *i
 | 
				
			||||||
	info->rate_min = info->rate_max = params->rate;
 | 
						info->rate_min = info->rate_max = params->rate;
 | 
				
			||||||
	info->fragment_size_min = info->fragment_size_max = params->fragment_size;
 | 
						info->fragment_size_min = info->fragment_size_max = params->fragment_size;
 | 
				
			||||||
	info->fragments_min = info->fragments_max = params->fragments;
 | 
						info->fragments_min = info->fragments_max = params->fragments;
 | 
				
			||||||
 | 
						info->buffer_size_min = info->buffer_size_max = params->fragment_size * params->fragments;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void snd_pcm_hw_info_to_params(snd_pcm_hw_info_t *info, snd_pcm_hw_params_t *params)
 | 
					void snd_pcm_hw_info_to_params(snd_pcm_hw_info_t *info, snd_pcm_hw_params_t *params)
 | 
				
			||||||
| 
						 | 
					@ -529,6 +530,7 @@ static assoc_t hw_params[] = {
 | 
				
			||||||
	HW_PARAM(RATE),
 | 
						HW_PARAM(RATE),
 | 
				
			||||||
	HW_PARAM(FRAGMENT_SIZE),
 | 
						HW_PARAM(FRAGMENT_SIZE),
 | 
				
			||||||
	HW_PARAM(FRAGMENTS),
 | 
						HW_PARAM(FRAGMENTS),
 | 
				
			||||||
 | 
						HW_PARAM(BUFFER_SIZE),
 | 
				
			||||||
	END
 | 
						END
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -739,6 +741,20 @@ int snd_pcm_dump_hw_info(snd_pcm_hw_info_t *info,
 | 
				
			||||||
			fprintf(fp, " - %u", info->fragments_max);
 | 
								fprintf(fp, " - %u", info->fragments_max);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	putc('\n', fp);
 | 
						putc('\n', fp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fputs("buffer_size: ", fp);
 | 
				
			||||||
 | 
						if (info->buffer_size_min <= 1 && 
 | 
				
			||||||
 | 
						    info->buffer_size_max == ULONG_MAX)
 | 
				
			||||||
 | 
							fputs("ALL", fp);
 | 
				
			||||||
 | 
						else if (info->buffer_size_min > info->buffer_size_max)
 | 
				
			||||||
 | 
							fputs("NONE", fp);
 | 
				
			||||||
 | 
						else {
 | 
				
			||||||
 | 
							fprintf(fp, "%lu", (unsigned long)info->buffer_size_min);
 | 
				
			||||||
 | 
							if (info->buffer_size_min < info->buffer_size_max)
 | 
				
			||||||
 | 
								fprintf(fp, " - %lu", (unsigned long)info->buffer_size_max);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						putc('\n', fp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2639,7 +2655,7 @@ int snd_pcm_hw_params_rules(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
 | 
				
			||||||
			info.subformat_mask = ~0;
 | 
								info.subformat_mask = ~0;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case SND_PCM_HW_PARAM_CHANNELS:
 | 
							case SND_PCM_HW_PARAM_CHANNELS:
 | 
				
			||||||
			info.channels_min = 0;
 | 
								info.channels_min = 1;
 | 
				
			||||||
			info.channels_max = UINT_MAX;
 | 
								info.channels_max = UINT_MAX;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case SND_PCM_HW_PARAM_RATE:
 | 
							case SND_PCM_HW_PARAM_RATE:
 | 
				
			||||||
| 
						 | 
					@ -2647,12 +2663,16 @@ int snd_pcm_hw_params_rules(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
 | 
				
			||||||
			info.rate_max = UINT_MAX;
 | 
								info.rate_max = UINT_MAX;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case SND_PCM_HW_PARAM_FRAGMENT_SIZE:
 | 
							case SND_PCM_HW_PARAM_FRAGMENT_SIZE:
 | 
				
			||||||
			info.fragment_size_min = 0;
 | 
								info.fragment_size_min = 1;
 | 
				
			||||||
			info.fragment_size_max = ULONG_MAX;
 | 
								info.fragment_size_max = ULONG_MAX;
 | 
				
			||||||
 | 
								info.buffer_size_min = 1;
 | 
				
			||||||
 | 
								info.buffer_size_max = ULONG_MAX;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case SND_PCM_HW_PARAM_FRAGMENTS:
 | 
							case SND_PCM_HW_PARAM_FRAGMENTS:
 | 
				
			||||||
			info.fragments_min = 0;
 | 
								info.fragments_min = 1;
 | 
				
			||||||
			info.fragments_max = UINT_MAX;
 | 
								info.fragments_max = UINT_MAX;
 | 
				
			||||||
 | 
								info.buffer_size_min = 1;
 | 
				
			||||||
 | 
								info.buffer_size_max = ULONG_MAX;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		default:
 | 
							default:
 | 
				
			||||||
			assert(0);
 | 
								assert(0);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue