[pulseaudio-commits] [SCM] PulseAudio Sound Server branch, master, updated. v1.0-dev-72-g969c7c8

Colin Guthrie gitmailer-noreply at 0pointer.de
Tue Feb 22 02:26:40 PST 2011


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  051d82133f0ae6a57bf66fd200bc8e3591a7d5ca (commit)

- Log -----------------------------------------------------------------
969c7c8 core: Link virtual sinks and sources to their streams.
1f848f8 build-sys: Correct typos in configure
d90be03 src/Makefile.am: add missing space to fix build using uClibc
bada904 Correct wav file creation for 24/32 and 24 bits sample formats HSD=3669357
b7779ec PulseAudio: added IT block to fix thumb conditional instruction build error messages
-----------------------------------------------------------------------

Summary of changes:
 configure.ac                                 |   12 ++++++------
 src/Makefile.am                              |    2 +-
 src/modules/echo-cancel/module-echo-cancel.c |    6 ++++++
 src/modules/module-equalizer-sink.c          |    4 +++-
 src/modules/module-ladspa-sink.c             |    3 +++
 src/modules/module-remap-sink.c              |    3 +++
 src/modules/module-virtual-sink.c            |    3 +++
 src/modules/module-virtual-source.c          |    3 +++
 src/pulsecore/sink-input.c                   |    1 +
 src/pulsecore/sink-input.h                   |    4 +++-
 src/pulsecore/sink.c                         |    1 +
 src/pulsecore/sink.h                         |    2 ++
 src/pulsecore/sndfile-util.c                 |   13 +++++++++++--
 src/pulsecore/source-output.c                |    1 +
 src/pulsecore/source-output.h                |    4 +++-
 src/pulsecore/source.c                       |    1 +
 src/pulsecore/source.h                       |    1 +
 src/pulsecore/svolume_arm.c                  |    1 +
 18 files changed, 53 insertions(+), 12 deletions(-)

-----------------------------------------------------------------------

commit b7779ecce0e6e1d2d6a56c4d97393baf08235c04
Author: Kurt Taylor <kurt.taylor at linaro.org>
Date:   Fri Feb 18 14:30:03 2011 +0000

    PulseAudio: added IT block to fix thumb conditional instruction build error messages
    
    See: http://pulseaudio.org/ticket/914
    
    Tweaked-By: Arun Raghavan <arun.raghavan at collabora.co.uk>

diff --git a/src/pulsecore/svolume_arm.c b/src/pulsecore/svolume_arm.c
index 3973e51..c2830cf 100644
--- a/src/pulsecore/svolume_arm.c
+++ b/src/pulsecore/svolume_arm.c
@@ -39,6 +39,7 @@
 
 #define MOD_INC() \
     " subs  r0, r6, %2              \n\t" \
+    " itt cs                        \n\t" \
     " addcs r0, %1                  \n\t" \
     " movcs r6, r0                  \n\t"
 

commit bada9040dddcf666773d32177949635c02f4f51f
Author: Vincent Becker <vincentx.becker at intel.com>
Date:   Tue Feb 8 11:24:08 2011 +0100

    Correct wav file creation for 24/32 and 24 bits sample formats HSD=3669357

diff --git a/src/pulsecore/sndfile-util.c b/src/pulsecore/sndfile-util.c
index 9d15a86..cadda93 100644
--- a/src/pulsecore/sndfile-util.c
+++ b/src/pulsecore/sndfile-util.c
@@ -51,6 +51,9 @@ int pa_sndfile_read_sample_spec(SNDFILE *sf, pa_sample_spec *ss) {
             break;
 
         case SF_FORMAT_PCM_24:
+            ss->format = PA_SAMPLE_S24NE;
+	    break;
+
         case SF_FORMAT_PCM_32:
             ss->format = PA_SAMPLE_S32NE;
             break;
@@ -106,10 +109,14 @@ int pa_sndfile_write_sample_spec(SF_INFO *sfi, pa_sample_spec *ss) {
 
         case PA_SAMPLE_S24LE:
         case PA_SAMPLE_S24BE:
+	    ss->format = PA_SAMPLE_S24NE;
+	    sfi->format |= SF_FORMAT_PCM_24;
+	    break;
+
         case PA_SAMPLE_S24_32LE:
         case PA_SAMPLE_S24_32BE:
-            ss->format = PA_SAMPLE_S32NE;
-            sfi->format |= SF_FORMAT_PCM_24;
+            ss->format = PA_SAMPLE_S24_32NE;
+            sfi->format |= SF_FORMAT_PCM_32;
             break;
 
         case PA_SAMPLE_S32LE:
@@ -362,6 +369,7 @@ pa_sndfile_readf_t pa_sndfile_readf_function(const pa_sample_spec *ss) {
             return (pa_sndfile_readf_t) sf_readf_short;
 
         case PA_SAMPLE_S32NE:
+        case PA_SAMPLE_S24_32NE:
             return (pa_sndfile_readf_t) sf_readf_int;
 
         case PA_SAMPLE_FLOAT32NE:
@@ -384,6 +392,7 @@ pa_sndfile_writef_t pa_sndfile_writef_function(const pa_sample_spec *ss) {
             return (pa_sndfile_writef_t) sf_writef_short;
 
         case PA_SAMPLE_S32NE:
+        case PA_SAMPLE_S24_32NE:
             return (pa_sndfile_writef_t) sf_writef_int;
 
         case PA_SAMPLE_FLOAT32NE:

commit d90be0347475cfa5ed051c99ddd2ee10d10c7d05
Author: Henning Heinold <heinold at inf.fu-berlin.de>
Date:   Fri Jul 10 12:33:30 2009 +0200

    src/Makefile.am: add missing space to fix build using uClibc
    
    Using uClibc
    
    	AM_LIBADD = $(PTHREAD_LIBS) $(INTLLIBS)
    
    is not empty because `$(INTLLIBS)` is set to `-lintl`. This uncovered a missing space in commit ef0cc745 which resulted in the following build error.
    
    	[…]
    		CC     libbluetooth_ipc_la-ipc.lo
    	modules/bluetooth/ipc.c: In function 'bt_audio_service_open':
    	modules/bluetooth/ipc.c:65:26: warning: dereferencing type-punned pointer might break strict-aliasing rules [-Wstrict-aliasing]
    	modules/bluetooth/ipc.c: In function 'bt_audio_service_get_data_fd':
    	modules/bluetooth/ipc.c:110:13: warning: cast increases required alignment of target type [-Wcast-align]
    	modules/bluetooth/ipc.c:110:4: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
    	make[3]: *** No rule to make target `-lintl', needed by `libbluetooth-ipc.la'.  Stop.
    	make[3]: Leaving directory `/oe/build-minimal-uclibc/minimal-uclibc-dev/work/armv7a-oe-linux-uclibceabi/pulseaudio-0.9.22-r11.0+gitr0+051d82133f0ae6a57bf66fd200bc8e3591a7d5ca/git/src'
    	make[2]: *** [all] Error 2
    	make[2]: Leaving directory `/oe/build-minimal-uclibc/minimal-uclibc-dev/work/armv7a-oe-linux-uclibceabi/pulseaudio-0.9.22-r11.0+gitr0+051d82133f0ae6a57bf66fd200bc8e3591a7d5ca/git/src'
    	make[1]: *** [all-recursive] Error 1
    	make[1]: Leaving directory `/oe/build-minimal-uclibc/minimal-uclibc-dev/work/armv7a-oe-linux-uclibceabi/pulseaudio-0.9.22-r11.0+gitr0+051d82133f0ae6a57bf66fd200bc8e3591a7d5ca/git'
    	make: *** [all] Error 2
    
    This patch is taken from OpenEmbedded where it has been present since 2009 for PulseAudio 0.9.15 and greater [1].
    
    [1] http://git.0pointer.de/?p=pulseaudio.git;a=commit;h=ef0cc74567b3bb98378c17f6a523bf18ba132ed7
    [2] http://cgit.openembedded.org/cgit.cgi/openembedded/commit/?id=7c33f2e906a20e139d53b4f2d8fbc2773a4725b3
    
    Signed-off-by: Henning Heinold <heinold at inf.fu-berlin.de>
    Signed-off-by: Paul Menzel <paulepanter at users.sourceforge.net>
    CC: Henning Heinold <heinold at inf.fu-berlin.de>

diff --git a/src/Makefile.am b/src/Makefile.am
index 0687e40..0ee7abc 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1804,7 +1804,7 @@ BLUETOOTH_SBC_FILES = $(subst modules/bluetooth/,,$(libbluetooth_sbc_la_SOURCES)
 
 libbluetooth_ipc_la_SOURCES = modules/bluetooth/ipc.c modules/bluetooth/ipc.h
 libbluetooth_ipc_la_LDFLAGS = -avoid-version
-libbluetooth_ipc_la_LIBADD = $(AM_LIBADD)libpulsecore- at PA_MAJORMINOR@.la libpulsecommon- at PA_MAJORMINOR@.la libpulse.la
+libbluetooth_ipc_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINOR@.la libpulsecommon- at PA_MAJORMINOR@.la libpulse.la
 libbluetooth_ipc_la_CFLAGS = $(AM_CFLAGS)
 BLUETOOTH_IPC_FILES = $(subst modules/bluetooth/,,$(libbluetooth_ipc_la_SOURCES)) rtp.h
 

commit 1f848f82c4571f169f18f86b4bd2ec6f863acca0
Author: Paul Menzel <paulepanter at users.sourceforge.net>
Date:   Fri Feb 18 23:27:20 2011 +0100

    build-sys: Correct typos in configure
    
    s/Console Kit/ConsoleKit/ [1]
    s/DBUS/D-Bus/ [2]
    
    Plus some spelling fixes and context in warning sometimes shown to user
    
    [1] http://www.freedesktop.org/wiki/Software/ConsoleKit
    [2] http://www.freedesktop.org/wiki/Software/dbus

diff --git a/configure.ac b/configure.ac
index 08c947a..c5e8d6b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1259,7 +1259,7 @@ AC_SUBST(HAVE_DBUS)
 AM_CONDITIONAL([HAVE_DBUS], [test "x$HAVE_DBUS" = x1])
 
 
-# udev and HAL depend on DBUS: So double check if they were explicitly enabled.
+# udev and HAL depend on D-Bus: So double check if they were explicitly enabled.
 if test "x$HAVE_DBUS" != "x1" ; then
     HAVE_HAL=0
     if test "x${hal}" = xyes ; then
@@ -1660,7 +1660,7 @@ echo "
     Enable Jack:                   ${ENABLE_JACK}
     Enable Async DNS:              ${ENABLE_LIBASYNCNS}
     Enable LIRC:                   ${ENABLE_LIRC}
-    Enable DBUS:                   ${ENABLE_DBUS}
+    Enable D-Bus:                  ${ENABLE_DBUS}
       Enable HAL:                  ${ENABLE_HAL}
       Enable BlueZ:                ${ENABLE_BLUEZ}
     Enable udev:                   ${ENABLE_UDEV}
@@ -1686,9 +1686,9 @@ echo "
 if test "${ENABLE_DBUS}" = "no" ; then
    echo "
 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
-You do not have DBUS support enabled. It is strongly recommended
-that you enable DBUS support if you platform supports it.
-Many parts of PulseAudio use udev, from Console Kit interaction
+You do not have D-Bus support enabled. It is strongly recommended
+that you enable D-Bus support if your platform supports it.
+Many parts of PulseAudio use D-Bus, from ConsoleKit interaction
 to the Device Reservation Protocol to speak to JACK, Bluetooth
 support and even a native control protocol for communicating and
 controling the PulseAudio daemon itself.
@@ -1700,7 +1700,7 @@ if test "${ENABLE_UDEV}" = "no" ; then
    echo "
 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====
 You do not have udev support enabled. It is strongly recommended
-that you enable udev support if you platform supports it as it is
+that you enable udev support if your platform supports it as it is
 the primary method used to detect hardware audio devices (on Linux)
 and is thus a critical part of PulseAudio on that platform.
 ===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING =====

commit 969c7c80fe380a7263472fa065f04990286ed7bb
Author: Tanu Kaskinen <tanu.kaskinen at digia.com>
Date:   Mon Feb 7 18:35:51 2011 +0200

    core: Link virtual sinks and sources to their streams.
    
    This change doesn't add any functionality in itself, but it will be useful in
    the future for operating on chains of sinks or sources that are piggy-backing
    on each other.
    
    For example, the PA_PROP_DEVICE_MASTER_DEVICE property could
    be handled in the core so that each virtual device doesn't have to maintain it
    separately. By using the origin_sink and destination_source pointers the core
    is able to see at stream creation time that the stream is created by a virtual
    device, and then update that device's property list using the name of the
    master device that the stream is being connected to. The same thing can be done
    also when the stream is being moved from a device to another, in which case the
    _MASTER_DEVICE property needs updating.

diff --git a/src/modules/echo-cancel/module-echo-cancel.c b/src/modules/echo-cancel/module-echo-cancel.c
index 611ebb7..0108c31 100644
--- a/src/modules/echo-cancel/module-echo-cancel.c
+++ b/src/modules/echo-cancel/module-echo-cancel.c
@@ -1502,6 +1502,7 @@ int pa__init(pa_module*m) {
     source_output_data.driver = __FILE__;
     source_output_data.module = m;
     source_output_data.source = source_master;
+    source_output_data.destination_source = u->source;
     /* FIXME
        source_output_data.flags = PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND; */
 
@@ -1531,11 +1532,14 @@ int pa__init(pa_module*m) {
     u->source_output->moving = source_output_moving_cb;
     u->source_output->userdata = u;
 
+    u->source->output_from_master = u->source_output;
+
     /* Create sink input */
     pa_sink_input_new_data_init(&sink_input_data);
     sink_input_data.driver = __FILE__;
     sink_input_data.module = m;
     sink_input_data.sink = sink_master;
+    sink_input_data.origin_sink = u->sink;
     pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "Echo-Cancel Sink Stream");
     pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "filter");
     pa_sink_input_new_data_set_sample_spec(&sink_input_data, &sink_ss);
@@ -1566,6 +1570,8 @@ int pa__init(pa_module*m) {
     u->sink_input->mute_changed = sink_input_mute_changed_cb;
     u->sink_input->userdata = u;
 
+    u->sink->input_to_master = u->sink_input;
+
     pa_sink_input_get_silence(u->sink_input, &silence);
 
     u->source_memblockq = pa_memblockq_new(0, MEMBLOCKQ_MAXLENGTH, 0,
diff --git a/src/modules/module-equalizer-sink.c b/src/modules/module-equalizer-sink.c
index bc349ce..a28405b 100644
--- a/src/modules/module-equalizer-sink.c
+++ b/src/modules/module-equalizer-sink.c
@@ -1200,6 +1200,7 @@ int pa__init(pa_module*m) {
     sink_input_data.driver = __FILE__;
     sink_input_data.module = m;
     sink_input_data.sink = master;
+    sink_input_data.origin_sink = u->sink;
     pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "Equalized Stream");
     pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "filter");
     pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss);
@@ -1225,9 +1226,10 @@ int pa__init(pa_module*m) {
     u->sink_input->moving = sink_input_moving_cb;
     u->sink_input->volume_changed = sink_input_volume_changed_cb;
     u->sink_input->mute_changed = sink_input_mute_changed_cb;
-
     u->sink_input->userdata = u;
 
+    u->sink->input_to_master = u->sink_input;
+
     dbus_init(u);
 
     /* default filter to these */
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index 88df67e..cdccf1a 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -832,6 +832,7 @@ int pa__init(pa_module*m) {
     sink_input_data.driver = __FILE__;
     sink_input_data.module = m;
     sink_input_data.sink = master;
+    sink_input_data.origin_sink = u->sink;
     pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "LADSPA Stream");
     pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "filter");
     pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss);
@@ -859,6 +860,8 @@ int pa__init(pa_module*m) {
     u->sink_input->mute_changed = sink_input_mute_changed_cb;
     u->sink_input->userdata = u;
 
+    u->sink->input_to_master = u->sink_input;
+
     pa_sink_put(u->sink);
     pa_sink_input_put(u->sink_input);
 
diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
index 43748bd..7f64f30 100644
--- a/src/modules/module-remap-sink.c
+++ b/src/modules/module-remap-sink.c
@@ -420,6 +420,7 @@ int pa__init(pa_module*m) {
     sink_input_data.driver = __FILE__;
     sink_input_data.module = m;
     sink_input_data.sink = master;
+    sink_input_data.origin_sink = u->sink;
     pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "Remapped Stream");
     pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "filter");
     pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss);
@@ -446,6 +447,8 @@ int pa__init(pa_module*m) {
     u->sink_input->moving = sink_input_moving_cb;
     u->sink_input->userdata = u;
 
+    u->sink->input_to_master = u->sink_input;
+
     pa_sink_put(u->sink);
     pa_sink_input_put(u->sink_input);
 
diff --git a/src/modules/module-virtual-sink.c b/src/modules/module-virtual-sink.c
index fac204d..40bab5a 100644
--- a/src/modules/module-virtual-sink.c
+++ b/src/modules/module-virtual-sink.c
@@ -556,6 +556,7 @@ int pa__init(pa_module*m) {
     sink_input_data.driver = __FILE__;
     sink_input_data.module = m;
     sink_input_data.sink = master;
+    sink_input_data.origin_sink = u->sink;
     pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "Virtual Sink Stream");
     pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "filter");
     pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss);
@@ -583,6 +584,8 @@ int pa__init(pa_module*m) {
     u->sink_input->mute_changed = sink_input_mute_changed_cb;
     u->sink_input->userdata = u;
 
+    u->sink->input_to_master = u->sink_input;
+
     /* (9) IF YOU REQUIRE A FIXED BLOCK SIZE MAKE SURE TO PASS A
      * SILENCE MEMBLOCK AS LAST PARAMETER
      * HERE. pa_sink_input_get_silence() IS USEFUL HERE. */
diff --git a/src/modules/module-virtual-source.c b/src/modules/module-virtual-source.c
index fdf89b0..a2b073f 100644
--- a/src/modules/module-virtual-source.c
+++ b/src/modules/module-virtual-source.c
@@ -629,6 +629,7 @@ int pa__init(pa_module*m) {
     source_output_data.driver = __FILE__;
     source_output_data.module = m;
     source_output_data.source = master;
+    source_output_data.destination_source = u->source;
     /* FIXME
        source_output_data.flags = PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND; */
 
@@ -654,6 +655,8 @@ int pa__init(pa_module*m) {
     u->source_output->moving = source_output_moving_cb;
     u->source_output->userdata = u;
 
+    u->source->output_from_master = u->source_output;
+
     pa_source_put(u->source);
     pa_source_output_put(u->source_output);
 
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 065fd2d..00adc6d 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -321,6 +321,7 @@ int pa_sink_input_new(
     i->driver = pa_xstrdup(pa_path_get_filename(data->driver));
     i->module = data->module;
     i->sink = data->sink;
+    i->origin_sink = data->origin_sink;
     i->client = data->client;
 
     i->requested_resample_method = data->resample_method;
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index f81e2d4..e1991a2 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -83,7 +83,8 @@ struct pa_sink_input {
     pa_module *module;                  /* may be NULL */
     pa_client *client;                  /* may be NULL */
 
-    pa_sink *sink; /* NULL while we are being moved */
+    pa_sink *sink;                      /* NULL while we are being moved */
+    pa_sink *origin_sink;               /* only set by filter sinks */
 
     /* A sink input may be connected to multiple source outputs
      * directly, so that they don't get mixed data of the entire
@@ -285,6 +286,7 @@ typedef struct pa_sink_input_new_data {
     pa_client *client;
 
     pa_sink *sink;
+    pa_sink *origin_sink;
 
     pa_resample_method_t resample_method;
 
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 62000e0..0de544c 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -269,6 +269,7 @@ pa_sink* pa_sink_new(
 
     s->inputs = pa_idxset_new(NULL, NULL);
     s->n_corked = 0;
+    s->input_to_master = NULL;
 
     s->reference_volume = s->real_volume = data->volume;
     pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index 4d569dd..8a51587 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -44,6 +44,7 @@ typedef struct pa_sink_volume_change pa_sink_volume_change;
 #include <pulsecore/card.h>
 #include <pulsecore/queue.h>
 #include <pulsecore/thread-mq.h>
+#include <pulsecore/sink-input.h>
 
 #define PA_MAX_INPUTS_PER_SINK 32
 
@@ -86,6 +87,7 @@ struct pa_sink {
     pa_idxset *inputs;
     unsigned n_corked;
     pa_source *monitor_source;
+    pa_sink_input *input_to_master;         /* non-NULL only for filter sinks */
 
     pa_volume_t base_volume; /* shall be constant */
     unsigned n_volume_steps; /* shall be constant */
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index 88731e7..0bb8899 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -208,6 +208,7 @@ int pa_source_output_new(
     o->driver = pa_xstrdup(pa_path_get_filename(data->driver));
     o->module = data->module;
     o->source = data->source;
+    o->destination_source = data->destination_source;
     o->client = data->client;
 
     o->actual_resample_method = resampler ? pa_resampler_get_method(resampler) : PA_RESAMPLER_INVALID;
diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h
index 273b78f..f16f952 100644
--- a/src/pulsecore/source-output.h
+++ b/src/pulsecore/source-output.h
@@ -74,7 +74,8 @@ struct pa_source_output {
     pa_module *module;                    /* may be NULL */
     pa_client *client;                    /* may be NULL */
 
-    pa_source *source; /* NULL while being moved */
+    pa_source *source;                    /* NULL while being moved */
+    pa_source *destination_source;        /* only set by filter sources */
 
     /* A source output can monitor just a single input of a sink, in which case we find it here */
     pa_sink_input *direct_on_input;       /* may be NULL */
@@ -211,6 +212,7 @@ typedef struct pa_source_output_new_data {
     pa_client *client;
 
     pa_source *source;
+    pa_source *destination_source;
 
     pa_resample_method_t resample_method;
 
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 412a3db..24d0ff6 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -221,6 +221,7 @@ pa_source* pa_source_new(
     s->outputs = pa_idxset_new(NULL, NULL);
     s->n_corked = 0;
     s->monitor_of = NULL;
+    s->output_from_master = NULL;
 
     s->volume = data->volume;
     pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index e3e56bc..f3af159 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -75,6 +75,7 @@ struct pa_source {
     pa_idxset *outputs;
     unsigned n_corked;
     pa_sink *monitor_of;                     /* may be NULL */
+    pa_source_output *output_from_master;    /* non-NULL only for filter sources */
 
     pa_volume_t base_volume; /* shall be constant */
     unsigned n_volume_steps; /* shall be constant */

-- 
hooks/post-receive
PulseAudio Sound Server



More information about the pulseaudio-commits mailing list