--- pulseaudio-0.9.15.orig/debian/pulseaudio-utils.install
+++ pulseaudio-0.9.15/debian/pulseaudio-utils.install
@@ -0,0 +1,11 @@
+usr/bin/pabrowse
+usr/bin/pacat
+usr/bin/pacmd
+usr/bin/pactl
+usr/bin/paplay
+usr/bin/parec
+usr/bin/padsp
+usr/bin/pax11publish
+usr/bin/pasuspender
+usr/lib/libpulsedsp.so
+usr/share/lintian/overrides/pulseaudio-utils
--- pulseaudio-0.9.15.orig/debian/watch
+++ pulseaudio-0.9.15/debian/watch
@@ -0,0 +1,8 @@
+# Control file for uscan
+# Run the "uscan" command to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+http://0pointer.de/lennart/projects/pulseaudio/ pulseaudio-(.*)\.tar\.gz
--- pulseaudio-0.9.15.orig/debian/pulseaudio-esound-compat.links
+++ pulseaudio-0.9.15/debian/pulseaudio-esound-compat.links
@@ -0,0 +1 @@
+usr/bin/esdcompat usr/bin/esd
--- pulseaudio-0.9.15.orig/debian/pulseaudio-dev.install
+++ pulseaudio-0.9.15/debian/pulseaudio-dev.install
@@ -0,0 +1,2 @@
+usr/lib/libpulsecore.so
+usr/include/pulsecore/*
--- pulseaudio-0.9.15.orig/debian/compat
+++ pulseaudio-0.9.15/debian/compat
@@ -0,0 +1 @@
+5
--- pulseaudio-0.9.15.orig/debian/libpulse0.install
+++ pulseaudio-0.9.15/debian/libpulse0.install
@@ -0,0 +1,4 @@
+etc/pulse/client.conf
+usr/lib/libpulse.so.*
+usr/lib/libpulse-simple.so.*
+usr/lib/libpulsecommon-*.so
--- pulseaudio-0.9.15.orig/debian/libpulse0.shlibs
+++ pulseaudio-0.9.15/debian/libpulse0.shlibs
@@ -0,0 +1,3 @@
+libpulse 0 libpulse0 (>= 0.9.15~test5)
+libpulse-simple 0 libpulse0
+libpulsecommon 0.9.15 libpulse0
--- pulseaudio-0.9.15.orig/debian/shlibs.local
+++ pulseaudio-0.9.15/debian/shlibs.local
@@ -0,0 +1,5 @@
+libpulse-browse 0 libpulse-browse0 (>= 0.9.8)
+libpulse 0 libpulse0 (= ${binary:Version})
+libpulse-simple 0 libpulse0 (= ${binary:Version})
+libpulsecommon 0.9.15 libpulse0 (= ${binary:Version})
+libpulsecore 0.9.15 pulseaudio (= ${binary:Version})
--- pulseaudio-0.9.15.orig/debian/libpulse-browse0.install
+++ pulseaudio-0.9.15/debian/libpulse-browse0.install
@@ -0,0 +1 @@
+usr/lib/libpulse-browse.so.*
--- pulseaudio-0.9.15.orig/debian/pulseaudio-module-gconf.install
+++ pulseaudio-0.9.15/debian/pulseaudio-module-gconf.install
@@ -0,0 +1,2 @@
+usr/lib/pulseaudio/pulse/gconf-helper
+usr/lib/pulse-*/modules/module-gconf.so
--- pulseaudio-0.9.15.orig/debian/changelog
+++ pulseaudio-0.9.15/debian/changelog
@@ -0,0 +1,503 @@
+pulseaudio (0.9.15-4.1~bpo50+1) lenny-backports; urgency=low
+
+  * Rebuild for lenny.
+  * Add myself as an uploader.
+
+ -- Andres Salomon <dilinger@debian.org>  Fri, 09 Oct 2009 21:07:11 +0000
+
+pulseaudio (0.9.15-4.1) unstable; urgency=high
+
+  * Non-maintainer upload by the Security Team.
+  * Fix race condition when reading /proc/self/exe and reloading the binary
+    that leads to arbitrary code execution as pulseaudio is suid root
+    + Use LDFLAGS to preload DSOs
+    + regenerate autofoo
+    (CVE-2009-1894; Closes: #537351).
+
+ -- Nico Golde <nion@debian.org>  Fri, 24 Jul 2009 18:02:24 +0200
+
+pulseaudio (0.9.15-4) unstable; urgency=low
+
+  * Synchronize our patches with Mandriva and Fedora (thanks to Colin Guthrie
+    and Lennart Poettering)
+    - 0002-util-if-NULL-is-passed-to-pa_path_get_filename-just-.patch
+    - 0003-alsa-don-t-hit-an-assert-when-invalid-module-argumen.patch
+    - 0004-alsa-fix-wording-we-are-speaking-of-card-profiles-no.patch
+    - 0005-alsa-initialize-buffer-size-before-number-of-periods.patch
+    - 0006-conf-remove-obsolete-module-idle-time-directive-from.patch
+    - 0007-core-make-sure-soft-mute-status-stays-in-sync-with-h.patch
+      + Ensure hw and software mute states stay in sync
+        (Closes: #525572, #522177)
+    - 0008-endian-fix-LE-BE-order-for-24-bit-accessor-functions.patch
+    - 0009-log-print-file-name-only-when-we-have-it.patch
+    - 0010-man-document-24bit-sample-types-in-man-page.patch
+    - 0011-man-document-log-related-daemon.conf-options.patch
+    - 0012-man-document-that-tsched-doesn-t-use-fragment-settin.patch
+    - 0013-mutex-when-we-fail-to-fill-in-mutex-into-static-mute.patch
+    - 0014-oss-don-t-deadlock-when-we-try-to-resume-an-OSS-devi.patch
+    - 0015-simple-protocol-don-t-hit-an-assert-when-we-call-con.patch
+    - 0016-idxset-add-enumeration-macro-PA_IDXSET_FOREACH.patch
+    - 0017-rescue-streams-when-one-stream-move-fails-try-to-con.patch
+    - 0018-sample-correctly-pass-s24-32-formats.patch
+    - 0019-sample-util-fix-iteration-loop-when-adjusting-volume.patch
+    - 0020-sample-util-properly-allocate-silence-block-for-s24-.patch
+    - 0021-sconv-fix-a-few-minor-conversion-issues.patch
+    - 0022-alsa-be-a-bit-more-verbose-when-a-hwparam-call-fails.patch
+    - 0023-rescue-make-we-don-t-end-up-in-an-endless-loop-when-.patch
+    - 0024-core-introduce-pa_-sink-source-_set_fixed_latency.patch
+    - 0025-core-cache-requested-latency-only-when-we-are-runnin.patch
+    - 0026-sample-fix-build-on-BE-archs.patch
+    - 0027-alsa-properly-convert-return-values-of-snd_strerror-.patch
+    - 0028-alsa-remove-debug-code.patch
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Sun, 21 Jun 2009 15:40:33 +0100
+
+pulseaudio (0.9.15-3) unstable; urgency=low
+
+  * Re-enable bluetooth support (Closes: #530514)
+  * No longer recommend padevchooser and let paprefs be a suggest
+    (Closes: #530810)
+  * 0001-alsa-allow-configuration-of-fallback-device-strings-.patch
+    - Added. Support alsa devices which only have the raw hw device, but no
+      front device even though they can do 2ch stereo (from upstream git)
+  * Add support for the status action in the init script, patch by Peter
+    Eisentraut (Closes: #527333)
+  * Change the libjack0.100.0-dev build-depend to libjack-dev as per request of
+    the debian multimedia maintainers (Closes: #527424)
+  * Prevent the default.pa manpage from being installed as part of the pa
+    locale (Closes: #508874)
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Sun, 07 Jun 2009 22:30:33 +0100
+
+pulseaudio (0.9.15-2) unstable; urgency=low
+
+  * debian/control: Add strict dependencies from libpulse-dev to the various
+    libraries (Closes: #525759)
+  * Add local shlib files to ensure the correct dependencies get generated
+    (Closes: #528405)
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Thu, 21 May 2009 00:54:38 +0100
+
+pulseaudio (0.9.15-1) unstable; urgency=low
+
+  * debian/control: Build-Depend on libcap-dev instead of libcap2-dev
+  * New Upstream Version
+  * Fixes building on HPPA (Closes: #520378)
+  * Fixes building with recent libtool (Closes: #522716)
+  * Update copyright file
+  * Updated pulseaudio-module-hal.install, dbus-util became part of pulsecore
+  * Move debug package to the debug Section
+  * Done make shlibs files for modules in /usr/lib/pulse-0.9.15
+  * Update standards-version to 3.8.1, no further changes
+  * Set priority of pulseaudio-module-raop-dbg to extra
+  * Change build-depend on libltdl7-dev to recent versions libltdl-dev
+  * Add Breaks to libpulse0 for old version of pavucontrol
+  * Temporarily disable bluetooth support as the needed bluez version is stuck
+    in the NEW queue
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Sun, 19 Apr 2009 14:43:41 +0100
+
+pulseaudio (0.9.15~test5-1) experimental; urgency=low
+
+  * New Upstream Version
+  * debian/copyright: Updated
+  * debian/control: Build-Depends on libltdl7-dev
+  * debian/control: Build-Depends on libasound2-dev (>= 1.0.19)
+  * debian/rules: Use git format-patch instead of git-format-patch
+  * debian/patches/0001-load-module-gconf-earlier.patch:
+    - Removed. Merged upstream
+  * debian/pulseaudio.install: Update for new modules
+  * debian/pulseaudio-module-x11.install: Update for new modules
+  * Move libpulscore into the pulseaudio package
+  * debian/pulseaudio-module-bluetooth.install: Add the bluetooth-util module
+    library
+  * debian/pulseaudio.install: Add new modules
+  * debian/control: Add bulid-depends on libgtk2.0-dev and libxtst-dev
+  * debian/pulseaudio.shlibs, debian/libpulse0.shlibs: Update shlib files
+  * debian/pulseaudio.install: Add liboss-util.so oss module helper library
+  * debian/control, debian/pulseaudio-module-raop.install: Add RAOP module
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Sun, 22 Mar 2009 23:06:50 +0000
+
+pulseaudio (0.9.14-2) unstable; urgency=low
+
+  [ Sjoerd Simons ]
+  * Build against libcap2-dev (Closes: #489060)
+  * Bump shlibs of libpulse0 (Closes: #514645)
+  * Bump soname of libpulsecore to 9
+  * Wait up to 5 seconds for pulseaudio to stop. Fix suggested by Aron Griffis
+    (Closes: #488754, #498457)
+  * Don't put stop links in rc0 and rc6. Pulse doens't really need it. Patch
+    supplied by James Westby (Closes: #494959)
+  * Make the start option of the init script report the right status. Fix
+    suggested by Aron Griffis (Closes: #488752)
+  * Use per user esound sockets instead of a single one for all users
+
+  [ Baptiste Mille-Mathias ]
+  * debian/control:
+    - create a separate package for bluetooth module (Closes: #513832)
+  * debian/pulseaudio-module-bluetooth.install
+    - put files for the separate bluetooth module package
+  * debian/pulseaudio.install
+    - remove files of the separate bluetooth module package
+
+  [ Sjoerd Simons ]
+  * debian/control: Don't build the bluetooth module on non-linux systems
+    (Closes: #502837)
+  * debian/control: Make the bluetooth module conflict with older pulseaudio
+    versions
+  * Update standards version, no changes needed
+  * debian/copyright: Big update
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Sun, 01 Mar 2009 15:53:27 +0000
+
+pulseaudio (0.9.14-1) experimental; urgency=low
+
+  * New Upstream Version
+  * 0002-load-module-gconf-earlier.patch renamed to
+    0001-load-module-gconf-earlier.patch and updated
+  * 0001-Fix-library-search-path-to-include-lib-and-usr-lib.patch
+    - Removed, no longer applicable
+  * 0003-make-sure-to-use-64bit-rounding-even-on-32bit-machin.patch
+    - Removed, fixed upstream
+  * 0004-properly-remove-dbus-matches-an-filters-when-unloadi.patch
+    - Removed, fixed upstream
+  * debian/patches/series
+    - Updated
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Sun, 01 Feb 2009 12:47:55 +0000
+
+pulseaudio (0.9.13-2) experimental; urgency=low
+
+  * Rename libpulsecore5 to libpulsecore8 to correctly reflect the soname
+    (Closes: #503612)
+  * 0003-make-sure-to-use-64bit-rounding-even-on-32bit-machin.patch
+    - Fix rounding errors on 32 bit machines. From upstream git
+  * 0004-properly-remove-dbus-matches-an-filters-when-unloadi.patch
+    - Properly remove dbus filters when unloading the bluetooth module
+  * 0005-Fix-two-typos-that-broke-tunnels.patch
+    - Fix tunnels. From upstream git
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Sun, 16 Nov 2008 18:13:05 +0000
+
+pulseaudio (0.9.13-1) experimental; urgency=low
+
+  [ Bas Zoetekouw ]
+  * debian/control: Build-Depend on libasound2-dev (>= 1.0.17)
+  * debian/pulseaudio-module-x11.install: No longer install an xdg autostart
+    file
+  * debian/pulseaudio.install: Install system.pa config file and various new
+    pulseaudio modules
+  * debian/rules: Add --disable-per-user-esound-socket to configure flags
+
+  [ Sjoerd Simons ]
+  * New Upstream Version
+  * Fixes FTBTS on GNU/kFreeBSD (Closes: #497624)
+  * Dropped patches for things that have been fixed upstream:
+    - 0003-Define-PULSE_INTERNAL.patch
+    - 0005-Reduce-RT-prio-logging-severity.patch
+    - 0006-fix-iteration-over-random-devices.patch
+  * rename 0003-load-module-gconf-earlier.patch to
+    0002-load-module-gconf-earlier.patch
+  * rename 0002-Fix-library-search-path-to-include-lib-and-usr-lib.patch
+    to 0001-Fix-library-search-path-to-include-lib-and-usr-lib.patch
+  * rename 0004-load-module-gconf-earlier.patch to
+    0003-load-module-gconf-earlier.patch
+  * 0001-Set-ESD-socket-to-tmp-.esd-socket-to-match-up-with.patch
+    - Dropped, not necessary anymore, the --disable-per-user-esound-socket
+      configure flag now has the same result
+  * debian/control: Add libspeexdsp-dev (>= 1.2~rc1) to Build-Depends
+  * debian/control: Add Build-Depends on libpolkit-dbus-dev and
+    libbluetooth-dev
+  * debian/pulseaudio.install: Install various new modules. Including bluetooth
+    and polkit, which will move into a separate package later.
+  * debian/pulseaudio.install: Install the new pulseaudio xdg autostart file
+  * debian/control: add a depend on consolekit. Might be downgrade to a
+    recommend later
+  * debian/control: Set the maintainer to the pkg-pulseaudio mailinglist
+  * debian/control: Add libgdbm-dev to build-depends
+  * debian/control: Add intltool to build-depends
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Sun, 19 Oct 2008 21:05:13 +0100
+
+pulseaudio (0.9.10-3) unstable; urgency=low
+
+  * debian/patches/0006-fix-iteration-over-random-devices.patch
+    - Added. Iterate over the various random devices if opening fails
+      (Closes: #491270)
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Sat, 30 Aug 2008 14:24:51 +0100
+
+pulseaudio (0.9.10-2) unstable; urgency=low
+
+  * debian/patches/0003-Define-PULSE_INTERNAL.patch
+    - Added. Let the daemon put PULSE_INTERNAL in its environment so things
+    can detect when called from within pulseaudio
+  * debian/patches/0004-load-module-gconf-earlier.patch
+    - Added. Load module-gconf before module-volume-restore and
+    module-device-restore. Otherwise setting virtual sinks/sources as default
+    won't be persistent
+  * debian/patches/0005-Reduce-RT-prio-logging-severity.patch
+    - Added. Reduce the priority of the RT warnings. Not running with RT
+    priorities is the default.
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Sat, 10 May 2008 22:16:12 +0200
+
+pulseaudio (0.9.10-1) unstable; urgency=low
+
+  [ CJ van den Berg ]
+  * New Upstream Version
+  * debian/patches: Drop patches merged upstream
+    - 0002-Double-esound-maximum-sample-size.patch
+    - 0003-fix-uploading-of-samples-into-PA.-Problem-discovered.patch
+    - 0004-make-sure-to-create-.pulse-before-using-any-config.patch
+    - 0005-Don-t-add-protocol-fields-introduced-in-version-12-w.patch
+    - 0006-Implement-opcodes-added-in-version-12-in-the-tunnel.patch
+    - 0007-Change-config-to-not-fail-if-loading-of-esd-gconf-o.patch
+    - 0008-Fix-compilation-on-non-linux-platforms.patch
+  * debian/patches: Add patch to fix RPATHs.
+    + 0002-Fix-library-search-path-to-include-lib-and-usr-lib.patch
+  * debian/control:
+    + Make libpulsecore5-dbg depend on libpulsecore5, instead of pulseaudio.
+    + Make libpulse-browse0-dbg depend on libpulse-browse0.
+  * Update Standards-Version to 3.7.3 (no changes required).
+
+  [ Petter Reinholdtsen ]
+  * debian/pulseaudio.init: Fix problems with LSB header in init.d script.
+      (Closes: #470934)
+
+ -- CJ van den Berg <cj@vdbonline.com>  Sun, 30 Mar 2008 20:11:02 +0200
+
+pulseaudio (0.9.9-1) unstable; urgency=high
+
+  * New Upstream Version.
+  * Fixes CVE-2008-008: Assert that dropping permissions succeeds.
+  * Priority high because it fixes a security issue.
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Thu, 24 Jan 2008 12:44:55 +0100
+
+pulseaudio (0.9.8-2) unstable; urgency=low
+
+  * Bump shlibs of libpulse and libpulse-browse. Upstream has started
+    versioning symbols.
+  * debian/p.../0005-Don-t-add-protocol-fields-introduced-in-version-12-w.patch
+    - Added. Don't send fields/opcodes adding in protocol version 12 to
+      clients using version 11. (Closes: #458556)
+  * debian/p.../0006-Implement-opcodes-added-in-version-12-in-the-tunnel.patch
+    - Added. Add dummy implementations of the opcodes added in protocol
+    version 12.
+  * debian/patches/0004-Force-module-tunnel-to-use-protocol-version-11.patch
+    - Removed. Obsoleted by the two previous patches
+  * debian/p.../0005-make-sure-to-create-.pulse-before-using-any-config.patch
+    - Renamed to 0004-make-sure-to-create-.pulse-before-using-any-config.patch
+  * debian/p.../0007-Change-config-to-not-fail-if-loading-of-esd-gconf-o.patch
+    - Added. Don't fail to load if esd, gconf or x11-publish fail.
+      (Closes: 456590, #456505)
+  * debian/patches/0008-Fix-compilation-on-non-linux-platforms.patch
+    - Added. Fixes compliation on non-linux platforms such as GNU/kFreeBSD.
+    Thanks to Aurelien Jarno for the patch (Closes: #454197)
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Fri, 04 Jan 2008 16:12:27 +0100
+
+pulseaudio (0.9.8-1) unstable; urgency=low
+
+  [ CJ van den Berg ]
+  * New upstream version.
+  * debian/overrides/pulseaudio: Remove override for setuid-binary.
+  * debian/control:
+    + Change the priority of all -dbg packages to extra.
+    + Stop recommending libao-pulse. libao2 has built-in pulseaudio support.
+    + Make pulseaudio conflict libltdl3 < 1.5.24-1 (Closes: #451638)
+    + Change XS-Vcs-* tags to Vcs-*.
+    + Add libpulsecore5-dbg package.
+    + Rename gstreamer plugin package in recommends.
+    + Add Homepage field.
+    + Bump libpulsecore so version number to 5.
+    + Conflict with all pre libpulsecore split packages.
+  * debian/patches/0002-Fix-pa_readlink-to-put-a-0-in-the-right-location.patch:
+    - Dropped, merged upstream.
+  * debian/p..s/0003-Define-__NR_eventfd-on-arm-if-it-wasn-t-defined-yet.patch:
+    - Dropped, merged upstream.
+  * debian/patches/0002-Double-esound-maximum-sample-size.patch:
+    + Added, from Ubuntu.
+  * debian/p..s/0003-fix-uploading-of-samples-into-PA.-Problem-discovered.patch:
+    + Added, svn commit r2074 from upstream.
+  * debian/patches/0004-Force-module-tunnel-to-use-protocol-version-11.patch:
+    + Added, fixes protocol errors in module-tunnel.
+  * debian/pa..es/0005-make-sure-to-create-.pulse-before-using-any-config.patch:
+    + Added, fixes module-volume-restore so that volumes are restored across
+      daemon restarts.
+  * debian/pulseaudio.manpages: Add manpages default.pa.5, pulse-client.conf.5
+      and pulse-daemon.conf.5
+  * debian/pulseaudio-utils.manpages: Add manpages pabrowse.1, pacat.1,
+      pacmd.1, pactl.1, padsp.1, paplay.1, pasuspender.1 and pax11publish.1
+  * debian/pulseaudio.default: Add a description of the preferred method of
+      running the daemon.
+
+  [Daniel T Chen]
+  * debian/control: Add lsb-base (>= 3) to pulseaudio's dependencies.
+  * debian/pulseaudio.init: LSB-ify.
+
+ -- CJ van den Berg <cj@vdbonline.com>  Thu, 22 Nov 2007 02:33:51 +0100
+
+pulseaudio (0.9.7-3) unstable; urgency=low
+
+  [ CJ van den Berg ]
+  * debian/control: Add depends on -utils to -module-x11. (Closes: #450840)
+
+  [ Sjoerd Simons ]
+  * Set pulseaudio setuid in postinst if the permissions aren't overriden by
+    dpkg-statoverride, instead of having the binary with suid perms in the deb
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Fri, 16 Nov 2007 18:41:28 +0100
+
+pulseaudio (0.9.7-2) unstable; urgency=low
+
+  * Use pulseaudio (<< 0.9.7) instead of pulseaudio (< 0.9.7) in
+    -esound-compat
+  * debian/patches/0002-Fix-pa_readlink-to-put-a-0-in-the-right-location.patch:
+    + Added. Fix pa_readlink to put a \0 directly after the link string. Fixes
+    issues with clients using the alsa compatibility layer
+  * deb/patches/0003-Define-__NR_eventfd-on-arm-if-it-wasn-t-defined-yet.patch:
+    + Added. Define __NR_eventfd. Fixes FTBS on arm, because libc6-dev does
+    define SYS_eventfd but older versions of linux-libc-dev don't define
+    __NR_eventfd yet.
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Sun, 04 Nov 2007 13:53:09 +0100
+
+pulseaudio (0.9.7-1) unstable; urgency=low
+
+  * New Upstream Version. (Closes: #446026, #436409)
+  * Drop all patches. All patches are merged upstream.
+  * debian/control:
+    + Replace ${Source-Version} with ${binary:Version}.
+    + Add XS-Vcs-* tags.
+    + Conflict pulseaudio < 0.9.7 in -esound-compat due to moved manpage.
+  * debian/rules:
+    + Add list-missing to catch new modules
+    + Remove all .la files.
+  * debian/overrides/pulseaudio: Update libpulsecore so version.
+  * debian/pulseaudio.install:
+    + Add new module-default-device-restore.so.
+    + Add new module-suspend-on-idle.so.
+    + Add new module-remap-sink.so.
+    + Add new module-ladspa-sink.so.
+    - Remove module-oss-mmap.so, removed upstream.
+  * debian/pulseaudio-module-x11.install: Add new module-x11-xsmp.so.
+  * debian/pulseaudio-module-zeroconf.install: Add new module-zeroconf-
+      discover.so.
+  * debian/pulseaudio-utils.install: Add pasuspender utility.
+  * debian/pulseaudio-esound-compat.links: Move esd link to pulseaudio-
+      esound-compat.
+  * debian/pulseaudio-esound-compat.manpages: Move esdcompat manpage to
+      pulseaudio-esound-compat.
+  * debian/libpulse0.shlibs: Add minimum version of 0.9.7 to libpulse0 shlibs.
+  * debian/patches:
+    + Added 0001-Set-ESD-socket-to-tmp-.esd-socket-to- match-up-with.patch
+
+ -- CJ van den Berg <cj@vdbonline.com>  Wed, 31 Oct 2007 15:31:44 +0100
+
+pulseaudio (0.9.6-2) unstable; urgency=low
+
+  * debian/control:
+    - Add -dbg packages.
+    - Make libcap-dev and libasound-dev arch specific build deps.
+    - Add recommends gnome-audio to pulseaudio-module-x11. (Closes: #437393)
+    - Make pulseaudio-module-zeroconf recommend avahi-daemon.
+    - Make pulseaudio-utils suggest avahi-daemon. (for pabrowse)
+  * debian/rules:
+    - Generate arch specific install files. (Closes: #430366)
+    - Install init script to start at 25 and stop at 15. (Closes: #428046)
+  * debian/overrides/pulseaudio: Update libpulsecore override to new
+      soversion.
+  * debian/copyright: Update e-mail address for Lennart Poettering.
+  * debian/patches: Reformat patch series. Add two new patches.
+    + 0003-Backported-padsp-improvements-from-upstream-trunk.patch
+    + 0004-New-realtime-safe-and-transport-free-JACK-module.patch
+
+ -- CJ van den Berg <cj@vdbonline.com>  Sun, 02 Sep 2007 20:22:19 +0200
+
+pulseaudio (0.9.6-1) unstable; urgency=low
+
+  * New Upstream Version.
+    + Fix remote DOS vulnerabilities. (CVE-2007-1804)
+    + Add support for suspended alsa sinks and sources.
+    + Correct parameter handling in esdcompat. (Closes: #414355)
+    + Handle ALSA frame size changes. (Closes: #423887)
+    + Don't unload module-hal-detect if HAL doesn't report any devices.
+             (Closes: #395893)
+  * debian/patches: Remove all patches merged upstream.
+    - 02_ifexists_else_endif.dpatch
+    - 03_r1352_firefox_workaround.dpatch
+    - 04_r1373_JavaSound_support.dpatch
+    - 05_t28_wrong-endian-convert.dpatch
+    - 06_pulseaudio-0.9.5-suspend.dpatch
+  * debian/rules: Port to CDBS.
+  * debian/patches: Rework patch series for quilt.
+  * debian/control: Add libatomic-ops-dev to Build-Depends.
+
+ -- CJ van den Berg <cj@vdbonline.com>  Mon, 28 May 2007 00:53:28 +0200
+
+pulseaudio (0.9.5-7) unstable; urgency=low
+
+  * debian/control: Make pulseaudio-module-hal depend on hal, not just
+    libhal. (Closes: #411501)
+
+ -- CJ van den Berg <cj@vdbonline.com>  Mon, 19 Feb 2007 22:11:48 +0100
+
+pulseaudio (0.9.5-6) unstable; urgency=low
+
+  * debian/patches/06_pulseaudio-0.9.5-suspend.dpatch:
+    + Added. Handle -ESTRPIPE correctly.  Allows pulseaudio to survive suspend
+      operations on ALSA devices (e.g. s2disk). Thanks to Tobias Diedrich.
+      (Closes: #406768)
+
+ -- CJ van den Berg <cj@vdbonline.com>  Mon, 12 Feb 2007 11:24:50 +0100
+
+pulseaudio (0.9.5-5) unstable; urgency=low
+
+  * debian/control: Make Build-deps more specific. (Closes: #401111)
+  * debian/pulseaudio.init: Make sure files in /var/run/pulse exist before
+      calling chown and chmod. (Closes: #405869)
+
+ -- CJ van den Berg <cj@vdbonline.com>  Mon,  8 Jan 2007 23:02:53 +0100
+
+pulseaudio (0.9.5-4) unstable; urgency=low
+
+  * Add comment about resampling methods and CPU consumption to
+    README.Debian (Closes: #391455)
+  * debian/patches/03_r1352_firefox_workaround.dpatch:
+    + Added. Fix padsp to work with firefox. Patch created from
+      SVN revision 1352.
+  * debian/patches/04_r1373_JavaSound_support.dpatch:
+    + Added. Fix padsp to work with JavaSound. Patch created from
+      SVN revision 1373.
+  * debian/patches/05_t28_wrong-endian-convert.dpatch:
+    + Added. Add additional sample conversions to sconv.c to support
+      BE <-> LE network audio.
+      Patch from http://www.pulseaudio.org/ticket/28
+
+ -- CJ van den Berg <cj@vdbonline.com>  Wed, 18 Oct 2006 23:10:47 +0200
+
+pulseaudio (0.9.5-3) unstable; urgency=low
+
+  * Add support for .ifexists configuration directive.
+  * Make default.pa use ifexists when loading optional modules.
+  * Recommend instead of Depend on pulseaudio-module-hal. (Closes: #391232)
+  * Recommend libasound2-plugins instead of -plugins-pulse. (Closes: #391254)
+
+ -- CJ van den Berg <cj@vdbonline.com>  Fri,  6 Oct 2006 01:12:05 +0200
+
+pulseaudio (0.9.5-2) unstable; urgency=low
+
+  * Add myself to uploaders
+  * Put libpulse-dev and libpulse0 in the right sections.
+
+ -- Sjoerd Simons <sjoerd@debian.org>  Tue,  3 Oct 2006 15:49:12 +0200
+
+pulseaudio (0.9.5-1) unstable; urgency=low
+
+  * Initial release (Closes: #378626)
+
+ -- CJ van den Berg <cj@vdbonline.com>  Mon, 28 Aug 2006 00:31:10 +0200
+
--- pulseaudio-0.9.15.orig/debian/libpulse-mainloop-glib0.install
+++ pulseaudio-0.9.15/debian/libpulse-mainloop-glib0.install
@@ -0,0 +1 @@
+usr/lib/libpulse-mainloop-glib.so.*
--- pulseaudio-0.9.15.orig/debian/pulseaudio-module-jack.install
+++ pulseaudio-0.9.15/debian/pulseaudio-module-jack.install
@@ -0,0 +1,2 @@
+usr/lib/pulse-*/modules/module-jack-sink.so
+usr/lib/pulse-*/modules/module-jack-source.so
--- pulseaudio-0.9.15.orig/debian/README.Debian
+++ pulseaudio-0.9.15/debian/README.Debian
@@ -0,0 +1,20 @@
+pulseaudio for Debian
+---------------------
+
+The pulseaudio executable is installed suid root. This is the recommended
+configuration as it allows pulseaudio to run with realtime priority. After
+grabbing the realtime capability, pulseaudio drops all other root
+priviledges. Only users in the pulse-rt group are granted realtime
+priviledges in this way. It is highly recommended that all users that will
+be running pulseaudio should be add to the pulse-rt group to prevent
+skipping and dropouts in audio output. You should also enable the
+high-priority option in /etc/pulse/daemon.conf to ensure that pulseaudio is
+started with realtime priority.
+
+PLEASE NOTE: PulseAudio's default configuration uses high quality sample
+rate conversion that may be overly CPU intensive. If PulseAudio's CPU usage
+is unacceptable on your hardware, please change the resample-method option
+in /etc/pulse/daemon.conf to either src-linear or trivial. See daemon.conf
+for more details.
+
+ -- CJ van den Berg <cj@vdbonline.com>, Mon, 28 Aug 2006 00:31:10 +0200
--- pulseaudio-0.9.15.orig/debian/pulseaudio-module-bluetooth.install
+++ pulseaudio-0.9.15/debian/pulseaudio-module-bluetooth.install
@@ -0,0 +1,7 @@
+usr/lib/pulse-*/modules/module-bluetooth-proximity.so
+usr/lib/pulse-*/modules/module-bluetooth-device.so
+usr/lib/pulse-*/modules/module-bluetooth-discover.so
+usr/lib/pulse-*/modules/libbluetooth-ipc.so
+usr/lib/pulse-*/modules/libbluetooth-sbc.so
+usr/lib/pulse-*/modules/libbluetooth-util.so
+usr/lib/pulseaudio/pulse/proximity-helper
--- pulseaudio-0.9.15.orig/debian/pulseaudio.shlibs
+++ pulseaudio-0.9.15/debian/pulseaudio.shlibs
@@ -0,0 +1 @@
+libpulsecore 0.9.15 pulseaudio
--- pulseaudio-0.9.15.orig/debian/pulseaudio-module-zeroconf.install
+++ pulseaudio-0.9.15/debian/pulseaudio-module-zeroconf.install
@@ -0,0 +1,3 @@
+usr/lib/pulse-*/modules/libavahi-wrap.so
+usr/lib/pulse-*/modules/module-zeroconf-discover.so
+usr/lib/pulse-*/modules/module-zeroconf-publish.so
--- pulseaudio-0.9.15.orig/debian/pulseaudio-module-raop.install
+++ pulseaudio-0.9.15/debian/pulseaudio-module-raop.install
@@ -0,0 +1 @@
+usr/lib/pulse-*/modules/*raop*
--- pulseaudio-0.9.15.orig/debian/pulseaudio.install
+++ pulseaudio-0.9.15/debian/pulseaudio.install
@@ -0,0 +1,61 @@
+etc/pulse/default.pa
+etc/pulse/system.pa
+etc/pulse/daemon.conf
+etc/xdg/autostart/pulseaudio.desktop
+usr/bin/pulseaudio
+usr/bin/start-pulseaudio-x11
+usr/lib/pulse-*/modules/libalsa-util.so
+usr/lib/pulse-*/modules/libcli.so
+usr/lib/pulse-*/modules/libprotocol-cli.so
+usr/lib/pulse-*/modules/libprotocol-http.so
+usr/lib/pulse-*/modules/libprotocol-native.so
+usr/lib/pulse-*/modules/libprotocol-simple.so
+usr/lib/pulse-*/modules/librtp.so
+usr/lib/pulse-*/modules/module-alsa-sink.so
+usr/lib/pulse-*/modules/module-alsa-source.so
+usr/lib/pulse-*/modules/module-always-sink.so
+usr/lib/pulse-*/modules/module-console-kit.so
+usr/lib/pulse-*/modules/module-device-restore.so
+usr/lib/pulse-*/modules/module-stream-restore.so
+usr/lib/pulse-*/modules/module-cli-protocol-tcp.so
+usr/lib/pulse-*/modules/module-cli-protocol-unix.so
+usr/lib/pulse-*/modules/module-cli.so
+usr/lib/pulse-*/modules/module-combine.so
+usr/lib/pulse-*/modules/module-default-device-restore.so
+usr/lib/pulse-*/modules/module-detect.so
+usr/lib/pulse-*/modules/module-esound-sink.so
+usr/lib/pulse-*/modules/module-http-protocol-tcp.so
+usr/lib/pulse-*/modules/module-http-protocol-unix.so
+usr/lib/pulse-*/modules/module-ladspa-sink.so
+usr/lib/pulse-*/modules/module-match.so
+usr/lib/pulse-*/modules/module-mmkbd-evdev.so
+usr/lib/pulse-*/modules/module-native-protocol-fd.so
+usr/lib/pulse-*/modules/module-native-protocol-tcp.so
+usr/lib/pulse-*/modules/module-native-protocol-unix.so
+usr/share/lintian/overrides/pulseaudio
+usr/lib/pulse-*/modules/module-null-sink.so
+usr/lib/pulse-*/modules/module-oss.so
+usr/lib/pulse-*/modules/liboss-util.so
+usr/lib/pulse-*/modules/module-pipe-sink.so
+usr/lib/pulse-*/modules/module-pipe-source.so
+usr/lib/pulse-*/modules/module-position-event-sounds.so
+usr/lib/pulse-*/modules/module-remap-sink.so
+usr/lib/pulse-*/modules/module-rescue-streams.so
+usr/lib/pulse-*/modules/module-rtp-recv.so
+usr/lib/pulse-*/modules/module-rtp-send.so
+usr/lib/pulse-*/modules/module-simple-protocol-tcp.so
+usr/lib/pulse-*/modules/module-simple-protocol-unix.so
+usr/lib/pulse-*/modules/module-sine.so
+usr/lib/pulse-*/modules/module-tunnel-sink.so
+usr/lib/pulse-*/modules/module-tunnel-source.so
+usr/lib/pulse-*/modules/module-suspend-on-idle.so
+usr/lib/pulse-*/modules/module-volume-restore.so
+usr/lib/pulse-*/modules/module-alsa-card.so
+usr/lib/pulse-*/modules/module-augment-properties.so
+usr/lib/pulse-*/modules/module-card-restore.so
+usr/lib/pulse-*/modules/module-cork-music-on-phone.so
+usr/lib/pulse-*/modules/module-sine-source.so
+usr/share/man/man5/default.pa.5
+usr/share/locale
+usr/share/PolicyKit/policy/org.pulseaudio.policy
+usr/lib/libpulsecore-*.so
--- pulseaudio-0.9.15.orig/debian/pulseaudio-esound-compat.install
+++ pulseaudio-0.9.15/debian/pulseaudio-esound-compat.install
@@ -0,0 +1,6 @@
+usr/bin/esdcompat
+usr/lib/pulse-*/modules/libprotocol-esound.so
+usr/lib/pulse-*/modules/module-esound-compat-spawnfd.so
+usr/lib/pulse-*/modules/module-esound-compat-spawnpid.so
+usr/lib/pulse-*/modules/module-esound-protocol-tcp.so
+usr/lib/pulse-*/modules/module-esound-protocol-unix.so
--- pulseaudio-0.9.15.orig/debian/pulseaudio-module-x11.install
+++ pulseaudio-0.9.15/debian/pulseaudio-module-x11.install
@@ -0,0 +1,2 @@
+usr/lib/pulse-*/modules/module-x11*.so
+usr/share/lintian/overrides/pulseaudio-module-x11
--- pulseaudio-0.9.15.orig/debian/pulseaudio.init
+++ pulseaudio-0.9.15/debian/pulseaudio.init
@@ -0,0 +1,73 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides:          pulseaudio esound
+# Required-Start:    $remote_fs $syslog dbus
+# Required-Stop:     $remote_fs $syslog dbus
+# Should-Start:      dbus
+# Should-Stop:       dbus
+# Default-Start:     2 3 4 5
+# Default-Stop:      1
+# Short-Description: Start the PulseAudio sound server
+# Description:       System mode startup script for
+#                    the PulseAudio sound server.
+### END INIT INFO
+
+DAEMON=/usr/bin/pulseaudio
+PIDFILE=/var/run/pulse/pid 
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+PULSEAUDIO_SYSTEM_START=0
+DISALLOW_MODULE_LOADING=1
+test -f /etc/default/pulseaudio && . /etc/default/pulseaudio
+
+pulseaudio_start () {
+	test "$PULSEAUDIO_SYSTEM_START" != "1" && exit 0
+	log_begin_msg "Starting PulseAudio Daemon"
+	start-stop-daemon -x $DAEMON -p $PIDFILE --start -- --system --daemonize --high-priority --log-target=syslog --disallow-module-loading=$DISALLOW_MODULE_LOADING
+	status=$?
+	if [ -e /var/run/pulse/.esd_auth ]; then
+		chown pulse:pulse-access /var/run/pulse/.esd_auth
+		chmod 640 /var/run/pulse/.esd_auth
+	fi
+	if [ -e /var/run/pulse/.pulse-cookie ]; then
+		chown pulse:pulse-access /var/run/pulse/.pulse-cookie
+		chmod 640 /var/run/pulse/.pulse-cookie
+	fi
+	log_end_msg ${status}
+}
+
+pulseaudio_stop () {
+	log_begin_msg "Stopping PulseAudio Daemon"
+	start-stop-daemon -p $PIDFILE --stop --retry 5 || echo -n "... pulseaudio is not running"
+	log_end_msg $?
+}
+
+case "$1" in
+	start|stop)
+		pulseaudio_${1}
+		;;
+	restart|reload|force-reload)
+		pulseaudio_stop
+		pulseaudio_start
+		;;
+	force-stop)
+		pulseaudio_stop
+		killall pulseaudio || true
+		sleep 2
+		killall -9 pulseaudio || true
+		;;
+	status)
+		status_of_proc $DAEMON pulseaudio -p $PIDFILE
+		exit $?
+		;;
+	*)
+		echo "Usage: /etc/init.d/pulseaudio {start|stop|force-stop|restart|reload|force-reload|status}"
+		exit 1
+		;;
+esac
+
+exit 0
--- pulseaudio-0.9.15.orig/debian/pulseaudio-esound-compat.manpages
+++ pulseaudio-0.9.15/debian/pulseaudio-esound-compat.manpages
@@ -0,0 +1 @@
+debian/manpages/esdcompat.1
--- pulseaudio-0.9.15.orig/debian/pulseaudio.default
+++ pulseaudio-0.9.15/debian/pulseaudio.default
@@ -0,0 +1,19 @@
+# Start the PulseAudio sound server in system mode.
+# (enables the pulseaudio init script)
+# System mode is not the recommended way to run PulseAudio as it has some
+# limitations (such as no shared memory access) and could potentially allow
+# users to disconnect or redirect each others audio streams. The
+# recommend way to run PulseAudio is as a per-session daemon. For GNOME
+# sessions you can install pulseaudio-esound-compat and GNOME will
+# automatically start PulseAudio on login (if ESD is enabled in
+# System->Preferences->Sound). For other sessions, you can simply start
+# PulseAudio with "pulseaudio --daemonize".
+# 0 = don't start, 1 = start
+PULSEAUDIO_SYSTEM_START=0
+
+# Prevent users from dynamically loading modules into the PulseAudio sound
+# server. Dynamic module loading enhances the flexibilty of the PulseAudio
+# system, but may pose a security risk.
+# 0 = no, 1 = yes
+DISALLOW_MODULE_LOADING=1
+
--- pulseaudio-0.9.15.orig/debian/pulseaudio.postinst
+++ pulseaudio-0.9.15/debian/pulseaudio.postinst
@@ -0,0 +1,48 @@
+#! /bin/sh
+# postinst script for pulseaudio
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+PULSEAUDIO=/usr/bin/pulseaudio
+
+case "$1" in
+  configure)
+    if ! getent passwd pulse >/dev/null; then
+      adduser --disabled-password  --quiet --system \
+        --home /var/run/pulse --no-create-home\
+        --gecos "PulseAudio daemon" --group pulse
+      adduser --quiet pulse audio
+    fi
+    if ! getent group pulse-access >/dev/null; then
+      addgroup --quiet --system pulse-access
+    fi
+    if ! getent group pulse-rt >/dev/null; then
+      addgroup --quiet --system pulse-rt
+    fi
+
+    if ! dpkg-statoverride --list "$PULSEAUDIO" > /dev/null 2>&1; then
+       chmod 4755 "$PULSEAUDIO"
+    fi
+  ;;
+  abort-upgrade|abort-remove|abort-deconfigure)
+  ;;
+  *)
+    echo "postinst called with unknown argument \`$1'" >&2
+    exit 1
+  ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- pulseaudio-0.9.15.orig/debian/rules
+++ pulseaudio-0.9.15/debian/rules
@@ -0,0 +1,45 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/autotools.mk
+include /usr/share/cdbs/1/rules/utils.mk
+include /usr/share/cdbs/1/rules/patchsys-quilt.mk
+
+common-build-arch::
+	grep -v -e alsa -e evdev debian/pulseaudio.install > \
+	    debian/pulseaudio.install.kfreebsd-i386
+	grep -v -e alsa -e evdev debian/pulseaudio.install > \
+	    debian/pulseaudio.install.kfreebsd-amd64
+
+common-install-arch::
+	find $(DEB_DESTDIR) -name "*.la" -delete
+	mkdir -p $(CURDIR)/debian/tmp/usr/share/lintian
+	cp -a $(CURDIR)/debian/overrides $(CURDIR)/debian/tmp/usr/share/lintian
+
+pulseaudio-install-arch::
+	dh_installman --language=C debian/tmp/usr/share/man/man5/default.pa.5
+
+common-binary-post-install-arch:: list-missing
+
+clean::
+	rm -f debian/pulseaudio.install.kfreebsd-i386
+	rm -f debian/pulseaudio.install.kfreebsd-amd64
+
+update-patch-series:
+	mkdir -p $(CURDIR)/debian/patches
+	rm -f $(CURDIR)/debian/patches/*.patch
+	git format-patch -o $(CURDIR)/debian/patches patches ^upstream | \
+		xargs -n 1 basename > $(CURDIR)/debian/patches/series
+	for patch in $$(ls $(CURDIR)/debian/patches/*.patch) ; \
+	do \
+		lines=$$(cat $$patch | wc -l) ; \
+		head -n $$(($$lines - 3)) $$patch > $${patch}.chomped ; \
+		mv $${patch}.chomped $$patch ; \
+	done
+
+DEB_CONFIGURE_EXTRA_FLAGS = --with-realtime-group=pulse-rt
+DEB_DH_MAKESHLIBS_ARGS_ALL = --exclude=usr/lib/pulse-0.9.15/modules
+DEB_DH_SHLIBDEPS_ARGS_libpulse0 = -u -L/dev/null
+DEB_DH_SHLIBDEPS_ARGS_pulseaudio = -u -Ldebian/shlibs_pulseaudio.local
+DEB_DH_INSTALL_ARGS = --sourcedir=$(CURDIR)/debian/tmp
+DEB_UPDATE_RCD_PARAMS = start 25 2 3 4 5 . stop 15 1 .
--- pulseaudio-0.9.15.orig/debian/pulseaudio.manpages
+++ pulseaudio-0.9.15/debian/pulseaudio.manpages
@@ -0,0 +1,3 @@
+debian/manpages/pulseaudio.1
+debian/tmp/usr/share/man/man5/pulse-client.conf.5
+debian/tmp/usr/share/man/man5/pulse-daemon.conf.5
--- pulseaudio-0.9.15.orig/debian/pulseaudio-module-hal.install
+++ pulseaudio-0.9.15/debian/pulseaudio-module-hal.install
@@ -0,0 +1 @@
+usr/lib/pulse-*/modules/module-hal-detect.so
--- pulseaudio-0.9.15.orig/debian/libpulse-browse0.shlibs
+++ pulseaudio-0.9.15/debian/libpulse-browse0.shlibs
@@ -0,0 +1 @@
+libpulse-browse 0 libpulse-browse0 (>= 0.9.8)
--- pulseaudio-0.9.15.orig/debian/pulseaudio-utils.manpages
+++ pulseaudio-0.9.15/debian/pulseaudio-utils.manpages
@@ -0,0 +1,8 @@
+debian/tmp/usr/share/man/man1/pabrowse.1
+debian/tmp/usr/share/man/man1/pacat.1
+debian/tmp/usr/share/man/man1/pacmd.1
+debian/tmp/usr/share/man/man1/pactl.1
+debian/tmp/usr/share/man/man1/padsp.1
+debian/tmp/usr/share/man/man1/paplay.1
+debian/tmp/usr/share/man/man1/pasuspender.1
+debian/tmp/usr/share/man/man1/pax11publish.1
--- pulseaudio-0.9.15.orig/debian/copyright
+++ pulseaudio-0.9.15/debian/copyright
@@ -0,0 +1,413 @@
+This package was debianized by CJ van den Berg <cj@vdbonline.com> on
+Thu, 10 Aug 2006 15:59:43 +0200.
+
+It was downloaded from <http://pulseaudio.org/wiki/DownloadPulseAudio>.
+
+ Upstream Authors
+ ================
+
+ Lennart Poettering <lennart@poettering.net>
+ Pierre Ossman <drzeus@drzeus.cx>,
+     through his employer Cendio <http://www.cendio.com/>
+
+Files: *
+Copyright:
+  Copyright (C) 2004-2009 Lennart Poettering
+  Copyright (C) 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
+License: LGPL-2.1+
+ The upstream license clarifies pretty well that the sources of pulseaudio are
+ LGPL (please see LGPL license grant below), but that some parts will be
+ effectively GPL since they rely on GPL libraries, quoting the upstream
+ LICENSE:
+
+    """All PulseAudio source files are licensed under the GNU Lesser General
+    Public License. (see file LGPL for details)
+
+    However, the server side links to the GPL-only library 'libsamplerate'
+    which practically downgrades the license of the server part to GPL (see
+    file GPL for details), exercising section 3 of the LGPL.
+
+    Hence you should treat the client library ('libpulse') of PulseAudio as
+    being LGPL licensed and the server part ('libpulsecore') as being GPL
+    licensed. Since the PulseAudio daemon and the modules link to
+    'libpulsecore' they are of course also GPL licensed.
+
+    -- Lennart Poettering, April 20th, 2006."""
+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+  /usr/share/common-licenses/LGPL-2.1.
+
+File: src/pulsecore/g711.c
+Copyright:
+ Copyright (C) Sun Microsystems, Inc
+License:
+ This source code is a product of Sun Microsystems, Inc. and is provided
+ for unrestricted use.  Users may copy or modify this source code without
+ charge.
+
+ SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
+ THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+
+ Sun source code is provided with no support and without any obligation on
+ the part of Sun Microsystems, Inc. to assist in its use, correction,
+ modification or enhancement.
+
+ SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
+ INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
+ OR ANY PART THEREOF.
+
+ In no event will Sun Microsystems, Inc. be liable for any lost revenue
+ or profits or other special, indirect and consequential damages, even if
+ Sun has been advised of the possibility of such damages.
+
+Files: src/pulsecore/g711.h
+Copyright:
+ Copyright (C) 2001 Chris Bagwell
+Licence:
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose and without fee is hereby granted, provided
+ that the above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting
+ documentation.  This software is provided "as is" without express or
+ implied warranty.
+
+Files: src/pulsecore/poll.*
+Copyright:
+ Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
+ Copyright (C)1994,96,97,98,99,2000,2001,2004 Free Software Foundation, Inc.
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+Files: src/pulse/utf8.c
+Copyright:
+ Copyright (C) 1999 Tom Tromey
+ Copyright (C) 2000 Red Hat, Inc.
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+Files: src/modules/bluetooth/ipc.*, src/modules/bluetooth/rtp.*
+Copyright:
+ Copyright (C) 2004-2009  Marcel Holtmann <marcel@holtmann.org>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+Files: src/modules/bluetooth/module-bluetooth-{device,discover}.c,
+       src/modules/bluetooth/bluetooth-util.*
+Copyright:
+ Copyright (C) 2008 Joao Paulo Rechi Vita
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2 can be found in
+ /usr/share/common-licenses/LGPL-2.
+
+File: src/modules/bluetooth/proximity-helper.c
+Copyright:
+ Copyright (C) 2000-2001  Qualcomm Incorporated
+ Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com>
+ Copyright (C) 2002-2007  Marcel Holtmann <marcel@holtmann.org>
+License: GPL-2+
+ On Debian systems, the complete text of the GPL-2 can be found in
+ /usr/share/common-licenses/GPL-2.
+
+Files: src/modules/bluetooth/sbc*
+Copyright:
+ Copyright (C) 2004-2009  Marcel Holtmann <marcel@holtmann.org>
+ Copyright (C) 2004-2005  Henryk Ploetz <henryk@ploetzli.ch>
+ Copyright (C) 2005-2006  Brad Midgley <bmidgley@xmission.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+Files: src/pulsecore/dbus-*.*, src/modules/module-hal-detect.c
+Copyright:
+ Copyright 2006 Lennart Poettering
+ Copyright 2006 Shams E. King
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: src/modules/ladspa.h
+Copyright:
+ Copyright (C) 2000-2002 Richard W.E. Furse, Paul Barton-Davis, Stefan
+   Westerfeld.
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+Files: src/modules/module-always-sink.c, src/modules/rtp/rtsp_client.*
+Copyright:
+ Copyright (C) 2008 Colin Guthrie
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+Files: src/modules/module-detect.c
+Copyright:
+ Copyright 2006 Lennart Poettering
+ Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
+ Copyright 2006 Diego Petteno
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+Files: src/modules/roap/*roap*, src/modules/rtp/headerlist.*
+Copyright:
+ Copyright 2005-2007 Lennart Poettering
+ Copyright (C) 2008 Colin Guthrie
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+Files: src/modules/roap/base64.*
+Copyright:
+ Copyright (C) 2008 Colin Guthrie
+ Copyright (C) Kungliga Tekniska Hogskolan
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+Files: src/modules/module-solaris.c
+Copyright:
+ Copyright 2006 Lennart Poettering
+ Copyright 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
+ Copyright 2009 Finn Thain
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+Files: src/modules/reserve.*
+Copyright:
+  Copyright 2009 (C) Lennart Poettering
+License:
+  Permission is hereby granted, free of charge, to any person
+  obtaining a copy of this software and associated documentation files
+  (the "Software"), to deal in the Software without restriction,
+  including without limitation the rights to use, copy, modify, merge,
+  publish, distribute, sublicense, and/or sell copies of the Software,
+  and to permit persons to whom the Software is furnished to do so,
+  subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+
+Files: src/pulsecore/atomic.h
+Copyright:
+ Copyright (C) 2006-2008 Lennart Poettering
+ Copyright (C) 2008 Nokia Corporation
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: src/pulsecore/core-util.c
+Copyright:
+ Copyright (C) 2004-2006 Lennart Poettering
+ Copyright (C) 2004 Joe Marcus Clarke
+ Copyright (C) 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: src/pulsecore/ffmpeg/avcodec.h
+Copyright:
+ Copyright (c) 2001 Fabrice Bellard
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: src/pulsecore/ffmpeg/resample2.c
+Copyright:
+ Copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: src/pulsecore/socket-util.c
+Copyright:
+ Copyright (C) 2004-2006 Lennart Poettering
+ Copyright (C) 2004 Joe Marcus Clarke
+ Copyright (C) 2006-2007 Pierre Ossman <ossman@cendio.se> for Cendio AB
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: man/xmltoman
+Copyright:
+  Copyright (C) 2000-2002 Oliver Kurth <oku@masqmail.cx>
+  Copyright (C) 2003 Lennart Poettering <mzkzygbzna@0pointer.de>
+License: LGPL-2+
+ On Debian systems, the complete text of the LGPL-2 can be found in
+ /usr/share/common-licenses/LGPL-2.
+
+File: po/ca.po
+Copyright:
+  Copyright (C) 2008 Xavier Conde Rueda <xavi.conde@gmail.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/cs.po
+Copyright:
+  Copyright (C) 2008 Petr Kovar <pknbe@volny.cz>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/de.po
+Copyright:
+  Copyright (C) 2008 Fabian Affolter <fab@fedoraproject.org>
+  Copyright (C) 2008 Micha Pietsch <barney@fedoraproject.org>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/el.po
+Copyright:
+  Copyright (C) 2008 Dimitris Glezos <dimitris@glezos.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/es.po
+Copyright:
+  Copyright (C) 2009 Domingo Becker <domingobecker@gmail.com>
+  Copyright (C) 2008 Hector Daniel Cabrera <h.daniel.cabrera@gmail.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/fi.po
+Copyright:
+  Copyright (C) 2009 Timo Jyrinki <timo.jyrinki@iki.fi>
+  Copyright (C) 2009 Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/fr.po
+Copyright:
+  Copyright (C) 2008 Robert-Andre Mauchin <zebob.m@pengzone.org>
+  Copyright (C) 2008 Michael Ughetto <telimektar esraonline com>
+  Copyright (C) 2008 Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/gu.po
+Copyright:
+  Copyright (C) 2009 Sweta Kothari <swkothar@redhat.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/it.po
+Copyright:
+  Copyright (C) 2008 Luca Ferretti <elle.uca@libero.it>
+  Copyright (C) 2009 Milo Casagrande <milo@ubuntu.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/kn.po
+Copyright:
+  Copyright (C) 2009 Shankar Prasad <svenkate@redhat.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/mr.po
+Copyright:
+  Copyright (C) 2009 Sandeep Shedmake <sandeep.shedmake@gmail.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/nl.po
+Copyright:
+  Copyright (C) 2009 Geert Warrink <geert.warrink@onsnet.nu>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/or.po
+Copyright:
+  Copyright (C) 2009 Manoj Kumar Giri <mgiri@redhat.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/pa.po
+Copyright:
+  Copyright (C) 2009 Amanpreet Singh Alam <aalam@users.sf.net>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/pl.po
+Copyright:
+  Copyright (C) 2008 Piotr Drag <piotrdrag@gmail.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/pt_BR.po
+Copyright:
+  Copyright (C) 2008 Fabian Affolter <fab@fedoraproject.org>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/sr.po, po/sr@latin.po
+Copyright:
+  Copyright (C) 2009 Igor Miletic (Игор Милетић) <grejigl-gnomeprevod@yahoo.ca>, 2009.
+  Copyright (C) 2009 Miloš Komarčević <kmilos@gmail.com>, 2009.
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/sv.po
+Copyright:
+  Copyright (C) 2008 Daniel Nylander <po@danielnylander.se>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/ta.po
+Copyright:
+  Copyright (C) 2009 I. Felix <ifelix@redhat.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/te.po
+Copyright:
+  Copyright (C) 2009 Krishna Babu K <kkrothap@redhat.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+File: po/zh_CN.po
+Copyright:
+  Copyright (C) 2008 闫丰刚 (sainry)<sainry@gmail.com>
+License: LGPL-2.1+
+ On Debian systems, the complete text of the LGPL-2.1 can be found in
+ /usr/share/common-licenses/LGPL-2.1.
+
+Files: debian/*
+Copyright:
+  Copyright 2006-2009 Sjoerd Simons <sjoerd@debian.org>
+  Copyright 2006-2008 CJ van den Berg <cj@vdbonline.com>
+License: GPL-2+
+ On Debian systems, the complete text of the GPL-2 can be found in
+  /usr/share/common-licenses/GPL-2.
--- pulseaudio-0.9.15.orig/debian/pulseaudio-module-lirc.install
+++ pulseaudio-0.9.15/debian/pulseaudio-module-lirc.install
@@ -0,0 +1 @@
+usr/lib/pulse-*/modules/module-lirc.so
--- pulseaudio-0.9.15.orig/debian/control
+++ pulseaudio-0.9.15/debian/control
@@ -0,0 +1,430 @@
+Source: pulseaudio
+Section: sound
+Priority: optional
+Maintainer: Pulseaudio maintenance team <pkg-pulseaudio-devel@lists.alioth.debian.org>
+Uploaders: CJ van den Berg <cj@vdbonline.com>, Sjoerd Simons <sjoerd@debian.org>, Andres Salomon <dilinger@debian.org>
+Build-Depends: debhelper (>= 5), cdbs, quilt, m4, libltdl-dev (>= 2.2.6a-2),
+    liboil0.3-dev (>= 0.3.0) | liboil-dev, libsamplerate0-dev,
+    libsndfile1-dev (>= 1.0.10) | libsndfile-dev, libx11-dev,
+    x11proto-core-dev, libxt-dev, libglib2.0-dev,
+    libcap-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386],
+    libasound2-dev (>= 1.0.19) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386],
+    libavahi-client-dev, libjack-dev, libwrap0-dev,
+    liblircclient-dev, libgconf2-dev, libhal-dev, libasyncns-dev,
+    libatomic-ops-dev, libspeexdsp-dev (>= 1.2~rc1),
+    libbluetooth-dev (>= 4.40) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386],
+    libpolkit-dbus-dev, libgdbm-dev, intltool, libgtk2.0-dev, libxtst-dev,
+    libssl-dev
+Standards-Version: 3.8.1
+Vcs-Git: git://git.debian.org/git/pkg-pulseaudio/pulseaudio.git
+Vcs-Browser: http://git.debian.org/?p=pkg-pulseaudio/pulseaudio.git
+Homepage: http://www.pulseaudio.org
+
+Package: pulseaudio
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, adduser,
+  lsb-base (>= 3.2-13), consolekit
+Conflicts: libltdl3 (<< 1.5.24-1)
+Recommends: pulseaudio-module-hal, pulseaudio-module-x11,
+    libasound2-plugins, gstreamer0.10-pulseaudio,
+    pulseaudio-esound-compat
+Suggests: pulseaudio-utils, pavumeter, pavucontrol, paman, paprefs
+Description: PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ These are some of PulseAudio's features:
+ .
+   * High quality software mixing of multiple audio streams with support for
+     more than one sink/source. May be used to combine multiple sound cards
+     into one (with sample rate adjustment).
+ .
+   * Wide range of supported client libraries. ESD, ALSA, oss, libao and
+     GStreamer client applications are supported as-is. Native PulseAudio
+     plug-ins are also available for xmms and mplayer.
+ .
+   * Good low latency behaviour and very accurate latency measurement for
+     playback and recording. Ability to fully synchronize multiple playback
+     streams.
+ .
+   * Network transparency, allowing an application to play back or record
+     audio on a different machine than the one it is running on.
+ .
+   * Extensible plug-in architecture with plug-ins for jackd, multicast-rtp
+     lirc and avahi, just to name a few.
+ .
+ This package contains the daemon and basic module set.
+
+Package: pulseaudio-dbg
+Architecture: any
+Priority: extra
+Section: debug
+Depends: ${misc:Depends}, pulseaudio (= ${binary:Version})
+Description: PulseAudio sound server detached debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains the detached debugging symbols for the daemon and
+ basic module set.
+
+Package: pulseaudio-utils
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: avahi-daemon
+Description: Command line tools for the PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ These tools provide command line access to various features of the
+ PulseAudio sound server. Included tools are:
+ .
+   pabrowse - Browse available PulseAudio servers on the local network.
+   paplay - Playback a WAV file via a PulseAudio sink.
+   pacat - Cat raw audio data to a PulseAudio sink.
+   parec - Cat raw audio data from a PulseAudio source.
+   pacmd - Connect to PulseAudio's built-in command line control interface.
+   pactl - Send a control command to a PulseAudio server.
+   padsp - /dev/dsp wrapper to transparently support OSS applications.
+   pax11publish - Store/retrieve PulseAudio default server/sink/source
+                  settings in the X11 root window.
+
+Package: pulseaudio-utils-dbg
+Architecture: any
+Priority: extra
+Section: debug
+Depends: ${misc:Depends}, pulseaudio-utils (= ${binary:Version})
+Description: PulseAudio command line tools detached debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains detached debugging symbols for the command line tools.
+
+Package: pulseaudio-esound-compat
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Conflicts: esound, pulseaudio (<< 0.9.7)
+Replaces: esound
+Provides: esound
+Description: PulseAudio ESD compatibility layer
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains the ESD compatibility components and enables a
+ PulseAudio sound server to fully replace ESD.
+
+Package: pulseaudio-esound-compat-dbg
+Architecture: any
+Priority: extra
+Section: debug
+Depends: ${misc:Depends}, pulseaudio-esound-compat (= ${binary:Version})
+Description: PulseAudio ESD compatibility layer debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains debugging symbols for the ESD compatibility components.
+
+Package: pulseaudio-module-zeroconf
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Recommends: avahi-daemon
+Description: Zeroconf module for PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This module enables PulseAudio to publish available sinks and sources via
+ zeroconf (aka. Avahi, mdns).
+ .
+ The module is called module-zeroconf-publish.
+
+Package: pulseaudio-module-zeroconf-dbg
+Architecture: any
+Priority: extra
+Section: debug
+Depends: ${misc:Depends}, pulseaudio-module-zeroconf (= ${binary:Version})
+Description: Zeroconf module for PulseAudio sound server debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains detached debugging symbols for the zeroconf module.
+
+Package: pulseaudio-module-hal
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, hal
+Description: HAL device detection module for PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This module enables PulseAudio to detect new sound devices dynamically via
+ the HAL API.
+ .
+ The module is called module-hal-detect.
+
+Package: pulseaudio-module-hal-dbg
+Architecture: any
+Priority: extra
+Section: debug
+Depends: ${misc:Depends}, pulseaudio-module-hal (= ${binary:Version})
+Description: HAL module for PulseAudio sound server debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains debugging symbols for the HAL module for PulseAudio.
+
+Package: pulseaudio-module-jack
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: jackd modules for PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ These modules enables PulseAudio to connect to a jackd daemon.
+ .
+ The modules are called module-jack-sink, module-jack-source.
+
+Package: pulseaudio-module-jack-dbg
+Architecture: any
+Priority: extra
+Section: debug
+Depends: ${misc:Depends}, pulseaudio-module-jack (= ${binary:Version})
+Description: jackd modules for PulseAudio sound server debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains debugging symbols for the PulseAudio jack modules.
+
+Package: pulseaudio-module-lirc
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: lirc module for PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This module enables the volume of a PulseAudio sink to be controlled when
+ buttons of an infrared remote control are pressed (through LIRC).
+ .
+ The module is called module-lirc.
+
+Package: pulseaudio-module-lirc-dbg
+Architecture: any
+Priority: extra
+Section: debug
+Depends: ${misc:Depends}, pulseaudio-module-lirc (= ${binary:Version})
+Description: lirc module for PulseAudio sound server debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains debugging symbols for the PulseAudio lirc module.
+
+Package: pulseaudio-module-gconf
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: GConf module for PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This module enables PulseAudio to store additional configuration in GConf.
+ .
+ The module is called module-gconf.
+
+Package: pulseaudio-module-gconf-dbg
+Architecture: any
+Priority: extra
+Section: debug
+Depends: ${misc:Depends}, pulseaudio-module-gconf (= ${binary:Version})
+Description: GConf module for PulseAudio sound server debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains debugging symbols for the PulseAudio GConf module.
+
+Package: pulseaudio-module-raop
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: RAOP module for PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This module enables PulseAudio to stream audio to an Apple Airport Express.
+
+Package: pulseaudio-module-raop-dbg
+Architecture: any
+Priority: extra
+Section: debug
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: RAOP module for PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains debugging symbols for the PulseAudio RAOP module.
+
+Package: pulseaudio-module-bluetooth
+Architecture: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
+Priority: extra
+Depends: ${shlibs:Depends}, ${misc:Depends}, bluez (>= 4.40)
+Conflicts: pulseaudio (<< 0.9.14-2)
+Description: Bluetooth module for PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This module enables PulseAudio to work with bluetooth devices, like headset
+ or audio gateway.
+ .
+ The module is called module-bluetooth
+
+Package: pulseaudio-module-bluetooth-dbg
+Architecture: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
+Priority: extra
+Section: debug
+Depends: ${misc:Depends}, pulseaudio-module-bluetooth (= ${binary:Version})
+Description: Bluetooth module for PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains debugging symbols for the PulseAudio bluetooth module.
+
+Package: pulseaudio-module-x11
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, pulseaudio-utils
+Recommends: gnome-audio
+Description: X11 module for PulseAudio sound server
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This module enables PulseAudio to publish itself as the default sound
+ server to the X11 root window automatically upon startup. The is also a
+ module to playback a sound file in place of the X11 bell beep.
+ .
+ The modules are called module-x11-publish and module-x11-bell.
+
+Package: pulseaudio-module-x11-dbg
+Architecture: any
+Priority: extra
+Section: debug
+Depends: ${misc:Depends}, pulseaudio-module-x11 (= ${binary:Version})
+Description: X11 module for PulseAudio sound server debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains debugging symbols for the PulseAudio X11 modules.
+
+Package: libpulse0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Breaks: pavucontrol (<< 0.9.8)
+Suggests: pulseaudio
+Description: PulseAudio client libraries
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ Client libraries used by applications that access a PulseAudio sound server
+ via PulseAudio's native interface.
+
+Package: libpulse0-dbg
+Section: debug
+Architecture: any
+Priority: extra
+Depends: ${misc:Depends}, libpulse0 (= ${binary:Version})
+Description: PulseAudio client libraries detached debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains detached debugging symbols for the PulseAudio native
+ interface client libraries.
+
+Package: libpulse-mainloop-glib0
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: PulseAudio client libraries (glib support)
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ Client libraries used by applications that access a PulseAudio sound server
+ via PulseAudio's native interface.
+ .
+ This package adds support for glib2 client applications.
+
+Package: libpulse-mainloop-glib0-dbg
+Section: debug
+Architecture: any
+Priority: extra
+Depends: ${misc:Depends}, libpulse-mainloop-glib0 (= ${binary:Version})
+Description: PulseAudio client libraries (glib support) debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains detached debugging symbols for the PulseAudio native
+ interface glib support client libraries.
+
+Package: libpulse-browse0
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: PulseAudio client libraries (zeroconf support)
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ Client libraries used by applications that access a PulseAudio sound server
+ via PulseAudio's native interface.
+ .
+ This package adds support for zeroconf (aka. Avahi, mdns) discovery of
+ PulseAudio sinks and sources by client applications.
+
+Package: libpulse-browse0-dbg
+Section: debug
+Architecture: any
+Priority: extra
+Depends: ${misc:Depends}, libpulse-browse0 (= ${binary:Version})
+Description: PulseAudio client libraries (zeroconf support) debugging symbols
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ This package contains detached debugging symbols for the PulseAudio native
+ interface zeroconf support client libraries.
+
+Package: libpulse-dev
+Section: libdevel
+Architecture: any
+Depends: ${misc:Depends},
+  libpulse0 (= ${binary:Version}),
+  libpulse-mainloop-glib0 (= ${binary:Version}),
+  libpulse-browse0 (= ${binary:Version}),
+  libx11-dev,
+  x11proto-core-dev,
+  libxt-dev,
+  libglib2.0-dev,
+  libavahi-client-dev
+Description: PulseAudio client development headers and libraries
+ PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+ WIN32 systems. It is a drop in replacement for the ESD sound server with
+ much better latency, mixing/re-sampling quality and overall architecture.
+ .
+ Headers and libraries for developing applications that access a PulseAudio
+ sound server via PulseAudio's native interface.
--- pulseaudio-0.9.15.orig/debian/pulseaudio.postrm
+++ pulseaudio-0.9.15/debian/pulseaudio.postrm
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+if [ "$1" = "purge" ] ; then
+        deluser --quiet --system pulse > /dev/null || true
+        delgroup --quiet --system pulse-access > /dev/null || true
+        delgroup --quiet --system pulse-rt > /dev/null || true
+fi
+
+exit 0
--- pulseaudio-0.9.15.orig/debian/libpulse-dev.install
+++ pulseaudio-0.9.15/debian/libpulse-dev.install
@@ -0,0 +1,6 @@
+usr/lib/libpulse.so
+usr/lib/libpulse-simple.so
+usr/lib/libpulse-browse.so
+usr/lib/libpulse-mainloop-glib.so
+usr/lib/pkgconfig/*
+usr/include/pulse/*
--- pulseaudio-0.9.15.orig/debian/shlibs_pulseaudio.local
+++ pulseaudio-0.9.15/debian/shlibs_pulseaudio.local
@@ -0,0 +1,4 @@
+libpulse 0 libpulse0 (= ${binary:Version})
+libpulse-simple 0 libpulse0 (= ${binary:Version})
+libpulsecommon 0.9.15 libpulse0 (= ${binary:Version})
+libpulse-browse 0 libpulse-browse0 (>= 0.9.8)
--- pulseaudio-0.9.15.orig/debian/patches/0011-man-document-log-related-daemon.conf-options.patch
+++ pulseaudio-0.9.15/debian/patches/0011-man-document-log-related-daemon.conf-options.patch
@@ -0,0 +1,49 @@
+From ba745277dfbffeb0a4aac3bcad8fc74b11bf27d1 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Sun, 7 Jun 2009 00:44:49 +0200
+Subject: [PATCH 11/28] man: document log related daemon.conf options
+
+---
+ man/pulse-daemon.conf.5.xml.in |   21 +++++++++++++++++++--
+ 1 files changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
+index b667291..94ee8fa 100644
+--- a/man/pulse-daemon.conf.5.xml.in
++++ b/man/pulse-daemon.conf.5.xml.in
+@@ -260,9 +260,9 @@ USA.
+     </option>
+ 
+     <option>
+-      <p><opt>default-script-file=</opt> Load the default
++      <p><opt>load-default-script-file=</opt> Load the default
+       configuration script file as specified
+-      in <opt>default-script-file=</opt>. Defaults to "yes".</p>
++      in <opt>default-script-file=</opt>. Defaults to <opt>yes</opt>.</p>
+     </option>
+ 
+   </section>
+@@ -289,6 +289,23 @@ USA.
+       might alter this setting.</p>
+     </option>
+ 
++    <option>
++      <p><opt>log-meta=</opt> With each logged message log the code
++      location the message was generated from. Defaults to
++      <opt>no</opt>.</p>
++    </option>
++
++    <option>
++      <p><opt>log-time=</opt> With each logged messages log the
++      relative time since startup. Defaults to <opt>no</opt>.</p>
++    </option>
++
++    <option>
++      <p><opt>log-backtrace=</opt> When greater than 0, with each
++      logged message log a code stack trace up the the specified
++      number of stack frames. Defaults to <opt>0</opt>.</p>
++    </option>
++
+   </section>
+ 
+   <section name="Resource Limits">
--- pulseaudio-0.9.15.orig/debian/patches/0028-alsa-remove-debug-code.patch
+++ pulseaudio-0.9.15/debian/patches/0028-alsa-remove-debug-code.patch
@@ -0,0 +1,22 @@
+From a15f3868f0b645fa07e1555a5c2812516af86b1e Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Sun, 19 Apr 2009 19:25:42 +0200
+Subject: [PATCH 28/28] alsa: remove debug code
+
+---
+ src/modules/alsa/alsa-util.c |    2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
+index 98710d4..aae38bc 100644
+--- a/src/modules/alsa/alsa-util.c
++++ b/src/modules/alsa/alsa-util.c
+@@ -1920,8 +1920,6 @@ const char* pa_alsa_strerror(int errnum) {
+     if ((t = PA_STATIC_TLS_GET(cstrerror)))
+         pa_xfree(t);
+ 
+-    errnum = EINVAL;
+-    PA_DEBUG_TRAP;
+     original = snd_strerror(errnum);
+ 
+     if (!original) {
--- pulseaudio-0.9.15.orig/debian/patches/0018-sample-correctly-pass-s24-32-formats.patch
+++ pulseaudio-0.9.15/debian/patches/0018-sample-correctly-pass-s24-32-formats.patch
@@ -0,0 +1,31 @@
+From 79510a3b15652b04bffbb798221d27e8d16f4ce2 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 1 May 2009 04:12:24 +0200
+Subject: [PATCH 18/28] sample: correctly pass s24-32 formats
+
+---
+ src/pulse/sample.c |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/pulse/sample.c b/src/pulse/sample.c
+index 1e67b03..ed7b1b0 100644
+--- a/src/pulse/sample.c
++++ b/src/pulse/sample.c
+@@ -231,13 +231,13 @@ pa_sample_format_t pa_parse_sample_format(const char *format) {
+     else if (strcasecmp(format, "s24re") == 0)
+         return PA_SAMPLE_S24RE;
+     else if (strcasecmp(format, "s24-32le") == 0)
+-        return PA_SAMPLE_S24LE;
++        return PA_SAMPLE_S24_32LE;
+     else if (strcasecmp(format, "s24-32be") == 0)
+-        return PA_SAMPLE_S24BE;
++        return PA_SAMPLE_S24_32BE;
+     else if (strcasecmp(format, "s24-32ne") == 0 || strcasecmp(format, "s24-32") == 0)
+-        return PA_SAMPLE_S24NE;
++        return PA_SAMPLE_S24_32NE;
+     else if (strcasecmp(format, "s24-32re") == 0)
+-        return PA_SAMPLE_S24RE;
++        return PA_SAMPLE_S24_32RE;
+ 
+     return -1;
+ }
--- pulseaudio-0.9.15.orig/debian/patches/0026-sample-fix-build-on-BE-archs.patch
+++ pulseaudio-0.9.15/debian/patches/0026-sample-fix-build-on-BE-archs.patch
@@ -0,0 +1,22 @@
+From 85fb360fe3b9d3b3fb4e537373f4dc9202ca5e13 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 8 Jun 2009 18:22:19 +0200
+Subject: [PATCH 26/28] sample: fix build on BE archs
+
+---
+ src/pulsecore/sample-util.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c
+index dda3883..5b8ccf5 100644
+--- a/src/pulsecore/sample-util.c
++++ b/src/pulsecore/sample-util.c
+@@ -1182,7 +1182,7 @@ pa_memchunk* pa_silence_memchunk_get(pa_silence_cache *cache, pa_mempool *pool,
+             case PA_SAMPLE_S24LE:
+             case PA_SAMPLE_S24BE:
+             case PA_SAMPLE_S24_32LE:
+-            case PA_SAMPLE_S24_32RE:
++            case PA_SAMPLE_S24_32BE:
+             case PA_SAMPLE_FLOAT32LE:
+             case PA_SAMPLE_FLOAT32BE:
+                 cache->blocks[PA_SAMPLE_S16LE] = b = silence_memblock_new(pool, 0);
--- pulseaudio-0.9.15.orig/debian/patches/0012-man-document-that-tsched-doesn-t-use-fragment-settin.patch
+++ pulseaudio-0.9.15/debian/patches/0012-man-document-that-tsched-doesn-t-use-fragment-settin.patch
@@ -0,0 +1,23 @@
+From b8219d533e631a5e574e7d7a060b44723a951dd9 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Sun, 7 Jun 2009 00:45:21 +0200
+Subject: [PATCH 12/28] man: document that tsched doesn't use fragment settings
+
+---
+ man/pulse-daemon.conf.5.xml.in |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
+index 94ee8fa..1622f23 100644
+--- a/man/pulse-daemon.conf.5.xml.in
++++ b/man/pulse-daemon.conf.5.xml.in
+@@ -413,7 +413,8 @@ USA.
+     these buffer metrics for machines with high scheduling
+     latencies. Not all possible values that may be configured here are
+     available in all hardware. The driver will to find the nearest
+-    setting supported.</p>
++    setting supported. Modern drivers that support timer-based
++    scheduling ignore these options.</p>
+ 
+     <option>
+       <p><opt>default-fragments=</opt> The default number of
--- pulseaudio-0.9.15.orig/debian/patches/0002-util-if-NULL-is-passed-to-pa_path_get_filename-just-.patch
+++ pulseaudio-0.9.15/debian/patches/0002-util-if-NULL-is-passed-to-pa_path_get_filename-just-.patch
@@ -0,0 +1,37 @@
+From 876624e3147cf3deac847b11bde4b04988971eee Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Sun, 19 Apr 2009 19:02:16 +0200
+Subject: [PATCH 02/28] util: if NULL is passed to pa_path_get_filename() just hand it through
+
+---
+ src/pulse/util.c |    3 ++-
+ src/pulse/util.h |    2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/pulse/util.c b/src/pulse/util.c
+index 54a188d..6f1e40a 100644
+--- a/src/pulse/util.c
++++ b/src/pulse/util.c
+@@ -219,7 +219,8 @@ char *pa_get_binary_name(char *s, size_t l) {
+ char *pa_path_get_filename(const char *p) {
+     char *fn;
+ 
+-    pa_assert(p);
++    if (!p)
++        return NULL;
+ 
+     if ((fn = strrchr(p, PA_PATH_SEP_CHAR)))
+         return fn+1;
+diff --git a/src/pulse/util.h b/src/pulse/util.h
+index f6dd40c..ad85653 100644
+--- a/src/pulse/util.h
++++ b/src/pulse/util.h
+@@ -51,7 +51,7 @@ char *pa_get_home_dir(char *s, size_t l);
+ char *pa_get_binary_name(char *s, size_t l);
+ 
+ /** Return a pointer to the filename inside a path (which is the last
+- * component). */
++ * component). If passed NULL will return NULL. */
+ char *pa_path_get_filename(const char *p);
+ 
+ /** Wait t milliseconds */
--- pulseaudio-0.9.15.orig/debian/patches/0007-core-make-sure-soft-mute-status-stays-in-sync-with-h.patch
+++ pulseaudio-0.9.15/debian/patches/0007-core-make-sure-soft-mute-status-stays-in-sync-with-h.patch
@@ -0,0 +1,77 @@
+From f9bfc3780f14df0def0558e9265a89a7526ebb16 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 8 Jun 2009 00:02:15 +0200
+Subject: [PATCH 07/28] core: make sure soft mute status stays in sync with hw mute status
+
+This should close rhbz #494851, mandriva bz #51234.
+
+Probably the same as our own #572, launchpad #352732.
+---
+ src/modules/alsa/alsa-sink.c   |    2 +-
+ src/modules/alsa/alsa-source.c |    2 +-
+ src/pulsecore/sink.c           |    6 +++++-
+ src/pulsecore/source.c         |    6 +++++-
+ 4 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
+index 360cb4d..a544b58 100644
+--- a/src/modules/alsa/alsa-sink.c
++++ b/src/modules/alsa/alsa-sink.c
+@@ -1146,7 +1146,7 @@ fail:
+ 
+ static void sink_get_mute_cb(pa_sink *s) {
+     struct userdata *u = s->userdata;
+-    int err, sw;
++    int err, sw = 0;
+ 
+     pa_assert(u);
+     pa_assert(u->mixer_elem);
+diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
+index 19c6cfc..5d8e349 100644
+--- a/src/modules/alsa/alsa-source.c
++++ b/src/modules/alsa/alsa-source.c
+@@ -1105,7 +1105,7 @@ fail:
+ 
+ static void source_get_mute_cb(pa_source *s) {
+     struct userdata *u = s->userdata;
+-    int err, sw;
++    int err, sw = 0;
+ 
+     pa_assert(u);
+     pa_assert(u->mixer_elem);
+diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
+index 30fa557..c99f9a8 100644
+--- a/src/pulsecore/sink.c
++++ b/src/pulsecore/sink.c
+@@ -1272,8 +1272,12 @@ pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) {
+ 
+         pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_MUTE, NULL, 0, NULL) == 0);
+ 
+-        if (old_muted != s->muted)
++        if (old_muted != s->muted) {
+             pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
++
++            /* Make sure the soft mute status stays in sync */
++            pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MUTE, NULL, 0, NULL) == 0);
++        }
+     }
+ 
+     return s->muted;
+diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
+index 2190250..0baaed1 100644
+--- a/src/pulsecore/source.c
++++ b/src/pulsecore/source.c
+@@ -757,8 +757,12 @@ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) {
+ 
+         pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_GET_MUTE, NULL, 0, NULL) == 0);
+ 
+-        if (old_muted != s->muted)
++        if (old_muted != s->muted) {
+             pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
++
++            /* Make sure the soft mute status stays in sync */
++            pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_MUTE, NULL, 0, NULL) == 0);
++        }
+     }
+ 
+     return s->muted;
--- pulseaudio-0.9.15.orig/debian/patches/0024-core-introduce-pa_-sink-source-_set_fixed_latency.patch
+++ pulseaudio-0.9.15/debian/patches/0024-core-introduce-pa_-sink-source-_set_fixed_latency.patch
@@ -0,0 +1,236 @@
+From c41d9c71667de6d6e9aab077ac58b7371594bbef Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 8 May 2009 01:56:21 +0200
+Subject: [PATCH 24/28] core: introduce pa_{sink,source}_set_fixed_latency()
+
+This allows us to forward the fixed latency directly from the sink to
+the monitor source withut having to wait for pa_sink_put().
+---
+ src/modules/alsa/alsa-sink.c                    |    4 ++--
+ src/modules/alsa/alsa-source.c                  |    4 ++--
+ src/modules/bluetooth/module-bluetooth-device.c |   12 ++++++------
+ src/modules/module-pipe-sink.c                  |    2 +-
+ src/modules/module-pipe-source.c                |    2 +-
+ src/modules/module-sine-source.c                |    3 +--
+ src/modules/oss/module-oss.c                    |    4 ++--
+ src/pulsecore/sink.c                            |   16 ++++++++++++++++
+ src/pulsecore/sink.h                            |    1 +
+ src/pulsecore/source.c                          |   15 +++++++++++++++
+ src/pulsecore/source.h                          |    1 +
+ 11 files changed, 48 insertions(+), 16 deletions(-)
+
+diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
+index a544b58..94e15df 100644
+--- a/src/modules/alsa/alsa-sink.c
++++ b/src/modules/alsa/alsa-sink.c
+@@ -473,7 +473,7 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
+             u->since_start += frames * u->frame_size;
+ 
+ #ifdef DEBUG_TIMING
+-            pa_log_debug("Wrote %lu bytes", (unsigned long) (frames * u->frame_size));
++            pa_log_debug("Wrote %lu bytes (of possible %lu bytes)", (unsigned long) (frames * u->frame_size), (unsigned long) n_bytes);
+ #endif
+ 
+             if ((size_t) frames * u->frame_size >= n_bytes)
+@@ -1730,7 +1730,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
+         pa_log_info("Time scheduling watermark is %0.2fms",
+                     (double) pa_bytes_to_usec(u->tsched_watermark, &ss) / PA_USEC_PER_MSEC);
+     } else
+-        u->sink->fixed_latency = pa_bytes_to_usec(u->hwbuf_size, &ss);
++        pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->hwbuf_size, &ss));
+ 
+     reserve_update(u);
+ 
+diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
+index 5d8e349..c2f905a 100644
+--- a/src/modules/alsa/alsa-source.c
++++ b/src/modules/alsa/alsa-source.c
+@@ -455,7 +455,7 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
+             u->read_count += frames * u->frame_size;
+ 
+ #ifdef DEBUG_TIMING
+-            pa_log_debug("Read %lu bytes", (unsigned long) (frames * u->frame_size));
++            pa_log_debug("Read %lu bytes (of possible %lu bytes)", (unsigned long) (frames * u->frame_size), (unsigned long) n_bytes);
+ #endif
+ 
+             if ((size_t) frames * u->frame_size >= n_bytes)
+@@ -1582,7 +1582,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
+         pa_log_info("Time scheduling watermark is %0.2fms",
+                     (double) pa_bytes_to_usec(u->tsched_watermark, &ss) / PA_USEC_PER_MSEC);
+     } else
+-        u->source->fixed_latency = pa_bytes_to_usec(u->hwbuf_size, &ss);
++        pa_source_set_fixed_latency(u->source, pa_bytes_to_usec(u->hwbuf_size, &ss));
+ 
+     reserve_update(u);
+ 
+diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
+index 90f6486..3465b80 100644
+--- a/src/modules/bluetooth/module-bluetooth-device.c
++++ b/src/modules/bluetooth/module-bluetooth-device.c
+@@ -1608,9 +1608,9 @@ static int add_sink(struct userdata *u) {
+         u->sink->parent.process_msg = sink_process_msg;
+ 
+         pa_sink_set_max_request(u->sink, u->block_size);
+-        u->sink->fixed_latency =
+-            (u->profile == PROFILE_A2DP ? FIXED_LATENCY_PLAYBACK_A2DP : FIXED_LATENCY_PLAYBACK_HSP) +
+-            pa_bytes_to_usec(u->block_size, &u->sample_spec);
++        pa_sink_set_fixed_latency(u->sink,
++                                  (u->profile == PROFILE_A2DP ? FIXED_LATENCY_PLAYBACK_A2DP : FIXED_LATENCY_PLAYBACK_HSP) +
++                                  pa_bytes_to_usec(u->block_size, &u->sample_spec));
+     }
+ 
+     if (u->profile == PROFILE_HSP) {
+@@ -1659,9 +1659,9 @@ static int add_source(struct userdata *u) {
+         u->source->userdata = u;
+         u->source->parent.process_msg = source_process_msg;
+ 
+-        u->source->fixed_latency =
+-            (/* u->profile == PROFILE_A2DP ? FIXED_LATENCY_RECORD_A2DP : */ FIXED_LATENCY_RECORD_HSP) +
+-            pa_bytes_to_usec(u->block_size, &u->sample_spec);
++        pa_source_set_fixed_latency(u->source,
++                                    (/* u->profile == PROFILE_A2DP ? FIXED_LATENCY_RECORD_A2DP : */ FIXED_LATENCY_RECORD_HSP) +
++                                    pa_bytes_to_usec(u->block_size, &u->sample_spec));
+     }
+ 
+     if (u->profile == PROFILE_HSP) {
+diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c
+index 9d3e55d..304d01c 100644
+--- a/src/modules/module-pipe-sink.c
++++ b/src/modules/module-pipe-sink.c
+@@ -293,7 +293,7 @@ int pa__init(pa_module*m) {
+     pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
+     pa_sink_set_rtpoll(u->sink, u->rtpoll);
+     pa_sink_set_max_request(u->sink, PIPE_BUF);
+-    u->sink->fixed_latency = pa_bytes_to_usec(PIPE_BUF, &u->sink->sample_spec);
++    pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(PIPE_BUF, &u->sink->sample_spec));
+ 
+     u->rtpoll_item = pa_rtpoll_item_new(u->rtpoll, PA_RTPOLL_NEVER, 1);
+     pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
+diff --git a/src/modules/module-pipe-source.c b/src/modules/module-pipe-source.c
+index df72d79..6ed4fbf 100644
+--- a/src/modules/module-pipe-source.c
++++ b/src/modules/module-pipe-source.c
+@@ -277,7 +277,7 @@ int pa__init(pa_module*m) {
+ 
+     pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
+     pa_source_set_rtpoll(u->source, u->rtpoll);
+-    u->source->fixed_latency = pa_bytes_to_usec(PIPE_BUF, &u->source->sample_spec);
++    pa_source_set_fixed_latency(u->source, pa_bytes_to_usec(PIPE_BUF, &u->source->sample_spec));
+ 
+     u->rtpoll_item = pa_rtpoll_item_new(u->rtpoll, PA_RTPOLL_NEVER, 1);
+     pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
+diff --git a/src/modules/module-sine-source.c b/src/modules/module-sine-source.c
+index a5f1ce7..a6e15d8 100644
+--- a/src/modules/module-sine-source.c
++++ b/src/modules/module-sine-source.c
+@@ -264,8 +264,7 @@ int pa__init(pa_module*m) {
+ 
+     pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
+     pa_source_set_rtpoll(u->source, u->rtpoll);
+-    u->source->fixed_latency = u->block_usec;
+-
++    pa_source_set_fixed_latency(u->source, u->block_usec);
+ 
+     if (!(u->thread = pa_thread_new(thread_func, u))) {
+         pa_log("Failed to create thread.");
+diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
+index aa5f918..d6f549c 100644
+--- a/src/modules/oss/module-oss.c
++++ b/src/modules/oss/module-oss.c
+@@ -1328,8 +1328,8 @@ int pa__init(pa_module*m) {
+ 
+         pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
+         pa_source_set_rtpoll(u->source, u->rtpoll);
++        pa_source_set_fixed_latency(u->source, pa_bytes_to_usec(u->in_hwbuf_size, &u->source->sample_spec));
+         u->source->refresh_volume = TRUE;
+-        u->source->fixed_latency = pa_bytes_to_usec(u->in_hwbuf_size, &u->source->sample_spec);
+ 
+         if (use_mmap)
+             u->in_mmap_memblocks = pa_xnew0(pa_memblock*, u->in_nfrags);
+@@ -1390,8 +1390,8 @@ int pa__init(pa_module*m) {
+ 
+         pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
+         pa_sink_set_rtpoll(u->sink, u->rtpoll);
++        pa_sink_set_fixed_latency(u->sink, pa_bytes_to_usec(u->out_hwbuf_size, &u->sink->sample_spec));
+         u->sink->refresh_volume = TRUE;
+-        u->sink->fixed_latency = pa_bytes_to_usec(u->out_hwbuf_size, &u->sink->sample_spec);
+ 
+         pa_sink_set_max_request(u->sink, u->out_hwbuf_size);
+ 
+diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
+index c99f9a8..2225886 100644
+--- a/src/pulsecore/sink.c
++++ b/src/pulsecore/sink.c
+@@ -2054,6 +2054,22 @@ void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency,
+     pa_source_set_latency_range_within_thread(s->monitor_source, min_latency, max_latency);
+ }
+ 
++/* Called from main thread, before the sink is put */
++void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency) {
++    pa_sink_assert_ref(s);
++
++    pa_assert(pa_sink_get_state(s) == PA_SINK_INIT);
++
++    if (latency < ABSOLUTE_MIN_LATENCY)
++        latency = ABSOLUTE_MIN_LATENCY;
++
++    if (latency > ABSOLUTE_MAX_LATENCY)
++        latency = ABSOLUTE_MAX_LATENCY;
++
++    s->fixed_latency = latency;
++    pa_source_set_fixed_latency(s->monitor_source, latency);
++}
++
+ /* Called from main context */
+ size_t pa_sink_get_max_rewind(pa_sink *s) {
+     size_t r;
+diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
+index 352282b..e33b3cf 100644
+--- a/src/pulsecore/sink.h
++++ b/src/pulsecore/sink.h
+@@ -229,6 +229,7 @@ void pa_sink_set_rtpoll(pa_sink *s, pa_rtpoll *p);
+ void pa_sink_set_max_rewind(pa_sink *s, size_t max_rewind);
+ void pa_sink_set_max_request(pa_sink *s, size_t max_request);
+ void pa_sink_set_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency);
++void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency);
+ 
+ void pa_sink_detach(pa_sink *s);
+ void pa_sink_attach(pa_sink *s);
+diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
+index 0baaed1..e8deaf7 100644
+--- a/src/pulsecore/source.c
++++ b/src/pulsecore/source.c
+@@ -1280,6 +1280,21 @@ void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_laten
+     pa_source_invalidate_requested_latency(s);
+ }
+ 
++/* Called from main thread, before the source is put */
++void pa_source_set_fixed_latency(pa_source *s, pa_usec_t latency) {
++    pa_source_assert_ref(s);
++
++    pa_assert(pa_source_get_state(s) == PA_SOURCE_INIT);
++
++    if (latency < ABSOLUTE_MIN_LATENCY)
++        latency = ABSOLUTE_MIN_LATENCY;
++
++    if (latency > ABSOLUTE_MAX_LATENCY)
++        latency = ABSOLUTE_MAX_LATENCY;
++
++    s->fixed_latency = latency;
++}
++
+ /* Called from main thread */
+ size_t pa_source_get_max_rewind(pa_source *s) {
+     size_t r;
+diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
+index b502c22..2978f57 100644
+--- a/src/pulsecore/source.h
++++ b/src/pulsecore/source.h
+@@ -210,6 +210,7 @@ void pa_source_set_rtpoll(pa_source *s, pa_rtpoll *p);
+ 
+ void pa_source_set_max_rewind(pa_source *s, size_t max_rewind);
+ void pa_source_set_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency);
++void pa_source_set_fixed_latency(pa_source *s, pa_usec_t latency);
+ 
+ void pa_source_detach(pa_source *s);
+ void pa_source_attach(pa_source *s);
--- pulseaudio-0.9.15.orig/debian/patches/0016-idxset-add-enumeration-macro-PA_IDXSET_FOREACH.patch
+++ pulseaudio-0.9.15/debian/patches/0016-idxset-add-enumeration-macro-PA_IDXSET_FOREACH.patch
@@ -0,0 +1,22 @@
+From bee02ee03fc82f447a358a564a4d922c0f29cfcf Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 29 Apr 2009 01:46:12 +0200
+Subject: [PATCH 16/28] idxset: add enumeration macro PA_IDXSET_FOREACH
+
+---
+ src/pulsecore/idxset.h |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/src/pulsecore/idxset.h b/src/pulsecore/idxset.h
+index 7531ea3..6b9ff47 100644
+--- a/src/pulsecore/idxset.h
++++ b/src/pulsecore/idxset.h
+@@ -103,4 +103,8 @@ unsigned pa_idxset_size(pa_idxset*s);
+ /* Return TRUE of the idxset is empty */
+ pa_bool_t pa_idxset_isempty(pa_idxset *s);
+ 
++
++#define PA_IDXSET_FOREACH(e, s, idx) \
++    for ((e) = pa_idxset_first((s), &(idx)); (e); (e) = pa_idxset_next((s), &(idx)))
++
+ #endif
--- pulseaudio-0.9.15.orig/debian/patches/0003-alsa-don-t-hit-an-assert-when-invalid-module-argumen.patch
+++ pulseaudio-0.9.15/debian/patches/0003-alsa-don-t-hit-an-assert-when-invalid-module-argumen.patch
@@ -0,0 +1,38 @@
+From 6e1f6ca6e2279fdd8601d95419aeeaa29445dd5b Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 1 May 2009 04:11:30 +0200
+Subject: [PATCH 03/28] alsa: don't hit an assert when invalid module arguments are passed
+
+---
+ src/modules/alsa/alsa-sink.c   |    3 ++-
+ src/modules/alsa/alsa-source.c |    3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
+index 2fbcd7b..360cb4d 100644
+--- a/src/modules/alsa/alsa-sink.c
++++ b/src/modules/alsa/alsa-sink.c
+@@ -1770,7 +1770,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
+ 
+ fail:
+ 
+-    userdata_free(u);
++    if (u)
++        userdata_free(u);
+ 
+     return NULL;
+ }
+diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
+index c59fc75..19c6cfc 100644
+--- a/src/modules/alsa/alsa-source.c
++++ b/src/modules/alsa/alsa-source.c
+@@ -1621,7 +1621,8 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
+ 
+ fail:
+ 
+-    userdata_free(u);
++    if (u)
++        userdata_free(u);
+ 
+     return NULL;
+ }
--- pulseaudio-0.9.15.orig/debian/patches/0019-sample-util-fix-iteration-loop-when-adjusting-volume.patch
+++ pulseaudio-0.9.15/debian/patches/0019-sample-util-fix-iteration-loop-when-adjusting-volume.patch
@@ -0,0 +1,37 @@
+From 397f517aafda4efd00532ba7f19e7045aa853c2a Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 1 May 2009 04:14:40 +0200
+Subject: [PATCH 19/28] sample-util: fix iteration loop when adjusting volume of s24 samples
+
+---
+ src/pulsecore/sample-util.c |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c
+index 3a9b384..a3e490b 100644
+--- a/src/pulsecore/sample-util.c
++++ b/src/pulsecore/sample-util.c
+@@ -831,9 +831,9 @@ void pa_volume_memchunk(
+ 
+             calc_linear_integer_volume(linear, volume);
+ 
+-            e = (uint8_t*) ptr + c->length/3;
++            e = (uint8_t*) ptr + c->length;
+ 
+-            for (channel = 0, d = ptr; d < e; d++) {
++            for (channel = 0, d = ptr; d < e; d += 3) {
+                 int64_t t;
+ 
+                 t = (int64_t)((int32_t) (PA_READ24NE(d) << 8));
+@@ -854,9 +854,9 @@ void pa_volume_memchunk(
+ 
+             calc_linear_integer_volume(linear, volume);
+ 
+-            e = (uint8_t*) ptr + c->length/3;
++            e = (uint8_t*) ptr + c->length;
+ 
+-            for (channel = 0, d = ptr; d < e; d++) {
++            for (channel = 0, d = ptr; d < e; d += 3) {
+                 int64_t t;
+ 
+                 t = (int64_t)((int32_t) (PA_READ24RE(d) << 8));
--- pulseaudio-0.9.15.orig/debian/patches/0017-rescue-streams-when-one-stream-move-fails-try-to-con.patch
+++ pulseaudio-0.9.15/debian/patches/0017-rescue-streams-when-one-stream-move-fails-try-to-con.patch
@@ -0,0 +1,45 @@
+From b7eff401100af0de381fba66293d21aca7ff36fa Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 17 Apr 2009 20:30:09 +0200
+Subject: [PATCH 17/28] rescue-streams: when one stream move fails try to continue with the remaining ones
+
+---
+ src/modules/module-rescue-streams.c |   16 ++++++----------
+ 1 files changed, 6 insertions(+), 10 deletions(-)
+
+diff --git a/src/modules/module-rescue-streams.c b/src/modules/module-rescue-streams.c
+index 4f616e0..7c99a9b 100644
+--- a/src/modules/module-rescue-streams.c
++++ b/src/modules/module-rescue-streams.c
+@@ -77,12 +77,10 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user
+     }
+ 
+     while ((i = pa_idxset_first(sink->inputs, NULL))) {
+-        if (pa_sink_input_move_to(i, target, FALSE) < 0) {
++        if (pa_sink_input_move_to(i, target, FALSE) < 0)
+             pa_log_warn("Failed to move sink input %u \"%s\" to %s.", i->index, pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME), target->name);
+-            return PA_HOOK_OK;
+-        }
+-
+-        pa_log_info("Sucessfully moved sink input %u \"%s\" to %s.", i->index, pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME), target->name);
++        else
++            pa_log_info("Sucessfully moved sink input %u \"%s\" to %s.", i->index, pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME), target->name);
+     }
+ 
+ 
+@@ -121,12 +119,10 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void
+     pa_assert(target != source);
+ 
+     while ((o = pa_idxset_first(source->outputs, NULL))) {
+-        if (pa_source_output_move_to(o, target, FALSE) < 0) {
++        if (pa_source_output_move_to(o, target, FALSE) < 0)
+             pa_log_warn("Failed to move source output %u \"%s\" to %s.", o->index, pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME), target->name);
+-            return PA_HOOK_OK;
+-        }
+-
+-        pa_log_info("Sucessfully moved source output %u \"%s\" to %s.", o->index, pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME), target->name);
++        else
++            pa_log_info("Sucessfully moved source output %u \"%s\" to %s.", o->index, pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME), target->name);
+     }
+ 
+ 
--- pulseaudio-0.9.15.orig/debian/patches/0009-log-print-file-name-only-when-we-have-it.patch
+++ pulseaudio-0.9.15/debian/patches/0009-log-print-file-name-only-when-we-have-it.patch
@@ -0,0 +1,22 @@
+From 11c17636d1d6c7eb4d6278869d3fa91715433ab2 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Sun, 19 Apr 2009 19:04:50 +0200
+Subject: [PATCH 09/28] log: print file name only when we have it
+
+---
+ src/pulsecore/log.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/pulsecore/log.c b/src/pulsecore/log.c
+index 60ea9c5..919ebe1 100644
+--- a/src/pulsecore/log.c
++++ b/src/pulsecore/log.c
+@@ -285,7 +285,7 @@ void pa_log_levelv_meta(
+ 
+     if ((_flags & PA_LOG_PRINT_META) && file && line > 0 && func)
+         pa_snprintf(location, sizeof(location), "[%s:%i %s()] ", file, line, func);
+-    else if (_flags & (PA_LOG_PRINT_META|PA_LOG_PRINT_FILE))
++    else if ((_flags & (PA_LOG_PRINT_META|PA_LOG_PRINT_FILE)) && file)
+         pa_snprintf(location, sizeof(location), "%s: ", pa_path_get_filename(file));
+     else
+         location[0] = 0;
--- pulseaudio-0.9.15.orig/debian/patches/0004-alsa-fix-wording-we-are-speaking-of-card-profiles-no.patch
+++ pulseaudio-0.9.15/debian/patches/0004-alsa-fix-wording-we-are-speaking-of-card-profiles-no.patch
@@ -0,0 +1,22 @@
+From b14f2f1aa66e2806849c32e1dbd6d57b19a6d3ee Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 26 May 2009 22:29:33 +0200
+Subject: [PATCH 04/28] alsa: fix wording, we are speaking of card profiles, not output profiles
+
+---
+ src/modules/alsa/module-alsa-card.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
+index fdc952d..dd8636e 100644
+--- a/src/modules/alsa/module-alsa-card.c
++++ b/src/modules/alsa/module-alsa-card.c
+@@ -135,7 +135,7 @@ static void enumerate_cb(
+             bonus += 20000;
+     }
+ 
+-    pa_log_info("Found output profile '%s'", t);
++    pa_log_info("Found profile '%s'", t);
+ 
+     p = pa_card_profile_new(n, t, sizeof(struct profile_data));
+ 
--- pulseaudio-0.9.15.orig/debian/patches/0014-oss-don-t-deadlock-when-we-try-to-resume-an-OSS-devi.patch
+++ pulseaudio-0.9.15/debian/patches/0014-oss-don-t-deadlock-when-we-try-to-resume-an-OSS-devi.patch
@@ -0,0 +1,52 @@
+From 776b0817f79b475c9725b53c185484b5e3ff6fbb Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 26 May 2009 22:30:36 +0200
+Subject: [PATCH 14/28] oss: don't deadlock when we try to resume an OSS device that lacks a mixer
+
+---
+ src/modules/oss/module-oss.c |   11 +++++++----
+ 1 files changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
+index 9f7863f..aa5f918 100644
+--- a/src/modules/oss/module-oss.c
++++ b/src/modules/oss/module-oss.c
+@@ -477,6 +477,7 @@ static void build_pollfd(struct userdata *u) {
+     pollfd->revents = 0;
+ }
+ 
++/* Called from IO context */
+ static int suspend(struct userdata *u) {
+     pa_assert(u);
+     pa_assert(u->fd >= 0);
+@@ -526,6 +527,7 @@ static int suspend(struct userdata *u) {
+     return 0;
+ }
+ 
++/* Called from IO context */
+ static int unsuspend(struct userdata *u) {
+     int m;
+     pa_sample_spec ss, *ss_original;
+@@ -616,10 +618,10 @@ static int unsuspend(struct userdata *u) {
+ 
+     build_pollfd(u);
+ 
+-    if (u->sink)
+-        pa_sink_get_volume(u->sink, TRUE, FALSE);
+-    if (u->source)
+-        pa_source_get_volume(u->source, TRUE);
++    if (u->sink && u->sink->get_volume)
++        u->sink->get_volume(u->sink);
++    if (u->source && u->source->get_volume)
++        u->source->get_volume(u->source);
+ 
+     pa_log_info("Resumed successfully...");
+ 
+@@ -631,6 +633,7 @@ fail:
+     return -1;
+ }
+ 
++/* Called from IO context */
+ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
+     struct userdata *u = PA_SINK(o)->userdata;
+     int ret;
--- pulseaudio-0.9.15.orig/debian/patches/0027-alsa-properly-convert-return-values-of-snd_strerror-.patch
+++ pulseaudio-0.9.15/debian/patches/0027-alsa-properly-convert-return-values-of-snd_strerror-.patch
@@ -0,0 +1,532 @@
+From 42885f1f9743a0e2cd7f1ded1cab688e5df10bc8 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Sun, 19 Apr 2009 19:22:51 +0200
+Subject: [PATCH 27/28] alsa: properly convert return values of snd_strerror() to utf8
+
+---
+ src/modules/alsa/alsa-sink.c        |   28 ++++++------
+ src/modules/alsa/alsa-source.c      |   24 +++++-----
+ src/modules/alsa/alsa-util.c        |   83 ++++++++++++++++++++++++-----------
+ src/modules/alsa/alsa-util.h        |    2 +
+ src/modules/alsa/module-alsa-card.c |    2 +-
+ 5 files changed, 86 insertions(+), 53 deletions(-)
+
+diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
+index 94e15df..44c6219 100644
+--- a/src/modules/alsa/alsa-sink.c
++++ b/src/modules/alsa/alsa-sink.c
+@@ -281,7 +281,7 @@ static int try_recover(struct userdata *u, const char *call, int err) {
+     pa_assert(call);
+     pa_assert(err < 0);
+ 
+-    pa_log_debug("%s: %s", call, snd_strerror(err));
++    pa_log_debug("%s: %s", call, pa_alsa_strerror(err));
+ 
+     pa_assert(err != -EAGAIN);
+ 
+@@ -289,7 +289,7 @@ static int try_recover(struct userdata *u, const char *call, int err) {
+         pa_log_debug("%s: Buffer underrun!", call);
+ 
+     if ((err = snd_pcm_recover(u->pcm_handle, err, 1)) < 0) {
+-        pa_log("%s: %s", call, snd_strerror(err));
++        pa_log("%s: %s", call, pa_alsa_strerror(err));
+         return -1;
+     }
+ 
+@@ -636,12 +636,12 @@ static void update_smoother(struct userdata *u) {
+     /* Let's update the time smoother */
+ 
+     if (PA_UNLIKELY((err = pa_alsa_safe_delay(u->pcm_handle, &delay, u->hwbuf_size, &u->sink->sample_spec)) < 0)) {
+-        pa_log_warn("Failed to query DSP status data: %s", snd_strerror(err));
++        pa_log_warn("Failed to query DSP status data: %s", pa_alsa_strerror(err));
+         return;
+     }
+ 
+     if (PA_UNLIKELY((err = snd_pcm_status(u->pcm_handle, status)) < 0))
+-        pa_log_warn("Failed to get timestamp: %s", snd_strerror(err));
++        pa_log_warn("Failed to get timestamp: %s", pa_alsa_strerror(err));
+     else {
+         snd_htimestamp_t htstamp = { 0, 0 };
+         snd_pcm_status_get_htstamp(status, &htstamp);
+@@ -764,7 +764,7 @@ static int update_sw_params(struct userdata *u) {
+     pa_log_debug("setting avail_min=%lu", (unsigned long) avail_min);
+ 
+     if ((err = pa_alsa_set_sw_params(u->pcm_handle, avail_min)) < 0) {
+-        pa_log("Failed to set software parameters: %s", snd_strerror(err));
++        pa_log("Failed to set software parameters: %s", pa_alsa_strerror(err));
+         return err;
+     }
+ 
+@@ -792,7 +792,7 @@ static int unsuspend(struct userdata *u) {
+                             SND_PCM_NO_AUTO_RESAMPLE|
+                             SND_PCM_NO_AUTO_CHANNELS|
+                             SND_PCM_NO_AUTO_FORMAT)) < 0) {
+-        pa_log("Error opening PCM device %s: %s", u->device_name, snd_strerror(err));
++        pa_log("Error opening PCM device %s: %s", u->device_name, pa_alsa_strerror(err));
+         goto fail;
+     }
+ 
+@@ -803,7 +803,7 @@ static int unsuspend(struct userdata *u) {
+     d = u->use_tsched;
+ 
+     if ((err = pa_alsa_set_hw_params(u->pcm_handle, &ss, &nfrags, &period_size, u->hwbuf_size / u->frame_size, &b, &d, TRUE)) < 0) {
+-        pa_log("Failed to set hardware parameters: %s", snd_strerror(err));
++        pa_log("Failed to set hardware parameters: %s", pa_alsa_strerror(err));
+         goto fail;
+     }
+ 
+@@ -1030,7 +1030,7 @@ static void sink_get_volume_cb(pa_sink *s) {
+     return;
+ 
+ fail:
+-    pa_log_error("Unable to read volume: %s", snd_strerror(err));
++    pa_log_error("Unable to read volume: %s", pa_alsa_strerror(err));
+ }
+ 
+ static void sink_set_volume_cb(pa_sink *s) {
+@@ -1141,7 +1141,7 @@ static void sink_set_volume_cb(pa_sink *s) {
+     return;
+ 
+ fail:
+-    pa_log_error("Unable to set volume: %s", snd_strerror(err));
++    pa_log_error("Unable to set volume: %s", pa_alsa_strerror(err));
+ }
+ 
+ static void sink_get_mute_cb(pa_sink *s) {
+@@ -1152,7 +1152,7 @@ static void sink_get_mute_cb(pa_sink *s) {
+     pa_assert(u->mixer_elem);
+ 
+     if ((err = snd_mixer_selem_get_playback_switch(u->mixer_elem, 0, &sw)) < 0) {
+-        pa_log_error("Unable to get switch: %s", snd_strerror(err));
++        pa_log_error("Unable to get switch: %s", pa_alsa_strerror(err));
+         return;
+     }
+ 
+@@ -1167,7 +1167,7 @@ static void sink_set_mute_cb(pa_sink *s) {
+     pa_assert(u->mixer_elem);
+ 
+     if ((err = snd_mixer_selem_set_playback_switch_all(u->mixer_elem, !s->muted)) < 0) {
+-        pa_log_error("Unable to set switch: %s", snd_strerror(err));
++        pa_log_error("Unable to set switch: %s", pa_alsa_strerror(err));
+         return;
+     }
+ }
+@@ -1206,7 +1206,7 @@ static int process_rewind(struct userdata *u) {
+     pa_log_debug("Requested to rewind %lu bytes.", (unsigned long) rewind_nbytes);
+ 
+     if (PA_UNLIKELY((unused = pa_alsa_safe_avail(u->pcm_handle, u->hwbuf_size, &u->sink->sample_spec)) < 0)) {
+-        pa_log("snd_pcm_avail() failed: %s", snd_strerror((int) unused));
++        pa_log("snd_pcm_avail() failed: %s", pa_alsa_strerror((int) unused));
+         return -1;
+     }
+ 
+@@ -1228,7 +1228,7 @@ static int process_rewind(struct userdata *u) {
+         in_frames = (snd_pcm_sframes_t) (rewind_nbytes / u->frame_size);
+         pa_log_debug("before: %lu", (unsigned long) in_frames);
+         if ((out_frames = snd_pcm_rewind(u->pcm_handle, (snd_pcm_uframes_t) in_frames)) < 0) {
+-            pa_log("snd_pcm_rewind() failed: %s", snd_strerror((int) out_frames));
++            pa_log("snd_pcm_rewind() failed: %s", pa_alsa_strerror((int) out_frames));
+             return -1;
+         }
+         pa_log_debug("after: %lu", (unsigned long) out_frames);
+@@ -1359,7 +1359,7 @@ static void thread_func(void *userdata) {
+             pollfd = pa_rtpoll_item_get_pollfd(u->alsa_rtpoll_item, &n);
+ 
+             if ((err = snd_pcm_poll_descriptors_revents(u->pcm_handle, pollfd, n, &revents)) < 0) {
+-                pa_log("snd_pcm_poll_descriptors_revents() failed: %s", snd_strerror(err));
++                pa_log("snd_pcm_poll_descriptors_revents() failed: %s", pa_alsa_strerror(err));
+                 goto fail;
+             }
+ 
+diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
+index c2f905a..ba29738 100644
+--- a/src/modules/alsa/alsa-source.c
++++ b/src/modules/alsa/alsa-source.c
+@@ -278,7 +278,7 @@ static int try_recover(struct userdata *u, const char *call, int err) {
+     pa_assert(call);
+     pa_assert(err < 0);
+ 
+-    pa_log_debug("%s: %s", call, snd_strerror(err));
++    pa_log_debug("%s: %s", call, pa_alsa_strerror(err));
+ 
+     pa_assert(err != -EAGAIN);
+ 
+@@ -286,7 +286,7 @@ static int try_recover(struct userdata *u, const char *call, int err) {
+         pa_log_debug("%s: Buffer overrun!", call);
+ 
+     if ((err = snd_pcm_recover(u->pcm_handle, err, 1)) < 0) {
+-        pa_log("%s: %s", call, snd_strerror(err));
++        pa_log("%s: %s", call, pa_alsa_strerror(err));
+         return -1;
+     }
+ 
+@@ -606,12 +606,12 @@ static void update_smoother(struct userdata *u) {
+     /* Let's update the time smoother */
+ 
+     if (PA_UNLIKELY((err = pa_alsa_safe_delay(u->pcm_handle, &delay, u->hwbuf_size, &u->source->sample_spec)) < 0)) {
+-        pa_log_warn("Failed to get delay: %s", snd_strerror(err));
++        pa_log_warn("Failed to get delay: %s", pa_alsa_strerror(err));
+         return;
+     }
+ 
+     if (PA_UNLIKELY((err = snd_pcm_status(u->pcm_handle, status)) < 0))
+-        pa_log_warn("Failed to get timestamp: %s", snd_strerror(err));
++        pa_log_warn("Failed to get timestamp: %s", pa_alsa_strerror(err));
+     else {
+         snd_htimestamp_t htstamp = { 0, 0 };
+         snd_pcm_status_get_htstamp(status, &htstamp);
+@@ -721,7 +721,7 @@ static int update_sw_params(struct userdata *u) {
+     pa_log_debug("setting avail_min=%lu", (unsigned long) avail_min);
+ 
+     if ((err = pa_alsa_set_sw_params(u->pcm_handle, avail_min)) < 0) {
+-        pa_log("Failed to set software parameters: %s", snd_strerror(err));
++        pa_log("Failed to set software parameters: %s", pa_alsa_strerror(err));
+         return err;
+     }
+ 
+@@ -747,7 +747,7 @@ static int unsuspend(struct userdata *u) {
+                             SND_PCM_NO_AUTO_RESAMPLE|
+                             SND_PCM_NO_AUTO_CHANNELS|
+                             SND_PCM_NO_AUTO_FORMAT)) < 0) {
+-        pa_log("Error opening PCM device %s: %s", u->device_name, snd_strerror(err));
++        pa_log("Error opening PCM device %s: %s", u->device_name, pa_alsa_strerror(err));
+         goto fail;
+     }
+ 
+@@ -758,7 +758,7 @@ static int unsuspend(struct userdata *u) {
+     d = u->use_tsched;
+ 
+     if ((err = pa_alsa_set_hw_params(u->pcm_handle, &ss, &nfrags, &period_size, u->hwbuf_size / u->frame_size, &b, &d, TRUE)) < 0) {
+-        pa_log("Failed to set hardware parameters: %s", snd_strerror(err));
++        pa_log("Failed to set hardware parameters: %s", pa_alsa_strerror(err));
+         goto fail;
+     }
+ 
+@@ -988,7 +988,7 @@ static void source_get_volume_cb(pa_source *s) {
+     return;
+ 
+ fail:
+-    pa_log_error("Unable to read volume: %s", snd_strerror(err));
++    pa_log_error("Unable to read volume: %s", pa_alsa_strerror(err));
+ }
+ 
+ static void source_set_volume_cb(pa_source *s) {
+@@ -1100,7 +1100,7 @@ static void source_set_volume_cb(pa_source *s) {
+     return;
+ 
+ fail:
+-    pa_log_error("Unable to set volume: %s", snd_strerror(err));
++    pa_log_error("Unable to set volume: %s", pa_alsa_strerror(err));
+ }
+ 
+ static void source_get_mute_cb(pa_source *s) {
+@@ -1111,7 +1111,7 @@ static void source_get_mute_cb(pa_source *s) {
+     pa_assert(u->mixer_elem);
+ 
+     if ((err = snd_mixer_selem_get_capture_switch(u->mixer_elem, 0, &sw)) < 0) {
+-        pa_log_error("Unable to get switch: %s", snd_strerror(err));
++        pa_log_error("Unable to get switch: %s", pa_alsa_strerror(err));
+         return;
+     }
+ 
+@@ -1126,7 +1126,7 @@ static void source_set_mute_cb(pa_source *s) {
+     pa_assert(u->mixer_elem);
+ 
+     if ((err = snd_mixer_selem_set_capture_switch_all(u->mixer_elem, !s->muted)) < 0) {
+-        pa_log_error("Unable to set switch: %s", snd_strerror(err));
++        pa_log_error("Unable to set switch: %s", pa_alsa_strerror(err));
+         return;
+     }
+ }
+@@ -1218,7 +1218,7 @@ static void thread_func(void *userdata) {
+             pollfd = pa_rtpoll_item_get_pollfd(u->alsa_rtpoll_item, &n);
+ 
+             if ((err = snd_pcm_poll_descriptors_revents(u->pcm_handle, pollfd, n, &revents)) < 0) {
+-                pa_log("snd_pcm_poll_descriptors_revents() failed: %s", snd_strerror(err));
++                pa_log("snd_pcm_poll_descriptors_revents() failed: %s", pa_alsa_strerror(err));
+                 goto fail;
+             }
+ 
+diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
+index b3de415..98710d4 100644
+--- a/src/modules/alsa/alsa-util.c
++++ b/src/modules/alsa/alsa-util.c
+@@ -33,6 +33,7 @@
+ #include <pulse/timeval.h>
+ #include <pulse/util.h>
+ #include <pulse/i18n.h>
++#include <pulse/utf8.h>
+ 
+ #include <pulsecore/log.h>
+ #include <pulsecore/macro.h>
+@@ -40,6 +41,7 @@
+ #include <pulsecore/atomic.h>
+ #include <pulsecore/core-error.h>
+ #include <pulsecore/once.h>
++#include <pulsecore/thread.h>
+ 
+ #include "alsa-util.h"
+ 
+@@ -106,7 +108,7 @@ static void io_cb(pa_mainloop_api*a, pa_io_event* e, int fd, pa_io_event_flags_t
+     pa_assert(i != fdl->num_fds);
+ 
+     if ((err = snd_mixer_poll_descriptors_revents(fdl->mixer, fdl->work_fds, fdl->num_fds, &revents)) < 0) {
+-        pa_log_error("Unable to get poll revent: %s", snd_strerror(err));
++        pa_log_error("Unable to get poll revent: %s", pa_alsa_strerror(err));
+         return;
+     }
+ 
+@@ -129,7 +131,7 @@ static void defer_cb(pa_mainloop_api*a, pa_defer_event* e, void *userdata) {
+     a->defer_enable(fdl->defer, 0);
+ 
+     if ((n = snd_mixer_poll_descriptors_count(fdl->mixer)) < 0) {
+-        pa_log("snd_mixer_poll_descriptors_count() failed: %s", snd_strerror(n));
++        pa_log("snd_mixer_poll_descriptors_count() failed: %s", pa_alsa_strerror(n));
+         return;
+     }
+     num_fds = (unsigned) n;
+@@ -146,7 +148,7 @@ static void defer_cb(pa_mainloop_api*a, pa_defer_event* e, void *userdata) {
+     memset(fdl->work_fds, 0, sizeof(struct pollfd) * num_fds);
+ 
+     if ((err = snd_mixer_poll_descriptors(fdl->mixer, fdl->work_fds, num_fds)) < 0) {
+-        pa_log_error("Unable to get poll descriptors: %s", snd_strerror(err));
++        pa_log_error("Unable to get poll descriptors: %s", pa_alsa_strerror(err));
+         return;
+     }
+ 
+@@ -518,42 +520,42 @@ int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min) {
+     snd_pcm_sw_params_alloca(&swparams);
+ 
+     if ((err = snd_pcm_sw_params_current(pcm, swparams) < 0)) {
+-        pa_log_warn("Unable to determine current swparams: %s\n", snd_strerror(err));
++        pa_log_warn("Unable to determine current swparams: %s\n", pa_alsa_strerror(err));
+         return err;
+     }
+ 
+     if ((err = snd_pcm_sw_params_set_period_event(pcm, swparams, 0)) < 0) {
+-        pa_log_warn("Unable to disable period event: %s\n", snd_strerror(err));
++        pa_log_warn("Unable to disable period event: %s\n", pa_alsa_strerror(err));
+         return err;
+     }
+ 
+     if ((err = snd_pcm_sw_params_set_tstamp_mode(pcm, swparams, SND_PCM_TSTAMP_ENABLE)) < 0) {
+-        pa_log_warn("Unable to enable time stamping: %s\n", snd_strerror(err));
++        pa_log_warn("Unable to enable time stamping: %s\n", pa_alsa_strerror(err));
+         return err;
+     }
+ 
+     if ((err = snd_pcm_sw_params_get_boundary(swparams, &boundary)) < 0) {
+-        pa_log_warn("Unable to get boundary: %s\n", snd_strerror(err));
++        pa_log_warn("Unable to get boundary: %s\n", pa_alsa_strerror(err));
+         return err;
+     }
+ 
+     if ((err = snd_pcm_sw_params_set_stop_threshold(pcm, swparams, boundary)) < 0) {
+-        pa_log_warn("Unable to set stop threshold: %s\n", snd_strerror(err));
++        pa_log_warn("Unable to set stop threshold: %s\n", pa_alsa_strerror(err));
+         return err;
+     }
+ 
+     if ((err = snd_pcm_sw_params_set_start_threshold(pcm, swparams, (snd_pcm_uframes_t) -1)) < 0) {
+-        pa_log_warn("Unable to set start threshold: %s\n", snd_strerror(err));
++        pa_log_warn("Unable to set start threshold: %s\n", pa_alsa_strerror(err));
+         return err;
+     }
+ 
+     if ((err = snd_pcm_sw_params_set_avail_min(pcm, swparams, avail_min)) < 0) {
+-        pa_log_error("snd_pcm_sw_params_set_avail_min() failed: %s", snd_strerror(err));
++        pa_log_error("snd_pcm_sw_params_set_avail_min() failed: %s", pa_alsa_strerror(err));
+         return err;
+     }
+ 
+     if ((err = snd_pcm_sw_params(pcm, swparams)) < 0) {
+-        pa_log_warn("Unable to set sw params: %s\n", snd_strerror(err));
++        pa_log_warn("Unable to set sw params: %s\n", pa_alsa_strerror(err));
+         return err;
+     }
+ 
+@@ -942,7 +944,7 @@ snd_pcm_t *pa_alsa_open_by_device_string(
+                                 SND_PCM_NO_AUTO_RESAMPLE|
+                                 SND_PCM_NO_AUTO_CHANNELS|
+                                 (reformat ? 0 : SND_PCM_NO_AUTO_FORMAT))) < 0) {
+-            pa_log_info("Error opening PCM device %s: %s", d, snd_strerror(err));
++            pa_log_info("Error opening PCM device %s: %s", d, pa_alsa_strerror(err));
+             goto fail;
+         }
+ 
+@@ -972,7 +974,7 @@ snd_pcm_t *pa_alsa_open_by_device_string(
+                 continue;
+             }
+ 
+-            pa_log_info("Failed to set hardware parameters on %s: %s", d, snd_strerror(err));
++            pa_log_info("Failed to set hardware parameters on %s: %s", d, pa_alsa_strerror(err));
+             snd_pcm_close(pcm_handle);
+ 
+             goto fail;
+@@ -1088,17 +1090,17 @@ int pa_alsa_prepare_mixer(snd_mixer_t *mixer, const char *dev) {
+     pa_assert(dev);
+ 
+     if ((err = snd_mixer_attach(mixer, dev)) < 0) {
+-        pa_log_info("Unable to attach to mixer %s: %s", dev, snd_strerror(err));
++        pa_log_info("Unable to attach to mixer %s: %s", dev, pa_alsa_strerror(err));
+         return -1;
+     }
+ 
+     if ((err = snd_mixer_selem_register(mixer, NULL, NULL)) < 0) {
+-        pa_log_warn("Unable to register mixer: %s", snd_strerror(err));
++        pa_log_warn("Unable to register mixer: %s", pa_alsa_strerror(err));
+         return -1;
+     }
+ 
+     if ((err = snd_mixer_load(mixer)) < 0) {
+-        pa_log_warn("Unable to load mixer: %s", snd_strerror(err));
++        pa_log_warn("Unable to load mixer: %s", pa_alsa_strerror(err));
+         return -1;
+     }
+ 
+@@ -1224,7 +1226,7 @@ int pa_alsa_find_mixer_and_elem(
+     }
+ 
+     if ((err = snd_mixer_open(&m, 0)) < 0) {
+-        pa_log("Error opening mixer: %s", snd_strerror(err));
++        pa_log("Error opening mixer: %s", pa_alsa_strerror(err));
+         return -1;
+     }
+ 
+@@ -1426,7 +1428,7 @@ void pa_alsa_dump(pa_log_level_t level, snd_pcm_t *pcm) {
+     pa_assert_se(snd_output_buffer_open(&out) == 0);
+ 
+     if ((err = snd_pcm_dump(pcm, out)) < 0)
+-        pa_logl(level, "snd_pcm_dump(): %s", snd_strerror(err));
++        pa_logl(level, "snd_pcm_dump(): %s", pa_alsa_strerror(err));
+     else {
+         char *s = NULL;
+         snd_output_buffer_string(out, &s);
+@@ -1450,7 +1452,7 @@ void pa_alsa_dump_status(snd_pcm_t *pcm) {
+     pa_assert_se(snd_pcm_status(pcm, status) == 0);
+ 
+     if ((err = snd_pcm_status_dump(status, out)) < 0)
+-        pa_log_debug("snd_pcm_dump(): %s", snd_strerror(err));
++        pa_log_debug("snd_pcm_dump(): %s", pa_alsa_strerror(err));
+     else {
+         char *s = NULL;
+         snd_output_buffer_string(out, &s);
+@@ -1612,7 +1614,7 @@ void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm, snd_m
+     snd_pcm_info_alloca(&info);
+ 
+     if ((err = snd_pcm_hw_params_current(pcm, hwparams)) < 0)
+-        pa_log_warn("Error fetching hardware parameter info: %s", snd_strerror(err));
++        pa_log_warn("Error fetching hardware parameter info: %s", pa_alsa_strerror(err));
+     else {
+ 
+         if ((bits = snd_pcm_hw_params_get_sbits(hwparams)) >= 0)
+@@ -1623,7 +1625,7 @@ void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm, snd_m
+         pa_proplist_sets(p, "alsa.mixer_element", snd_mixer_selem_get_name(elem));
+ 
+     if ((err = snd_pcm_info(pcm, info)) < 0)
+-        pa_log_warn("Error fetching PCM info: %s", snd_strerror(err));
++        pa_log_warn("Error fetching PCM info: %s", pa_alsa_strerror(err));
+     else
+         pa_alsa_init_proplist_pcm_info(c, p, info);
+ }
+@@ -1656,14 +1658,14 @@ int pa_alsa_recover_from_poll(snd_pcm_t *pcm, int revents) {
+ 
+         case SND_PCM_STATE_XRUN:
+             if ((err = snd_pcm_recover(pcm, -EPIPE, 1)) != 0) {
+-                pa_log_warn("Could not recover from POLLERR|POLLNVAL|POLLHUP and XRUN: %s", snd_strerror(err));
++                pa_log_warn("Could not recover from POLLERR|POLLNVAL|POLLHUP and XRUN: %s", pa_alsa_strerror(err));
+                 return -1;
+             }
+             break;
+ 
+         case SND_PCM_STATE_SUSPENDED:
+             if ((err = snd_pcm_recover(pcm, -ESTRPIPE, 1)) != 0) {
+-                pa_log_warn("Could not recover from POLLERR|POLLNVAL|POLLHUP and SUSPENDED: %s", snd_strerror(err));
++                pa_log_warn("Could not recover from POLLERR|POLLNVAL|POLLHUP and SUSPENDED: %s", pa_alsa_strerror(err));
+                 return -1;
+             }
+             break;
+@@ -1673,7 +1675,7 @@ int pa_alsa_recover_from_poll(snd_pcm_t *pcm, int revents) {
+             snd_pcm_drop(pcm);
+ 
+             if ((err = snd_pcm_prepare(pcm)) < 0) {
+-                pa_log_warn("Could not recover from POLLERR|POLLNVAL|POLLHUP with snd_pcm_prepare(): %s", snd_strerror(err));
++                pa_log_warn("Could not recover from POLLERR|POLLNVAL|POLLHUP with snd_pcm_prepare(): %s", pa_alsa_strerror(err));
+                 return -1;
+             }
+             break;
+@@ -1690,7 +1692,7 @@ pa_rtpoll_item* pa_alsa_build_pollfd(snd_pcm_t *pcm, pa_rtpoll *rtpoll) {
+     pa_assert(pcm);
+ 
+     if ((n = snd_pcm_poll_descriptors_count(pcm)) < 0) {
+-        pa_log("snd_pcm_poll_descriptors_count() failed: %s", snd_strerror(n));
++        pa_log("snd_pcm_poll_descriptors_count() failed: %s", pa_alsa_strerror(n));
+         return NULL;
+     }
+ 
+@@ -1698,7 +1700,7 @@ pa_rtpoll_item* pa_alsa_build_pollfd(snd_pcm_t *pcm, pa_rtpoll *rtpoll) {
+     pollfd = pa_rtpoll_item_get_pollfd(item, NULL);
+ 
+     if ((err = snd_pcm_poll_descriptors(pcm, pollfd, (unsigned) n)) < 0) {
+-        pa_log("snd_pcm_poll_descriptors() failed: %s", snd_strerror(err));
++        pa_log("snd_pcm_poll_descriptors() failed: %s", pa_alsa_strerror(err));
+         pa_rtpoll_item_free(item);
+         return NULL;
+     }
+@@ -1907,3 +1909,32 @@ pa_bool_t pa_alsa_pcm_is_modem(snd_pcm_t *pcm) {
+ 
+     return snd_pcm_info_get_class(info) == SND_PCM_CLASS_MODEM;
+ }
++
++PA_STATIC_TLS_DECLARE(cstrerror, pa_xfree);
++
++const char* pa_alsa_strerror(int errnum) {
++    const char *original = NULL;
++    char *translated, *t;
++    char errbuf[128];
++
++    if ((t = PA_STATIC_TLS_GET(cstrerror)))
++        pa_xfree(t);
++
++    errnum = EINVAL;
++    PA_DEBUG_TRAP;
++    original = snd_strerror(errnum);
++
++    if (!original) {
++        pa_snprintf(errbuf, sizeof(errbuf), "Unknown error %i", errnum);
++        original = errbuf;
++    }
++
++    if (!(translated = pa_locale_to_utf8(original))) {
++        pa_log_warn("Unable to convert error string to locale, filtering.");
++        translated = pa_utf8_filter(original);
++    }
++
++    PA_STATIC_TLS_SET(cstrerror, translated);
++
++    return translated;
++}
+diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
+index c3a8117..4c5d336 100644
+--- a/src/modules/alsa/alsa-util.h
++++ b/src/modules/alsa/alsa-util.h
+@@ -147,4 +147,6 @@ pa_bool_t pa_alsa_pcm_is_hw(snd_pcm_t *pcm);
+ 
+ pa_bool_t pa_alsa_pcm_is_modem(snd_pcm_t *pcm);
+ 
++const char* pa_alsa_strerror(int errnum);
++
+ #endif
+diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
+index dd8636e..d894b9c 100644
+--- a/src/modules/alsa/module-alsa-card.c
++++ b/src/modules/alsa/module-alsa-card.c
+@@ -304,7 +304,7 @@ int pa__init(pa_module *m) {
+     u->modargs = ma;
+ 
+     if ((alsa_card_index = snd_card_get_index(u->device_id)) < 0) {
+-        pa_log("Card '%s' doesn't exist: %s", u->device_id, snd_strerror(alsa_card_index));
++        pa_log("Card '%s' doesn't exist: %s", u->device_id, pa_alsa_strerror(alsa_card_index));
+         goto fail;
+     }
+ 
--- pulseaudio-0.9.15.orig/debian/patches/0015-simple-protocol-don-t-hit-an-assert-when-we-call-con.patch
+++ pulseaudio-0.9.15/debian/patches/0015-simple-protocol-don-t-hit-an-assert-when-we-call-con.patch
@@ -0,0 +1,22 @@
+From b8e05f113a44f46a91d3343e3e4a1eb15c98e1c9 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 29 Apr 2009 04:13:07 +0200
+Subject: [PATCH 15/28] simple-protocol: don't hit an assert when we call connection_unlink() early
+
+---
+ src/pulsecore/protocol-simple.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/pulsecore/protocol-simple.c b/src/pulsecore/protocol-simple.c
+index 44fe597..776d74b 100644
+--- a/src/pulsecore/protocol-simple.c
++++ b/src/pulsecore/protocol-simple.c
+@@ -130,7 +130,7 @@ static void connection_unlink(connection *c) {
+         c->io = NULL;
+     }
+ 
+-    pa_assert_se(pa_idxset_remove_by_data(c->protocol->connections, c, NULL) == c);
++    pa_idxset_remove_by_data(c->protocol->connections, c, NULL);
+     c->protocol = NULL;
+     connection_unref(c);
+ }
--- pulseaudio-0.9.15.orig/debian/patches/0005-alsa-initialize-buffer-size-before-number-of-periods.patch
+++ pulseaudio-0.9.15/debian/patches/0005-alsa-initialize-buffer-size-before-number-of-periods.patch
@@ -0,0 +1,81 @@
+From 314241e6002e7c78ee87a171ee337be382b3e0d7 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 1 May 2009 04:16:17 +0200
+Subject: [PATCH 05/28] alsa: initialize buffer size before number of periods to improve compat with some backends
+
+---
+ src/modules/alsa/alsa-util.c |   33 ++++++++++++++++++++-------------
+ 1 files changed, 20 insertions(+), 13 deletions(-)
+
+diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
+index 2ea0c3d..34cb6d6 100644
+--- a/src/modules/alsa/alsa-util.c
++++ b/src/modules/alsa/alsa-util.c
+@@ -332,7 +332,6 @@ int pa_alsa_set_hw_params(
+     int ret = -1;
+     snd_pcm_uframes_t _period_size = period_size ? *period_size : 0;
+     unsigned int _periods = periods ? *periods : 0;
+-    snd_pcm_uframes_t buffer_size;
+     unsigned int r = ss->rate;
+     unsigned int c = ss->channels;
+     pa_sample_format_t f = ss->format;
+@@ -388,39 +387,47 @@ int pa_alsa_set_hw_params(
+         goto finish;
+ 
+     if (_period_size && tsched_size && _periods) {
++
+         /* Adjust the buffer sizes, if we didn't get the rate we were asking for */
+         _period_size = (snd_pcm_uframes_t) (((uint64_t) _period_size * r) / ss->rate);
+         tsched_size = (snd_pcm_uframes_t) (((uint64_t) tsched_size * r) / ss->rate);
+ 
+         if (_use_tsched) {
+-            _period_size = tsched_size;
+-            _periods = 1;
++            snd_pcm_uframes_t buffer_size;
+ 
+             pa_assert_se(snd_pcm_hw_params_get_buffer_size_max(hwparams, &buffer_size) == 0);
+             pa_log_debug("Maximum hw buffer size is %u ms", (unsigned) buffer_size * 1000 / r);
++
++            _period_size = tsched_size;
++            _periods = 1;
+         }
+ 
+-        buffer_size = _periods * _period_size;
++        if (_period_size > 0 && _periods > 0) {
++            snd_pcm_uframes_t buffer_size;
++
++            buffer_size = _periods * _period_size;
++
++            if ((ret = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &buffer_size)) < 0)
++                pa_log_info("snd_pcm_hw_params_set_buffer_size_near() failed: %s", pa_alsa_strerror(ret));
++        }
+ 
+         if (_periods > 0) {
+ 
+-            /* First we pass 0 as direction to get exactly what we asked
+-             * for. That this is necessary is presumably a bug in ALSA */
++            /* First we pass 0 as direction to get exactly what we
++             * asked for. That this is necessary is presumably a bug
++             * in ALSA. All in all this is mostly a hint to ALSA, so
++             * we don't care if this fails. */
+ 
+             dir = 0;
+-            if ((ret = snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir)) < 0) {
++            if (snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir) < 0) {
+                 dir = 1;
+-                if ((ret = snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir)) < 0) {
++                if (snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir) < 0) {
+                     dir = -1;
+                     if ((ret = snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &_periods, &dir)) < 0)
+-                        goto finish;
++                        pa_log_info("snd_pcm_hw_params_set_periods_near() failed: %s", pa_alsa_strerror(ret));
+                 }
+             }
+         }
+-
+-        if (_period_size > 0)
+-            if ((ret = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &buffer_size)) < 0)
+-                goto finish;
+     }
+ 
+     if  ((ret = snd_pcm_hw_params(pcm_handle, hwparams)) < 0)
--- pulseaudio-0.9.15.orig/debian/patches/0001-alsa-allow-configuration-of-fallback-device-strings-.patch
+++ pulseaudio-0.9.15/debian/patches/0001-alsa-allow-configuration-of-fallback-device-strings-.patch
@@ -0,0 +1,339 @@
+From 270ab5f0f2c049f842e5b4a7f69c59db84827c5d Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 29 Apr 2009 01:58:18 +0200
+Subject: [PATCH 01/28] alsa: allow configuration of fallback device strings in profiles
+
+This has the benefit that we can properly support ALSA devices where
+only the raw 'hw' device exists but no 'front' although it's a proper
+2ch stereo device.
+---
+ src/modules/alsa/alsa-util.c |  126 +++++++++++++++++++++++++++++------------
+ src/modules/alsa/alsa-util.h |    1 +
+ 2 files changed, 90 insertions(+), 37 deletions(-)
+
+diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
+index d2dc6e8..2ea0c3d 100644
+--- a/src/modules/alsa/alsa-util.c
++++ b/src/modules/alsa/alsa-util.c
+@@ -526,7 +526,7 @@ int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min) {
+ 
+ static const struct pa_alsa_profile_info device_table[] = {
+     {{ 1, { PA_CHANNEL_POSITION_MONO }},
+-     "hw",
++     "hw", NULL,
+      N_("Analog Mono"),
+      "analog-mono",
+      1,
+@@ -534,7 +534,7 @@ static const struct pa_alsa_profile_info device_table[] = {
+      "Capture", "Mic" },
+ 
+     {{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
+-     "front",
++     "front", "hw",
+      N_("Analog Stereo"),
+      "analog-stereo",
+      10,
+@@ -542,7 +542,7 @@ static const struct pa_alsa_profile_info device_table[] = {
+      "Capture", "Mic" },
+ 
+     {{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
+-     "iec958",
++     "iec958", NULL,
+      N_("Digital Stereo (IEC958)"),
+      "iec958-stereo",
+      5,
+@@ -550,7 +550,7 @@ static const struct pa_alsa_profile_info device_table[] = {
+      "IEC958 In", NULL },
+ 
+     {{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
+-     "hdmi",
++     "hdmi", NULL,
+      N_("Digital Stereo (HDMI)"),
+      "hdmi-stereo",
+      4,
+@@ -559,7 +559,7 @@ static const struct pa_alsa_profile_info device_table[] = {
+ 
+     {{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
+             PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }},
+-     "surround40",
++     "surround40", NULL,
+      N_("Analog Surround 4.0"),
+      "analog-surround-40",
+      7,
+@@ -568,7 +568,7 @@ static const struct pa_alsa_profile_info device_table[] = {
+ 
+     {{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
+             PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }},
+-     "a52",
++     "a52", NULL,
+      N_("Digital Surround 4.0 (IEC958/AC3)"),
+      "iec958-ac3-surround-40",
+      2,
+@@ -578,7 +578,7 @@ static const struct pa_alsa_profile_info device_table[] = {
+     {{ 5, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
+             PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
+             PA_CHANNEL_POSITION_LFE }},
+-     "surround41",
++     "surround41", NULL,
+      N_("Analog Surround 4.1"),
+      "analog-surround-41",
+      7,
+@@ -588,7 +588,7 @@ static const struct pa_alsa_profile_info device_table[] = {
+     {{ 5, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
+             PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
+             PA_CHANNEL_POSITION_CENTER }},
+-     "surround50",
++     "surround50", NULL,
+      N_("Analog Surround 5.0"),
+      "analog-surround-50",
+      7,
+@@ -598,7 +598,7 @@ static const struct pa_alsa_profile_info device_table[] = {
+     {{ 6, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
+             PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
+             PA_CHANNEL_POSITION_CENTER, PA_CHANNEL_POSITION_LFE }},
+-     "surround51",
++     "surround51", NULL,
+      N_("Analog Surround 5.1"),
+      "analog-surround-51",
+      8,
+@@ -608,7 +608,7 @@ static const struct pa_alsa_profile_info device_table[] = {
+     {{ 6, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
+             PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
+             PA_CHANNEL_POSITION_FRONT_CENTER, PA_CHANNEL_POSITION_LFE}},
+-     "a52",
++     "a52", NULL,
+      N_("Digital Surround 5.1 (IEC958/AC3)"),
+      "iec958-ac3-surround-51",
+      3,
+@@ -619,16 +619,72 @@ static const struct pa_alsa_profile_info device_table[] = {
+             PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
+             PA_CHANNEL_POSITION_CENTER, PA_CHANNEL_POSITION_LFE,
+             PA_CHANNEL_POSITION_SIDE_LEFT, PA_CHANNEL_POSITION_SIDE_RIGHT }},
+-     "surround71",
++     "surround71", NULL,
+      N_("Analog Surround 7.1"),
+      "analog-surround-71",
+      7,
+      "Master", "PCM",
+      "Capture", "Mic" },
+ 
+-    {{ 0, { 0 }}, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL }
++    {{ 0, { 0 }}, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL }
+ };
+ 
++static snd_pcm_t *open_by_device_string_with_fallback(
++        const char *prefix,
++        const char *prefix_fallback,
++        const char *dev_id,
++        char **dev,
++        pa_sample_spec *ss,
++        pa_channel_map* map,
++        int mode,
++        uint32_t *nfrags,
++        snd_pcm_uframes_t *period_size,
++        snd_pcm_uframes_t tsched_size,
++        pa_bool_t *use_mmap,
++        pa_bool_t *use_tsched,
++        pa_bool_t require_exact_channel_number) {
++
++    snd_pcm_t *pcm_handle;
++    char *d;
++
++    d = pa_sprintf_malloc("%s:%s", prefix, dev_id);
++
++    pcm_handle = pa_alsa_open_by_device_string(
++            d,
++            dev,
++            ss,
++            map,
++            mode,
++            nfrags,
++            period_size,
++            tsched_size,
++            use_mmap,
++            use_tsched,
++            require_exact_channel_number);
++    pa_xfree(d);
++
++    if (!pcm_handle && prefix_fallback) {
++
++        d = pa_sprintf_malloc("%s:%s", prefix_fallback, dev_id);
++
++        pcm_handle = pa_alsa_open_by_device_string(
++                d,
++                dev,
++                ss,
++                map,
++                mode,
++                nfrags,
++                period_size,
++                tsched_size,
++                use_mmap,
++                use_tsched,
++                require_exact_channel_number);
++        pa_xfree(d);
++    }
++
++    return pcm_handle;
++}
++
+ snd_pcm_t *pa_alsa_open_by_device_id_auto(
+         const char *dev_id,
+         char **dev,
+@@ -669,14 +725,14 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
+ 
+             pa_log_debug("Checking for %s (%s)", device_table[i].name, device_table[i].alsa_name);
+ 
+-            d = pa_sprintf_malloc("%s:%s", device_table[i].alsa_name, dev_id);
+-
+             try_ss.channels = device_table[i].map.channels;
+             try_ss.rate = ss->rate;
+             try_ss.format = ss->format;
+ 
+-            pcm_handle = pa_alsa_open_by_device_string(
+-                    d,
++            pcm_handle = open_by_device_string_with_fallback(
++                    device_table[i].alsa_name,
++                    device_table[i].alsa_name_fallback,
++                    dev_id,
+                     dev,
+                     &try_ss,
+                     map,
+@@ -688,8 +744,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
+                     use_tsched,
+                     TRUE);
+ 
+-            pa_xfree(d);
+-
+             if (pcm_handle) {
+ 
+                 *ss = try_ss;
+@@ -701,6 +755,7 @@ snd_pcm_t *pa_alsa_open_by_device_id_auto(
+ 
+                 return pcm_handle;
+             }
++
+         }
+ 
+         if (direction > 0) {
+@@ -773,7 +828,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_profile(
+         pa_bool_t *use_tsched,
+         const pa_alsa_profile_info *profile) {
+ 
+-    char *d;
+     snd_pcm_t *pcm_handle;
+     pa_sample_spec try_ss;
+ 
+@@ -785,14 +839,14 @@ snd_pcm_t *pa_alsa_open_by_device_id_profile(
+     pa_assert(period_size);
+     pa_assert(profile);
+ 
+-    d = pa_sprintf_malloc("%s:%s", profile->alsa_name, dev_id);
+-
+     try_ss.channels = profile->map.channels;
+     try_ss.rate = ss->rate;
+     try_ss.format = ss->format;
+ 
+-    pcm_handle = pa_alsa_open_by_device_string(
+-            d,
++    pcm_handle = open_by_device_string_with_fallback(
++            profile->alsa_name,
++            profile->alsa_name_fallback,
++            dev_id,
+             dev,
+             &try_ss,
+             map,
+@@ -804,8 +858,6 @@ snd_pcm_t *pa_alsa_open_by_device_id_profile(
+             use_tsched,
+             TRUE);
+ 
+-    pa_xfree(d);
+-
+     if (!pcm_handle)
+         return NULL;
+ 
+@@ -858,6 +910,8 @@ snd_pcm_t *pa_alsa_open_by_device_string(
+             goto fail;
+         }
+ 
++        pa_log_debug("Managed to open %s", d);
++
+         if ((err = pa_alsa_set_hw_params(pcm_handle, ss, nfrags, period_size, tsched_size, use_mmap, use_tsched, require_exact_channel_number)) < 0) {
+ 
+             if (!reformat) {
+@@ -926,26 +980,25 @@ int pa_alsa_probe_profiles(
+         snd_pcm_t *pcm_i = NULL;
+ 
+         if (i->alsa_name) {
+-            char *id;
+             pa_sample_spec try_ss;
+             pa_channel_map try_map;
+ 
+             pa_log_debug("Checking for playback on %s (%s)", i->name, i->alsa_name);
+-            id = pa_sprintf_malloc("%s:%s", i->alsa_name, dev_id);
+ 
+             try_ss = *ss;
+             try_ss.channels = i->map.channels;
+             try_map = i->map;
+ 
+-            pcm_i = pa_alsa_open_by_device_string(
+-                    id, NULL,
++            pcm_i = open_by_device_string_with_fallback(
++                    i->alsa_name,
++                    i->alsa_name_fallback,
++                    dev_id,
++                    NULL,
+                     &try_ss, &try_map,
+                     SND_PCM_STREAM_PLAYBACK,
+                     NULL, NULL, 0, NULL, NULL,
+                     TRUE);
+ 
+-            pa_xfree(id);
+-
+             if (!pcm_i)
+                 continue;
+         }
+@@ -954,26 +1007,25 @@ int pa_alsa_probe_profiles(
+             snd_pcm_t *pcm_j = NULL;
+ 
+             if (j->alsa_name) {
+-                char *jd;
+                 pa_sample_spec try_ss;
+                 pa_channel_map try_map;
+ 
+                 pa_log_debug("Checking for capture on %s (%s)", j->name, j->alsa_name);
+-                jd = pa_sprintf_malloc("%s:%s", j->alsa_name, dev_id);
+ 
+                 try_ss = *ss;
+                 try_ss.channels = j->map.channels;
+                 try_map = j->map;
+ 
+-                pcm_j = pa_alsa_open_by_device_string(
+-                        jd, NULL,
++                pcm_j = open_by_device_string_with_fallback(
++                        j->alsa_name,
++                        j->alsa_name_fallback,
++                        dev_id,
++                        NULL,
+                         &try_ss, &try_map,
+                         SND_PCM_STREAM_CAPTURE,
+                         NULL, NULL, 0, NULL, NULL,
+                         TRUE);
+ 
+-                pa_xfree(jd);
+-
+                 if (!pcm_j)
+                     continue;
+             }
+diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
+index c8acc7c..c3a8117 100644
+--- a/src/modules/alsa/alsa-util.h
++++ b/src/modules/alsa/alsa-util.h
+@@ -56,6 +56,7 @@ int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min);
+ typedef struct pa_alsa_profile_info {
+     pa_channel_map map;
+     const char *alsa_name;
++    const char *alsa_name_fallback;
+     const char *description; /* internationalized */
+     const char *name;
+     unsigned priority;
--- pulseaudio-0.9.15.orig/debian/patches/0023-rescue-make-we-don-t-end-up-in-an-endless-loop-when-.patch
+++ pulseaudio-0.9.15/debian/patches/0023-rescue-make-we-don-t-end-up-in-an-endless-loop-when-.patch
@@ -0,0 +1,132 @@
+From 1ab53c43c17943d49fc80c86ef2b513354eddc63 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 14 May 2009 03:52:13 +0200
+Subject: [PATCH 23/28] rescue: make we don't end up in an endless loop when we can't move a sink input
+
+---
+ src/modules/module-rescue-streams.c |   38 +++++++++++++++++++---------------
+ 1 files changed, 21 insertions(+), 17 deletions(-)
+
+diff --git a/src/modules/module-rescue-streams.c b/src/modules/module-rescue-streams.c
+index 7c99a9b..c22711a 100644
+--- a/src/modules/module-rescue-streams.c
++++ b/src/modules/module-rescue-streams.c
+@@ -31,6 +31,7 @@
+ #include <pulsecore/modargs.h>
+ #include <pulsecore/log.h>
+ #include <pulsecore/namereg.h>
++#include <pulsecore/core-util.h>
+ 
+ #include "module-rescue-streams-symdef.h"
+ 
+@@ -49,6 +50,7 @@ struct userdata {
+ 
+ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* userdata) {
+     pa_sink_input *i;
++    uint32_t idx;
+     pa_sink *target;
+ 
+     pa_assert(c);
+@@ -58,15 +60,14 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user
+     if (c->state == PA_CORE_SHUTDOWN)
+         return PA_HOOK_OK;
+ 
+-    if (!pa_idxset_size(sink->inputs)) {
++    if (pa_idxset_size(sink->inputs) <= 0) {
+         pa_log_debug("No sink inputs to move away.");
+         return PA_HOOK_OK;
+     }
+ 
+     if (!(target = pa_namereg_get(c, NULL, PA_NAMEREG_SINK)) || target == sink) {
+-        uint32_t idx;
+ 
+-        for (target = pa_idxset_first(c->sinks, &idx); target; target = pa_idxset_next(c->sinks, &idx))
++        PA_IDXSET_FOREACH(target, c->sinks, idx)
+             if (target != sink)
+                 break;
+ 
+@@ -76,20 +77,24 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user
+         }
+     }
+ 
+-    while ((i = pa_idxset_first(sink->inputs, NULL))) {
++    pa_assert(target != sink);
++
++    PA_IDXSET_FOREACH(i, sink->inputs, idx) {
+         if (pa_sink_input_move_to(i, target, FALSE) < 0)
+-            pa_log_warn("Failed to move sink input %u \"%s\" to %s.", i->index, pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME), target->name);
++            pa_log_info("Failed to move sink input %u \"%s\" to %s.", i->index,
++                        pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+         else
+-            pa_log_info("Sucessfully moved sink input %u \"%s\" to %s.", i->index, pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME), target->name);
++            pa_log_info("Sucessfully moved sink input %u \"%s\" to %s.", i->index,
++                        pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+     }
+ 
+-
+     return PA_HOOK_OK;
+ }
+ 
+ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void* userdata) {
+     pa_source_output *o;
+     pa_source *target;
++    uint32_t idx;
+ 
+     pa_assert(c);
+     pa_assert(source);
+@@ -98,15 +103,14 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void
+     if (c->state == PA_CORE_SHUTDOWN)
+         return PA_HOOK_OK;
+ 
+-    if (!pa_idxset_size(source->outputs)) {
++    if (pa_idxset_size(source->outputs) <= 0) {
+         pa_log_debug("No source outputs to move away.");
+         return PA_HOOK_OK;
+     }
+ 
+     if (!(target = pa_namereg_get(c, NULL, PA_NAMEREG_SOURCE)) || target == source) {
+-        uint32_t idx;
+ 
+-        for (target = pa_idxset_first(c->sources, &idx); target; target = pa_idxset_next(c->sources, &idx))
++        PA_IDXSET_FOREACH(target, c->sources, idx)
+             if (target != source && !target->monitor_of == !source->monitor_of)
+                 break;
+ 
+@@ -118,19 +122,20 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void
+ 
+     pa_assert(target != source);
+ 
+-    while ((o = pa_idxset_first(source->outputs, NULL))) {
++    PA_IDXSET_FOREACH(o, source->outputs, idx) {
+         if (pa_source_output_move_to(o, target, FALSE) < 0)
+-            pa_log_warn("Failed to move source output %u \"%s\" to %s.", o->index, pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME), target->name);
++            pa_log_info("Failed to move source output %u \"%s\" to %s.", o->index,
++                        pa_strnull(pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+         else
+-            pa_log_info("Sucessfully moved source output %u \"%s\" to %s.", o->index, pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME), target->name);
++            pa_log_info("Sucessfully moved source output %u \"%s\" to %s.", o->index,
++                        pa_strnull(pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+     }
+ 
+-
+     return PA_HOOK_OK;
+ }
+ 
+ int pa__init(pa_module*m) {
+-    pa_modargs *ma = NULL;
++    pa_modargs *ma;
+     struct userdata *u;
+ 
+     pa_assert(m);
+@@ -153,10 +158,9 @@ void pa__done(pa_module*m) {
+ 
+     pa_assert(m);
+ 
+-    if (!m->userdata)
++    if (!(u = m->userdata))
+         return;
+ 
+-    u = m->userdata;
+     if (u->sink_slot)
+         pa_hook_slot_free(u->sink_slot);
+     if (u->source_slot)
--- pulseaudio-0.9.15.orig/debian/patches/0010-man-document-24bit-sample-types-in-man-page.patch
+++ pulseaudio-0.9.15/debian/patches/0010-man-document-24bit-sample-types-in-man-page.patch
@@ -0,0 +1,31 @@
+From 4a080c4f93c254c58736728d9b85bbbfc4e4ec9c Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Sun, 7 Jun 2009 00:45:05 +0200
+Subject: [PATCH 10/28] man: document 24bit sample types in man page
+
+---
+ man/pulse-daemon.conf.5.xml.in |   10 ++++++----
+ 1 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
+index 7d184a6..b667291 100644
+--- a/man/pulse-daemon.conf.5.xml.in
++++ b/man/pulse-daemon.conf.5.xml.in
+@@ -364,11 +364,13 @@ USA.
+     <option>
+       <p><opt>default-sample-format=</opt> The default sampling
+       format. Specify one of <opt>u8</opt>, <opt>s16le</opt>,
+-      <opt>s16be</opt>, <opt>s32le</opt>,
+-      <opt>s32be</opt>, <opt>float32le</opt>, <opt>float32be</opt>,
++      <opt>s16be</opt>, <opt>s24le</opt>, <opt>s24be</opt>,
++      <opt>s24-32le</opt>, <opt>s24-32be</opt>, <opt>s32le</opt>,
++      <opt>s32be</opt> <opt>float32le</opt>, <opt>float32be</opt>,
+       <opt>ulaw</opt>, <opt>alaw</opt>. Depending on the endianess of
+-      the CPU the
+-      formats <opt>s16ne</opt>, <opt>s16re</opt>, <opt>s32ne</opt>, <opt>s32re</opt>,
++      the CPU the formats <opt>s16ne</opt>, <opt>s16re</opt>,
++      <opt>s24ne</opt>, <opt>s24re</opt>, <opt>s24-32ne</opt>,
++      <opt>s24-32re</opt>, <opt>s32ne</opt>, <opt>s32re</opt>,
+       <opt>float32ne</opt>, <opt>float32re</opt> (for native,
+       resp. reverse endian) are available as aliases.</p>
+     </option>
--- pulseaudio-0.9.15.orig/debian/patches/0020-sample-util-properly-allocate-silence-block-for-s24-.patch
+++ pulseaudio-0.9.15/debian/patches/0020-sample-util-properly-allocate-silence-block-for-s24-.patch
@@ -0,0 +1,31 @@
+From 55244f7a07335115caf2b9cc57aecc0f8cd08030 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 1 May 2009 04:14:02 +0200
+Subject: [PATCH 20/28] sample-util: properly allocate silence block for s24-32 formats
+
+---
+ src/pulsecore/sample-util.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c
+index a3e490b..dda3883 100644
+--- a/src/pulsecore/sample-util.c
++++ b/src/pulsecore/sample-util.c
+@@ -1181,6 +1181,8 @@ pa_memchunk* pa_silence_memchunk_get(pa_silence_cache *cache, pa_mempool *pool,
+             case PA_SAMPLE_S32BE:
+             case PA_SAMPLE_S24LE:
+             case PA_SAMPLE_S24BE:
++            case PA_SAMPLE_S24_32LE:
++            case PA_SAMPLE_S24_32RE:
+             case PA_SAMPLE_FLOAT32LE:
+             case PA_SAMPLE_FLOAT32BE:
+                 cache->blocks[PA_SAMPLE_S16LE] = b = silence_memblock_new(pool, 0);
+@@ -1189,6 +1191,8 @@ pa_memchunk* pa_silence_memchunk_get(pa_silence_cache *cache, pa_mempool *pool,
+                 cache->blocks[PA_SAMPLE_S32BE] = pa_memblock_ref(b);
+                 cache->blocks[PA_SAMPLE_S24LE] = pa_memblock_ref(b);
+                 cache->blocks[PA_SAMPLE_S24BE] = pa_memblock_ref(b);
++                cache->blocks[PA_SAMPLE_S24_32LE] = pa_memblock_ref(b);
++                cache->blocks[PA_SAMPLE_S24_32BE] = pa_memblock_ref(b);
+                 cache->blocks[PA_SAMPLE_FLOAT32LE] = pa_memblock_ref(b);
+                 cache->blocks[PA_SAMPLE_FLOAT32BE] = pa_memblock_ref(b);
+                 break;
--- pulseaudio-0.9.15.orig/debian/patches/0022-alsa-be-a-bit-more-verbose-when-a-hwparam-call-fails.patch
+++ pulseaudio-0.9.15/debian/patches/0022-alsa-be-a-bit-more-verbose-when-a-hwparam-call-fails.patch
@@ -0,0 +1,118 @@
+From 11a048bd9dbef1a7ea3c79799248bc2d661cee5f Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 14 May 2009 01:25:07 +0200
+Subject: [PATCH 22/28] alsa: be a bit more verbose when a hwparam call fails
+
+---
+ src/modules/alsa/alsa-util.c |   45 ++++++++++++++++++++++++++++++++++-------
+ 1 files changed, 37 insertions(+), 8 deletions(-)
+
+diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
+index 34cb6d6..b3de415 100644
+--- a/src/modules/alsa/alsa-util.c
++++ b/src/modules/alsa/alsa-util.c
+@@ -279,6 +279,11 @@ static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_s
+     if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0)
+         return ret;
+ 
++    pa_log_debug("snd_pcm_hw_params_set_format(%s) failed: %s",
++                 snd_pcm_format_description(format_trans[*f]),
++                 pa_alsa_strerror(ret));
++
++
+     if (*f == PA_SAMPLE_FLOAT32BE)
+         *f = PA_SAMPLE_FLOAT32LE;
+     else if (*f == PA_SAMPLE_FLOAT32LE)
+@@ -305,6 +310,10 @@ static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_s
+     if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0)
+         return ret;
+ 
++    pa_log_debug("snd_pcm_hw_params_set_format(%s) failed: %s",
++                 snd_pcm_format_description(format_trans[*f]),
++                 pa_alsa_strerror(ret));
++
+ try_auto:
+ 
+     for (i = 0; try_order[i] != PA_SAMPLE_INVALID; i++) {
+@@ -312,6 +321,10 @@ try_auto:
+ 
+         if ((ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format_trans[*f])) >= 0)
+             return ret;
++
++        pa_log_debug("snd_pcm_hw_params_set_format(%s) failed: %s",
++                     snd_pcm_format_description(format_trans[*f]),
++                     pa_alsa_strerror(ret));
+     }
+ 
+     return -1;
+@@ -345,11 +358,15 @@ int pa_alsa_set_hw_params(
+ 
+     snd_pcm_hw_params_alloca(&hwparams);
+ 
+-    if ((ret = snd_pcm_hw_params_any(pcm_handle, hwparams)) < 0)
++    if ((ret = snd_pcm_hw_params_any(pcm_handle, hwparams)) < 0) {
++        pa_log_debug("snd_pcm_hw_params_any() failed: %s", pa_alsa_strerror(ret));
+         goto finish;
++    }
+ 
+-    if ((ret = snd_pcm_hw_params_set_rate_resample(pcm_handle, hwparams, 0)) < 0)
++    if ((ret = snd_pcm_hw_params_set_rate_resample(pcm_handle, hwparams, 0)) < 0) {
++        pa_log_debug("snd_pcm_hw_params_set_rate_resample() failed: %s", pa_alsa_strerror(ret));
+         goto finish;
++    }
+ 
+     if (_use_mmap) {
+ 
+@@ -357,14 +374,18 @@ int pa_alsa_set_hw_params(
+ 
+             /* mmap() didn't work, fall back to interleaved */
+ 
+-            if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0)
++            if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
++                pa_log_debug("snd_pcm_hw_params_set_access() failed: %s", pa_alsa_strerror(ret));
+                 goto finish;
++            }
+ 
+             _use_mmap = FALSE;
+         }
+ 
+-    } else if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0)
++    } else if ((ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
++        pa_log_debug("snd_pcm_hw_params_set_access() failed: %s", pa_alsa_strerror(ret));
+         goto finish;
++    }
+ 
+     if (!_use_mmap)
+         _use_tsched = FALSE;
+@@ -372,19 +393,27 @@ int pa_alsa_set_hw_params(
+     if ((ret = set_format(pcm_handle, hwparams, &f)) < 0)
+         goto finish;
+ 
+-    if ((ret = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &r, NULL)) < 0)
++    if ((ret = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &r, NULL)) < 0) {
++        pa_log_debug("snd_pcm_hw_params_set_rate_near() failed: %s", pa_alsa_strerror(ret));
+         goto finish;
++    }
+ 
+     if (require_exact_channel_number) {
+-        if ((ret = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, c)) < 0)
++        if ((ret = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, c)) < 0) {
++            pa_log_debug("snd_pcm_hw_params_set_channels() failed: %s", pa_alsa_strerror(ret));
+             goto finish;
++        }
+     } else {
+-        if ((ret = snd_pcm_hw_params_set_channels_near(pcm_handle, hwparams, &c)) < 0)
++        if ((ret = snd_pcm_hw_params_set_channels_near(pcm_handle, hwparams, &c)) < 0) {
++            pa_log_debug("snd_pcm_hw_params_set_channels_near() failed: %s", pa_alsa_strerror(ret));
+             goto finish;
++        }
+     }
+ 
+-    if ((ret = snd_pcm_hw_params_set_periods_integer(pcm_handle, hwparams)) < 0)
++    if ((ret = snd_pcm_hw_params_set_periods_integer(pcm_handle, hwparams)) < 0) {
++        pa_log_debug("snd_pcm_hw_params_set_periods_integer() failed: %s", pa_alsa_strerror(ret));
+         goto finish;
++    }
+ 
+     if (_period_size && tsched_size && _periods) {
+ 
--- pulseaudio-0.9.15.orig/debian/patches/0006-conf-remove-obsolete-module-idle-time-directive-from.patch
+++ pulseaudio-0.9.15/debian/patches/0006-conf-remove-obsolete-module-idle-time-directive-from.patch
@@ -0,0 +1,40 @@
+From 313ac6bf0f63515ff4754208ca5d2749fe1096a8 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Sun, 7 Jun 2009 00:44:16 +0200
+Subject: [PATCH 06/28] conf: remove obsolete module-idle-time directive from default config file/man page
+
+---
+ man/pulse-daemon.conf.5.xml.in |    7 -------
+ src/daemon/daemon.conf.in      |    1 -
+ 2 files changed, 0 insertions(+), 8 deletions(-)
+
+diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
+index afa7ca0..7d184a6 100644
+--- a/man/pulse-daemon.conf.5.xml.in
++++ b/man/pulse-daemon.conf.5.xml.in
+@@ -228,13 +228,6 @@ USA.
+     </option>
+ 
+     <option>
+-      <p><opt>module-idle-time=</opt> Unload autoloaded modules after
+-      being idle for this time in seconds. Defaults to 20. The
+-      <opt>--module-idle-time</opt> command line option takes
+-      precedence.</p>
+-    </option>
+-
+-    <option>
+       <p><opt>scache-idle-time=</opt> Unload autoloaded sample cache
+       entries after being idle for this time in seconds. Defaults to
+       20. The <opt>--scache-idle-time</opt> command line option takes
+diff --git a/src/daemon/daemon.conf.in b/src/daemon/daemon.conf.in
+index fcd2513..ee71f85 100644
+--- a/src/daemon/daemon.conf.in
++++ b/src/daemon/daemon.conf.in
+@@ -35,7 +35,6 @@
+ ; realtime-priority = 5
+ 
+ ; exit-idle-time = 20
+-; module-idle-time = 20
+ ; scache-idle-time = 20
+ 
+ ; dl-search-path = (depends on architecture)
--- pulseaudio-0.9.15.orig/debian/patches/0013-mutex-when-we-fail-to-fill-in-mutex-into-static-mute.patch
+++ pulseaudio-0.9.15/debian/patches/0013-mutex-when-we-fail-to-fill-in-mutex-into-static-mute.patch
@@ -0,0 +1,22 @@
+From 977f59368ba55fac3fe21d7549bc0552daf07d91 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 21 Apr 2009 21:24:33 +0200
+Subject: [PATCH 13/28] mutex: when we fail to fill in mutex into static mutex ptr free it again
+
+---
+ src/pulsecore/mutex-posix.c |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/src/pulsecore/mutex-posix.c b/src/pulsecore/mutex-posix.c
+index b3e5256..0ff4bee 100644
+--- a/src/pulsecore/mutex-posix.c
++++ b/src/pulsecore/mutex-posix.c
+@@ -153,6 +153,8 @@ pa_mutex* pa_static_mutex_get(pa_static_mutex *s, pa_bool_t recursive, pa_bool_t
+     if ((pa_atomic_ptr_cmpxchg(&s->ptr, NULL, m)))
+         return m;
+ 
++    pa_mutex_free(m);
++
+     /* Him, filling in failed, so someone else must have filled in
+      * already */
+     pa_assert_se(m = pa_atomic_ptr_load(&s->ptr));
--- pulseaudio-0.9.15.orig/debian/patches/0025-core-cache-requested-latency-only-when-we-are-runnin.patch
+++ pulseaudio-0.9.15/debian/patches/0025-core-cache-requested-latency-only-when-we-are-runnin.patch
@@ -0,0 +1,46 @@
+From c73733777f11080373264ed4e992c6860809898e Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 8 May 2009 02:02:36 +0200
+Subject: [PATCH 25/28] core: cache requested latency only when we are running, not while we are still constructing
+
+---
+ src/pulsecore/sink.c   |    7 +++++--
+ src/pulsecore/source.c |    7 +++++--
+ 2 files changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
+index 2225886..161b7c9 100644
+--- a/src/pulsecore/sink.c
++++ b/src/pulsecore/sink.c
+@@ -1867,8 +1867,11 @@ pa_usec_t pa_sink_get_requested_latency_within_thread(pa_sink *s) {
+     if (result != (pa_usec_t) -1)
+         result = PA_CLAMP(result, s->thread_info.min_latency, s->thread_info.max_latency);
+ 
+-    s->thread_info.requested_latency = result;
+-    s->thread_info.requested_latency_valid = TRUE;
++    if (PA_SINK_IS_LINKED(s->thread_info.state)) {
++        /* Only cache if properly initialized */
++        s->thread_info.requested_latency = result;
++        s->thread_info.requested_latency_valid = TRUE;
++    }
+ 
+     return result;
+ }
+diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
+index e8deaf7..8a4c8c4 100644
+--- a/src/pulsecore/source.c
++++ b/src/pulsecore/source.c
+@@ -1122,8 +1122,11 @@ pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s) {
+     if (result != (pa_usec_t) -1)
+         result = PA_CLAMP(result, s->thread_info.min_latency, s->thread_info.max_latency);
+ 
+-    s->thread_info.requested_latency = result;
+-    s->thread_info.requested_latency_valid = TRUE;
++    if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
++        /* Only cache this if we are fully set up */
++        s->thread_info.requested_latency = result;
++        s->thread_info.requested_latency_valid = TRUE;
++    }
+ 
+     return result;
+ }
--- pulseaudio-0.9.15.orig/debian/patches/0021-sconv-fix-a-few-minor-conversion-issues.patch
+++ pulseaudio-0.9.15/debian/patches/0021-sconv-fix-a-few-minor-conversion-issues.patch
@@ -0,0 +1,58 @@
+From 100af7efac584be9f229f4daf663dbb939f5d929 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 1 May 2009 04:22:08 +0200
+Subject: [PATCH 21/28] sconv: fix a few minor conversion issues
+
+---
+ src/pulsecore/sconv-s16le.c |   10 +++++-----
+ src/pulsecore/sconv.c       |    2 +-
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/pulsecore/sconv-s16le.c b/src/pulsecore/sconv-s16le.c
+index 307ce7b..43b8cb3 100644
+--- a/src/pulsecore/sconv-s16le.c
++++ b/src/pulsecore/sconv-s16le.c
+@@ -370,7 +370,7 @@ void pa_sconv_s24_32le_to_s16ne(unsigned n, const uint32_t *a, int16_t *b) {
+     pa_assert(b);
+ 
+     for (; n > 0; n--) {
+-        *b = (int16_t) ((int32_t) (UINT32_FROM(*a) << 8) >> 16);
++        *b = (int16_t) (((int32_t) (UINT32_FROM(*a) << 8)) >> 16);
+         a++;
+         b++;
+     }
+@@ -416,8 +416,8 @@ void pa_sconv_s24_32le_to_float32ne(unsigned n, const uint32_t *a, float *b) {
+     pa_assert(b);
+ 
+     for (; n > 0; n--) {
+-        int32_t s = (int16_t) ((int32_t) (UINT32_FROM(*a) << 8));
+-        *b = ((float) s) / 0x7FFFFFFF;
++        int32_t s = (int32_t) (UINT32_FROM(*a) << 8);
++        *b = (float) s / (float) 0x7FFFFFFF;
+         a ++;
+         b ++;
+     }
+@@ -428,8 +428,8 @@ void pa_sconv_s24_32le_to_float32re(unsigned n, const uint32_t *a, float *b) {
+     pa_assert(b);
+ 
+     for (; n > 0; n--) {
+-        int32_t s = (int16_t) ((int32_t) (UINT32_FROM(*a) << 8));
+-        float k = ((float) s) / 0x7FFFFFFF;
++        int32_t s = (int32_t) (UINT32_FROM(*a) << 8);
++        float k = (float) s / (float) 0x7FFFFFFF;
+         *b = PA_FLOAT32_SWAP(k);
+         a ++;
+         b ++;
+diff --git a/src/pulsecore/sconv.c b/src/pulsecore/sconv.c
+index 29a9a45..d89f428 100644
+--- a/src/pulsecore/sconv.c
++++ b/src/pulsecore/sconv.c
+@@ -75,7 +75,7 @@ static void u8_from_s16ne(unsigned n, const int16_t *a, uint8_t *b) {
+     pa_assert(b);
+ 
+     for (; n > 0; n--, a++, b++)
+-        *b = (uint8_t) (*a / 0x100 + 0x80);
++        *b = (uint8_t) ((uint16_t) *a >> 8) + (uint8_t) 0x80U;
+ }
+ 
+ /* float32 */
--- pulseaudio-0.9.15.orig/debian/patches/0029-CVE-2009-1894.patch
+++ pulseaudio-0.9.15/debian/patches/0029-CVE-2009-1894.patch
@@ -0,0 +1,303 @@
+diff -Nurad pulseaudio-0.9.15.orig/configure pulseaudio-0.9.15/configure
+--- pulseaudio-0.9.15.orig/configure	2009-07-24 15:56:20.000000000 +0200
++++ pulseaudio-0.9.15/configure	2009-07-24 15:58:41.000000000 +0200
+@@ -991,6 +991,7 @@
+ AS
+ BUILD_TESTS_DEFAULT_FALSE
+ BUILD_TESTS_DEFAULT_TRUE
++IMMEDIATE_LDFLAGS
+ VERSIONING_LDFLAGS
+ M4
+ EGREP
+@@ -5624,6 +5625,62 @@
+ 
+ 
+ 
++
++  { $as_echo "$as_me:$LINENO: checking if $CC supports -Wl,-z,now flag" >&5
++$as_echo_n "checking if $CC supports -Wl,-z,now flag... " >&6; }
++if test "${cc_cv_ldflags__Wl__z_now+set}" = set; then
++  $as_echo_n "(cached) " >&6
++else
++  ac_save_LDFLAGS="$LDFLAGS"
++     LDFLAGS="$LDFLAGS -Wl,-z,now"
++     cat >conftest.$ac_ext <<_ACEOF
++int main() { return 1; }
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++  *) ac_try_echo=$ac_try;;
++esac
++eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
++$as_echo "$ac_try_echo") >&5
++  (eval "$ac_link") 2>conftest.er1
++  ac_status=$?
++  grep -v '^ *+' conftest.er1 >conftest.err
++  rm -f conftest.er1
++  cat conftest.err >&5
++  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++  (exit $ac_status); } && {
++	 test -z "$ac_c_werror_flag" ||
++	 test ! -s conftest.err
++       } && test -s conftest$ac_exeext && {
++	 test "$cross_compiling" = yes ||
++	 $as_test_x conftest$ac_exeext
++       }; then
++  eval "cc_cv_ldflags__Wl__z_now='yes'"
++else
++  $as_echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++	eval "cc_cv_ldflags__Wl__z_now='no'"
++fi
++
++rm -rf conftest.dSYM
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++      conftest$ac_exeext conftest.$ac_ext
++     LDFLAGS="$ac_save_LDFLAGS"
++
++fi
++{ $as_echo "$as_me:$LINENO: result: $cc_cv_ldflags__Wl__z_now" >&5
++$as_echo "$cc_cv_ldflags__Wl__z_now" >&6; }
++
++  if eval test x$cc_cv_ldflags__Wl__z_now = xyes; then
++  IMMEDIATE_LDFLAGS="-Wl,-z,now"
++fi
++
++
++
++
+ # Check whether --enable-default-build-tests was given.
+ if test "${enable_default_build_tests+set}" = set; then
+   enableval=$enable_default_build_tests;
+@@ -6507,13 +6564,13 @@
+ else
+   lt_cv_nm_interface="BSD nm"
+   echo "int some_variable = 0;" > conftest.$ac_ext
+-  (eval echo "\"\$as_me:6510: $ac_compile\"" >&5)
++  (eval echo "\"\$as_me:6567: $ac_compile\"" >&5)
+   (eval "$ac_compile" 2>conftest.err)
+   cat conftest.err >&5
+-  (eval echo "\"\$as_me:6513: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
++  (eval echo "\"\$as_me:6570: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+   cat conftest.err >&5
+-  (eval echo "\"\$as_me:6516: output\"" >&5)
++  (eval echo "\"\$as_me:6573: output\"" >&5)
+   cat conftest.out >&5
+   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+     lt_cv_nm_interface="MS dumpbin"
+@@ -7715,7 +7772,7 @@
+   ;;
+ *-*-irix6*)
+   # Find out which ABI we are using.
+-  echo '#line 7718 "configure"' > conftest.$ac_ext
++  echo '#line 7775 "configure"' > conftest.$ac_ext
+   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+   (eval $ac_compile) 2>&5
+   ac_status=$?
+@@ -9380,11 +9437,11 @@
+    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:9383: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:9440: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>conftest.err)
+    ac_status=$?
+    cat conftest.err >&5
+-   echo "$as_me:9387: \$? = $ac_status" >&5
++   echo "$as_me:9444: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s "$ac_outfile"; then
+      # The compiler can only warn and ignore the option if not recognized
+      # So say no if there are warnings other than the usual output.
+@@ -9719,11 +9776,11 @@
+    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:9722: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:9779: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>conftest.err)
+    ac_status=$?
+    cat conftest.err >&5
+-   echo "$as_me:9726: \$? = $ac_status" >&5
++   echo "$as_me:9783: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s "$ac_outfile"; then
+      # The compiler can only warn and ignore the option if not recognized
+      # So say no if there are warnings other than the usual output.
+@@ -9824,11 +9881,11 @@
+    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:9827: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:9884: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>out/conftest.err)
+    ac_status=$?
+    cat out/conftest.err >&5
+-   echo "$as_me:9831: \$? = $ac_status" >&5
++   echo "$as_me:9888: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s out/conftest2.$ac_objext
+    then
+      # The compiler can only warn and ignore the option if not recognized
+@@ -9879,11 +9936,11 @@
+    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:9882: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:9939: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>out/conftest.err)
+    ac_status=$?
+    cat out/conftest.err >&5
+-   echo "$as_me:9886: \$? = $ac_status" >&5
++   echo "$as_me:9943: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s out/conftest2.$ac_objext
+    then
+      # The compiler can only warn and ignore the option if not recognized
+@@ -12682,7 +12739,7 @@
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 12685 "configure"
++#line 12742 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -12778,7 +12835,7 @@
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 12781 "configure"
++#line 12838 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+diff -Nurad pulseaudio-0.9.15.orig/configure.ac pulseaudio-0.9.15/configure.ac
+--- pulseaudio-0.9.15.orig/configure.ac	2009-07-24 15:56:21.000000000 +0200
++++ pulseaudio-0.9.15/configure.ac	2009-07-24 15:56:55.000000000 +0200
+@@ -114,6 +114,12 @@
+     [VERSIONING_LDFLAGS='-Wl,-version-script=$(srcdir)/map-file'])
+ AC_SUBST([VERSIONING_LDFLAGS])
+ 
++dnl Use immediate (now) bindings; avoids the funky re-call in itself
++dnl  the -z now syntax is lifted from Sun's linker and works with GNU's too
++dnl  other linkes might be added later
++CC_CHECK_LDFLAGS([-Wl,-z,now], [IMMEDIATE_LDFLAGS="-Wl,-z,now"])
++AC_SUBST([IMMEDIATE_LDFLAGS])
++
+ dnl Check whether to build tests by default (as compile-test) or not
+ AC_ARG_ENABLE([default-build-tests],
+     AS_HELP_STRING([--disable-default-build-tests], [Build test programs only during make check]))
+diff -Nurad pulseaudio-0.9.15.orig/doxygen/Makefile.in pulseaudio-0.9.15/doxygen/Makefile.in
+--- pulseaudio-0.9.15.orig/doxygen/Makefile.in	2009-07-24 15:56:21.000000000 +0200
++++ pulseaudio-0.9.15/doxygen/Makefile.in	2009-07-24 16:00:06.000000000 +0200
+@@ -142,6 +142,7 @@
+ HAVE_SOLARIS = @HAVE_SOLARIS@
+ HAVE_UDEV = @HAVE_UDEV@
+ HAVE_X11 = @HAVE_X11@
++IMMEDIATE_LDFLAGS = @IMMEDIATE_LDFLAGS@
+ INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+diff -Nurad pulseaudio-0.9.15.orig/Makefile.in pulseaudio-0.9.15/Makefile.in
+--- pulseaudio-0.9.15.orig/Makefile.in	2009-07-24 15:56:21.000000000 +0200
++++ pulseaudio-0.9.15/Makefile.in	2009-07-24 16:00:09.000000000 +0200
+@@ -63,8 +63,8 @@
+ 	$(srcdir)/libpulse-simple.pc.in $(srcdir)/libpulse.pc.in \
+ 	$(srcdir)/shave-libtool.in $(srcdir)/shave.in \
+ 	$(top_srcdir)/configure $(top_srcdir)/src/pulse/version.h.in \
+-	ABOUT-NLS compile config.guess config.rpath config.sub depcomp \
+-	install-sh ltmain.sh missing
++	ABOUT-NLS ChangeLog compile config.guess config.rpath \
++	config.sub depcomp install-sh ltmain.sh missing
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/acx_libwrap.m4 \
+ 	$(top_srcdir)/m4/acx_lirc.m4 $(top_srcdir)/m4/acx_pthread.m4 \
+@@ -191,6 +191,7 @@
+ HAVE_SOLARIS = @HAVE_SOLARIS@
+ HAVE_UDEV = @HAVE_UDEV@
+ HAVE_X11 = @HAVE_X11@
++IMMEDIATE_LDFLAGS = @IMMEDIATE_LDFLAGS@
+ INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+diff -Nurad pulseaudio-0.9.15.orig/man/Makefile.in pulseaudio-0.9.15/man/Makefile.in
+--- pulseaudio-0.9.15.orig/man/Makefile.in	2009-07-24 15:56:20.000000000 +0200
++++ pulseaudio-0.9.15/man/Makefile.in	2009-07-24 16:00:06.000000000 +0200
+@@ -152,6 +152,7 @@
+ HAVE_SOLARIS = @HAVE_SOLARIS@
+ HAVE_UDEV = @HAVE_UDEV@
+ HAVE_X11 = @HAVE_X11@
++IMMEDIATE_LDFLAGS = @IMMEDIATE_LDFLAGS@
+ INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+diff -Nurad pulseaudio-0.9.15.orig/src/daemon/main.c pulseaudio-0.9.15/src/daemon/main.c
+--- pulseaudio-0.9.15.orig/src/daemon/main.c	2009-07-24 15:56:21.000000000 +0200
++++ pulseaudio-0.9.15/src/daemon/main.c	2009-07-24 15:58:28.000000000 +0200
+@@ -399,28 +399,6 @@
+     pa_log_set_level(PA_LOG_NOTICE);
+     pa_log_set_flags(PA_LOG_COLORS|PA_LOG_PRINT_FILE|PA_LOG_PRINT_LEVEL, PA_LOG_RESET);
+ 
+-#if defined(__linux__) && defined(__OPTIMIZE__)
+-    /*
+-       Disable lazy relocations to make usage of external libraries
+-       more deterministic for our RT threads. We abuse __OPTIMIZE__ as
+-       a check whether we are a debug build or not.
+-    */
+-
+-    if (!getenv("LD_BIND_NOW")) {
+-        char *rp;
+-
+-        /* We have to execute ourselves, because the libc caches the
+-         * value of $LD_BIND_NOW on initialization. */
+-
+-        pa_set_env("LD_BIND_NOW", "1");
+-
+-        if ((rp = pa_readlink("/proc/self/exe")))
+-            pa_assert_se(execv(rp, argv) == 0);
+-        else
+-            pa_log_warn("Couldn't read /proc/self/exe, cannot self execute. Running in a chroot()?");
+-    }
+-#endif
+-
+ #ifdef HAVE_GETUID
+     real_root = getuid() == 0;
+     suid_root = !real_root && geteuid() == 0;
+diff -Nurad pulseaudio-0.9.15.orig/src/Makefile.am pulseaudio-0.9.15/src/Makefile.am
+--- pulseaudio-0.9.15.orig/src/Makefile.am	2009-07-24 15:56:20.000000000 +0200
++++ pulseaudio-0.9.15/src/Makefile.am	2009-07-24 15:57:53.000000000 +0200
+@@ -153,9 +153,9 @@
+ endif
+ 
+ if FORCE_PREOPEN
+-pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))
++pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(IMMEDIATE_LDFLAGS) -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))
+ else
+-pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))
++pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(IMMEDIATE_LDFLAGS) -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))
+ endif
+ 
+ if HAVE_POLKIT
+diff -Nurad pulseaudio-0.9.15.orig/src/Makefile.in pulseaudio-0.9.15/src/Makefile.in
+--- pulseaudio-0.9.15.orig/src/Makefile.in	2009-07-24 15:56:21.000000000 +0200
++++ pulseaudio-0.9.15/src/Makefile.in	2009-07-24 16:00:09.000000000 +0200
+@@ -2152,6 +2152,7 @@
+ HAVE_SOLARIS = @HAVE_SOLARIS@
+ HAVE_UDEV = @HAVE_UDEV@
+ HAVE_X11 = @HAVE_X11@
++IMMEDIATE_LDFLAGS = @IMMEDIATE_LDFLAGS@
+ INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+@@ -2403,8 +2404,8 @@
+ pulseaudio_DEPENDENCIES = libpulsecore-@PA_MAJORMINORMICRO@.la libpulsecommon-@PA_MAJORMINORMICRO@.la libpulse.la $(PREOPEN_LIBS)
+ @PREOPEN_MODS_FALSE@PREOPEN_LIBS = $(modlibexec_LTLIBRARIES)
+ @PREOPEN_MODS_TRUE@PREOPEN_LIBS = $(PREOPEN_MODS)
+-@FORCE_PREOPEN_FALSE@pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))
+-@FORCE_PREOPEN_TRUE@pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))
++@FORCE_PREOPEN_FALSE@pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(IMMEDIATE_LDFLAGS) -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))
++@FORCE_PREOPEN_TRUE@pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(IMMEDIATE_LDFLAGS) -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))
+ @HAVE_POLKIT_TRUE@policy_in_files = daemon/org.pulseaudio.policy.in
+ @HAVE_POLKIT_TRUE@policy_DATA = $(policy_in_files:.policy.in=.policy)
+ bin_SCRIPTS = esdcompat start-pulseaudio-x11 $(am__append_32)
--- pulseaudio-0.9.15.orig/debian/patches/series
+++ pulseaudio-0.9.15/debian/patches/series
@@ -0,0 +1,29 @@
+0001-alsa-allow-configuration-of-fallback-device-strings-.patch
+0002-util-if-NULL-is-passed-to-pa_path_get_filename-just-.patch
+0003-alsa-don-t-hit-an-assert-when-invalid-module-argumen.patch
+0004-alsa-fix-wording-we-are-speaking-of-card-profiles-no.patch
+0005-alsa-initialize-buffer-size-before-number-of-periods.patch
+0006-conf-remove-obsolete-module-idle-time-directive-from.patch
+0007-core-make-sure-soft-mute-status-stays-in-sync-with-h.patch
+0008-endian-fix-LE-BE-order-for-24-bit-accessor-functions.patch
+0009-log-print-file-name-only-when-we-have-it.patch
+0010-man-document-24bit-sample-types-in-man-page.patch
+0011-man-document-log-related-daemon.conf-options.patch
+0012-man-document-that-tsched-doesn-t-use-fragment-settin.patch
+0013-mutex-when-we-fail-to-fill-in-mutex-into-static-mute.patch
+0014-oss-don-t-deadlock-when-we-try-to-resume-an-OSS-devi.patch
+0015-simple-protocol-don-t-hit-an-assert-when-we-call-con.patch
+0016-idxset-add-enumeration-macro-PA_IDXSET_FOREACH.patch
+0017-rescue-streams-when-one-stream-move-fails-try-to-con.patch
+0018-sample-correctly-pass-s24-32-formats.patch
+0019-sample-util-fix-iteration-loop-when-adjusting-volume.patch
+0020-sample-util-properly-allocate-silence-block-for-s24-.patch
+0021-sconv-fix-a-few-minor-conversion-issues.patch
+0022-alsa-be-a-bit-more-verbose-when-a-hwparam-call-fails.patch
+0023-rescue-make-we-don-t-end-up-in-an-endless-loop-when-.patch
+0024-core-introduce-pa_-sink-source-_set_fixed_latency.patch
+0025-core-cache-requested-latency-only-when-we-are-runnin.patch
+0026-sample-fix-build-on-BE-archs.patch
+0027-alsa-properly-convert-return-values-of-snd_strerror-.patch
+0028-alsa-remove-debug-code.patch
+0029-CVE-2009-1894.patch
--- pulseaudio-0.9.15.orig/debian/patches/0008-endian-fix-LE-BE-order-for-24-bit-accessor-functions.patch
+++ pulseaudio-0.9.15/debian/patches/0008-endian-fix-LE-BE-order-for-24-bit-accessor-functions.patch
@@ -0,0 +1,45 @@
+From 7f17882bae9d2b694f440d28dc9bb3fcf133fa1a Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 1 May 2009 04:13:15 +0200
+Subject: [PATCH 08/28] endian: fix LE/BE order for 24 bit accessor functions
+
+---
+ src/pulsecore/endianmacros.h |    8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/pulsecore/endianmacros.h b/src/pulsecore/endianmacros.h
+index 2257937..2b18cf8 100644
+--- a/src/pulsecore/endianmacros.h
++++ b/src/pulsecore/endianmacros.h
+@@ -45,27 +45,27 @@
+ #define PA_UINT32_SWAP(x) ( (uint32_t) ( ((uint32_t) (x) >> 24) | ((uint32_t) (x) << 24) | (((uint32_t) (x) & 0xFF00) << 8) | ((((uint32_t) (x)) >> 8) & 0xFF00) ) )
+ #endif
+ 
+-static inline uint32_t PA_READ24LE(const uint8_t *p) {
++static inline uint32_t PA_READ24BE(const uint8_t *p) {
+     return
+         ((uint32_t) p[0] << 16) |
+         ((uint32_t) p[1] << 8) |
+         ((uint32_t) p[2]);
+ }
+ 
+-static inline uint32_t PA_READ24BE(const uint8_t *p) {
++static inline uint32_t PA_READ24LE(const uint8_t *p) {
+     return
+         ((uint32_t) p[2] << 16) |
+         ((uint32_t) p[1] << 8) |
+         ((uint32_t) p[0]);
+ }
+ 
+-static inline void PA_WRITE24LE(uint8_t *p, uint32_t u) {
++static inline void PA_WRITE24BE(uint8_t *p, uint32_t u) {
+     p[0] = (uint8_t) (u >> 16);
+     p[1] = (uint8_t) (u >> 8);
+     p[2] = (uint8_t) u;
+ }
+ 
+-static inline void PA_WRITE24BE(uint8_t *p, uint32_t u) {
++static inline void PA_WRITE24LE(uint8_t *p, uint32_t u) {
+     p[2] = (uint8_t) (u >> 16);
+     p[1] = (uint8_t) (u >> 8);
+     p[0] = (uint8_t) u;
--- pulseaudio-0.9.15.orig/debian/manpages/pulseaudio.1
+++ pulseaudio-0.9.15/debian/manpages/pulseaudio.1
@@ -0,0 +1,97 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.36.
+.TH PULSEAUDIO "1" "August 2006" "pulseaudio 0.9.5" "User Commands"
+.SH NAME
+pulseaudio \- manual page for pulseaudio 0.9.5
+.SH DESCRIPTION
+pulseaudio [options]
+.SS "COMMANDS:"
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Show this help
+.TP
+\fB\-\-version\fR
+Show version
+.TP
+\fB\-\-dump\-conf\fR
+Dump default configuration
+.TP
+\fB\-\-dump\-modules\fR
+Dump list of available modules
+.TP
+\fB\-k\fR  \fB\-\-kill\fR
+Kill a running daemon
+.TP
+\fB\-\-check\fR
+Check for a running daemon
+.SS "OPTIONS:"
+.TP
+\fB\-\-system\fR[=\fIBOOL\fR]
+Run as system\-wide instance
+.TP
+\fB\-D\fR, \fB\-\-daemonize\fR[=\fIBOOL\fR]
+Daemonize after startup
+.TP
+\fB\-\-fail\fR[=\fIBOOL\fR]
+Quit when startup fails
+.TP
+\fB\-\-high\-priority\fR[=\fIBOOL\fR]
+Try to set high process priority
+(only available as root)
+.TP
+\fB\-\-disallow\-module\-loading\fR[=\fIBOOL\fR]
+Disallow module loading after startup
+.TP
+\fB\-\-exit\-idle\-time\fR=\fISECS\fR
+Terminate the daemon when idle and this
+time passed
+.TP
+\fB\-\-module\-idle\-time\fR=\fISECS\fR
+Unload autoloaded modules when idle and
+this time passed
+.TP
+\fB\-\-scache\-idle\-time\fR=\fISECS\fR
+Unload autoloaded samples when idle and
+this time passed
+.TP
+\fB\-\-log\-level\fR[=\fILEVEL\fR]
+Increase or set verbosity level
+.TP
+\fB\-v\fR
+Increase the verbosity level
+.HP
+\fB\-\-log\-target=\fR{auto,syslog,stderr} Specify the log target
+.TP
+\fB\-p\fR, \fB\-\-dl\-search\-path\fR=\fIPATH\fR
+Set the search path for dynamic shared
+objects (plugins)
+.TP
+\fB\-\-resample\-method\fR=\fI[METHOD]\fR
+Use the specified resampling method
+(one of src\-sinc\-medium\-quality,
+src\-sinc\-best\-quality,src\-sinc\-fastest
+src\-zero\-order\-hold,src\-linear,trivial)
+.TP
+\fB\-\-use\-pid\-file\fR[=\fIBOOL\fR]
+Create a PID file
+.TP
+\fB\-\-no\-cpu\-limit\fR[=\fIBOOL\fR]
+Do not install CPU load limiter on
+platforms that support it.
+.TP
+\fB\-\-disable\-shm\fR[=\fIBOOL\fR]
+Disable shared memory support.
+.SS "STARTUP SCRIPT:"
+.TP
+\fB\-L\fR, \fB\-\-load=\fR"MODULE ARGUMENTS"
+Load the specified plugin module with
+the specified argument
+.TP
+\fB\-F\fR, \fB\-\-file\fR=\fIFILENAME\fR
+Run the specified script
+.TP
+\fB\-C\fR
+Open a command line on the running TTY
+after startup
+.TP
+\fB\-n\fR
+Don't load default script file
--- pulseaudio-0.9.15.orig/debian/manpages/esdcompat.1
+++ pulseaudio-0.9.15/debian/manpages/esdcompat.1
@@ -0,0 +1,55 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.36.
+.TH PULSEAUDIO "1" "August 2006" "pulseaudio esd wrapper 0.9.5" "User Commands"
+.SH NAME
+pulseaudio \- manual page for pulseaudio esd wrapper 0.9.5
+.SH SYNOPSIS
+.B esdcompat
+[\fIoptions\fR]
+.SH DESCRIPTION
+pulseaudio esd wrapper 0.9.5
+.TP
+\fB\-v\fR \fB\-\-version\fR
+print version information
+.TP
+\fB\-h\fR \fB\-\-help\fR
+show this help
+.PP
+Ignored directives:
+.TP
+\fB\-tcp\fR
+use tcp/ip sockets in addition to unix domain
+.TP
+\fB\-promiscuous\fR
+don't require authentication
+.TP
+\fB\-d\fR DEVICE
+force esd to use sound device DEVICE
+.TP
+\fB\-b\fR
+run server in 8 bit sound mode
+.TP
+\fB\-r\fR RATE
+run server at sample rate of RATE
+.TP
+\fB\-as\fR SECS
+free audio device after SECS of inactivity
+.TP
+\fB\-unix\fR
+use unix domain sockets instead of tcp/ip
+.TP
+\fB\-public\fR
+make tcp/ip access public (other than localhost)
+.TP
+\fB\-terminate\fR
+terminate esd daemone after last client exits
+.TP
+\fB\-nobeeps\fR
+disable startup beeps
+.TP
+\fB\-trust\fR
+start esd even if use of /tmp/.esd can be insecure
+.TP
+\fB\-port\fR PORT
+listen for connections at PORT (only for tcp/ip)
+.HP
+\fB\-bind\fR ADDRESS binds to ADDRESS (only for tcp/ip)
--- pulseaudio-0.9.15.orig/debian/overrides/pulseaudio-module-x11
+++ pulseaudio-0.9.15/debian/overrides/pulseaudio-module-x11
@@ -0,0 +1 @@
+pulseaudio-module-x11: desktop-entry-lacks-main-category /etc/xdg/autostart/pulseaudio-module-xsmp.desktop
--- pulseaudio-0.9.15.orig/debian/overrides/pulseaudio
+++ pulseaudio-0.9.15/debian/overrides/pulseaudio
@@ -0,0 +1,2 @@
+pulseaudio: script-not-executable ./etc/pulse/default.pa
+pulseaudio: description-starts-with-package-name
--- pulseaudio-0.9.15.orig/debian/overrides/pulseaudio-utils
+++ pulseaudio-0.9.15/debian/overrides/pulseaudio-utils
@@ -0,0 +1,3 @@
+pulseaudio-utils: no-shlibs-control-file usr/lib/libpulsedsp.so
+pulseaudio-utils: postinst-must-call-ldconfig usr/lib/libpulsedsp.so
+pulseaudio-utils: package-name-doesnt-match-sonames libpulsedsp
