diff --git a/.alsa-plugins.metadata b/.alsa-plugins.metadata
new file mode 100644
index 0000000..5c1f073
--- /dev/null
+++ b/.alsa-plugins.metadata
@@ -0,0 +1 @@
+a3601513f1a54eaef606744c9c9f4e9d4d44bf40 SOURCES/alsa-plugins-1.1.6.tar.bz2
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..25520b9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/alsa-plugins-1.1.6.tar.bz2
diff --git a/SOURCES/alsa-plugins-1.1.6-post.patch b/SOURCES/alsa-plugins-1.1.6-post.patch
new file mode 100644
index 0000000..0439764
--- /dev/null
+++ b/SOURCES/alsa-plugins-1.1.6-post.patch
@@ -0,0 +1,2354 @@
+From e8fabec7adc70220f52588dc170d90d146b92ba7 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Thu, 5 Apr 2018 09:23:09 +0200
+Subject: [PATCH 1/8] samplerate: fix unused variable warning
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ rate/rate_samplerate.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/rate/rate_samplerate.c b/rate/rate_samplerate.c
+index 0b14a59..100d6f2 100644
+--- a/rate/rate_samplerate.c
++++ b/rate/rate_samplerate.c
+@@ -154,14 +154,14 @@ static void pcm_src_close(void *obj)
+ }
+ 
+ #if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002
+-static int get_supported_rates(void *obj, unsigned int *rate_min,
++static int get_supported_rates(void *obj ATTRIBUTE_UNUSED, unsigned int *rate_min,
+ 			       unsigned int *rate_max)
+ {
+ 	*rate_min = *rate_max = 0; /* both unlimited */
+ 	return 0;
+ }
+ 
+-static void dump(void *obj, snd_output_t *out)
++static void dump(void *obj ATTRIBUTE_UNUSED, snd_output_t *out)
+ {
+ 	snd_output_printf(out, "Converter: libsamplerate\n");
+ }
+-- 
+2.13.6
+
+
+From 6e40eb5fd346207021a95d06bc30205a537926ea Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 4 Apr 2018 19:57:56 +0200
+Subject: [PATCH 2/8] configure: add --with-alsaaddondir, add default config
+ files for plugins
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ a52/60-a52-encoder.conf       | 38 ++++++++++++++++++++++++++
+ a52/Makefile.am               |  4 +++
+ a52/pcm_a52.c                 |  2 +-
+ arcam-av/50-arcam-av-ctl.conf | 16 +++++++++++
+ arcam-av/Makefile.am          |  4 +++
+ configure.ac                  | 12 +++++++++
+ jack/50-jack.conf             | 18 +++++++++++++
+ jack/Makefile.am              |  4 +++
+ maemo/98-maemo.conf           | 11 ++++++++
+ maemo/Makefile.am             |  4 +++
+ mix/60-upmix.conf             | 26 ++++++++++++++++++
+ mix/60-vdownmix.conf          | 24 +++++++++++++++++
+ mix/Makefile.am               |  5 +++-
+ oss/50-oss.conf               | 26 ++++++++++++++++++
+ oss/Makefile.am               |  4 +++
+ pph/10-speexrate.conf         | 28 +++++++++++++++++++
+ pph/Makefile.am               |  4 +++
+ pulse/50-pulseaudio.conf      | 15 ++++++-----
+ pulse/Makefile.am             |  4 +--
+ rate-lavc/10-rate-lavc.conf   | 28 +++++++++++++++++++
+ rate-lavc/Makefile.am         |  4 +++
+ rate/10-samplerate.conf       | 28 +++++++++++++++++++
+ rate/Makefile.am              |  4 +++
+ speex/60-speex.conf           | 63 +++++++++++++++++++++++++++++++++++++++++++
+ speex/Makefile.am             |  4 +++
+ usb_stream/98-usb-stream.conf | 27 +++++++++++++++++++
+ usb_stream/Makefile.am        |  4 +++
+ 27 files changed, 401 insertions(+), 10 deletions(-)
+ create mode 100644 a52/60-a52-encoder.conf
+ create mode 100644 arcam-av/50-arcam-av-ctl.conf
+ create mode 100644 jack/50-jack.conf
+ create mode 100644 maemo/98-maemo.conf
+ create mode 100644 mix/60-upmix.conf
+ create mode 100644 mix/60-vdownmix.conf
+ create mode 100644 oss/50-oss.conf
+ create mode 100644 pph/10-speexrate.conf
+ create mode 100644 rate-lavc/10-rate-lavc.conf
+ create mode 100644 rate/10-samplerate.conf
+ create mode 100644 speex/60-speex.conf
+ create mode 100644 usb_stream/98-usb-stream.conf
+
+diff --git a/a52/60-a52-encoder.conf b/a52/60-a52-encoder.conf
+new file mode 100644
+index 0000000..346c94f
+--- /dev/null
++++ b/a52/60-a52-encoder.conf
+@@ -0,0 +1,38 @@
++pcm.a52 {
++	@args [ CARD SLAVE RATE BITRATE CHANNELS ]
++	@args.CARD {
++		type integer
++		default {
++			@func refer
++			name defaults.pcm.card
++		}
++	}
++	@args.SLAVE {
++		type string
++	}
++	@args.RATE {
++		type integer
++		default 48000
++	}
++	@args.BITRATE {
++		type integer
++		default 448
++	}
++	@args.CHANNELS {
++		type string
++		default 6
++	}
++	type a52
++	card $CARD
++	slavepcm $SLAVE
++	rate $RATE
++	bitrate $BITRATE
++	channels $CHANNELS
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++                description "Plugin to convert multichannel stream to A52 (AC3) bitstream"
++	}
++}
+diff --git a/a52/Makefile.am b/a52/Makefile.am
+index 48567b4..cbc1497 100644
+--- a/a52/Makefile.am
++++ b/a52/Makefile.am
+@@ -1,6 +1,10 @@
++EXTRA_DIST = 60-a52-encoder.conf
++
+ asound_module_pcm_a52_LTLIBRARIES = libasound_module_pcm_a52.la
++asound_module_addon_DATA = 60-a52-encoder.conf
+ 
+ asound_module_pcm_a52dir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @AVCODEC_CFLAGS@ \
+ 	-DAVCODEC_HEADER="@AVCODEC_HEADER@"
+diff --git a/a52/pcm_a52.c b/a52/pcm_a52.c
+index 348d58f..155da36 100644
+--- a/a52/pcm_a52.c
++++ b/a52/pcm_a52.c
+@@ -937,7 +937,7 @@ SND_PCM_PLUGIN_DEFINE_FUNC(a52)
+ 		goto error;
+ 	}
+ 
+-	if (! pcm_string) {
++	if (! pcm_string || pcm_string[0] == '\0') {
+ 		snprintf(devstr, sizeof(devstr),
+ 			 "iec958:{AES0 0x%x AES1 0x%x AES2 0x%x AES3 0x%x %s%s}",
+ 			 IEC958_AES0_CON_EMPHASIS_NONE | IEC958_AES0_NONAUDIO |
+diff --git a/arcam-av/50-arcam-av-ctl.conf b/arcam-av/50-arcam-av-ctl.conf
+new file mode 100644
+index 0000000..b76caa9
+--- /dev/null
++++ b/arcam-av/50-arcam-av-ctl.conf
+@@ -0,0 +1,16 @@
++ctl.arcam_av {
++	@args [ PORT ]
++	@args.PORT {
++		type string
++		default "/dev/ttyUSB0"
++	}
++	type arcam_av
++	port $PORT
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++		description "Arcam-AV Amplifier"
++	}
++}
+diff --git a/arcam-av/Makefile.am b/arcam-av/Makefile.am
+index 5c7855f..4a54ccd 100644
+--- a/arcam-av/Makefile.am
++++ b/arcam-av/Makefile.am
+@@ -1,6 +1,10 @@
++EXTRA_DIST = 50-arcam-av-ctl.conf
++
+ asound_module_ctl_arcam_av_LTLIBRARIES = libasound_module_ctl_arcam_av.la
++asound_module_addon_DATA = 50-arcam-av-ctl.conf
+ 
+ asound_module_ctl_arcam_avdir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined
+diff --git a/configure.ac b/configure.ac
+index ecc265b..ae98caa 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -206,6 +206,18 @@ AC_DEFINE_UNQUOTED(ALSA_DATA_DIR, "$alsadatadir", [directory containing ALSA dat
+ ALSA_DATA_DIR="$alsadatadir"
+ AC_SUBST(ALSA_DATA_DIR)
+ 
++dnl ALSA add-on config directory
++AC_ARG_WITH(alsaaddondir,
++    AS_HELP_STRING([--with-alsaaddondir=dir],
++	[path where ALSA add-on config files are stored]),
++    alsaaddondir="$withval", alsaaddondir="")
++if test -z "$alsaaddondir"; then
++    alsaaddondir="/etc/alsa/conf.d"
++fi
++AC_DEFINE_UNQUOTED(ALSA_ADDON_DIR, "$alsaaddondir", [directory containing ALSA add-on config files])
++ALSA_ADDON_DIR="$alsaaddondir"
++AC_SUBST(ALSA_ADDON_DIR)
++
+ SAVE_PLUGINS_VERSION
+ 
+ AC_OUTPUT([
+diff --git a/jack/50-jack.conf b/jack/50-jack.conf
+new file mode 100644
+index 0000000..d780dfc
+--- /dev/null
++++ b/jack/50-jack.conf
+@@ -0,0 +1,18 @@
++pcm.jack {
++	type jack
++	playback_ports {
++		0 alsa_pcm:playback_1
++		1 alsa_pcm:playback_2
++	}
++	capture_ports {
++		0 alsa_pcm:capture_1
++		1 alsa_pcm:capture_2
++	}
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++		description "JACK Audio Connection Kit"
++	}
++}
+diff --git a/jack/Makefile.am b/jack/Makefile.am
+index f913cb6..0a3d6ae 100644
+--- a/jack/Makefile.am
++++ b/jack/Makefile.am
+@@ -1,6 +1,10 @@
++EXTRA_DIST = 50-jack.conf
++
+ asound_module_pcm_jack_LTLIBRARIES = libasound_module_pcm_jack.la
++asound_module_addon_DATA = 50-jack.conf
+ 
+ asound_module_pcm_jackdir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @JACK_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+diff --git a/maemo/98-maemo.conf b/maemo/98-maemo.conf
+new file mode 100644
+index 0000000..a9ad6a0
+--- /dev/null
++++ b/maemo/98-maemo.conf
+@@ -0,0 +1,11 @@
++pcm.!default {
++	type alsa_dsp
++	playback_device_file [ "/dev/dsptask/pcm2" ]
++	recording_device_file [ "/dev/dsptask/pcm_rec" ]
++}
++
++ctl.!default {
++	type dsp_ctl
++	playback_devices [ "/dev/dsptask/pcm2" ]
++	recording_devices [ "/dev/dsptask/pcm_rec" ]
++}
+diff --git a/maemo/Makefile.am b/maemo/Makefile.am
+index 2684781..aca481d 100644
+--- a/maemo/Makefile.am
++++ b/maemo/Makefile.am
+@@ -1,8 +1,12 @@
++EXTRA_DIST = 98-maemo.conf
++
+ asound_module_pcm_alsa_dsp_LTLIBRARIES = libasound_module_pcm_alsa_dsp.la
+ asound_module_ctl_dsp_ctl_LTLIBRARIES = libasound_module_ctl_dsp_ctl.la
++asound_module_addon_DATA = 98-maemo.conf
+ 
+ asound_module_pcm_alsa_dspdir = @ALSA_PLUGIN_DIR@
+ asound_module_ctl_dsp_ctldir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -Wall -O2 @ALSA_CFLAGS@ $(DBUS_CFLAGS)
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+diff --git a/mix/60-upmix.conf b/mix/60-upmix.conf
+new file mode 100644
+index 0000000..028cfe1
+--- /dev/null
++++ b/mix/60-upmix.conf
+@@ -0,0 +1,26 @@
++pcm.upmix {
++	@args [ SLAVE CHANNELS DELAY ]
++	@args.SLAVE {
++		type string
++		default "plug:hw"
++	}
++	@args.CHANNELS {
++		type integer
++		default 6
++	}
++	@args.DELAY {
++		type integer
++		default 0
++	}
++	type upmix
++	channels $CHANNELS
++	delay $DELAY
++	slave.pcm $SLAVE
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++                description "Plugin for channel upmix (4,6,8)"
++	}
++}
+diff --git a/mix/60-vdownmix.conf b/mix/60-vdownmix.conf
+new file mode 100644
+index 0000000..32e9c56
+--- /dev/null
++++ b/mix/60-vdownmix.conf
+@@ -0,0 +1,24 @@
++pcm.vdownmix {
++	@args [ SLAVE CHANNELS DELAY ]
++	@args.SLAVE {
++		type string
++		default "plug:hw"
++	}
++	@args.CHANNELS {
++		type integer
++		default 6
++	}
++	@args.DELAY {
++		type integer
++		default 0
++	}
++	type vdownmix
++	slave.pcm $SLAVE
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++                description "Plugin for channel downmix (stereo) with a simple spacialization"
++	}
++}
+diff --git a/mix/Makefile.am b/mix/Makefile.am
+index e31839a..710606c 100644
+--- a/mix/Makefile.am
++++ b/mix/Makefile.am
+@@ -1,8 +1,12 @@
++EXTRA_DIST = 60-upmix.conf 60-vdownmix.conf
++
+ asound_module_pcm_upmix_LTLIBRARIES = libasound_module_pcm_upmix.la
+ asound_module_pcm_vdownmix_LTLIBRARIES = libasound_module_pcm_vdownmix.la
++asound_module_addon_DATA = 60-upmix.conf 60-vdownmix.conf
+ 
+ asound_module_pcm_upmixdir = @ALSA_PLUGIN_DIR@
+ asound_module_pcm_vdownmixdir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+@@ -11,4 +15,3 @@ libasound_module_pcm_upmix_la_SOURCES = pcm_upmix.c
+ libasound_module_pcm_upmix_la_LIBADD = @ALSA_LIBS@
+ libasound_module_pcm_vdownmix_la_SOURCES = pcm_vdownmix.c
+ libasound_module_pcm_vdownmix_la_LIBADD = @ALSA_LIBS@
+-
+diff --git a/oss/50-oss.conf b/oss/50-oss.conf
+new file mode 100644
+index 0000000..5b2817b
+--- /dev/null
++++ b/oss/50-oss.conf
+@@ -0,0 +1,26 @@
++pcm.oss {
++	@args [ DEVICE ]
++	@args.DEVICE {
++		type string
++		default "/dev/dsp"
++	}
++	type oss
++	port $DEVICE
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++		description "Open Sound System"
++	}
++}
++
++ctl.oss {
++	@args [ DEVICE ]
++	@args.DEVICE {
++		type string
++		default "/dev/mixer"
++	}
++	type oss
++	device $DEVICE
++}
+diff --git a/oss/Makefile.am b/oss/Makefile.am
+index 302538b..df83d20 100644
+--- a/oss/Makefile.am
++++ b/oss/Makefile.am
+@@ -1,8 +1,12 @@
++EXTRA_DIST = 50-oss.conf
++
+ asound_module_pcm_oss_LTLIBRARIES = libasound_module_pcm_oss.la
+ asound_module_ctl_oss_LTLIBRARIES = libasound_module_ctl_oss.la
++asound_module_addon_DATA = 50-oss.conf
+ 
+ asound_module_pcm_ossdir = @ALSA_PLUGIN_DIR@
+ asound_module_ctl_ossdir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+diff --git a/pph/10-speexrate.conf b/pph/10-speexrate.conf
+new file mode 100644
+index 0000000..1d9eae9
+--- /dev/null
++++ b/pph/10-speexrate.conf
+@@ -0,0 +1,28 @@
++pcm.speexrate {
++	@args [ SLAVE RATE CONVERTER ]
++	@args.SLAVE {
++		type string
++		default "plug:hw"
++	}
++	@args.RATE {
++		type integer
++		default 48000
++	}
++	@args.CONVERTER {
++		type string
++		default "speexrate"
++	}
++	type rate
++	converter $CONVERTER
++	slave {
++		pcm $SLAVE
++		rate $RATE
++	}
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++                description "Rate Converter Plugin Using Speex Resampler"
++	}
++}
+diff --git a/pph/Makefile.am b/pph/Makefile.am
+index 551e5bd..abb950b 100644
+--- a/pph/Makefile.am
++++ b/pph/Makefile.am
+@@ -1,6 +1,10 @@
++EXTRA_DIST = 10-speexrate.conf
++
+ asound_module_rate_speexrate_LTLIBRARIES = libasound_module_rate_speexrate.la
++asound_module_addon_DATA = 10-speexrate.conf
+ 
+ asound_module_rate_speexratedir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -DVAR_ARRAYS -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+diff --git a/pulse/50-pulseaudio.conf b/pulse/50-pulseaudio.conf
+index dd85dab..62da207 100644
+--- a/pulse/50-pulseaudio.conf
++++ b/pulse/50-pulseaudio.conf
+@@ -1,13 +1,16 @@
+ # Add a specific named PulseAudio pcm and ctl (typically useful for testing)
+ 
+ pcm.pulse {
+-    type pulse
+-    hint {
+-        show on
+-        description "PulseAudio Sound Server"
+-    }
++	type pulse
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++		description "PulseAudio Sound Server"
++	}
+ }
+ 
+ ctl.pulse {
+-    type pulse
++	type pulse
+ }
+diff --git a/pulse/Makefile.am b/pulse/Makefile.am
+index a5550b9..835808c 100644
+--- a/pulse/Makefile.am
++++ b/pulse/Makefile.am
+@@ -3,12 +3,12 @@ EXTRA_DIST = 50-pulseaudio.conf 99-pulseaudio-default.conf.example
+ asound_module_pcm_LTLIBRARIES = libasound_module_pcm_pulse.la
+ asound_module_ctl_LTLIBRARIES = libasound_module_ctl_pulse.la
+ asound_module_conf_LTLIBRARIES = libasound_module_conf_pulse.la
+-asound_module_data_DATA = 50-pulseaudio.conf 99-pulseaudio-default.conf.example
++asound_module_addon_DATA = 50-pulseaudio.conf 99-pulseaudio-default.conf.example
+ 
+ asound_module_pcmdir = @ALSA_PLUGIN_DIR@
+ asound_module_ctldir = @ALSA_PLUGIN_DIR@
+ asound_module_confdir = @ALSA_PLUGIN_DIR@
+-asound_module_datadir = @ALSA_DATA_DIR@/alsa.conf.d
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ $(PTHREAD_CFLAGS) $(pulseaudio_CFLAGS) -D_GNU_SOURCE
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+diff --git a/rate-lavc/10-rate-lavc.conf b/rate-lavc/10-rate-lavc.conf
+new file mode 100644
+index 0000000..bab1694
+--- /dev/null
++++ b/rate-lavc/10-rate-lavc.conf
+@@ -0,0 +1,28 @@
++pcm.lavcrate {
++	@args [ SLAVE RATE CONVERTER ]
++	@args.SLAVE {
++		type string
++		default "plug:hw"
++	}
++	@args.RATE {
++		type integer
++		default 48000
++	}
++	@args.CONVERTER {
++		type string
++		default "lavcrate"
++	}
++	type rate
++	converter $CONVERTER
++	slave {
++		pcm $SLAVE
++		rate $RATE
++	}
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++                description "Rate Converter Plugin Using AVC Library"
++	}
++}
+diff --git a/rate-lavc/Makefile.am b/rate-lavc/Makefile.am
+index 5cffd44..5f66472 100644
+--- a/rate-lavc/Makefile.am
++++ b/rate-lavc/Makefile.am
+@@ -1,6 +1,10 @@
++EXTRA_DIST = 10-rate-lavc.conf
++
+ asound_module_rate_lavcrate_LTLIBRARIES = libasound_module_rate_lavcrate.la
++asound_module_addon_DATA = 10-rate-lavc.conf
+ 
+ asound_module_rate_lavcratedir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @AVCODEC_CFLAGS@ \
+ 	-DAVCODEC_HEADER="@AVCODEC_HEADER@"
+diff --git a/rate/10-samplerate.conf b/rate/10-samplerate.conf
+new file mode 100644
+index 0000000..0d2e604
+--- /dev/null
++++ b/rate/10-samplerate.conf
+@@ -0,0 +1,28 @@
++pcm.samplerate {
++	@args [ SLAVE RATE CONVERTER ]
++	@args.SLAVE {
++		type string
++		default "plug:hw"
++	}
++	@args.RATE {
++		type integer
++		default 48000
++	}
++	@args.CONVERTER {
++		type string
++		default "samplerate"
++	}
++	type rate
++	converter $CONVERTER
++	slave {
++		pcm $SLAVE
++		rate $RATE
++	}
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++                description "Rate Converter Plugin Using Samplerate Library"
++	}
++}
+diff --git a/rate/Makefile.am b/rate/Makefile.am
+index 0605bfd..25014d8 100644
+--- a/rate/Makefile.am
++++ b/rate/Makefile.am
+@@ -1,6 +1,10 @@
++EXTRA_DIST = 10-samplerate.conf
++
+ asound_module_rate_samplerate_LTLIBRARIES = libasound_module_rate_samplerate.la
++asound_module_addon_DATA = 10-samplerate.conf
+ 
+ asound_module_rate_sampleratedir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ $(samplerate_CFLAGS)
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+diff --git a/speex/60-speex.conf b/speex/60-speex.conf
+new file mode 100644
+index 0000000..bf2ce95
+--- /dev/null
++++ b/speex/60-speex.conf
+@@ -0,0 +1,63 @@
++pcm.speex {
++	@args [ SLAVE AGC AGC_LEVEL DENOISE ECHO
++                DEREVERB DEREVERB_DECAY DEREVERB_LEVEL
++                FRAMES FILTER_LENGTH ]
++	@args.SLAVE {
++		type string
++		default "plug:hw"
++	}
++	@args.AGC {
++		type string
++		default off
++	}
++	@args.AGC_LEVEL {
++		type integer
++		default 8000
++	}
++	@args.DENOISE {
++		type string
++		default on
++	}
++	@args.ECHO {
++		type string
++		default off
++	}
++	@args.DEREVERB {
++		type string
++		default off
++	}
++	@args.DEREVERB_DECAY {
++		type real
++		default 0
++	}
++	@args.DEREVERB_LEVEL {
++		type real
++		default 0
++	}
++	@args.FRAMES {
++		type integer
++		default 64
++	}
++	@args.FILTER_LENGTH {
++		type integer
++		default 256
++	}
++	type speex
++	agc $AGC
++	agc_level $AGC_LEVEL
++	denoise $DENOISE
++	echo $ECHO
++	dereverb $DEREVERB
++	dereverb_decay $DEREVERB_DECAY
++	dereverb_level $DEREVERB_LEVEL
++	frames $FRAMES
++	filter_length $FILTER_LENGTH
++	slave.pcm $SLAVE
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++                description "Plugin using Speex DSP (resample, agc, denoise, echo, dereverb)"
++	}
++}
+diff --git a/speex/Makefile.am b/speex/Makefile.am
+index 7d84190..7891954 100644
+--- a/speex/Makefile.am
++++ b/speex/Makefile.am
+@@ -1,6 +1,10 @@
++EXTRA_DIST = 60-speex.conf
++
+ asound_module_pcm_speex_LTLIBRARIES = libasound_module_pcm_speex.la
++asound_module_addon_DATA = 60-speex.conf
+ 
+ asound_module_pcm_speexdir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @speexdsp_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+diff --git a/usb_stream/98-usb-stream.conf b/usb_stream/98-usb-stream.conf
+new file mode 100644
+index 0000000..2efc95f
+--- /dev/null
++++ b/usb_stream/98-usb-stream.conf
+@@ -0,0 +1,27 @@
++pcm.usbstream {
++	@args [ CARD RATE PERIOD_SIZE ]
++	@args.CARD {
++		type string
++		default {
++			func refer
++			name defaults.pcm.card
++		}
++	}
++	@args.RATE {
++		type integer
++	}
++	@args.PERIOD_SIZE {
++		type integer
++	}
++	type usb_stream
++	card $CARD
++	rate $RATE
++	period_size $PERIOD_SIZE
++	hint {
++		show {
++			@func refer
++			name defaults.namehint.basic
++		}
++                description "USB Stream Output"
++	}
++}
+diff --git a/usb_stream/Makefile.am b/usb_stream/Makefile.am
+index 50a98a0..b606d3d 100644
+--- a/usb_stream/Makefile.am
++++ b/usb_stream/Makefile.am
+@@ -1,6 +1,10 @@
++EXTRA_DIST = 98-usb-stream.conf
++
+ asound_module_pcm_usb_stream_LTLIBRARIES = libasound_module_pcm_usb_stream.la
++asound_module_addon_DATA = 98-usb-stream.conf
+ 
+ asound_module_pcm_usb_streamdir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic $(LDFLAGS_NOUNDEFINED)
+-- 
+2.13.6
+
+
+From cc6bed233a3167d806834460befca2c6d655f0fb Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Fri, 13 Apr 2018 13:37:36 +0200
+Subject: [PATCH 3/8] config/Makefile: make everything modular
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ Makefile.am     | 21 ++++++++++++++++++---
+ configure.ac    | 20 +++++++++++++++++++-
+ doc/Makefile.am | 37 ++++++++++++++++++++++++++++++++++---
+ 3 files changed, 71 insertions(+), 7 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 69cfe0d..303bc83 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,4 +1,10 @@
+-SUBDIRS = oss mix usb_stream arcam-av doc
++SUBDIRS = doc
++if HAVE_OSS
++SUBDIRS += oss
++endif
++if HAVE_MIX
++SUBDIRS += mix
++endif
+ if HAVE_JACK
+ SUBDIRS += jack
+ endif
+@@ -8,8 +14,17 @@ endif
+ if HAVE_SAMPLERATE
+ SUBDIRS += rate
+ endif
+-if HAVE_AVCODEC
+-SUBDIRS += a52 rate-lavc
++if HAVE_A52
++SUBDIRS += a52
++endif
++if HAVE_AVCRATE
++SUBDIRS += rate-lavc
++endif
++if HAVE_USBSTREAM
++SUBDIRS += usb_stream
++endif
++if HAVE_ARCAMAV
++SUBDIRS += arcam-av
+ endif
+ if HAVE_MAEMO_PLUGIN
+ SUBDIRS += maemo
+diff --git a/configure.ac b/configure.ac
+index ae98caa..2d7e6aa 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -135,6 +135,22 @@ AC_SUBST(AVCODEC_CFLAGS)
+ AC_SUBST(AVCODEC_LIBS)
+ AC_SUBST(AVCODEC_HEADER)
+ 
++AC_ARG_ENABLE([a52],
++      AS_HELP_STRING([--disable-a52], [Disable building of A52 encoder plugin]))
++
++if test "x$enable_a52" != "xno" -a "$HAVE_AVCODEC" = "yes"; then
++  HAVE_A52=yes
++fi
++AM_CONDITIONAL(HAVE_A52, test x$HAVE_A52 = xyes)
++
++AC_ARG_ENABLE([avcrate],
++      AS_HELP_STRING([--disable-avcrate], [Disable building of AVC rate plugin]))
++
++if test "x$enable_avcrate" != "xno" -a "$HAVE_AVCODEC" = "yes"; then
++  HAVE_AVCRATE=yes
++fi
++AM_CONDITIONAL(HAVE_AVCRATE, test x$HAVE_AVCRATE = xyes)
++
+ AC_ARG_ENABLE([speexdsp],
+       AS_HELP_STRING([--disable-speexdsp], [Disable building of speexdsp plugin]))
+ 
+@@ -260,12 +276,14 @@ if test "$HAVE_SAMPLERATE" = "yes"; then
+ fi
+ echo "Maemo plugin:       $HAVE_MAEMO_PLUGIN"
+ echo "  Using Osso resource manager: $use_maemo_rm"
+-echo "A52, lavc plugins:  $HAVE_AVCODEC"
+ if test "$HAVE_AVCODEC" = "yes"; then
++  echo "AVCodec config:"
+   echo "  AVCODEC_CFLAGS: $AVCODEC_CFLAGS"
+   echo "  AVCODEC_LIBS: $AVCODEC_LIBS"
+   echo "  AVCODEC_HEADER: $AVCODEC_HEADER"
+ fi
++echo "A52 plugin:         $HAVE_A52"
++echo "AVC rate plugin:    $HAVE_AVCRATE"
+ echo "Speex rate plugin:  $PPH"
+ echo "Speex preprocess plugin:  $HAVE_SPEEXDSP"
+ if test "$HAVE_SPEEX" = "yes"; then
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index 19fa0d2..0d6f6e5 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -1,4 +1,35 @@
+-EXTRA_DIST = README-pcm-oss README-jack README-pulse README-maemo \
+-	upmix.txt vdownmix.txt samplerate.txt a52.txt lavcrate.txt \
+-	speexrate.txt speexdsp.txt README-arcam-av
++EXTRA_DIST =
+ 
++if HAVE_OSS
++EXTRA_DIST += README-pcm-oss
++endif
++if HAVE_MIX
++EXTRA_DIST += upmix.txt vdownmix.txt
++endif
++if HAVE_JACK
++EXTRA_DIST += README-jack
++endif
++if HAVE_PULSE
++EXTRA_DIST += README-pulse
++endif
++if HAVE_MAEMO_PLUGIN
++EXTRA_DIST += README-maemo
++endif
++if HAVE_SAMPLERATE
++EXTRA_DIST += samplerate.txt
++endif
++if HAVE_A52
++EXTRA_DIST += a52.txt
++endif
++if HAVE_AVCRATE
++EXTRA_DIST += lavcrate.txt
++endif
++if HAVE_PPH
++EXTRA_DIST += speexrate.txt
++endif
++if HAVE_SPEEXDSP
++EXTRA_DIST += speexdsp.txt
++endif
++if HAVE_ARCAMAV
++EXTRA_DIST += README-arcam-av
++endif
+-- 
+2.13.6
+
+
+From 24db7f59d76984e2901f2834a297735853cab776 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Mon, 16 Apr 2018 16:24:29 +0200
+Subject: [PATCH 4/8] Move rate-lavc to rate-lav subdirectory and update to use
+ libavresample
+
+- --disable-avcodec renamed to --disable-libav
+- --avcodec-includedir renamed to --libav-includedir
+- --avcodec-libdir renamed to --libav-libdir
+- --disable-lavcrate renamed to --disable-lavrate
+
+The .c changes are from Anton Khirnov. The rest is from Jaroslav Kysela.
+
+From: Anton Khirnov
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ Makefile.am                                        |   4 +-
+ a52/Makefile.am                                    |   5 +-
+ a52/pcm_a52.c                                      |   2 +-
+ configure.ac                                       |  85 +++---
+ doc/Makefile.am                                    |   4 +-
+ doc/{lavcrate.txt => lavrate.txt}                  |  10 +-
+ .../10-rate-lavc.conf => rate-lav/10-rate-lav.conf |   6 +-
+ rate-lav/Makefile.am                               |  25 ++
+ {rate-lavc => rate-lav}/gcd.h                      |   0
+ rate-lav/rate_lavrate.c                            | 235 +++++++++++++++++
+ rate-lavc/Makefile.am                              |  26 --
+ rate-lavc/rate_lavcrate.c                          | 291 ---------------------
+ 12 files changed, 311 insertions(+), 382 deletions(-)
+ rename doc/{lavcrate.txt => lavrate.txt} (76%)
+ rename rate-lavc/10-rate-lavc.conf => rate-lav/10-rate-lav.conf (73%)
+ create mode 100644 rate-lav/Makefile.am
+ rename {rate-lavc => rate-lav}/gcd.h (100%)
+ create mode 100644 rate-lav/rate_lavrate.c
+ delete mode 100644 rate-lavc/Makefile.am
+ delete mode 100644 rate-lavc/rate_lavcrate.c
+
+diff --git a/Makefile.am b/Makefile.am
+index 303bc83..27f61a4 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -17,8 +17,8 @@ endif
+ if HAVE_A52
+ SUBDIRS += a52
+ endif
+-if HAVE_AVCRATE
+-SUBDIRS += rate-lavc
++if HAVE_LAVRATE
++SUBDIRS += rate-lav
+ endif
+ if HAVE_USBSTREAM
+ SUBDIRS += usb_stream
+diff --git a/a52/Makefile.am b/a52/Makefile.am
+index cbc1497..4ac8edd 100644
+--- a/a52/Makefile.am
++++ b/a52/Makefile.am
+@@ -6,9 +6,8 @@ asound_module_addon_DATA = 60-a52-encoder.conf
+ asound_module_pcm_a52dir = @ALSA_PLUGIN_DIR@
+ asound_module_addondir = @ALSA_ADDON_DIR@
+ 
+-AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @AVCODEC_CFLAGS@ \
+-	-DAVCODEC_HEADER="@AVCODEC_HEADER@"
++AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @LIBAV_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+ 
+ libasound_module_pcm_a52_la_SOURCES = pcm_a52.c
+-libasound_module_pcm_a52_la_LIBADD = @ALSA_LIBS@ @AVCODEC_LIBS@
++libasound_module_pcm_a52_la_LIBADD = @ALSA_LIBS@ @LIBAV_LIBS@ @LIBAV_CODEC_LIBS@
+diff --git a/a52/pcm_a52.c b/a52/pcm_a52.c
+index 155da36..29ce45f 100644
+--- a/a52/pcm_a52.c
++++ b/a52/pcm_a52.c
+@@ -25,7 +25,7 @@
+ #include <alsa/asoundlib.h>
+ #include <alsa/pcm_external.h>
+ #include <alsa/pcm_plugin.h>
+-#include AVCODEC_HEADER
++#include <libavcodec/avcodec.h>
+ #include <libavutil/avutil.h>
+ 
+ /* some compatibility wrappers */
+diff --git a/configure.ac b/configure.ac
+index 2d7e6aa..cb1ae2d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -89,67 +89,55 @@ if test "$use_maemo_rm" = "yes"; then
+         fi
+ fi
+ 
+-AC_ARG_ENABLE([avcodec],
+-      AS_HELP_STRING([--disable-avcodec], [Don't build plugins depending on avcodec (a52)]))
++AC_ARG_ENABLE([libav],
++      AS_HELP_STRING([--disable-avlib], [Do not build plugins depending on libav/ffmpeg (a52,lavrate...)]))
+ 
+-if test "x$enable_avcodec" != "xno"; then
+-  PKG_CHECK_MODULES(AVCODEC, [libavcodec libavutil], [HAVE_AVCODEC=yes], [HAVE_AVCODEC=no])
++if test "x$enable_libav" != "xno"; then
++  PKG_CHECK_MODULES(LIBAV, [libavcodec libavutil libavresample], [HAVE_LIBAV=yes], [HAVE_LIBAV=no])
+ fi
+ 
+-if test "x$HAVE_AVCODEC" = "xno"; then
+-  AC_ARG_WITH([avcodec-includedir],
+-	AS_HELP_STRING([--with-avcodec-includedir=dir],
+-		[AVcodec include directory]),
+-	[AVCODEC_CFLAGS="-I$withval"], [AVCODEC_CFLAGS=""])
+-  AC_ARG_WITH([avcodec-libdir],
+-	AS_HELP_STRING([--with-avcodec-libdir=dir],
+-		[AVcodec library directory]),
+-	[AVCODEC_LIBS="-L$withval"], [AVCODEC_LIBS=""])
++if test "x$HAVE_LIBAV" = "xno"; then
++  AC_ARG_WITH([libav-includedir],
++	AS_HELP_STRING([--with-libav-includedir=dir],
++		[Libav/ffmpeg include directory]),
++		[LIBAV_CFLAGS="-I$(withval)"], [LIBAV_CFLAGS=""])
++  AC_ARG_WITH([libav-libdir],
++	AS_HELP_STRING([--with-libav-libdir=dir],
++		[Libav/ffmpeg library directory]),
++		[LIBAV_LIBS="-L$withval"], [LIBAV_LIBS=""])
+ 
+   CFLAGS_saved="$CFLAGS"
+   LDFLAGS_saved="$LDFLAGS"
+-  CFLAGS="$CFLAGS $AVCODEC_CFLAGS"
+-  LDFLAGS="$LDFLAGS $AVCODEC_LIBS"
+-  AVCODEC_LIBS="$AVCODEC_LIBS -lavcodec"
+-  AC_CHECK_LIB([avcodec], [avcodec_open], [HAVE_AVCODEC=yes], [HAVE_AVCODEC=no])
++  CFLAGS="$CFLAGS $LIBAV_CFLAGS"
++  LDFLAGS="$LDFLAGS $LIBAV_LIBS"
++  AC_CHECK_LIB([avcodec], [avcodec_open], [HAVE_LIBAV=yes], [HAVE_LIBAV=no])
+   CFLAGS="$CFLAGS_saved"
+   LDFLAGS="$LDFLAGS_saved"
++  LIBAV_CODEC_LIBS="-lavcodec"
++  LIBAV_RESAMPLE_LIBS="-lavresample -lavutil"
+ fi
+ 
+-if test $HAVE_AVCODEC = yes; then
+-  AVCODEC_HEADER=""
+-  CFLAGS_saved="$CFLAGS"
+-  CFLAGS="$CFLAGS $AVCODEC_CFLAGS"
+-  AC_CHECK_HEADER([ffmpeg/avcodec.h], [AVCODEC_HEADER='<ffmpeg/avcodec.h>'])
+-  if test -z "$AVCODEC_HEADER"; then
+-    AC_CHECK_HEADER([libavcodec/avcodec.h], [AVCODEC_HEADER='<libavcodec/avcodec.h>'])
+-  fi
+-  if test -z "$AVCODEC_HEADER"; then
+-    HAVE_AVCODEC=no
+-  fi
+-  CFLAGS="$CFLAGS_saved"
+-fi
+-
+-AM_CONDITIONAL(HAVE_AVCODEC, test x$HAVE_AVCODEC = xyes)
+-AC_SUBST(AVCODEC_CFLAGS)
+-AC_SUBST(AVCODEC_LIBS)
+-AC_SUBST(AVCODEC_HEADER)
++AM_CONDITIONAL(HAVE_LIBAV, test x$HAVE_LIBAV = xyes)
++AC_SUBST(LIBAV_CFLAGS)
++AC_SUBST(LIBAV_LIBS)
++AC_SUBST(LIBAV_CODEC_LIBS)
++AC_SUBST(LIBAV_RESAMPLE_LIBS)
+ 
+ AC_ARG_ENABLE([a52],
+       AS_HELP_STRING([--disable-a52], [Disable building of A52 encoder plugin]))
+ 
+-if test "x$enable_a52" != "xno" -a "$HAVE_AVCODEC" = "yes"; then
++if test "x$enable_a52" != "xno" -a "$HAVE_LIBAV" = "yes"; then
+   HAVE_A52=yes
+ fi
+ AM_CONDITIONAL(HAVE_A52, test x$HAVE_A52 = xyes)
+ 
+-AC_ARG_ENABLE([avcrate],
+-      AS_HELP_STRING([--disable-avcrate], [Disable building of AVC rate plugin]))
++AC_ARG_ENABLE([lavrate],
++      AS_HELP_STRING([--disable-lavrate], [Disable building of libav/ffmpeg rate plugin]))
+ 
+-if test "x$enable_avcrate" != "xno" -a "$HAVE_AVCODEC" = "yes"; then
+-  HAVE_AVCRATE=yes
++if test "x$enable_lavrate" != "xno" -a "$HAVE_LIBAV" = "yes"; then
++  HAVE_LAVRATE=yes
+ fi
+-AM_CONDITIONAL(HAVE_AVCRATE, test x$HAVE_AVCRATE = xyes)
++AM_CONDITIONAL(HAVE_LAVRATE, test x$HAVE_LAVRATE = xyes)
+ 
+ AC_ARG_ENABLE([speexdsp],
+       AS_HELP_STRING([--disable-speexdsp], [Disable building of speexdsp plugin]))
+@@ -245,7 +233,7 @@ AC_OUTPUT([
+ 	mix/Makefile
+ 	rate/Makefile
+ 	a52/Makefile
+-	rate-lavc/Makefile
++	rate-lav/Makefile
+ 	maemo/Makefile
+ 	doc/Makefile
+ 	usb_stream/Makefile
+@@ -276,14 +264,13 @@ if test "$HAVE_SAMPLERATE" = "yes"; then
+ fi
+ echo "Maemo plugin:       $HAVE_MAEMO_PLUGIN"
+ echo "  Using Osso resource manager: $use_maemo_rm"
+-if test "$HAVE_AVCODEC" = "yes"; then
+-  echo "AVCodec config:"
+-  echo "  AVCODEC_CFLAGS: $AVCODEC_CFLAGS"
+-  echo "  AVCODEC_LIBS: $AVCODEC_LIBS"
+-  echo "  AVCODEC_HEADER: $AVCODEC_HEADER"
++if test "$HAVE_LIBAV" = "yes"; then
++  echo "Libav/ffmpeg config:"
++  echo "  LIBAV_CFLAGS:   $LIBAV_CFLAGS"
++  echo "  LIBAV_LIBS:     $LIBAV_LIBS / $LIBAV_CODEC_LIBS / $LIBAV_RESAMPLE_LIBS"
+ fi
+-echo "A52 plugin:         $HAVE_A52"
+-echo "AVC rate plugin:    $HAVE_AVCRATE"
++echo "Libav A52 plugin:   $HAVE_A52"
++echo "Libav rate plugin:  $HAVE_LAVRATE"
+ echo "Speex rate plugin:  $PPH"
+ echo "Speex preprocess plugin:  $HAVE_SPEEXDSP"
+ if test "$HAVE_SPEEX" = "yes"; then
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index 0d6f6e5..7c004e5 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -21,8 +21,8 @@ endif
+ if HAVE_A52
+ EXTRA_DIST += a52.txt
+ endif
+-if HAVE_AVCRATE
+-EXTRA_DIST += lavcrate.txt
++if HAVE_LAVRATE
++EXTRA_DIST += lavrate.txt
+ endif
+ if HAVE_PPH
+ EXTRA_DIST += speexrate.txt
+diff --git a/doc/lavcrate.txt b/doc/lavrate.txt
+similarity index 76%
+rename from doc/lavcrate.txt
+rename to doc/lavrate.txt
+index faf3e25..6575183 100644
+--- a/doc/lavcrate.txt
++++ b/doc/lavrate.txt
+@@ -1,14 +1,14 @@
+-Rate Converter Plugin Using libavcodec
+-======================================
++Rate Converter Plugin Using libavresample
++=========================================0
+ 
+-The plugin in rate-lavc subdirectory is an external rate converter using
+-libavcodec's resampler.  You can use this rate converter plugin by defining a
++The plugin in rate-lavr subdirectory is an external rate converter using
++libavresample library. You can use this rate converter plugin by defining a
+ rate PCM with "converter" parameter, such as:
+ 
+ 	pcm.my_rate {
+ 		type rate
+ 		slave.pcm "hw"
+-		converter "lavcrate"
++		converter "lavrate"
+ 	}
+ 
+ The plug plugin has also a similar field, "rate_converter".
+diff --git a/rate-lavc/10-rate-lavc.conf b/rate-lav/10-rate-lav.conf
+similarity index 73%
+rename from rate-lavc/10-rate-lavc.conf
+rename to rate-lav/10-rate-lav.conf
+index bab1694..48ede62 100644
+--- a/rate-lavc/10-rate-lavc.conf
++++ b/rate-lav/10-rate-lav.conf
+@@ -1,4 +1,4 @@
+-pcm.lavcrate {
++pcm.lavrate {
+ 	@args [ SLAVE RATE CONVERTER ]
+ 	@args.SLAVE {
+ 		type string
+@@ -10,7 +10,7 @@ pcm.lavcrate {
+ 	}
+ 	@args.CONVERTER {
+ 		type string
+-		default "lavcrate"
++		default "lavrate"
+ 	}
+ 	type rate
+ 	converter $CONVERTER
+@@ -23,6 +23,6 @@ pcm.lavcrate {
+ 			@func refer
+ 			name defaults.namehint.basic
+ 		}
+-                description "Rate Converter Plugin Using AVC Library"
++                description "Rate Converter Plugin Using Libav/FFmpeg Library"
+ 	}
+ }
+diff --git a/rate-lav/Makefile.am b/rate-lav/Makefile.am
+new file mode 100644
+index 0000000..0f6ecb6
+--- /dev/null
++++ b/rate-lav/Makefile.am
+@@ -0,0 +1,25 @@
++EXTRA_DIST = 10-rate-lav.conf
++
++asound_module_rate_lavrate_LTLIBRARIES = libasound_module_rate_lavrate.la
++asound_module_addon_DATA = 10-rate-lav.conf
++
++asound_module_rate_lavratedir = @ALSA_PLUGIN_DIR@
++asound_module_addondir = @ALSA_ADDON_DIR@
++
++AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @LIBAV_CFLAGS@
++AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
++
++libasound_module_rate_lavrate_la_SOURCES = rate_lavrate.c
++libasound_module_rate_lavrate_la_LIBADD = @ALSA_LIBS@ @LIBAV_LIBS@ @LIBAV_RESAMPLE_LIBS@
++
++noinst_HEADERS = gcd.h
++
++install-exec-hook:
++	rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_*.so
++	$(LN_S) libasound_module_rate_lavrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_higher.so
++	$(LN_S) libasound_module_rate_lavrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_high.so
++	$(LN_S) libasound_module_rate_lavrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_fast.so
++	$(LN_S) libasound_module_rate_lavrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_faster.so
++
++uninstall-hook:
++	rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_*.so
+diff --git a/rate-lavc/gcd.h b/rate-lav/gcd.h
+similarity index 100%
+rename from rate-lavc/gcd.h
+rename to rate-lav/gcd.h
+diff --git a/rate-lav/rate_lavrate.c b/rate-lav/rate_lavrate.c
+new file mode 100644
+index 0000000..2b992c5
+--- /dev/null
++++ b/rate-lav/rate_lavrate.c
+@@ -0,0 +1,235 @@
++/*
++ * Rate converter plugin using libavresample
++ * Copyright (c) 2014 by Anton Khirnov
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Lesser General Public License for more details.
++ */
++
++#include <stdio.h>
++#include <alsa/asoundlib.h>
++#include <alsa/pcm_rate.h>
++
++#include <libavresample/avresample.h>
++#include <libavutil/channel_layout.h>
++#include <libavutil/opt.h>
++#include <libavutil/mathematics.h>
++#include <libavutil/samplefmt.h>
++
++
++static unsigned int filter_size = 16;
++static unsigned int phase_shift = 10; /* auto-adjusts */
++static double cutoff = 0; /* auto-adjusts */
++
++struct rate_src {
++	AVAudioResampleContext *avr;
++
++	unsigned int in_rate;
++	unsigned int out_rate;
++	unsigned int channels;
++};
++
++static snd_pcm_uframes_t input_frames(void *obj ATTRIBUTE_UNUSED,
++				      snd_pcm_uframes_t frames)
++{
++	return frames;
++}
++
++static snd_pcm_uframes_t output_frames(void *obj ATTRIBUTE_UNUSED,
++				       snd_pcm_uframes_t frames)
++{
++	return frames;
++}
++
++static void pcm_src_free(void *obj)
++{
++	struct rate_src *rate = obj;
++	avresample_free(&rate->avr);
++}
++
++static int pcm_src_init(void *obj, snd_pcm_rate_info_t *info)
++{
++	struct rate_src *rate = obj;
++	int i, ir, or;
++
++	if (!rate->avr || rate->channels != info->channels) {
++		int ret;
++
++		pcm_src_free(rate);
++		rate->channels = info->channels;
++		ir = rate->in_rate = info->in.rate;
++		or = rate->out_rate = info->out.rate;
++		i = av_gcd(or, ir);
++		if (or > ir) {
++			phase_shift = or/i;
++		} else {
++			phase_shift = ir/i;
++		}
++		if (cutoff <= 0.0) {
++			cutoff = 1.0 - 1.0/filter_size;
++			if (cutoff < 0.80)
++				cutoff = 0.80;
++		}
++
++		rate->avr = avresample_alloc_context();
++		if (!rate->avr)
++			return -ENOMEM;
++
++		av_opt_set_int(rate->avr, "in_sample_rate",     info->in.rate,  0);
++		av_opt_set_int(rate->avr, "out_sample_rate",    info->out.rate, 0);
++		av_opt_set_int(rate->avr, "in_sample_format",   AV_SAMPLE_FMT_S16, 0);
++		av_opt_set_int(rate->avr, "out_sample_format",  AV_SAMPLE_FMT_S16, 0);
++		av_opt_set_int(rate->avr, "in_channel_layout",  av_get_default_channel_layout(rate->channels), 0);
++		av_opt_set_int(rate->avr, "out_channel_layout", av_get_default_channel_layout(rate->channels), 0);
++
++		av_opt_set_int(rate->avr, "filter_size",        filter_size, 0);
++		av_opt_set_int(rate->avr, "phase_shift",        phase_shift, 0);
++		av_opt_set_double(rate->avr, "cutoff",          cutoff,      0);
++
++		ret = avresample_open(rate->avr);
++		if (ret < 0) {
++			avresample_free(&rate->avr);
++			return -EINVAL;
++		}
++	}
++
++	return 0;
++}
++
++static int pcm_src_adjust_pitch(void *obj, snd_pcm_rate_info_t *info)
++{
++	struct rate_src *rate = obj;
++
++	if (info->out.rate != rate->out_rate || info->in.rate != rate->in_rate)
++		pcm_src_init(obj, info);
++	return 0;
++}
++
++static void pcm_src_reset(void *obj)
++{
++	struct rate_src *rate = obj;
++
++	if (rate->avr) {
++#if 0
++		avresample_close(rate->avr);
++		avresample_open(rate->avr);
++#endif
++	}
++}
++
++static void pcm_src_convert_s16(void *obj, int16_t *dst,
++				unsigned int dst_frames,
++				const int16_t *src,
++				unsigned int src_frames)
++{
++	struct rate_src *rate = obj;
++	int chans = rate->channels;
++	unsigned int total_in = avresample_get_delay(rate->avr) + src_frames;
++
++	avresample_convert(rate->avr, (uint8_t **)&dst, dst_frames * chans * 2, dst_frames,
++	                   (uint8_t **)&src, src_frames * chans * 2, src_frames);
++
++	avresample_set_compensation(rate->avr,
++                                    total_in - src_frames > filter_size ? 0 : 1, src_frames);
++}
++
++static void pcm_src_close(void *obj)
++{
++	pcm_src_free(obj);
++}
++
++#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002
++static int get_supported_rates(void *obj ATTRIBUTE_UNUSED,
++			       unsigned int *rate_min,
++			       unsigned int *rate_max)
++{
++	*rate_min = *rate_max = 0; /* both unlimited */
++	return 0;
++}
++
++static void dump(void *obj ATTRIBUTE_UNUSED, snd_output_t *out)
++{
++	snd_output_printf(out, "Converter: libavr\n");
++}
++#endif
++
++static snd_pcm_rate_ops_t pcm_src_ops = {
++	.close = pcm_src_close,
++	.init = pcm_src_init,
++	.free = pcm_src_free,
++	.reset = pcm_src_reset,
++	.adjust_pitch = pcm_src_adjust_pitch,
++	.convert_s16 = pcm_src_convert_s16,
++	.input_frames = input_frames,
++	.output_frames = output_frames,
++#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002
++	.version = SND_PCM_RATE_PLUGIN_VERSION,
++	.get_supported_rates = get_supported_rates,
++	.dump = dump,
++#endif
++};
++
++int pcm_src_open(unsigned int version, void **objp, snd_pcm_rate_ops_t *ops)
++
++{
++	struct rate_src *rate;
++
++#if SND_PCM_RATE_PLUGIN_VERSION < 0x010002
++	if (version != SND_PCM_RATE_PLUGIN_VERSION) {
++		fprintf(stderr, "Invalid rate plugin version %x\n", version);
++		return -EINVAL;
++	}
++#endif
++	rate = calloc(1, sizeof(*rate));
++	if (!rate)
++		return -ENOMEM;
++
++	*objp = rate;
++	rate->avr = NULL;
++#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002
++	if (version == 0x010001)
++		memcpy(ops, &pcm_src_ops, sizeof(snd_pcm_rate_old_ops_t));
++	else
++#endif
++		*ops = pcm_src_ops;
++	return 0;
++}
++
++int SND_PCM_RATE_PLUGIN_ENTRY(lavrate)(unsigned int version, void **objp,
++			snd_pcm_rate_ops_t *ops)
++{
++	return pcm_src_open(version, objp, ops);
++}
++int SND_PCM_RATE_PLUGIN_ENTRY(lavrate_higher)(unsigned int version,
++			void **objp, snd_pcm_rate_ops_t *ops)
++{
++	filter_size = 64;
++	return pcm_src_open(version, objp, ops);
++}
++int SND_PCM_RATE_PLUGIN_ENTRY(lavrate_high)(unsigned int version,
++			void **objp, snd_pcm_rate_ops_t *ops)
++{
++	filter_size = 32;
++	return pcm_src_open(version, objp, ops);
++}
++int SND_PCM_RATE_PLUGIN_ENTRY(lavrate_fast)(unsigned int version,
++			void **objp, snd_pcm_rate_ops_t *ops)
++{
++	filter_size = 8;
++	return pcm_src_open(version, objp, ops);
++}
++int SND_PCM_RATE_PLUGIN_ENTRY(lavrate_faster)(unsigned int version,
++			void **objp, snd_pcm_rate_ops_t *ops)
++{
++	filter_size = 4;
++	return pcm_src_open(version, objp, ops);
++}
++
++
+diff --git a/rate-lavc/Makefile.am b/rate-lavc/Makefile.am
+deleted file mode 100644
+index 5f66472..0000000
+--- a/rate-lavc/Makefile.am
++++ /dev/null
+@@ -1,26 +0,0 @@
+-EXTRA_DIST = 10-rate-lavc.conf
+-
+-asound_module_rate_lavcrate_LTLIBRARIES = libasound_module_rate_lavcrate.la
+-asound_module_addon_DATA = 10-rate-lavc.conf
+-
+-asound_module_rate_lavcratedir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
+-
+-AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @AVCODEC_CFLAGS@ \
+-	-DAVCODEC_HEADER="@AVCODEC_HEADER@"
+-AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+-
+-libasound_module_rate_lavcrate_la_SOURCES = rate_lavcrate.c
+-libasound_module_rate_lavcrate_la_LIBADD = @ALSA_LIBS@ @AVCODEC_LIBS@
+-
+-noinst_HEADERS = gcd.h
+-
+-install-exec-hook:
+-	rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_*.so
+-	$(LN_S) libasound_module_rate_lavcrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_higher.so
+-	$(LN_S) libasound_module_rate_lavcrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_high.so
+-	$(LN_S) libasound_module_rate_lavcrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_fast.so
+-	$(LN_S) libasound_module_rate_lavcrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_faster.so
+-
+-uninstall-hook:
+-	rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_*.so
+diff --git a/rate-lavc/rate_lavcrate.c b/rate-lavc/rate_lavcrate.c
+deleted file mode 100644
+index 14a2198..0000000
+--- a/rate-lavc/rate_lavcrate.c
++++ /dev/null
+@@ -1,291 +0,0 @@
+-/*
+- * Rate converter plugin using libavcodec's resampler
+- * Copyright (c) 2007 by Nicholas Kain <njkain@gmail.com>
+- *
+- * based on rate converter that uses libsamplerate
+- * Copyright (c) 2006 by Takashi Iwai <tiwai@suse.de>
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Lesser General Public
+- * License as published by the Free Software Foundation; either
+- * version 2.1 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Lesser General Public License for more details.
+- */
+-
+-#include <stdio.h>
+-#include <alsa/asoundlib.h>
+-#include <alsa/pcm_rate.h>
+-#include AVCODEC_HEADER
+-#include "gcd.h"
+-
+-static int filter_size = 16;
+-static int phase_shift = 10; /* auto-adjusts */
+-static double cutoff = 0; /* auto-adjusts */
+-
+-struct rate_src {
+-	struct AVResampleContext *context;
+-	int in_rate;
+-	int out_rate;
+-	int stored;
+-	int point;
+-	int16_t **out;
+-	int16_t **in;
+-	unsigned int channels;
+-};
+-
+-static snd_pcm_uframes_t input_frames(void *obj, snd_pcm_uframes_t frames)
+-{
+-	return frames;
+-}
+-
+-static snd_pcm_uframes_t output_frames(void *obj, snd_pcm_uframes_t frames)
+-{
+-	return frames;
+-}
+-
+-static void pcm_src_free(void *obj)
+-{
+-	struct rate_src *rate = obj;
+-	int i;
+-
+-	if (rate->out) {
+-		for (i=0; i<rate->channels; i++) {
+-			free(rate->out[i]);
+-		}
+-		free(rate->out);
+-	}
+-	if (rate->in) {
+-		for (i=0; i<rate->channels; i++) {
+-			free(rate->in[i]);
+-		}
+-		free(rate->in);
+-	}
+-	rate->out = rate->in = NULL;
+-
+-	if (rate->context) {
+-		av_resample_close(rate->context);
+-		rate->context = NULL;
+-	}
+-}
+-
+-static int pcm_src_init(void *obj, snd_pcm_rate_info_t *info)
+-{
+-	struct rate_src *rate = obj;
+-	int i, ir, or;
+-
+-	if (! rate->context || rate->channels != info->channels) {
+-		pcm_src_free(rate);
+-		rate->channels = info->channels;
+-		ir = rate->in_rate = info->in.rate;
+-		or = rate->out_rate = info->out.rate;
+-		i = gcd(or, ir);
+-		if (or > ir) {
+-			phase_shift = or/i;
+-		} else {
+-			phase_shift = ir/i;
+-		}
+-		if (cutoff <= 0.0) {
+-			cutoff = 1.0 - 1.0/filter_size;
+-			if (cutoff < 0.80)
+-				cutoff = 0.80;
+-		}
+-		rate->context = av_resample_init(info->out.rate, info->in.rate,
+-			filter_size, phase_shift,
+-			(info->out.rate >= info->in.rate ? 0 : 1), cutoff);
+-		if (!rate->context)
+-			return -EINVAL;
+-	}
+-
+-	rate->out = malloc(rate->channels * sizeof(int16_t *));
+-	rate->in = malloc(rate->channels * sizeof(int16_t *));
+-	for (i=0; i<rate->channels; i++) {
+-		rate->out[i] = calloc(info->out.period_size * 2, 
+-			sizeof(int16_t));
+-		rate->in[i] = calloc(info->in.period_size * 2,
+-			sizeof(int16_t));
+-	}
+-	rate->point = info->in.period_size / 2;
+-	if (!rate->out || !rate->in) {
+-		pcm_src_free(rate);
+-		return -ENOMEM;
+-	}
+-
+-	return 0;
+-}
+-
+-static int pcm_src_adjust_pitch(void *obj, snd_pcm_rate_info_t *info)
+-{
+-	struct rate_src *rate = obj;
+-
+-	if (info->out.rate != rate->out_rate || info->in.rate != rate->in_rate)
+-		pcm_src_init(obj, info);
+-	return 0;
+-}
+-
+-static void pcm_src_reset(void *obj)
+-{
+-	struct rate_src *rate = obj;
+-	rate->stored = 0;
+-}
+-
+-static void deinterleave(const int16_t *src, int16_t **dst, unsigned int frames,
+-	unsigned int chans, int overflow)
+-{
+-	int i, j;
+-
+-	if (chans == 1) {
+-		memcpy(dst + overflow, src, frames*sizeof(int16_t));
+-	} else if (chans == 2) {
+-		for (j=overflow; j<(frames + overflow); j++) {
+-			dst[0][j] = *(src++);
+-			dst[1][j] = *(src++);
+-		}
+-	} else {
+-		for (j=overflow; j<(frames + overflow); j++) {
+-			for (i=0; i<chans; i++) {
+-				dst[i][j] = *(src++);
+-			}
+-		}
+-	}
+-}
+-
+-static void reinterleave(int16_t **src, int16_t *dst, unsigned int frames,
+-	unsigned int chans)
+-{
+-	int i, j;
+-
+-	if (chans == 1) {
+-		memcpy(dst, src, frames*sizeof(int16_t));
+-	} else if (chans == 2) {
+-		for (j=0; j<frames; j++) {
+-			*(dst++) = src[0][j];
+-			*(dst++) = src[1][j];
+-		}
+-	} else {
+-		for (j=0; j<frames; j++) {
+-			for (i=0; i<chans; i++) {
+-				*(dst++) = src[i][j];
+-			}
+-		}
+-	}
+-}
+-
+-static void pcm_src_convert_s16(void *obj, int16_t *dst, unsigned int
+-	dst_frames, const int16_t *src, unsigned int src_frames)
+-{
+-	struct rate_src *rate = obj;
+-	int consumed = 0, chans=rate->channels, ret=0, i;
+-	int total_in = rate->stored + src_frames, new_stored;
+-
+-	deinterleave(src, rate->in, src_frames, chans, rate->point);
+-	for (i=0; i<chans; ++i) {	
+-		ret = av_resample(rate->context, rate->out[i],
+-				rate->in[i]+rate->point-rate->stored, &consumed,
+-				total_in, dst_frames, i == (chans - 1));
+-		new_stored = total_in-consumed;
+-		memmove(rate->in[i]+rate->point-new_stored,
+-				rate->in[i]+rate->point-rate->stored+consumed,
+-				new_stored*sizeof(int16_t));
+-	}
+-	av_resample_compensate(rate->context,
+-			total_in-src_frames>filter_size?0:1, src_frames);
+-	reinterleave(rate->out, dst, ret, chans);
+-	rate->stored = total_in-consumed;
+-}
+-
+-static void pcm_src_close(void *obj)
+-{
+-	pcm_src_free(obj);
+-}
+-
+-#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002
+-static int get_supported_rates(void *obj, unsigned int *rate_min,
+-			       unsigned int *rate_max)
+-{
+-	*rate_min = *rate_max = 0; /* both unlimited */
+-	return 0;
+-}
+-
+-static void dump(void *obj, snd_output_t *out)
+-{
+-	snd_output_printf(out, "Converter: liblavc\n");
+-}
+-#endif
+-
+-static snd_pcm_rate_ops_t pcm_src_ops = {
+-	.close = pcm_src_close,
+-	.init = pcm_src_init,
+-	.free = pcm_src_free,
+-	.reset = pcm_src_reset,
+-	.adjust_pitch = pcm_src_adjust_pitch,
+-	.convert_s16 = pcm_src_convert_s16,
+-	.input_frames = input_frames,
+-	.output_frames = output_frames,
+-#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002
+-	.version = SND_PCM_RATE_PLUGIN_VERSION,
+-	.get_supported_rates = get_supported_rates,
+-	.dump = dump,
+-#endif
+-};
+-
+-int pcm_src_open(unsigned int version, void **objp, snd_pcm_rate_ops_t *ops)
+-
+-{
+-	struct rate_src *rate;
+-
+-#if SND_PCM_RATE_PLUGIN_VERSION < 0x010002
+-	if (version != SND_PCM_RATE_PLUGIN_VERSION) {
+-		fprintf(stderr, "Invalid rate plugin version %x\n", version);
+-		return -EINVAL;
+-	}
+-#endif
+-	rate = calloc(1, sizeof(*rate));
+-	if (!rate)
+-		return -ENOMEM;
+-
+-	*objp = rate;
+-	rate->context = NULL;
+-#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002
+-	if (version == 0x010001)
+-		memcpy(ops, &pcm_src_ops, sizeof(snd_pcm_rate_old_ops_t));
+-	else
+-#endif
+-		*ops = pcm_src_ops;
+-	return 0;
+-}
+-
+-int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate)(unsigned int version, void **objp,
+-			snd_pcm_rate_ops_t *ops)
+-{
+-	return pcm_src_open(version, objp, ops);
+-}
+-int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_higher)(unsigned int version,
+-			void **objp, snd_pcm_rate_ops_t *ops)
+-{
+-	filter_size = 64;
+-	return pcm_src_open(version, objp, ops);
+-}
+-int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_high)(unsigned int version,
+-			void **objp, snd_pcm_rate_ops_t *ops)
+-{
+-	filter_size = 32;
+-	return pcm_src_open(version, objp, ops);
+-}
+-int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_fast)(unsigned int version,
+-			void **objp, snd_pcm_rate_ops_t *ops)
+-{
+-	filter_size = 8;
+-	return pcm_src_open(version, objp, ops);
+-}
+-int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_faster)(unsigned int version,
+-			void **objp, snd_pcm_rate_ops_t *ops)
+-{
+-	filter_size = 4;
+-	return pcm_src_open(version, objp, ops);
+-}
+-
+-
+-- 
+2.13.6
+
+
+From 4afd4ab0b276b26b965bae3aadaa31cdb52b1df0 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Mon, 16 Apr 2018 17:49:36 +0200
+Subject: [PATCH 5/8] configure: change --with-alsaaddondir to
+ --with-alsagconfdir and --with-alsalconfdir
+
+The local add-on configuration directory (/etc/alsa/conf.d) contains
+links to the global configuration directory (/usr/share/alsa/alsa.conf.d) now.
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ a52/Makefile.am        | 14 +++++++++++---
+ arcam-av/Makefile.am   | 14 +++++++++++---
+ configure.ac           | 32 ++++++++++++++++++++++----------
+ install-hooks.am       | 16 ++++++++++++++++
+ jack/Makefile.am       | 14 +++++++++++---
+ maemo/Makefile.am      | 14 +++++++++++---
+ mix/Makefile.am        | 14 +++++++++++---
+ oss/Makefile.am        | 14 +++++++++++---
+ pph/Makefile.am        | 16 ++++++++++++----
+ pulse/Makefile.am      | 17 ++++++++++++++---
+ rate-lav/Makefile.am   | 13 ++++++++++---
+ rate/Makefile.am       | 14 +++++++++++---
+ speex/Makefile.am      | 14 +++++++++++---
+ usb_stream/Makefile.am | 14 +++++++++++---
+ 14 files changed, 173 insertions(+), 47 deletions(-)
+ create mode 100644 install-hooks.am
+
+diff --git a/a52/Makefile.am b/a52/Makefile.am
+index 4ac8edd..cd5ce45 100644
+--- a/a52/Makefile.am
++++ b/a52/Makefile.am
+@@ -1,13 +1,21 @@
+-EXTRA_DIST = 60-a52-encoder.conf
++GCONF_FILES = 60-a52-encoder.conf
++
++EXTRA_DIST = $(GCONF_FILES)
+ 
+ asound_module_pcm_a52_LTLIBRARIES = libasound_module_pcm_a52.la
+-asound_module_addon_DATA = 60-a52-encoder.conf
++asound_module_gconf_DATA = $(GCONF_FILES)
+ 
+ asound_module_pcm_a52dir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @LIBAV_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+ 
+ libasound_module_pcm_a52_la_SOURCES = pcm_a52.c
+ libasound_module_pcm_a52_la_LIBADD = @ALSA_LIBS@ @LIBAV_LIBS@ @LIBAV_CODEC_LIBS@
++
++include ../install-hooks.am
++
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+diff --git a/arcam-av/Makefile.am b/arcam-av/Makefile.am
+index 4a54ccd..c16aec0 100644
+--- a/arcam-av/Makefile.am
++++ b/arcam-av/Makefile.am
+@@ -1,13 +1,21 @@
+-EXTRA_DIST = 50-arcam-av-ctl.conf
++GCONF_FILES = 50-arcam-av-ctl.conf
++
++EXTRA_DIST = $(GCONF_FILES)
+ 
+ asound_module_ctl_arcam_av_LTLIBRARIES = libasound_module_ctl_arcam_av.la
+-asound_module_addon_DATA = 50-arcam-av-ctl.conf
++asound_module_gconf_DATA = $(GCONF_FILES)
+ 
+ asound_module_ctl_arcam_avdir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined
+ 
+ libasound_module_ctl_arcam_av_la_SOURCES = ctl_arcam_av.c arcam_av.c arcam_av.h
+ libasound_module_ctl_arcam_av_la_LIBADD = @ALSA_LIBS@
++
++include ../install-hooks.am
++
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+diff --git a/configure.ac b/configure.ac
+index cb1ae2d..f49bb6b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -210,17 +210,29 @@ AC_DEFINE_UNQUOTED(ALSA_DATA_DIR, "$alsadatadir", [directory containing ALSA dat
+ ALSA_DATA_DIR="$alsadatadir"
+ AC_SUBST(ALSA_DATA_DIR)
+ 
+-dnl ALSA add-on config directory
+-AC_ARG_WITH(alsaaddondir,
+-    AS_HELP_STRING([--with-alsaaddondir=dir],
+-	[path where ALSA add-on config files are stored]),
+-    alsaaddondir="$withval", alsaaddondir="")
+-if test -z "$alsaaddondir"; then
+-    alsaaddondir="/etc/alsa/conf.d"
++dnl ALSA add-on global config directory
++AC_ARG_WITH(alsagconfdir,
++    AS_HELP_STRING([--with-alsagconfdir=dir],
++	[path where ALSA global add-on config files are stored]),
++    alsagconfdir="$withval", alsagconfdir="")
++if test -z "$alsagconfdir"; then
++    alsagconfdir="$ALSA_DATA_DIR/alsa.conf.d"
+ fi
+-AC_DEFINE_UNQUOTED(ALSA_ADDON_DIR, "$alsaaddondir", [directory containing ALSA add-on config files])
+-ALSA_ADDON_DIR="$alsaaddondir"
+-AC_SUBST(ALSA_ADDON_DIR)
++AC_DEFINE_UNQUOTED(ALSA_GCONF_DIR, "$alsagconfdir", [directory containing global ALSA add-on config files])
++ALSA_GCONF_DIR="$alsagconfdir"
++AC_SUBST(ALSA_GCONF_DIR)
++
++dnl ALSA add-on local config directory
++AC_ARG_WITH(alsalconfdir,
++    AS_HELP_STRING([--with-alsalconfdir=dir],
++	[path where ALSA local add-on config files are stored]),
++    alsalconfdir="$withval", alsalconfdir="")
++if test -z "$alsalconfdir"; then
++    alsalconfdir="/etc/alsa/conf.d"
++fi
++AC_DEFINE_UNQUOTED(ALSA_LCONF_DIR, "$alsalconfdir", [directory containing local ALSA add-on config files])
++ALSA_LCONF_DIR="$alsalconfdir"
++AC_SUBST(ALSA_LCONF_DIR)
+ 
+ SAVE_PLUGINS_VERSION
+ 
+diff --git a/install-hooks.am b/install-hooks.am
+new file mode 100644
+index 0000000..2d6d383
+--- /dev/null
++++ b/install-hooks.am
+@@ -0,0 +1,16 @@
++install-conf-hook:
++	mkdir -p $(DESTDIR)$(ALSA_LCONF_DIR)
++	@(echo cd $(DESTDIR)$(ALSA_LCONF_DIR);			\
++	  cd $(DESTDIR)$(ALSA_LCONF_DIR);			\
++	  for i in $(GCONF_FILES); do				\
++	    echo $(RM) $$i";" ln -s $(ALSA_GCONF_DIR)/$$i .;	\
++	    $(RM) $$i;						\
++	    ln -s $(ALSA_GCONF_DIR)/$$i .;			\
++	  done)
++uninstall-conf-hook:
++	@(echo cd $(DESTDIR)$(ALSA_LCONF_DIR);			\
++	  cd $(DESTDIR)$(ALSA_LCONF_DIR);			\
++	  for i in $(GCONF_FILES); do				\
++	    echo $(RM) $$i;					\
++	    $(RM) $$i;						\
++	  done)
+diff --git a/jack/Makefile.am b/jack/Makefile.am
+index 0a3d6ae..7801194 100644
+--- a/jack/Makefile.am
++++ b/jack/Makefile.am
+@@ -1,13 +1,21 @@
+-EXTRA_DIST = 50-jack.conf
++GCONF_FILES = 50-jack.conf
++
++EXTRA_DIST = $(GCONF_FILES)
+ 
+ asound_module_pcm_jack_LTLIBRARIES = libasound_module_pcm_jack.la
+-asound_module_addon_DATA = 50-jack.conf
++asound_module_gconf_DATA = $(GCONF_FILES)
+ 
+ asound_module_pcm_jackdir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @JACK_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+ 
+ libasound_module_pcm_jack_la_SOURCES = pcm_jack.c
+ libasound_module_pcm_jack_la_LIBADD = @ALSA_LIBS@ @JACK_LIBS@
++
++include ../install-hooks.am
++
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+diff --git a/maemo/Makefile.am b/maemo/Makefile.am
+index aca481d..7749926 100644
+--- a/maemo/Makefile.am
++++ b/maemo/Makefile.am
+@@ -1,12 +1,14 @@
+-EXTRA_DIST = 98-maemo.conf
++GCONF_FILES = 98-maemo.conf
++
++EXTRA_DIST = $(GCONF_FILES)
+ 
+ asound_module_pcm_alsa_dsp_LTLIBRARIES = libasound_module_pcm_alsa_dsp.la
+ asound_module_ctl_dsp_ctl_LTLIBRARIES = libasound_module_ctl_dsp_ctl.la
+-asound_module_addon_DATA = 98-maemo.conf
++asound_module_gconf_DATA = $(GCONF_FILES)
+ 
+ asound_module_pcm_alsa_dspdir = @ALSA_PLUGIN_DIR@
+ asound_module_ctl_dsp_ctldir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
+ 
+ AM_CFLAGS = -Wall -O2 @ALSA_CFLAGS@ $(DBUS_CFLAGS)
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+@@ -19,3 +21,9 @@ libasound_module_ctl_dsp_ctl_la_LIBADD = @ALSA_LIBS@ $(DBUS_LIBS) -lpthread
+ 
+ noinst_HEADERS = constants.h debug.h dsp-protocol.h list.h reporting.h \
+ 	         types.h
++
++include ../install-hooks.am
++
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+diff --git a/mix/Makefile.am b/mix/Makefile.am
+index 710606c..a74c200 100644
+--- a/mix/Makefile.am
++++ b/mix/Makefile.am
+@@ -1,12 +1,14 @@
+-EXTRA_DIST = 60-upmix.conf 60-vdownmix.conf
++GCONF_FILES = 60-upmix.conf 60-vdownmix.conf
++
++EXTRA_DIST = $(GCONF_FILES)
+ 
+ asound_module_pcm_upmix_LTLIBRARIES = libasound_module_pcm_upmix.la
+ asound_module_pcm_vdownmix_LTLIBRARIES = libasound_module_pcm_vdownmix.la
+-asound_module_addon_DATA = 60-upmix.conf 60-vdownmix.conf
++asound_module_gconf_DATA = $(GCONF_FILES)
+ 
+ asound_module_pcm_upmixdir = @ALSA_PLUGIN_DIR@
+ asound_module_pcm_vdownmixdir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+@@ -15,3 +17,9 @@ libasound_module_pcm_upmix_la_SOURCES = pcm_upmix.c
+ libasound_module_pcm_upmix_la_LIBADD = @ALSA_LIBS@
+ libasound_module_pcm_vdownmix_la_SOURCES = pcm_vdownmix.c
+ libasound_module_pcm_vdownmix_la_LIBADD = @ALSA_LIBS@
++
++include ../install-hooks.am
++
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+diff --git a/oss/Makefile.am b/oss/Makefile.am
+index df83d20..46dfcac 100644
+--- a/oss/Makefile.am
++++ b/oss/Makefile.am
+@@ -1,12 +1,14 @@
+-EXTRA_DIST = 50-oss.conf
++GCONF_FILEs = 50-oss.conf
++
++EXTRA_DIST = $(GCONF_FILES)
+ 
+ asound_module_pcm_oss_LTLIBRARIES = libasound_module_pcm_oss.la
+ asound_module_ctl_oss_LTLIBRARIES = libasound_module_ctl_oss.la
+-asound_module_addon_DATA = 50-oss.conf
++asound_module_gconf_DATA = $(GCONF_FILES)
+ 
+ asound_module_pcm_ossdir = @ALSA_PLUGIN_DIR@
+ asound_module_ctl_ossdir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+@@ -16,3 +18,9 @@ libasound_module_pcm_oss_la_LIBADD = @ALSA_LIBS@
+ 
+ libasound_module_ctl_oss_la_SOURCES = ctl_oss.c
+ libasound_module_ctl_oss_la_LIBADD = @ALSA_LIBS@
++
++include ../install-hooks.am
++
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+diff --git a/pph/Makefile.am b/pph/Makefile.am
+index abb950b..6938b74 100644
+--- a/pph/Makefile.am
++++ b/pph/Makefile.am
+@@ -1,10 +1,12 @@
+-EXTRA_DIST = 10-speexrate.conf
++GCONF_FILES = 10-speexrate.conf
++
++EXTRA_DIST = $(GCONF_FILES)
+ 
+ asound_module_rate_speexrate_LTLIBRARIES = libasound_module_rate_speexrate.la
+-asound_module_addon_DATA = 10-speexrate.conf
++asound_module_gconf_DATA = $(GCONF_FILES)
+ 
+ asound_module_rate_speexratedir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
+ 
+ AM_CFLAGS = -DVAR_ARRAYS -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+@@ -20,6 +22,10 @@ libasound_module_rate_speexrate_la_SOURCES += resample.c
+ libasound_module_rate_speexrate_la_LIBADD += -lm
+ endif
+ 
++noinst_HEADERS = speex_resampler.h arch.h fixed_generic.h
++
++include ../install-hooks.am
++
+ install-exec-hook:
+ 	rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_speexrate_*.so
+ 	$(LN_S) libasound_module_rate_speexrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_speexrate_best.so
+@@ -28,4 +34,6 @@ install-exec-hook:
+ uninstall-hook:
+ 	rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_speexrate_*.so
+ 
+-noinst_HEADERS = speex_resampler.h arch.h fixed_generic.h
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+diff --git a/pulse/Makefile.am b/pulse/Makefile.am
+index 835808c..c33e702 100644
+--- a/pulse/Makefile.am
++++ b/pulse/Makefile.am
+@@ -1,14 +1,19 @@
+-EXTRA_DIST = 50-pulseaudio.conf 99-pulseaudio-default.conf.example
++GCONF_FILES = 50-pulseaudio.conf
++LCONF_FILES = 99-pulseaudio-default.conf.example
++
++EXTRA_DIST = $(GCONF_FILES) $(LCONF_FILES)
+ 
+ asound_module_pcm_LTLIBRARIES = libasound_module_pcm_pulse.la
+ asound_module_ctl_LTLIBRARIES = libasound_module_ctl_pulse.la
+ asound_module_conf_LTLIBRARIES = libasound_module_conf_pulse.la
+-asound_module_addon_DATA = 50-pulseaudio.conf 99-pulseaudio-default.conf.example
++asound_module_gconf_DATA = $(GCONF_FILES)
++asound_module_lconf_DATA = $(LCONF_FILES)
+ 
+ asound_module_pcmdir = @ALSA_PLUGIN_DIR@
+ asound_module_ctldir = @ALSA_PLUGIN_DIR@
+ asound_module_confdir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
++asound_module_lconfdir = @ALSA_LCONF_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ $(PTHREAD_CFLAGS) $(pulseaudio_CFLAGS) -D_GNU_SOURCE
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+@@ -21,3 +26,9 @@ libasound_module_ctl_pulse_la_LIBADD = @ALSA_LIBS@ $(PTHREAD_LIBS) $(pulseaudio_
+ 
+ libasound_module_conf_pulse_la_SOURCES = conf_pulse.c
+ libasound_module_conf_pulse_la_LIBADD = @ALSA_LIBS@ $(PTHREAD_LIBS) $(pulseaudio_LIBS)
++
++include ../install-hooks.am
++
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+diff --git a/rate-lav/Makefile.am b/rate-lav/Makefile.am
+index 0f6ecb6..eb672b5 100644
+--- a/rate-lav/Makefile.am
++++ b/rate-lav/Makefile.am
+@@ -1,10 +1,12 @@
+-EXTRA_DIST = 10-rate-lav.conf
++GCONF_FILES = 10-rate-lav.conf
++
++EXTRA_DIST = $(GCONF_FILES)
+ 
+ asound_module_rate_lavrate_LTLIBRARIES = libasound_module_rate_lavrate.la
+-asound_module_addon_DATA = 10-rate-lav.conf
++asound_module_gconf_DATA = $(GCONF_FILES)
+ 
+ asound_module_rate_lavratedir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @LIBAV_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+@@ -14,6 +16,8 @@ libasound_module_rate_lavrate_la_LIBADD = @ALSA_LIBS@ @LIBAV_LIBS@ @LIBAV_RESAMP
+ 
+ noinst_HEADERS = gcd.h
+ 
++include ../install-hooks.am
++
+ install-exec-hook:
+ 	rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_*.so
+ 	$(LN_S) libasound_module_rate_lavrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_higher.so
+@@ -23,3 +27,6 @@ install-exec-hook:
+ 
+ uninstall-hook:
+ 	rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_*.so
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+diff --git a/rate/Makefile.am b/rate/Makefile.am
+index 25014d8..488c12a 100644
+--- a/rate/Makefile.am
++++ b/rate/Makefile.am
+@@ -1,10 +1,12 @@
+-EXTRA_DIST = 10-samplerate.conf
++GCONF_FILES = 10-samplerate.conf
++
++EXTRA_DIST = $(GCONF_FILES)
+ 
+ asound_module_rate_samplerate_LTLIBRARIES = libasound_module_rate_samplerate.la
+-asound_module_addon_DATA = 10-samplerate.conf
++asound_module_gconf_DATA = $(GCONF_FILES)
+ 
+ asound_module_rate_sampleratedir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ $(samplerate_CFLAGS)
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+@@ -12,6 +14,8 @@ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUN
+ libasound_module_rate_samplerate_la_SOURCES = rate_samplerate.c
+ libasound_module_rate_samplerate_la_LIBADD = @ALSA_LIBS@ @samplerate_LIBS@
+ 
++include ../install-hooks.am
++
+ install-exec-hook:
+ 	rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_samplerate_*.so
+ 	$(LN_S) libasound_module_rate_samplerate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_samplerate_best.so
+@@ -21,3 +25,7 @@ install-exec-hook:
+ 
+ uninstall-hook:
+ 	rm -f $(DESTDIR)$(libdir)/alsa-lib/libasound_module_rate_samplerate_*.so
++
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+diff --git a/speex/Makefile.am b/speex/Makefile.am
+index 7891954..27c4ea5 100644
+--- a/speex/Makefile.am
++++ b/speex/Makefile.am
+@@ -1,13 +1,21 @@
+-EXTRA_DIST = 60-speex.conf
++GCONF_FILES = 60-speex.conf
++
++EXTRA_DIST = $(GCONF_FILES)
+ 
+ asound_module_pcm_speex_LTLIBRARIES = libasound_module_pcm_speex.la
+-asound_module_addon_DATA = 60-speex.conf
++asound_module_gconf_DATA = $(GCONF_FILES)
+ 
+ asound_module_pcm_speexdir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @speexdsp_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED)
+ 
+ libasound_module_pcm_speex_la_SOURCES = pcm_speex.c
+ libasound_module_pcm_speex_la_LIBADD = @ALSA_LIBS@ @speexdsp_LIBS@
++
++include ../install-hooks.am
++
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+diff --git a/usb_stream/Makefile.am b/usb_stream/Makefile.am
+index b606d3d..203618b 100644
+--- a/usb_stream/Makefile.am
++++ b/usb_stream/Makefile.am
+@@ -1,10 +1,12 @@
+-EXTRA_DIST = 98-usb-stream.conf
++GCONF_FILES = 98-usb-stream.conf
++
++EXTRA_DIST = $(GCONF_FILES)
+ 
+ asound_module_pcm_usb_stream_LTLIBRARIES = libasound_module_pcm_usb_stream.la
+-asound_module_addon_DATA = 98-usb-stream.conf
++asound_module_gconf_DATA = $(GCONF_FILES)
+ 
+ asound_module_pcm_usb_streamdir = @ALSA_PLUGIN_DIR@
+-asound_module_addondir = @ALSA_ADDON_DIR@
++asound_module_gconfdir = @ALSA_GCONF_DIR@
+ 
+ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic $(LDFLAGS_NOUNDEFINED)
+@@ -13,3 +15,9 @@ libasound_module_pcm_usb_stream_la_SOURCES = pcm_usb_stream.c
+ libasound_module_pcm_usb_stream_la_LIBADD = @ALSA_LIBS@
+ 
+ noinst_HEADERS = usb_stream.h
++
++include ../install-hooks.am
++
++install-data-hook: install-conf-hook
++
++uninstall-local: uninstall-conf-hook
+-- 
+2.13.6
+
+
+From beb24e58763e3b1d831fcd7ef87a478e6ac74fcc Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Mon, 16 Apr 2018 18:14:18 +0200
+Subject: [PATCH 6/8] oss/Makefile.am: fix typo
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ oss/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/oss/Makefile.am b/oss/Makefile.am
+index 46dfcac..bff4443 100644
+--- a/oss/Makefile.am
++++ b/oss/Makefile.am
+@@ -1,4 +1,4 @@
+-GCONF_FILEs = 50-oss.conf
++GCONF_FILES = 50-oss.conf
+ 
+ EXTRA_DIST = $(GCONF_FILES)
+ 
+-- 
+2.13.6
+
+
+From 992b7eb1f1fe95fe7b8b622042aa32c33fffd18d Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 22 May 2018 14:13:53 +0200
+Subject: [PATCH 7/8] arcam-av: Add explicit -lpthread to *_LIBADD
+
+The pthread library has to be linked for this module.  In some tool
+chains, it results in a build error.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+---
+ arcam-av/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arcam-av/Makefile.am b/arcam-av/Makefile.am
+index c16aec0..57d5542 100644
+--- a/arcam-av/Makefile.am
++++ b/arcam-av/Makefile.am
+@@ -12,7 +12,7 @@ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined
+ 
+ libasound_module_ctl_arcam_av_la_SOURCES = ctl_arcam_av.c arcam_av.c arcam_av.h
+-libasound_module_ctl_arcam_av_la_LIBADD = @ALSA_LIBS@
++libasound_module_ctl_arcam_av_la_LIBADD = @ALSA_LIBS@ -lpthread
+ 
+ include ../install-hooks.am
+ 
+-- 
+2.13.6
+
+
+From 2d310f84e7af4c5b4bc68a6e45500e874df482f9 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 22 May 2018 14:15:21 +0200
+Subject: [PATCH 8/8] usb_stream: Add explicit -lpthread to *_LIBADD
+
+The pthread library has to be linked for this module.  In some tool
+chains, it results in a build error.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+---
+ usb_stream/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/usb_stream/Makefile.am b/usb_stream/Makefile.am
+index 203618b..fde2455 100644
+--- a/usb_stream/Makefile.am
++++ b/usb_stream/Makefile.am
+@@ -12,7 +12,7 @@ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@
+ AM_LDFLAGS = -module -avoid-version -export-dynamic $(LDFLAGS_NOUNDEFINED)
+ 
+ libasound_module_pcm_usb_stream_la_SOURCES = pcm_usb_stream.c
+-libasound_module_pcm_usb_stream_la_LIBADD = @ALSA_LIBS@
++libasound_module_pcm_usb_stream_la_LIBADD = @ALSA_LIBS@ -lpthread
+ 
+ noinst_HEADERS = usb_stream.h
+ 
+-- 
+2.13.6
+
diff --git a/SOURCES/alsa-plugins-1.1.6-speexdsp.patch b/SOURCES/alsa-plugins-1.1.6-speexdsp.patch
new file mode 100644
index 0000000..48b3447
--- /dev/null
+++ b/SOURCES/alsa-plugins-1.1.6-speexdsp.patch
@@ -0,0 +1,13 @@
+diff --git a/configure.ac b/configure.ac
+index f49bb6b..415b2aa 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -143,7 +143,7 @@ AC_ARG_ENABLE([speexdsp],
+       AS_HELP_STRING([--disable-speexdsp], [Disable building of speexdsp plugin]))
+ 
+ if test "x$enable_speexdsp" != "xno"; then
+-  PKG_CHECK_MODULES(speexdsp, [speexdsp >= 1.2rc2], [HAVE_SPEEXDSP="yes"], [HAVE_SPEEXDSP=""])
++  PKG_CHECK_MODULES(speexdsp, [speexdsp >= 1.2], [HAVE_SPEEXDSP="yes"], [HAVE_SPEEXDSP=""])
+ fi
+ AM_CONDITIONAL(HAVE_SPEEXDSP, test "$HAVE_SPEEXDSP" = "yes")
+ 
diff --git a/SPECS/alsa-plugins.spec b/SPECS/alsa-plugins.spec
new file mode 100644
index 0000000..6945a81
--- /dev/null
+++ b/SPECS/alsa-plugins.spec
@@ -0,0 +1,444 @@
+%if 0%{?rhel}
+%define with_jack 0
+%else
+%define with_jack 1
+%endif
+
+Name:           alsa-plugins
+Version:        1.1.6
+Release:        1%{?dist}
+Summary:        The Advanced Linux Sound Architecture (ALSA) Plugins
+# All packages are LGPLv2+ with the exception of samplerate which is GPLv2+
+# pph plugin is BSD-like licensed
+License:        GPLv2+ and LGPLv2+ and BSD
+Group:          System Environment/Libraries
+URL:            http://www.alsa-project.org/
+Source0:        ftp://ftp.alsa-project.org/pub/plugins/%{name}-%{version}.tar.bz2
+Patch0:         alsa-plugins-1.1.6-post.patch
+Patch1:         alsa-plugins-1.1.6-speexdsp.patch
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+BuildRequires:  autoconf automake libtool
+BuildRequires:  alsa-lib-devel
+
+%description
+The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI
+functionality to the Linux operating system.
+
+This package includes plugins for ALSA.
+
+%if 0%{?with_jack}
+%package jack
+Requires:       alsa-utils
+Requires:       jack-audio-connection-kit
+BuildRequires:  jack-audio-connection-kit-devel
+Summary:        Jack PCM output plugin for ALSA
+Group:          System Environment/Libraries
+License:        LGPLv2+
+%description jack
+This plugin converts the ALSA API over JACK (Jack Audio Connection
+Kit, http://jackit.sf.net) API.  ALSA native applications can work
+transparently together with jackd for both playback and capture.
+This plugin provides the PCM type "jack"
+%endif
+
+%package oss
+Requires:       alsa-utils
+BuildRequires:  alsa-lib-devel
+Summary:        Oss PCM output plugin for ALSA
+Group:          System Environment/Libraries
+License:        LGPLv2+ 
+%description oss
+This plugin converts the ALSA API over OSS API.  With this plugin,
+ALSA native apps can run on OSS drivers.
+
+This plugin provides the PCM type "oss".
+
+%package pulseaudio
+Requires:       alsa-utils
+Requires:       pulseaudio
+BuildRequires:  pulseaudio-libs-devel
+Summary:        Alsa to PulseAudio backend
+Group:          System Environment/Libraries
+License:        LGPLv2+
+%description pulseaudio
+This plugin allows any program that uses the ALSA API to access a PulseAudio
+sound daemon. In other words, native ALSA applications can play and record
+sound across a network. There are two plugins in the suite, one for PCM and
+one for mixer control.
+
+%package samplerate
+Requires:       alsa-utils
+BuildRequires:  libsamplerate-devel
+Summary:        External rate converter plugin for ALSA
+Group:          System Environment/Libraries
+License:        GPLv2+
+%description samplerate
+This plugin is an external rate converter using libsamplerate by Erik de
+Castro Lopo.
+
+%package upmix
+Requires:       alsa-utils
+BuildRequires:  libsamplerate-devel
+Summary:        Upmixer channel expander plugin for ALSA
+Group:          System Environment/Libraries
+License:        LGPLv2+
+%description upmix
+The upmix plugin is an easy-to-use plugin for upmixing to 4 or
+6-channel stream.  The number of channels to be expanded is determined
+by the slave PCM or explicitly via channel option.
+
+%package vdownmix
+Requires:       alsa-utils
+BuildRequires:  libsamplerate-devel
+Summary:        Downmixer to stereo plugin for ALSA
+Group:          System Environment/Libraries
+License:        LGPLv2+
+%description vdownmix
+The vdownmix plugin is a downmixer from 4-6 channels to 2-channel
+stereo headphone output.  This plugin processes the input signals with
+a simple spacialization, so the output sounds like a kind of "virtual
+surround".
+
+%package usbstream
+Summary:        USB stream plugin for ALSA
+Group:          System Environment/Libraries
+License:        LGPLv2+
+%description usbstream
+The usbstream plugin is for snd-usb-us122l driver. It converts PCM
+stream to USB specific stream.
+
+%package arcamav
+Summary:        Arcam AV amplifier plugin for ALSA
+Group:          System Environment/Libraries
+License:        LGPLv2+
+%description arcamav
+This plugin exposes the controls for an Arcam AV amplifier
+(see: http://www.arcam.co.uk/) as an ALSA mixer device.
+
+%package speex
+Requires:       speex
+BuildRequires:  speex-devel
+Summary:        Rate Converter Plugin Using Speex Resampler
+Group:          System Environment/Libraries
+License:        LGPLv2+
+%description speex
+The rate plugin is an external rate converter using the Speex resampler
+(aka Public Parrot Hack) by Jean-Marc Valin. The pcm plugin provides
+pre-processing of a mono stream like denoise using libspeex DSP API.
+
+%package maemo
+#BuildRequires:  alsa-lib-devel = %{version}
+BuildRequires:  dbus-devel
+Summary:        Maemo plugin for ALSA
+Group:          System Environment/Libraries
+License:        LGPLv2+
+%description maemo
+This plugin converts the ALSA API over PCM task nodes protocol. In this way,
+ALSA native applications can run over DSP Gateway and use DSP PCM task nodes.
+
+%prep
+%setup -q -n %{name}-%{version}%{?prever}
+%patch0 -p1 -b .post
+%patch1 -p1 -b .speexdsp
+
+%build
+autoreconf -vif
+%configure --disable-static \
+           --with-speex=lib \
+           --enable-maemo-plugin \
+           --enable-maemo-resource-manager
+make %{?_smp_mflags}
+
+%install
+rm -rf %{buildroot}
+make install DESTDIR=%{buildroot}
+
+mv %{buildroot}/etc/alsa/conf.d/99-pulseaudio-default.conf.example \
+        %{buildroot}/etc/alsa/conf.d/99-pulseaudio-default.conf
+
+find %{buildroot} -name "*.la" -exec rm {} \;
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%if 0%{?with_jack}
+%files jack
+%defattr(-,root,root,-)
+%doc COPYING COPYING.GPL doc/README-jack
+%dir /etc/alsa/conf.d
+%config(noreplace) /etc/alsa/conf.d/50-jack.conf
+%dir %{_datadir}/alsa/alsa.conf.d
+%{_datadir}/alsa/alsa.conf.d/50-jack.conf
+%dir %{_libdir}/alsa-lib
+%{_libdir}/alsa-lib/libasound_module_pcm_jack.so
+%endif
+
+%files oss
+%defattr(-,root,root,-)
+%doc COPYING COPYING.GPL doc/README-pcm-oss
+%dir /etc/alsa/conf.d
+%config(noreplace) /etc/alsa/conf.d/50-oss.conf
+%dir %{_datadir}/alsa/alsa.conf.d
+%{_datadir}/alsa/alsa.conf.d/50-oss.conf
+%dir %{_libdir}/alsa-lib
+%{_libdir}/alsa-lib/libasound_module_ctl_oss.so
+%{_libdir}/alsa-lib/libasound_module_pcm_oss.so
+
+%files pulseaudio
+%defattr(-,root,root,-)
+%doc COPYING COPYING.GPL doc/README-pulse
+%dir %{_libdir}/alsa-lib
+%{_libdir}/alsa-lib/libasound_module_pcm_pulse.so
+%{_libdir}/alsa-lib/libasound_module_ctl_pulse.so
+%{_libdir}/alsa-lib/libasound_module_conf_pulse.so
+%dir /etc/alsa/conf.d
+%config(noreplace) /etc/alsa/conf.d/50-pulseaudio.conf
+%config(noreplace) /etc/alsa/conf.d/99-pulseaudio-default.conf
+%dir %{_datadir}/alsa/alsa.conf.d
+%{_datadir}/alsa/alsa.conf.d/50-pulseaudio.conf
+
+%files samplerate
+%defattr(-,root,root,-)
+%doc COPYING COPYING.GPL doc/samplerate.txt
+%dir /etc/alsa/conf.d
+%config(noreplace) /etc/alsa/conf.d/10-samplerate.conf
+%dir %{_datadir}/alsa/alsa.conf.d
+%{_datadir}/alsa/alsa.conf.d/10-samplerate.conf
+%dir %{_libdir}/alsa-lib
+%{_libdir}/alsa-lib/libasound_module_rate_samplerate.so
+%{_libdir}/alsa-lib/libasound_module_rate_samplerate_best.so
+%{_libdir}/alsa-lib/libasound_module_rate_samplerate_linear.so
+%{_libdir}/alsa-lib/libasound_module_rate_samplerate_medium.so
+%{_libdir}/alsa-lib/libasound_module_rate_samplerate_order.so
+
+%files upmix
+%defattr(-,root,root,-)
+%doc COPYING COPYING.GPL doc/upmix.txt
+%dir /etc/alsa/conf.d
+%config(noreplace) /etc/alsa/conf.d/60-upmix.conf
+%dir %{_datadir}/alsa/alsa.conf.d
+%{_datadir}/alsa/alsa.conf.d/60-upmix.conf
+%dir %{_libdir}/alsa-lib
+%{_libdir}/alsa-lib/libasound_module_pcm_upmix.so
+
+%files vdownmix
+%defattr(-,root,root,-)
+%doc COPYING COPYING.GPL doc/vdownmix.txt
+%dir /etc/alsa/conf.d
+%config(noreplace) /etc/alsa/conf.d/60-vdownmix.conf
+%dir %{_datadir}/alsa/alsa.conf.d
+%{_datadir}/alsa/alsa.conf.d/60-vdownmix.conf
+%dir %{_libdir}/alsa-lib
+%{_libdir}/alsa-lib/libasound_module_pcm_vdownmix.so
+
+%files usbstream
+%defattr(-,root,root,-)
+%doc COPYING COPYING.GPL
+%dir /etc/alsa/conf.d
+%config(noreplace) /etc/alsa/conf.d/98-usb-stream.conf
+%dir %{_datadir}/alsa/alsa.conf.d
+%{_datadir}/alsa/alsa.conf.d/98-usb-stream.conf
+%dir %{_libdir}/alsa-lib
+%{_libdir}/alsa-lib/libasound_module_pcm_usb_stream.so
+
+%files arcamav
+%defattr(-,root,root,-)
+%doc COPYING COPYING.GPL doc/README-arcam-av
+%dir /etc/alsa/conf.d
+%config(noreplace) /etc/alsa/conf.d/50-arcam-av-ctl.conf
+%dir %{_datadir}/alsa/alsa.conf.d
+%{_datadir}/alsa/alsa.conf.d/50-arcam-av-ctl.conf
+%dir %{_libdir}/alsa-lib
+%{_libdir}/alsa-lib/libasound_module_ctl_arcam_av.so
+
+%files speex
+%defattr(-,root,root,-)
+%doc COPYING COPYING.GPL doc/speexdsp.txt doc/speexrate.txt
+%dir /etc/alsa/conf.d
+%config(noreplace) /etc/alsa/conf.d/10-speexrate.conf
+%config(noreplace) /etc/alsa/conf.d/60-speex.conf
+%dir %{_datadir}/alsa/alsa.conf.d
+%{_datadir}/alsa/alsa.conf.d/10-speexrate.conf
+%{_datadir}/alsa/alsa.conf.d/60-speex.conf
+%dir %{_libdir}/alsa-lib
+%{_libdir}/alsa-lib/libasound_module_pcm_speex.so
+%{_libdir}/alsa-lib/libasound_module_rate_speexrate.so
+%{_libdir}/alsa-lib/libasound_module_rate_speexrate_best.so
+%{_libdir}/alsa-lib/libasound_module_rate_speexrate_medium.so
+
+%files maemo
+%defattr(-,root,root,-)
+%doc COPYING COPYING.GPL doc/README-maemo
+%dir /etc/alsa/conf.d
+%config(noreplace) /etc/alsa/conf.d/98-maemo.conf
+%dir %{_datadir}/alsa/alsa.conf.d
+%{_datadir}/alsa/alsa.conf.d/98-maemo.conf
+%dir %{_libdir}/alsa-lib
+%{_libdir}/alsa-lib/libasound_module_ctl_dsp_ctl.so
+%{_libdir}/alsa-lib/libasound_module_pcm_alsa_dsp.so
+
+
+%changelog
+* Tue May 29 2018 Jaroslav Kysela <jkysela@redhat.com> - 1.1.6-1
+- Updated to 1.1.6
+- Resolves: rhbz#1578691
+
+* Mon Jun  6 2016 Jaroslav Kysela <jkysela@redhat.com> - 1.1.1-1
+- Updated to 1.1.1
+- Resolves: rhbz#1112209
+
+* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 1.0.27-3
+- Mass rebuild 2014-01-24
+
+* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 1.0.27-2
+- Mass rebuild 2013-12-27
+
+* Fri Apr 12 2013 Jaroslav Kysela <jkysela@redhat.com> - 1.0.27-1
+- Updated to 1.0.27
+
+* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.26-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Thu Sep  6 2012 Jaroslav Kysela <jkysela@redhat.com> - 1.0.26-2
+- Changed dependency on pulseaudio-lib-devel to pulseaudio-libs-devel
+
+* Thu Sep  6 2012 Jaroslav Kysela <jkysela@redhat.com> - 1.0.26-1
+- Updated to 1.0.26
+
+* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.25-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Mon Apr 23 2012 Paul Howarth <paul@city-fan.org> - 1.0.25-3
+- Bump and rebuild to maintain upgrade path (#806218)
+
+* Wed Feb  1 2012 Jaroslav Kysela <jkysela@redhat.com> - 1.0.25-1
+- Updated to 1.0.25
+- Moved plugin specific configuration from /etc/alsa/pcm to /usr/share/alsa/alsa.conf.d
+
+* Thu Jan 19 2012 Nikola Pajkovsky <npajkovs@redhat.com> - 1.0.24-4
+- 761244 - please disable JACK for RHEL
+
+* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.24-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.24-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Fri Jan 28 2011 Jaroslav Kysela <jkysela@redhat.com> - 1.0.24-1
+- Updated to 1.0.24
+
+* Thu Jan 14 2010 Jaroslav Kysela <jkysela@redhat.com> - 1.0.22-1
+- Updated to 1.0.22
+
+* Mon Sep 7 2009 Eric Moret <eric.moret@gmail.com> - 1.0.21-2
+- Added missing dbus-devel dependency to maemo subpackage
+
+* Mon Sep 7 2009 Eric Moret <eric.moret@gmail.com> - 1.0.21-1
+- Updated to 1.0.21
+- Patch clean up
+- Added maemo subpackage
+
+* Tue Aug 4 2009 Lennart Poettering <lpoetter@redhat.com> - 1.0.20-5
+- Add a couple of more clean up patches for the pulse plugin
+
+* Fri Jul 31 2009 Lennart Poettering <lpoetter@redhat.com> - 1.0.20-4
+- Add a couple of clean up patches for the pulse plugin
+
+* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.20-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Wed Jun 24 2009 Eric Moret <eric.moret@gmail.com> - 1.0.20-2
+- Added speex subpackage
+- Removed ascii-art from jack's plugin description
+
+* Fri May 8 2009 Eric Moret <eric.moret@gmail.com> - 1.0.20-1
+- Updated to 1.0.20
+- Added arcam-av subpackage
+
+* Fri Apr 24 2009 Eric Moret <eric.moret@gmail.com> - 1.0.19-1
+- Updated to 1.0.19
+- Added Requires: alsa-utils to address #483322
+- Added dir {_sysconfdir}/alsa/pcm to address #483322
+
+* Mon Feb 23 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.18-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Sun Dec 28 2008 Eric Moret <eric.moret@gmail.com> - 1.0.18-2
+- Updated to 1.0.18 final
+
+* Thu Sep 11 2008 Jaroslav Kysela <jkysela@redhat.com> - 1.0.18-1.rc3
+- Updated to 1.0.18rc3
+- Added usbstream subpackage
+
+* Mon Jul 21 2008 Jaroslav Kysela <jkysela@redhat.com> - 1.0.17-1
+- Updated to 1.0.17
+
+* Tue Mar 25 2008 Lubomir Kundrak <lkundrak@redhat.com> - 1.0.16-4
+- Kind of fix the plugins not to complain about the hints
+
+* Wed Mar 19 2008 Eric Moret <eric.moret@gmail.com> - 1.0.16-3
+- Fixing jack.conf (#435343)
+
+* Sun Mar 09 2008 Lubomir Kundrak <lkundrak@redhat.com> - 1.0.16-2
+- Add descriptions to various PCM plugins, so they're visible in aplay -L
+
+* Sat Mar 08 2008 Lubomir Kundrak <lkundrak@redhat.com> - 1.0.16-1
+- New upstream, dropping upstreamed patches
+- Do not assert fail when pulseaudio is unavailable (#435148)
+
+* Tue Mar 04 2008 Lubomir Kundrak <lkundrak@redhat.com> - 1.0.15-4
+- Be more heplful when there's PulseAudio trouble.
+- This may save us some bogus bug reports
+
+* Mon Feb 18 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 1.0.15-3
+- Autorebuild for GCC 4.3
+
+* Fri Jan 18 2008 Eric Moret <eric.moret@epita.fr> - 1.0.15-2
+- Update to upstream 1.0.15 (#429249)
+- Add "Requires: pulseaudio" to alsa-plugins-pulseaudio (#368891)
+- Fix pulse_hw_params() when state is SND_PCM_STATE_PREPARED (#428030)
+- run /sbin/ldconfig on post and postun macros
+
+* Thu Oct 18 2007 Lennart Poettering <lpoetter@redhat.com> - 1.0.14-6
+- Merge the whole /etc/alsa/pcm/pulseaudio.conf stuff into
+  /etc/alsa/pulse-default.conf, because the former is practically
+  always ignored, since it is not referenced for inclusion by any other
+  configuration file fragment (#251943)
+  The other fragments installed in /etc/alsa/pcm/ are useless, too. But
+  since we are in a freeze and they are not that important, I am not fixing
+  this now.
+
+* Wed Oct 17 2007 Lennart Poettering <lpoetter@redhat.com> - 1.0.14-5
+- Split pulse.conf into two, so that we can load one part from
+  form /etc/alsa/alsa.conf. (#251943)
+
+* Mon Oct 1 2007 Lennart Poettering <lpoetter@redhat.com> - 1.0.14-4
+- In the pulse plugin: reflect the XRUN state back to the application.
+  Makes XMMS work on top of the alsa plugin. (#307341)
+
+* Mon Sep 24 2007 Lennart Poettering <lpoetter@redhat.com> - 1.0.14-3
+- Change PulseAudio buffering defaults to more sane values
+
+* Tue Aug 14 2007 Eric Moret <eric.moret@epita.fr> - 1.0.14-2
+- Adding pulse as ALSA "default" pcm and ctl when the alsa-plugins-pulseaudio
+package is installed, fixing #251943.
+
+* Mon Jul 23 2007 Eric Moret <eric.moret@epita.fr> - 1.0.14-1
+- update to upstream 1.0.14
+- use configure --without-speex instead of patches to remove a52
+
+* Tue Mar 13 2007 Matej Cepl <mcepl@redhat.com> - 1.0.14-0.3.rc2
+- Really remove a52 plugin package (including changes in
+  configure and configure.in)
+
+* Thu Feb 15 2007 Eric Moret <eric.moret@epita.fr> 1.0.14-0.2.rc2
+- Adding configuration files
+- Removing a52 plugin package
+
+* Wed Jan 10 2007 Eric Moret <eric.moret@epita.fr> 1.0.14-0.1.rc2
+- Initial package for Fedora