[pulseaudio-commits] Changes to 'routing'

Tanu Kaskinen tanuk at kemper.freedesktop.org
Tue Sep 17 06:24:07 PDT 2013


New branch 'routing' available with the following commits:
commit 32112b9739742340b13c6b46094959e6e983b475
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:21 2013 +0300

    pactl: Add "pactl list nodes" functionality

commit fd8578a5578bc99e3120f8acaa638130f0aef067
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:20 2013 +0300

    native: Add node querying to the protocol

commit 7aec90fb416723cf94a7963a737f9b67cb2e4a2f
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:19 2013 +0300

    tagstruct: Accept only valid UTF-8 strings
    
    If we agree that all strings sent over the native protocol must be
    valid UTF-8, then it can be checked in pa_tagstruct_gets(), so
    callers don't have to the checking themselves. There were not many
    callers that were checking the UTF-8 validity, but there probably
    should have been many more.

commit 9e598bfec5dce6e454ba4376c12681f340cc6e09
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:18 2013 +0300

    tagstruct: Add pa_tagstruct_put/get_direction()
    
    This will be used for dealing with node directions. Someone might ask
    what's the point of adding functions for serializing just one byte;
    the point is the validation in pa_tagstruct_get_direction(). It's nice
    to be able to assume that the function will return a valid direction,
    instead of an arbitrary 8-bit value.

commit dd2b54282ad9b22050488dd7059b1cad8b376c4b
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:17 2013 +0300

    native: Add node support to streams

commit b1b4be48bd8cc3f6d2ed523b92d387d96db0d2d5
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:16 2013 +0300

    sink-input, source-output: Add support for nodes

commit c5e1d505cb765ffc266178a2764fce1b10503050
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:15 2013 +0300

    sink-input, source-output: Add pa_sink_input/source_output_get_description()

commit 94345677dc224030e25cf8e45a3a799f76f23041
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:14 2013 +0300

    jack: Add node support

commit 433240c75cf587ed3b08dbaf5fe3c37e12a195db
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:13 2013 +0300

    bluetooth: Add node support

commit d72c46c7c5c778e7ceeaebf676c09bfb476f4bb3
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:12 2013 +0300

    alsa: Add node support

commit a9e38da109eb275f78d4a82b7670326d858ccb8e
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:11 2013 +0300

    device-port: Add support for nodes

commit c7a53cb22d7382e1ccb46174fb196e3243875946
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:10 2013 +0300

    bluetooth: Handle pa_device_port_new() failures
    
    pa_device_port_new() can't currently fail, but it soon can.

commit c2c00ce6c2e22bf4bb0dad17952dd3af2c447d6a
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:09 2013 +0300

    alsa: Handle pa_device_port_new() failures
    
    pa_device_port_new() can't currently fail, but it soon can.

commit 66f5a687324d54f63a5018ec1732498118aacaeb
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:08 2013 +0300

    sink, source: Add support for nodes

commit b7bf725f501a75a443083d31d3c73139bef90795
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:07 2013 +0300

    sink, source: Simplify pa_sink/source_new() error handling
    
    Now the only exit from the function is either via "goto fail" or
    normal success. I changed pa_hook_fire() return value checking into
    assertions, because it's simpler (and I verified that none of the
    hooks can ever fail in the current code base). I also changed all
    pa_return_null_if_fail() calls into assertions.
    
    Further simplification could be achieved if adding the sinks and
    sources to the idxsets in pa_core were moved to _put() and if
    unregistering the sink and source names was moved to _free(). Then
    _new() wouldn't have to call _unlink() and _unlink() would have fewer
    things to worry about.
    
    The pa_sink/pa_source field initialization order was changed somewhat,
    because _unlink() and _unref() rely on certain fields to be
    initialized, so they had to be initialized before the first "goto
    fail" line in _new().

commit 85d0b0bd5159fbb041146498cc0436d28cc4f7e9
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:06 2013 +0300

    sink, source: Add pa_sink/source_get_description()

commit 8d00e420f71ee758aa3cf3afd87d7331c1417350
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:05 2013 +0300

    sink, source: Disallow NULL or empty description

commit 3f2eb1e09f5280af07d227aec5d97bc4caccbb31
Author: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
Date:   Wed Jul 3 14:09:04 2013 +0300

    node: Introduce pa_node
    
    This commit adds very basic node objects to the core. This is just
    a starting point, the nodes don't do anything useful yet.
    
    A node represents a "routing endpoint" - the purpose is to make
    routing easier. There are input nodes and output nodes, which can be
    connected together. Generally speaking, sources and sink inputs map to
    input nodes and sinks and source outputs map to output nodes. The
    nodes form a new logical routing layer, which is an addition, not
    replacement, to the current "low level" layer of sinks, sink inputs
    and so on.
    
    One goal is to be able to easily route any input to any output. For
    example, with the node interface it should be easy to route a source
    to a sink, without needing to care about the details, such as setting
    up module-loopback. Routing sink inputs to source outputs should be
    possible too, perhaps causing a null sink to be created between the
    streams.
    
    Another goal is to support new kinds of routing endpoints
    that are not well suited to be implemented as sinks, sources or
    streams. One example would be audio paths that exist in hardware only
    (like cellular audio in many phone designs) that still have some
    routing options. Another example would be a "gateway node" that makes
    streams go to a remote PulseAudio as separate streams. The gateway
    node implementation could dynamically create private tunnel sinks for
    each stream.
    
    In this first version the nodes have very few attributes, but the
    intention is to add as much attributes as necessary for routing policy
    modules to make good automatic routing decisions.
    
    This patch is based on work by Janos Kovacs.



More information about the pulseaudio-commits mailing list