mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-04 13:29:59 -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;
|
size_t frame_size;
|
||||||
snd_pcm_info_t *pcm_info = NULL;
|
snd_pcm_info_t *pcm_info = NULL;
|
||||||
int err;
|
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_usec_t usec;
|
||||||
pa_sink_new_data data;
|
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;
|
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()) {
|
if (use_tsched && !pa_rtclock_hrtimer()) {
|
||||||
pa_log_notice("Disabling timer-based scheduling because high-resolution timers are not available from the kernel.");
|
pa_log_notice("Disabling timer-based scheduling because high-resolution timers are not available from the kernel.");
|
||||||
use_tsched = FALSE;
|
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 (suitable) {
|
||||||
if (snd_mixer_selem_get_playback_dB_range(u->mixer_elem, &u->hw_dB_min, &u->hw_dB_max) < 0)
|
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.");
|
pa_log_info("Mixer doesn't support dB information or data is ignored.");
|
||||||
else {
|
else {
|
||||||
#ifdef HAVE_VALGRIND_MEMCHECK_H
|
#ifdef HAVE_VALGRIND_MEMCHECK_H
|
||||||
VALGRIND_MAKE_MEM_DEFINED(&u->hw_dB_min, sizeof(u->hw_dB_min));
|
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;
|
size_t frame_size;
|
||||||
snd_pcm_info_t *pcm_info = NULL;
|
snd_pcm_info_t *pcm_info = NULL;
|
||||||
int err;
|
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;
|
pa_source_new_data data;
|
||||||
|
|
||||||
snd_pcm_info_alloca(&pcm_info);
|
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;
|
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()) {
|
if (use_tsched && !pa_rtclock_hrtimer()) {
|
||||||
pa_log_notice("Disabling timer-based scheduling because high-resolution timers are not available from the kernel.");
|
pa_log_notice("Disabling timer-based scheduling because high-resolution timers are not available from the kernel.");
|
||||||
use_tsched = FALSE;
|
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 (suitable) {
|
||||||
if (snd_mixer_selem_get_capture_dB_range(u->mixer_elem, &u->hw_dB_min, &u->hw_dB_max) < 0)
|
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.");
|
pa_log_info("Mixer doesn't support dB information or data is ignored.");
|
||||||
else {
|
else {
|
||||||
#ifdef HAVE_VALGRIND_MEMCHECK_H
|
#ifdef HAVE_VALGRIND_MEMCHECK_H
|
||||||
VALGRIND_MAKE_MEM_DEFINED(&u->hw_dB_min, sizeof(u->hw_dB_min));
|
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=<enable system timer based scheduling mode?> "
|
||||||
"tsched_buffer_size=<buffer size when using timer based scheduling> "
|
"tsched_buffer_size=<buffer size when using timer based scheduling> "
|
||||||
"tsched_buffer_watermark=<lower fill watermark> "
|
"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[] = {
|
static const char* const valid_modargs[] = {
|
||||||
"name",
|
"name",
|
||||||
|
|
@ -68,6 +69,7 @@ static const char* const valid_modargs[] = {
|
||||||
"tsched_buffer_size",
|
"tsched_buffer_size",
|
||||||
"tsched_buffer_watermark",
|
"tsched_buffer_watermark",
|
||||||
"profile",
|
"profile",
|
||||||
|
"ignore_dB",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,8 @@ PA_MODULE_USAGE(
|
||||||
"mmap=<enable memory mapping?> "
|
"mmap=<enable memory mapping?> "
|
||||||
"tsched=<enable system timer based scheduling mode?> "
|
"tsched=<enable system timer based scheduling mode?> "
|
||||||
"tsched_buffer_size=<buffer size when using timer based scheduling> "
|
"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[] = {
|
static const char* const valid_modargs[] = {
|
||||||
"name",
|
"name",
|
||||||
|
|
@ -68,6 +69,7 @@ static const char* const valid_modargs[] = {
|
||||||
"tsched",
|
"tsched",
|
||||||
"tsched_buffer_size",
|
"tsched_buffer_size",
|
||||||
"tsched_buffer_watermark",
|
"tsched_buffer_watermark",
|
||||||
|
"ignore_dB",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,8 @@ PA_MODULE_USAGE(
|
||||||
"mmap=<enable memory mapping?> "
|
"mmap=<enable memory mapping?> "
|
||||||
"tsched=<enable system timer based scheduling mode?> "
|
"tsched=<enable system timer based scheduling mode?> "
|
||||||
"tsched_buffer_size=<buffer size when using timer based scheduling> "
|
"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[] = {
|
static const char* const valid_modargs[] = {
|
||||||
"name",
|
"name",
|
||||||
|
|
@ -92,6 +93,7 @@ static const char* const valid_modargs[] = {
|
||||||
"tsched",
|
"tsched",
|
||||||
"tsched_buffer_size",
|
"tsched_buffer_size",
|
||||||
"tsched_buffer_watermark",
|
"tsched_buffer_watermark",
|
||||||
|
"ignore_dB",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue