mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-12-15 08:56:34 -05:00
daemon-conf: add remixing-use-all-sink-channels option
This option controls the PA_RESAMPLER_NO_FILL_SINK flag added in a previous commit. BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=62588 BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=94563
This commit is contained in:
parent
6ec4ca218e
commit
6e6f497219
9 changed files with 21 additions and 0 deletions
|
|
@ -129,6 +129,14 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
|
||||||
name-based matching only. Defaults to <opt>yes.</opt></p>
|
name-based matching only. Defaults to <opt>yes.</opt></p>
|
||||||
</option>
|
</option>
|
||||||
|
|
||||||
|
<option>
|
||||||
|
<p><opt>remixing-use-all-sink-channels=</opt> If enabled, use
|
||||||
|
all sink channels when remixing. Otherwise, remix to the minimal
|
||||||
|
set of sink channels needed to reproduce all of the source
|
||||||
|
channels. (This has no effect on LFE remixing.) Defaults to
|
||||||
|
<opt>yes</opt>.</p>
|
||||||
|
</option>
|
||||||
|
|
||||||
<option>
|
<option>
|
||||||
<p><opt>enable-lfe-remixing=</opt> If disabled when upmixing or
|
<p><opt>enable-lfe-remixing=</opt> If disabled when upmixing or
|
||||||
downmixing ignore LFE channels. When this option is disabled the
|
downmixing ignore LFE channels. When this option is disabled the
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,7 @@ static const pa_daemon_conf default_conf = {
|
||||||
.log_time = false,
|
.log_time = false,
|
||||||
.resample_method = PA_RESAMPLER_AUTO,
|
.resample_method = PA_RESAMPLER_AUTO,
|
||||||
.disable_remixing = false,
|
.disable_remixing = false,
|
||||||
|
.remixing_use_all_sink_channels = true,
|
||||||
.disable_lfe_remixing = true,
|
.disable_lfe_remixing = true,
|
||||||
.lfe_crossover_freq = 0,
|
.lfe_crossover_freq = 0,
|
||||||
.config_file = NULL,
|
.config_file = NULL,
|
||||||
|
|
@ -554,6 +555,8 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) {
|
||||||
{ "nice-level", parse_nice_level, c, NULL },
|
{ "nice-level", parse_nice_level, c, NULL },
|
||||||
{ "disable-remixing", pa_config_parse_bool, &c->disable_remixing, NULL },
|
{ "disable-remixing", pa_config_parse_bool, &c->disable_remixing, NULL },
|
||||||
{ "enable-remixing", pa_config_parse_not_bool, &c->disable_remixing, NULL },
|
{ "enable-remixing", pa_config_parse_not_bool, &c->disable_remixing, NULL },
|
||||||
|
{ "remixing-use-all-sink-channels",
|
||||||
|
pa_config_parse_bool, &c->remixing_use_all_sink_channels, NULL },
|
||||||
{ "disable-lfe-remixing", pa_config_parse_bool, &c->disable_lfe_remixing, NULL },
|
{ "disable-lfe-remixing", pa_config_parse_bool, &c->disable_lfe_remixing, NULL },
|
||||||
{ "enable-lfe-remixing", pa_config_parse_not_bool, &c->disable_lfe_remixing, NULL },
|
{ "enable-lfe-remixing", pa_config_parse_not_bool, &c->disable_lfe_remixing, NULL },
|
||||||
{ "lfe-crossover-freq", pa_config_parse_unsigned, &c->lfe_crossover_freq, NULL },
|
{ "lfe-crossover-freq", pa_config_parse_unsigned, &c->lfe_crossover_freq, NULL },
|
||||||
|
|
@ -748,6 +751,7 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) {
|
||||||
pa_strbuf_printf(s, "log-level = %s\n", log_level_to_string[c->log_level]);
|
pa_strbuf_printf(s, "log-level = %s\n", log_level_to_string[c->log_level]);
|
||||||
pa_strbuf_printf(s, "resample-method = %s\n", pa_resample_method_to_string(c->resample_method));
|
pa_strbuf_printf(s, "resample-method = %s\n", pa_resample_method_to_string(c->resample_method));
|
||||||
pa_strbuf_printf(s, "enable-remixing = %s\n", pa_yes_no(!c->disable_remixing));
|
pa_strbuf_printf(s, "enable-remixing = %s\n", pa_yes_no(!c->disable_remixing));
|
||||||
|
pa_strbuf_printf(s, "remixing-use-all-sink-channels = %s\n", pa_yes_no(c->remixing_use_all_sink_channels));
|
||||||
pa_strbuf_printf(s, "enable-lfe-remixing = %s\n", pa_yes_no(!c->disable_lfe_remixing));
|
pa_strbuf_printf(s, "enable-lfe-remixing = %s\n", pa_yes_no(!c->disable_lfe_remixing));
|
||||||
pa_strbuf_printf(s, "lfe-crossover-freq = %u\n", c->lfe_crossover_freq);
|
pa_strbuf_printf(s, "lfe-crossover-freq = %u\n", c->lfe_crossover_freq);
|
||||||
pa_strbuf_printf(s, "default-sample-format = %s\n", pa_sample_format_to_string(c->default_sample_spec.format));
|
pa_strbuf_printf(s, "default-sample-format = %s\n", pa_sample_format_to_string(c->default_sample_spec.format));
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@ typedef struct pa_daemon_conf {
|
||||||
disable_shm,
|
disable_shm,
|
||||||
disable_memfd,
|
disable_memfd,
|
||||||
disable_remixing,
|
disable_remixing,
|
||||||
|
remixing_use_all_sink_channels,
|
||||||
disable_lfe_remixing,
|
disable_lfe_remixing,
|
||||||
load_default_script_file,
|
load_default_script_file,
|
||||||
disallow_exit,
|
disallow_exit,
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ ifelse(@HAVE_DBUS@, 1, [dnl
|
||||||
|
|
||||||
; resample-method = speex-float-1
|
; resample-method = speex-float-1
|
||||||
; enable-remixing = yes
|
; enable-remixing = yes
|
||||||
|
; remixing-use-all-sink-channels = yes
|
||||||
; enable-lfe-remixing = no
|
; enable-lfe-remixing = no
|
||||||
; lfe-crossover-freq = 0
|
; lfe-crossover-freq = 0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1037,6 +1037,7 @@ int main(int argc, char *argv[]) {
|
||||||
c->realtime_priority = conf->realtime_priority;
|
c->realtime_priority = conf->realtime_priority;
|
||||||
c->realtime_scheduling = conf->realtime_scheduling;
|
c->realtime_scheduling = conf->realtime_scheduling;
|
||||||
c->disable_remixing = conf->disable_remixing;
|
c->disable_remixing = conf->disable_remixing;
|
||||||
|
c->remixing_use_all_sink_channels = conf->remixing_use_all_sink_channels;
|
||||||
c->disable_lfe_remixing = conf->disable_lfe_remixing;
|
c->disable_lfe_remixing = conf->disable_lfe_remixing;
|
||||||
c->deferred_volume = conf->deferred_volume;
|
c->deferred_volume = conf->deferred_volume;
|
||||||
c->running_as_daemon = conf->daemonize;
|
c->running_as_daemon = conf->daemonize;
|
||||||
|
|
|
||||||
|
|
@ -142,6 +142,7 @@ pa_core* pa_core_new(pa_mainloop_api *m, bool shared, bool enable_memfd, size_t
|
||||||
c->realtime_scheduling = false;
|
c->realtime_scheduling = false;
|
||||||
c->realtime_priority = 5;
|
c->realtime_priority = 5;
|
||||||
c->disable_remixing = false;
|
c->disable_remixing = false;
|
||||||
|
c->remixing_use_all_sink_channels = true;
|
||||||
c->disable_lfe_remixing = true;
|
c->disable_lfe_remixing = true;
|
||||||
c->lfe_crossover_freq = 0;
|
c->lfe_crossover_freq = 0;
|
||||||
c->deferred_volume = true;
|
c->deferred_volume = true;
|
||||||
|
|
|
||||||
|
|
@ -200,6 +200,7 @@ struct pa_core {
|
||||||
bool running_as_daemon:1;
|
bool running_as_daemon:1;
|
||||||
bool realtime_scheduling:1;
|
bool realtime_scheduling:1;
|
||||||
bool disable_remixing:1;
|
bool disable_remixing:1;
|
||||||
|
bool remixing_use_all_sink_channels:1;
|
||||||
bool disable_lfe_remixing:1;
|
bool disable_lfe_remixing:1;
|
||||||
bool deferred_volume:1;
|
bool deferred_volume:1;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -456,6 +456,7 @@ int pa_sink_input_new(
|
||||||
((data->flags & PA_SINK_INPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
|
((data->flags & PA_SINK_INPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
|
||||||
((data->flags & PA_SINK_INPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
|
((data->flags & PA_SINK_INPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
|
||||||
(core->disable_remixing || (data->flags & PA_SINK_INPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
|
(core->disable_remixing || (data->flags & PA_SINK_INPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
|
||||||
|
(core->remixing_use_all_sink_channels ? 0 : PA_RESAMPLER_NO_FILL_SINK) |
|
||||||
(core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0)))) {
|
(core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0)))) {
|
||||||
pa_log_warn("Unsupported resampling operation.");
|
pa_log_warn("Unsupported resampling operation.");
|
||||||
return -PA_ERR_NOTSUPPORTED;
|
return -PA_ERR_NOTSUPPORTED;
|
||||||
|
|
@ -2259,6 +2260,7 @@ int pa_sink_input_update_rate(pa_sink_input *i) {
|
||||||
((i->flags & PA_SINK_INPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
|
((i->flags & PA_SINK_INPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
|
||||||
((i->flags & PA_SINK_INPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
|
((i->flags & PA_SINK_INPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
|
||||||
(i->core->disable_remixing || (i->flags & PA_SINK_INPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
|
(i->core->disable_remixing || (i->flags & PA_SINK_INPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
|
||||||
|
(i->core->remixing_use_all_sink_channels ? 0 : PA_RESAMPLER_NO_FILL_SINK) |
|
||||||
(i->core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0));
|
(i->core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0));
|
||||||
|
|
||||||
if (!new_resampler) {
|
if (!new_resampler) {
|
||||||
|
|
|
||||||
|
|
@ -401,6 +401,7 @@ int pa_source_output_new(
|
||||||
((data->flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
|
((data->flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
|
||||||
((data->flags & PA_SOURCE_OUTPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
|
((data->flags & PA_SOURCE_OUTPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
|
||||||
(core->disable_remixing || (data->flags & PA_SOURCE_OUTPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
|
(core->disable_remixing || (data->flags & PA_SOURCE_OUTPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
|
||||||
|
(core->remixing_use_all_sink_channels ? 0 : PA_RESAMPLER_NO_FILL_SINK) |
|
||||||
(core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0)))) {
|
(core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0)))) {
|
||||||
pa_log_warn("Unsupported resampling operation.");
|
pa_log_warn("Unsupported resampling operation.");
|
||||||
return -PA_ERR_NOTSUPPORTED;
|
return -PA_ERR_NOTSUPPORTED;
|
||||||
|
|
@ -1714,6 +1715,7 @@ int pa_source_output_update_rate(pa_source_output *o) {
|
||||||
((o->flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
|
((o->flags & PA_SOURCE_OUTPUT_VARIABLE_RATE) ? PA_RESAMPLER_VARIABLE_RATE : 0) |
|
||||||
((o->flags & PA_SOURCE_OUTPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
|
((o->flags & PA_SOURCE_OUTPUT_NO_REMAP) ? PA_RESAMPLER_NO_REMAP : 0) |
|
||||||
(o->core->disable_remixing || (o->flags & PA_SOURCE_OUTPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
|
(o->core->disable_remixing || (o->flags & PA_SOURCE_OUTPUT_NO_REMIX) ? PA_RESAMPLER_NO_REMIX : 0) |
|
||||||
|
(o->core->remixing_use_all_sink_channels ? 0 : PA_RESAMPLER_NO_FILL_SINK) |
|
||||||
(o->core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0));
|
(o->core->disable_lfe_remixing ? PA_RESAMPLER_NO_LFE : 0));
|
||||||
|
|
||||||
if (!new_resampler) {
|
if (!new_resampler) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue