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 _______________________________________________ pulseaudio-discuss mailing list pulseaudio-discuss@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss