Hi folks, I'm pleased to announce that PulseAudio 3.0 is now out! For those of you following the release candidates, there has been only one minor commit since 2.99.3. A full set of release notes is up at (props to Tanu for populating most of it): http://www.freedesktop.org/wiki/Software/PulseAudio/Notes/3.0 The tl;dr version for the lazy is: easier setup when your device is a Bluetooth source, some ARM NEON optimisations, configurable latency offsets, ALSA UCM support for embedded folks, and a _lot_ of other fixes and infrastructure changes. Packagers, please do look at the packaging section on the wiki for some changes that you should be aware of. Tarballs are at: http://freedesktop.org/software/pulseaudio/releases/pulseaudio-3.0.tar.xz MD5: cc6e7cafff9249c5066263ee578662de SHA1: 875ee8c39bb8413007004ffd31f6b35d6508a194 Our thanks go out to all contributors, old and new, for being awesome and contributing to PulseAudio. Special mentions for our 3 GSoC students whose work is also included in this release. We hope to continue seeing their names in the shortlog in future releases. A new version of Pavucontrol will follow soon, exposing some of the new features that have been added in recent times. Cheers, Arun ---- Andika Triwidada (1): i18n: Add Indonesian translation. Arti Trivedi Bora (4): modules: Use pa_streq instead of strcmp. pulsecore: Use pa_streq instead of strcmp. tests: use pa_streq instead of strcmp daemon: use pa_streq instead of strcmp Arun Raghavan (68): sink-input,source-output: Avoid unneccessary rate updates role-cork: Fix a minor leak core-util: Add a pa_split_in_place() string utility function core-util: Make pa_make_secure_dir() act like mkdir -p auth: Create cookie directory if it doesn't exist pactl: Print sink-input/source-output corked status glib: Stop using g_source_get_current_time() core-util: Fix permissions handling while creating directories Revert "role-cork: Fix a minor leak" role-cork: Fix incorrect check at deinitialisation time Revert "Revert "role-cork: Fix a minor leak"" role-cork: Fix another minor leak alsa: Allow channel count probe on open by mapping alsa: Add a proplist to mappings alsa: Add separate sinks/sources for UCM modifiers if needed i18n: Remove module-hal-detect reference in POTFILES echo-cancel: Print what AEC engine is being used build: Avoid libstdc++ dep for module-echo-cancel if possible i18n: module-coreaudio-device now has some translatable strings build: Fix distcheck failure on libwebrtc-util tests: Factor out Orc test code into cpu-test tests: Make cpu-test less verbose build: Merge bluez pkg-config checks into one Revert "build: Merge bluez pkg-config checks into one" stream: Allow record streams to start muted core: Separate ARM CPU detection from initialisation tests: Factor out ARM svolume test into cpu-test tests: Minor cpu-test reorganisation core: Document ARM-optimised svolume code a bit core: Fix a litte-endian bug in ARM svolume code tests: Add a copyright header to cpu-test tests: Factor out core sconv test code in cpu-test tests: Reorganise cpu-test to reuse code tests: Add a basic sanity test to sconv cpu-test tests: Run sconv tests with multiple alignments build-sys: Add volume code to libpulsecommon sconv: Fix NEON sconv rounding code tests: Allow off-by-one error in sconv test tests: Increase sconv cpu-test timeout tests: Print average outer-loop iteration time in cpu-test tests: Minor cpu-test fixes for non-NEON builds core: Fix warning on non-win32 builds tests: Run svolume test for various sample alignments tests: Make cpu-test less verbose tests: Run svolume on different channel counts tests: Fix a cpu-test debug message build-sys: Drop -Wvla from compiler flags tests: Minor alignment adjustment fix for cpu-test svolume: Fix ARM alignment issues Revert "core: adjust playing_for and underrun_for at rewind" build-sys: Bump soname i18n: Fix POTFILES for poll changes build-sys: Document libpulsecommon vs. libpulse duplication alsa: Drop verbosity on UCM message Revert "tests: modify alsa-time-test to use 'check' framework" introspect: Minor documentation fix man: Correction for how sample rate switching is disabled sink, source: Prevent unnecessary rate update attempts modules: Micro-optimisation for rewind_requested paths build-sys: Bump BlueZ dependency to 4.99 build-sys: Bump soname build-sys: Drop ChangeLog generation source-output: Fix volume fixup for rate update sink-input, source-output: Check rate update success for passthrough core: Remove bad free() call alsa: Try to support non-standard rates in alsa-sink/source build-sys: Bump soname build-sys: Bump soname Chan-yeol Park (1): bluetooth: Remove ipc.[ch] files in the bluetooth module Colin Walters (1): git-version-gen: Honor GIT_DESCRIBE_FOR_BUILD environment variable David Henningsson (22): once: Fix race causing pa_once to sometimes run twice alsa-mixer: Add special profiles for some laptops missing speaker and/or internal mic alsa-mixer: Add Phantom Jack support alsa-mixer: Always turn "Inverted Internal Mic" off alsa-mixer: Add "Front Headphone" jack alsa-mixer: Document "state.plugged" and "state.unplugged" alsa-mixer: Add "Front Headphone Jack" (fixup) alsa-mixer: Add "Headphone Mic" support for 3-pin ASUS netbooks resampler: Fix volume on downmix to mono alsa-mixer: Add "iec958-stereo-input" to well known path names flist: Increase default list size to 256 alsa-mixer: Cache failure to open inputs/output mappings alsa-mixer: Remove analog-output-lfe-on-mono cli: Output asterisk when default sink/source is found alsa-sink/source: Warn for scheduling delays alsa-mixer: Don't let "Mic Jack Mode" alone create a "Line In" path alsa-mixer: Add a few more machines to internal mic whitelist alsa-mixer: Add "CLFE" and "Bass Speaker" names alsa-mixer: Prefer "Digital Input Source:Digital Mic 1" alsa udev quirks: Add some more Dell devices to speaker whitelist alsa-mixer: Add Dell Inspiron One 2020 to mic whitelist alsa-mixer: Add device.icon-name property for some common ports Deng Zhengrong (48): cli: Add set-log-target command for pacmd daemon: use pa_streq instead of plain strcmp x11: fix the wrong parameter sequence in pax11publish build: Add gcov coverage support pacmd: add help info for 'set-log-target' xen: add the HAVE_CONFIG_H macro guard add a new log target that enables to create new log file if it exists bluetooth: add a parenthesis around pa_streq() man: document option `set-log-target` core: add more verbose error info build-sys: add `check` test framework tests: modify mix-test to use new 'check' test framework tests: add cpu test tests: modify mainloop-test to use new 'check' framework tests: modify utf8-test to use new 'check' test framework tests: modify strlist-test to use new 'check' framework build: add a target to ease the creation of coverage files tests: enable to test standalone pulseaudio daemon tests: modify volume_test to use new 'check' framework tests: modify usergroup-test to use 'check' test framework tests: modify format-test to use 'check' framework tests: modify get-binary-name-test to use 'check' framework tests: modify thread-test to use 'check' framework tests: modify thread-mainloop-test to use 'check' framework tests: modify alsa-time-test to use 'check' framework tests: modify asyncmsgq-test to new 'check' framework tests: modify asyncq-test to use 'check' framework tests: modify channelmap-tets to use 'check' framework tests: modify cpulimit-test to use 'check' framework tests: modify queue-test to use 'check' framework tests: modify connect-stress to use 'check' framework tests: modify memblock-test to use 'check' framework tests: modify proplist-test to use 'check' framework tests: modify memblockq-test to use 'check' framework tests: modify hook-list-test to use 'check' framework tests: modify extended-test to use 'check' framework tests: modify sync-playback to use 'check' framework tests: modify smoother-test to use 'check' framework tests: modify interpol-test to use 'check' framework tests: modify sigbus-test to use 'check' framework tests: modify sig2str-test to use 'check' framework tests: modify rtpoll-test to use 'check' framework tests: modify lock-autospawn-test to use 'check' framework tests: modify once-test to use 'check' framework tests: modify ipacl-test to use 'check' framework tests: fix the wrong library path in check-daemon tests: make 'check' optional build: fix Mac OS X configure process Eero Nurkkala (2): alsa-sink: add missing header 'signal.h' alsa-source: add missing header 'signal.h' Feng Wei (3): alsa: Integrate UCM basic functions alsa: Add UCM jack detection alsa: Catch role matched streams to enable/disable modifier Flavio Ceolin (4): sink-input: Remove redundant check in pa_sink_input_request_rewind(). modargs: New function: pa_modargs_get_value_double(). pulse: Fix for volume documentation utils: Adding a function to get volume from string Fr?d?ric Dalleau (6): loopback: Enable routing on loopback streams bluetooth: module-bluetooth-policy initial commit pacmd: Display inputs and outputs PASSTHROUGH flag loopback: Cork sink-input if source is suspended loopback: Cork source-output if sink is suspended resampler: Fix crash if 'auto' resampler chooses ffmpeg with variable rate Fr?d?ric Danis (2): bluetooth: Fix crash on disconnection bluetooth: Fix bluetooth.nrec property not updated Harsh Prateek Bora (2): modules: Use PA_IDXSET_FOREACH wherever applicable. pulsecore: Use PA_IDXSET_FOREACH wherever applicable. Ismo Puustinen (2): ladspa: D-Bus interface for setting algorithm parameters on-the-fly. ladspa: Added a python script for testing. Jan Alexander Steffens (heftig) (1): alsa-mixer: Actually install analog-input-headphone-mic.conf Jarkko Nikula (2): alsa: move pa_alsa_setting_select close to pa_alsa_path_select alsa: Merge pa_alsa_setting_select with pa_alsa_path_select Jarkko Suontausta (1): bluetooth: Release transport when the pa_rtpoll_run loop finishes. Juho H?m?l?inen (1): stream-restore: Add missing method handler argument. Lennart Poettering (14): util: XDG_SESSION_COOKIE is unsuitable as session ID proplist: document new meaning of the session ID util: /etc/machine-id should be tried first, the D-Bus only as fallback for legacy systems util: use the return value of gethosid() as fallback, not the address of the function build-sys: readd stub makefiles to subdirectories to make building with emacs easier build-sys: remove HAL support, it's obsolete since years rtkit: update drop-in files context: get rid of really old runtime dir logic, i.e. break compat with >4y-old PA util: hook up pa_get_runtime_dir() with XDG_RUNTIME_DIR core-util: move configuration home directory from ~/,pulse to ~/.config/pulse to follow XDG basedir spec man: update man pages to only refer to the new place for the configuration files core-util: when searching for configuration files, honour XDG basedir spec auth: move cookie file to ~/.config/pulse/cookie gnome: start PA early in the gnome session Luiz Augusto von Dentz (2): bluetooth: Remove built-in/static SBC codec bluetooth: Don't force any profile on discovery module Marc-Antoine Perennou (1): udev: Don't use deprecated udev_get_*_path() functions Martin-?ric Racine (1): manpage, finnish translation: fix spelling errors Matthijs Kooijman (1): equalizer: Don't cleanup u->sink in sink_input_kill_cb yet Mihai Moldovan (1): core-util: use the generic PATH_MAX variant of pa_realpath on Mac OS X Mikel Astiz (67): bluetooth: Don't use the old socket IPC mechanism with BlueZ bluetooth: Refactor property parsing code bluetooth: Remove library for IPC to BlueZ bluetooth: Minor style fixes bluetooth: Consider different input and output MTU bluetooth: Avoid duplicating profile argument twice bluetooth: Replace deprecated ListAdapters() bluetooth: Replace deprecated ListDevices() bluetooth: Remove minor unnecessary check bluetooth: Minor style fix bluetooth: Fix missing state checks for a2dp_source bluetooth: Fix bluetooth.protocol property bluetooth: Trivial style fix bluetooth: Generalize module-bluetooth-policy bluetooth: Support HFGW in module-bluetooth-policy loopback: Disable adjust timer when suspended bluetooth: Remove return value of bt_transport_config() bluetooth: Remove return value of setup_stream() bluetooth: Refactor parsing of signal PropertyChanged bluetooth: Refactor code to helper function bluetooth: Fix wrongly set "phone" role for HFGW bluetooth: Fix using garbage memory bluetooth: Fix check if transport exists before acquire sink, source: Support creating suspended sinks and sources bluetooth: Provide dummy set_port callbacks bluetooth: Config MTU transport after acquire bluetooth: Support port availability flag bluetooth: Set profile even if transport not acquired bluetooth: Do not acquire transport during profile change bluetooth: Acquire transport when becomes available bluetooth: Release transport when not available bluetooth: Do not switch to HFGW automatically bluetooth: Let suspend-on-idle request audio in headset bluetooth: Add port availability transition policies bluetooth: Ignore Device.DisconnectRequested bluetooth: Trivial function rename bluetooth: Fix potential assertion failure bluetooth: Don't find device if set profile is off bluetooth: Release transport in stop_thread() bluetooth: Unlink sink-sources in stop_thread() bluetooth: Remove stream moving code bluetooth: Use assertions when setting off profile bluetooth: Check return value of init_profile() bluetooth: Check return value of start_thread() bluetooth: Remove const qualifier for transports bluetooth: Add hook to tell transport was removed bluetooth: Set to off if transport removed bluetooth: Set to off instead of failing module load bluetooth: Hold transport pointer while profile set bluetooth: Remove const qualifier for device bluetooth: Add hook to tell device was removed bluetooth: Self unload module-bluetooth-device bluetooth: Hold device pointer while module loaded bluetooth: Refactor code to create card profiles bluetooth: Refactor code to create profile ports card: Support adding profiles dynamically card: Support adding ports dynamically bluetooth: Add hook to announce late UUIDs bluetooth: Rename former device_is_audio() bluetooth: Run the discovery hook only when necessary bluetooth: Merge headset ports into one bluetooth: Disable profile auto-switch policy for headsets conf: Load bluetooth-policy module by default bluetooth: Trivially refactor to call setup_stream() directly bluetooth: Do not setup stream before thread starts bluetooth: Request headset audio during profile switch bluetooth: Fix unacquired transports during sink resume Niels Ole Salscheider (3): virtual-surround: Add silence to hrir if necessary. virtual-surround: Limit the number of hrir samples. virtual-surround: check if resampled memblock is not equal to input Paul Menzel (1): Fix spelling of separated: s, sepera, separa, g Peter Meerwald (13): pipe: whitespace and log output cleanup pipe: check return value of mkfifo() memblock: Fix typos. build: Fix static linking core: Set volumes const in pa_do_volume_func_t modules: Add null/dummy echo canceller daemon: Fix redundant redeclaration warning svolume_arm: Fix a const warning. echo-cancel: Fix false warning in webrtc AEC. rtp: Fix warning using pa_assert_not_reached() core: Add ARM NEON optimized sample conversion code tests: Fix test description in cpu-test tests: Implement test code for ARM NEON sconv s16_to_float Pierre-Louis Bossart (1): alsa: get avail, delay, timestamps in a single kernel call Sjoerd Simons (2): build-sys: webrtc-utils needs to be installed before module-echo-cancel build-sys: Correct bluez support error if sbc is missing Sjors Gielen (1): osx: Add a single "On" profile to coreaudio devices. Fixes crash on OS X. Tanu Kaskinen (51): device-port: Create the profiles hashmap at initialization. device-port: Remove an out-of-date comment. native: Don't save device, volume or mute of new streams. sink, source: Fix setting the latency offset when the sink/source is unlinked. Fix a copy-paste error in PROTOCOL. pulse: Use more intuitive indexing with port infos in introspect.c. proplist: Change proplist_name_valid() to be public function pa_proplist_key_valid(). tagstruct: Allow NULL proplist with pa_tagstruct_get_proplist(). conf-parser: Pass parser state in a struct instead of function parameters. conf-parser: Pass parser state in a struct also for parse callbacks. conf-parser: Add support for parsing property lists. alsa-mixer: Add support for defining port property lists in the path configuration files. native: Send the actual port proplists with card info. pactl: Print card port properties with the "list" command. card: Don't crash if someone gives NULL name to pa_card_set_profile(). sink, source: Always create a hashmap for ports. card: Ensure that there's always at least one profile. Assume that the profiles hashmap of ports is always non-NULL. Assume that the ports hashmap of cards is always non-NULL. card-restore: Handle reading NULL profile name from the database. alsa-mixer: Implement a new path option: "mute-during-activation". build-sys: Link utf8-test to libpulsecommon. Add comments referring to bug #53709. memblock: Add pa_memblock_acquire_chunk(). object: Get rid of "warning: cast increases required alignment of target type" sink-input: Fix comment: s/push/peek/ sink-input: Add a comment in pa_sink_input_request_rewind(). sink: Remove an incorrect FIXME comment. bluetooth: Remove commented out code. .gitignore: Add cpu-test. rtp: Fix rtp_port reading. card: Store a pa_card pointer in pa_card_profile. build: Add a2dp-codecs.h to libbluetooth-util sources. memblockq: Fix the order of setting minreq and prebuf. resampler: Make sure that there are no overflows when multiplying potentially big numbers. loopback: Use the real sample spec once it's known. loopback: Don't fix the source output format/rate/channels. virtual-surround-sink: Fix setting max_request and max_rewind. combine: Keep the timer active in the null mode only when running. match: Use the SINK_INPUT_FIXATE hook instead of NEW. build: Add .gitignore files to EXTRA_DIST. device-restore: When restoring volume, print the restored volume to the log. build: Add PROTOCOL to EXTRA_DIST. pulse: Fix hole handling in pa_stream_peek(). mainloop: Change wakeup_requested type from pa_bool_t to pa_atomic_t. mainloop: Don't care about the mainloop state variable when waking up the mainloop. sink: Process rewind requests also when suspended. bluetooth: Add a pa_bluetooth_discovery pointer to pa_bluetooth_device. bluetooth: Ignore Device.Connected bluetooth: Add helper pa_bluetooth_device_any_audio_connected() bluetooth: Unload device module when no audio profiles connected Thomas Martitz (7): pacat: Enable binary mode on Windows. core: Transparently handle non-blocking sockets on Windows pacat: Replace read(), write() with pa_* equivalent. core: Slightly more helpful pa_cstrerror for unknown errors gccmacro: Disable printf-like format checking on mingw32 compilers. core: Proper poll() emulation to fix pacat and friends on Windows core-util: Don't error out on existing runtime directory. Uoti Urpala (2): sink-input: Fix underrun_for calculation when resampling. core: adjust playing_for and underrun_for at rewind Wieland Hoffmann (1): man pulse-daemon.conf: Correct typoes poljar (8): pacmd: Added --help and --version descriptions to the man page. native: Use foreach to iterate trough modules. pactl: Add unloading modules by name. pacmd: Add unloading modules by name. bluetooth: Add ports to the bluetooth sink/source device-port: Add a latency variable to the port struct sink, source: Add a latency offset which is inherited from the port pacmd: Add functions to handle the latency offset poljar (Damir Jelic) (2): introspect: Add functions to handle the latency offset. pactl: Add set-latency-offset command. poljar (Damir Jeli?) (5): device-port: Change the latency offset type to a signed int. conf-parser: Initialize the state to zero immediately. device-port: Send a subscription event when the offset changes. man: Add latency offset documentation to the cli syntax. card-restore: Add the ability to save and restore the latency offset.