[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