mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	add new paramter ignore_dB= to alsa modules
This commit is contained in:
		
							parent
							
								
									d5f46e824e
								
							
						
					
					
						commit
						0ca16caff7
					
				
					 5 changed files with 25 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -1236,7 +1236,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
 | 
			
		|||
    size_t frame_size;
 | 
			
		||||
    snd_pcm_info_t *pcm_info = NULL;
 | 
			
		||||
    int err;
 | 
			
		||||
    pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d;
 | 
			
		||||
    pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE;
 | 
			
		||||
    pa_usec_t usec;
 | 
			
		||||
    pa_sink_new_data data;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1282,6 +1282,11 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
 | 
			
		|||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (pa_modargs_get_value_boolean(ma, "ignore_dB", &ignore_dB) < 0) {
 | 
			
		||||
        pa_log("Failed to parse ignore_dB argument.");
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (use_tsched && !pa_rtclock_hrtimer()) {
 | 
			
		||||
        pa_log_notice("Disabling timer-based scheduling because high-resolution timers are not available from the kernel.");
 | 
			
		||||
        use_tsched = FALSE;
 | 
			
		||||
| 
						 | 
				
			
			@ -1503,8 +1508,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
 | 
			
		|||
            }
 | 
			
		||||
 | 
			
		||||
            if (suitable) {
 | 
			
		||||
                if (snd_mixer_selem_get_playback_dB_range(u->mixer_elem, &u->hw_dB_min, &u->hw_dB_max) < 0)
 | 
			
		||||
                    pa_log_info("Mixer doesn't support dB information.");
 | 
			
		||||
                if (ignore_dB || snd_mixer_selem_get_playback_dB_range(u->mixer_elem, &u->hw_dB_min, &u->hw_dB_max) < 0)
 | 
			
		||||
                    pa_log_info("Mixer doesn't support dB information or data is ignored.");
 | 
			
		||||
                else {
 | 
			
		||||
#ifdef HAVE_VALGRIND_MEMCHECK_H
 | 
			
		||||
                    VALGRIND_MAKE_MEM_DEFINED(&u->hw_dB_min, sizeof(u->hw_dB_min));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1072,7 +1072,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
 | 
			
		|||
    size_t frame_size;
 | 
			
		||||
    snd_pcm_info_t *pcm_info = NULL;
 | 
			
		||||
    int err;
 | 
			
		||||
    pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d;
 | 
			
		||||
    pa_bool_t use_mmap = TRUE, b, use_tsched = TRUE, d, ignore_dB = FALSE;
 | 
			
		||||
    pa_source_new_data data;
 | 
			
		||||
 | 
			
		||||
    snd_pcm_info_alloca(&pcm_info);
 | 
			
		||||
| 
						 | 
				
			
			@ -1116,6 +1116,11 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
 | 
			
		|||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (pa_modargs_get_value_boolean(ma, "ignore_dB", &ignore_dB) < 0) {
 | 
			
		||||
        pa_log("Failed to parse ignore_dB argument.");
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (use_tsched && !pa_rtclock_hrtimer()) {
 | 
			
		||||
        pa_log_notice("Disabling timer-based scheduling because high-resolution timers are not available from the kernel.");
 | 
			
		||||
        use_tsched = FALSE;
 | 
			
		||||
| 
						 | 
				
			
			@ -1324,8 +1329,8 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
 | 
			
		|||
            }
 | 
			
		||||
 | 
			
		||||
            if (suitable) {
 | 
			
		||||
                if (snd_mixer_selem_get_capture_dB_range(u->mixer_elem, &u->hw_dB_min, &u->hw_dB_max) < 0)
 | 
			
		||||
                    pa_log_info("Mixer doesn't support dB information.");
 | 
			
		||||
                if (ignore_dB || snd_mixer_selem_get_capture_dB_range(u->mixer_elem, &u->hw_dB_min, &u->hw_dB_max) < 0)
 | 
			
		||||
                    pa_log_info("Mixer doesn't support dB information or data is ignored.");
 | 
			
		||||
                else {
 | 
			
		||||
#ifdef HAVE_VALGRIND_MEMCHECK_H
 | 
			
		||||
                    VALGRIND_MAKE_MEM_DEFINED(&u->hw_dB_min, sizeof(u->hw_dB_min));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,7 +51,8 @@ PA_MODULE_USAGE(
 | 
			
		|||
        "tsched=<enable system timer based scheduling mode?> "
 | 
			
		||||
        "tsched_buffer_size=<buffer size when using timer based scheduling> "
 | 
			
		||||
        "tsched_buffer_watermark=<lower fill watermark> "
 | 
			
		||||
        "profile=<profile name>");
 | 
			
		||||
        "profile=<profile name> "
 | 
			
		||||
        "ignore_dB=<ignore dB information from the device?>");
 | 
			
		||||
 | 
			
		||||
static const char* const valid_modargs[] = {
 | 
			
		||||
    "name",
 | 
			
		||||
| 
						 | 
				
			
			@ -68,6 +69,7 @@ static const char* const valid_modargs[] = {
 | 
			
		|||
    "tsched_buffer_size",
 | 
			
		||||
    "tsched_buffer_watermark",
 | 
			
		||||
    "profile",
 | 
			
		||||
    "ignore_dB",
 | 
			
		||||
    NULL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,7 +51,8 @@ PA_MODULE_USAGE(
 | 
			
		|||
        "mmap=<enable memory mapping?> "
 | 
			
		||||
        "tsched=<enable system timer based scheduling mode?> "
 | 
			
		||||
        "tsched_buffer_size=<buffer size when using timer based scheduling> "
 | 
			
		||||
        "tsched_buffer_watermark=<lower fill watermark>");
 | 
			
		||||
        "tsched_buffer_watermark=<lower fill watermark> "
 | 
			
		||||
        "ignore_dB=<ignore dB information from the device?>");
 | 
			
		||||
 | 
			
		||||
static const char* const valid_modargs[] = {
 | 
			
		||||
    "name",
 | 
			
		||||
| 
						 | 
				
			
			@ -68,6 +69,7 @@ static const char* const valid_modargs[] = {
 | 
			
		|||
    "tsched",
 | 
			
		||||
    "tsched_buffer_size",
 | 
			
		||||
    "tsched_buffer_watermark",
 | 
			
		||||
    "ignore_dB",
 | 
			
		||||
    NULL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -75,7 +75,8 @@ PA_MODULE_USAGE(
 | 
			
		|||
        "mmap=<enable memory mapping?> "
 | 
			
		||||
        "tsched=<enable system timer based scheduling mode?> "
 | 
			
		||||
        "tsched_buffer_size=<buffer size when using timer based scheduling> "
 | 
			
		||||
        "tsched_buffer_watermark=<upper fill watermark>");
 | 
			
		||||
        "tsched_buffer_watermark=<upper fill watermark> "
 | 
			
		||||
        "ignore_dB=<ignore dB information from the device?>");
 | 
			
		||||
 | 
			
		||||
static const char* const valid_modargs[] = {
 | 
			
		||||
    "name",
 | 
			
		||||
| 
						 | 
				
			
			@ -92,6 +93,7 @@ static const char* const valid_modargs[] = {
 | 
			
		|||
    "tsched",
 | 
			
		||||
    "tsched_buffer_size",
 | 
			
		||||
    "tsched_buffer_watermark",
 | 
			
		||||
    "ignore_dB",
 | 
			
		||||
    NULL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue