[pulseaudio-discuss] review+pull-request: Passthrough support
Arun Raghavan
arun.raghavan at collabora.co.uk
Wed Apr 13 05:53:56 PDT 2011
Hey folks,
My passthrough work is now at a point where I think it's good to pull to
master. All the core code for clients to signal that they are providing
a compressed format, and sinks to signal what formats they support is
there. The API is essentially the same as discussed earlier on-list,
with some small tweaks along the way as necessary.
Still pending are proper detection/signalling of available formats on
ALSA devices is to be done (Colin's looking at some of the plumbing for
S/PDIF, and HDMI ELD/EDID-based lookups are something that we need as
well), and better handling of monitors (we suspend them for now, which
works), and volumes (Tanu's got some on-going work on this).
NOTE: given the above about ALSA, topmost patch should probably not be
pulled, but is handy to have for testing.
In addition to the passthrough branch, there is a passthrough-bt branch
which has changes to the bluetooth sink to support streaming MP3 to
headsets that support it. This also needs some work before being ready
to pull.
The changes needed to actually use this in GStreamer are also done, but
not upstream yet. I need to do some rebasing to make this stuff good to
push out, so details on this in a following mail.
Comments, feedback will be very much appreciated. :)
Cheers,
Arun
----
The following changes since commit aaab340d4e3c57d58755151310f59a0ee96554b1:
bluetooth-device: fix rounding errors caused by few bt volume steps (2011-04-05 11:24:12 +0100)
are available in the git repository at:
git://git.collabora.co.uk/git/user/arun/pulseaudio.git passthrough
Arun Raghavan (37):
sink: Trivial typo fix
sample: Use PA_SAMPLE_INVALID instead of numeric value
core: Add a pa_format_info structure
format: Add some properties and internal API
sink: Extend API for compressed formats support
core: Add extended stream API to support compressed formats
format: Add convenience API to check if a format is PCM or not
sink: Remove PASSTHROUGH flag
tests: Add a trivial test for the extended API
sink-input: Minor cleanups
sink-input: Return NOTSUPPORTED if format negotiation fails
sink-input: Don't assert on bad formats
format: Avoid some code duplication
sink: Fix leak in pa_sink_check_formats()
sink-input: Kill passthrough streams if moving to an unsupported sink
core: Fix some FIXMEs for the extended API
alsa-mixer: Remove passthrough profiles
sink: Trivial typo fix in comment
core: Suspend monitor when a sink enters passthrough mode
alsa: Reconfigure sink sample rate for passthrough inputs
format: Const-ify some parameters
format: Add some convenience functions for printing
stream: Add API to get a stream's pa_format_info
introspect: Get formats for sinks
introspect: Get format of sink input
format: Add a type for DTS
core: Factor out passthrough checks into their own functions
sink-input: Don't assert if passthrough connection fails
sink-input: Don't restore volume for passthrough streams
sink-input: Add a format-lost event
format: Export pa_format_info_is_compatible in API
format: Add correct sample spec conversion for E-AC3
sink-input: Provide more information to client when format is lost
stream-restore: Check for readability before reading volume
format: Extend properties to handle lists/ranges
format: Add some convenience API for setting properties
alsa: WIP AC3/E-AC3/DTS passthrough negotiation support
Pierre-Louis Bossart (1):
sink-input: Don't resample passthrough inputs
PROTOCOL | 28 ++
configure.ac | 8 +-
po/POTFILES.in | 1 +
src/Makefile.am | 22 +-
src/map-file | 19 +
src/modules/alsa/alsa-sink.c | 110 +++++-
.../mixer/paths/iec958-passthrough-output.conf | 19 -
src/modules/alsa/mixer/profile-sets/default.conf | 7 -
src/modules/echo-cancel/module-echo-cancel.c | 2 +-
src/modules/module-combine.c | 2 +-
src/modules/module-device-manager.c | 4 +-
src/modules/module-equalizer-sink.c | 2 +-
src/modules/module-intended-roles.c | 10 +-
src/modules/module-ladspa-sink.c | 2 +-
src/modules/module-loopback.c | 2 +-
src/modules/module-remap-sink.c | 2 +-
src/modules/module-sine.c | 2 +-
src/modules/module-stream-restore.c | 10 +-
src/modules/module-virtual-sink.c | 2 +-
src/modules/rtp/module-rtp-recv.c | 2 +-
src/pulse/def.h | 17 +-
src/pulse/format.c | 460 ++++++++++++++++++++
src/pulse/format.h | 129 ++++++
src/pulse/internal.h | 12 +
src/pulse/introspect.c | 40 ++-
src/pulse/introspect.h | 4 +
src/pulse/proplist.h | 12 +
src/pulse/pulseaudio.h | 1 +
src/pulse/sample.c | 2 +-
src/pulse/stream.c | 152 ++++++-
src/pulse/stream.h | 14 +
src/pulsecore/core.h | 1 +
src/pulsecore/play-memblockq.c | 2 +-
src/pulsecore/protocol-esound.c | 2 +-
src/pulsecore/protocol-native.c | 124 ++++--
src/pulsecore/protocol-simple.c | 2 +-
src/pulsecore/sink-input.c | 231 ++++++++--
src/pulsecore/sink-input.h | 9 +
src/pulsecore/sink.c | 120 +++++-
src/pulsecore/sink.h | 26 +-
src/pulsecore/sound-file-stream.c | 2 +-
src/pulsecore/source.c | 2 +-
src/pulsecore/tagstruct.c | 42 ++
src/pulsecore/tagstruct.h | 6 +-
src/tests/extended-test.c | 197 +++++++++
src/tests/format-test.c | 106 +++++
src/utils/pactl.c | 15 +-
47 files changed, 1786 insertions(+), 200 deletions(-)
delete mode 100644 src/modules/alsa/mixer/paths/iec958-passthrough-output.conf
create mode 100644 src/pulse/format.c
create mode 100644 src/pulse/format.h
create mode 100644 src/tests/extended-test.c
create mode 100644 src/tests/format-test.c
More information about the pulseaudio-discuss
mailing list