[pulseaudio-commits] [SCM] PulseAudio Sound Server branch, master, updated. v0.9.16-test4-68-g61105df
Lennart Poettering
gitmailer-noreply at 0pointer.de
Fri Aug 14 16:37:56 PDT 2009
This is an automated email from the git hooks/post-receive script. It was
generated because of a push to the "PulseAudio Sound Server" repository.
The master branch has been updated
from 1eeddd84d2ff2482dd4a6d2dd43dc8a315ba72a4 (commit)
- Log -----------------------------------------------------------------
61105df combine: determine sample parameters of combined sink from underlying sinks
-----------------------------------------------------------------------
Summary of changes:
src/modules/module-combine.c | 49 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 49 insertions(+), 0 deletions(-)
-----------------------------------------------------------------------
commit 61105df13b423b100394639cf7850856efbad767
Author: Maarten Bosmans <mkbosmans at gmail.com>
Date: Sat Aug 15 01:35:53 2009 +0200
combine: determine sample parameters of combined sink from underlying sinks
http://pulseaudio.org/ticket/521
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 155b928..582cbce 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -1152,6 +1152,55 @@ int pa__init(pa_module*m) {
ss = m->core->default_sample_spec;
map = m->core->default_channel_map;
+
+ /* Check the specified slave sinks for sample_spec and channel_map to use for the combined sink */
+ if (!u->automatic) {
+ const char*split_state = NULL;
+ char *n = NULL;
+ pa_sample_spec slaves_spec;
+ pa_channel_map slaves_map;
+ pa_bool_t is_first_slave = TRUE;
+
+ while ((n = pa_split(slaves, ",", &split_state))) {
+ pa_sink *slave_sink;
+
+ if (!(slave_sink = pa_namereg_get(m->core, n, PA_NAMEREG_SINK))) {
+ pa_log("Invalid slave sink '%s'", n);
+ pa_xfree(n);
+ goto fail;
+ }
+
+ pa_xfree(n);
+
+ if (is_first_slave) {
+ slaves_spec = slave_sink->sample_spec;
+ slaves_map = slave_sink->channel_map;
+ is_first_slave = FALSE;
+ } else {
+ if (slaves_spec.format != slave_sink->sample_spec.format)
+ slaves_spec.format = PA_SAMPLE_INVALID;
+
+ if (slaves_spec.rate < slave_sink->sample_spec.rate)
+ slaves_spec.rate = slave_sink->sample_spec.rate;
+
+ if (!pa_channel_map_equal(&slaves_map, &slave_sink->channel_map))
+ slaves_spec.channels = 0;
+ }
+ }
+
+ if (!is_first_slave) {
+ if (slaves_spec.format != PA_SAMPLE_INVALID)
+ ss.format = slaves_spec.format;
+
+ ss.rate = slaves_spec.rate;
+
+ if (slaves_spec.channels > 0) {
+ map = slaves_map;
+ ss.channels = slaves_map.channels;
+ }
+ }
+ }
+
if ((pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0)) {
pa_log("Invalid sample specification.");
goto fail;
--
hooks/post-receive
PulseAudio Sound Server
More information about the pulseaudio-commits
mailing list