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 +Date: Thu, 5 Apr 2018 09:23:09 +0200 +Subject: [PATCH 1/8] samplerate: fix unused variable warning + +Signed-off-by: Jaroslav Kysela +--- + 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 +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 +--- + 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 +Date: Fri, 13 Apr 2018 13:37:36 +0200 +Subject: [PATCH 3/8] config/Makefile: make everything modular + +Signed-off-by: Jaroslav Kysela +--- + 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 +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 +--- + 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 + #include + #include +-#include AVCODEC_HEADER ++#include + #include + + /* 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='']) +- if test -z "$AVCODEC_HEADER"; then +- AC_CHECK_HEADER([libavcodec/avcodec.h], [AVCODEC_HEADER='']) +- 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 ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++ ++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 +- * +- * based on rate converter that uses libsamplerate +- * Copyright (c) 2006 by Takashi Iwai +- * +- * 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 +-#include +-#include +-#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; ichannels; i++) { +- free(rate->out[i]); +- } +- free(rate->out); +- } +- if (rate->in) { +- for (i=0; ichannels; 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; ichannels; 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; ichannels, ret=0, i; +- int total_in = rate->stored + src_frames, new_stored; +- +- deinterleave(src, rate->in, src_frames, chans, rate->point); +- for (i=0; icontext, 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 +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 +--- + 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 +Date: Mon, 16 Apr 2018 18:14:18 +0200 +Subject: [PATCH 6/8] oss/Makefile.am: fix typo + +Signed-off-by: Jaroslav Kysela +--- + 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 +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 +--- + 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 +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 +--- + 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 - 1.1.6-1 +- Updated to 1.1.6 +- Resolves: rhbz#1578691 + +* Mon Jun 6 2016 Jaroslav Kysela - 1.1.1-1 +- Updated to 1.1.1 +- Resolves: rhbz#1112209 + +* Fri Jan 24 2014 Daniel Mach - 1.0.27-3 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 1.0.27-2 +- Mass rebuild 2013-12-27 + +* Fri Apr 12 2013 Jaroslav Kysela - 1.0.27-1 +- Updated to 1.0.27 + +* Wed Feb 13 2013 Fedora Release Engineering - 1.0.26-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Sep 6 2012 Jaroslav Kysela - 1.0.26-2 +- Changed dependency on pulseaudio-lib-devel to pulseaudio-libs-devel + +* Thu Sep 6 2012 Jaroslav Kysela - 1.0.26-1 +- Updated to 1.0.26 + +* Wed Jul 18 2012 Fedora Release Engineering - 1.0.25-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Apr 23 2012 Paul Howarth - 1.0.25-3 +- Bump and rebuild to maintain upgrade path (#806218) + +* Wed Feb 1 2012 Jaroslav Kysela - 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 - 1.0.24-4 +- 761244 - please disable JACK for RHEL + +* Thu Jan 12 2012 Fedora Release Engineering - 1.0.24-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Feb 07 2011 Fedora Release Engineering - 1.0.24-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Jan 28 2011 Jaroslav Kysela - 1.0.24-1 +- Updated to 1.0.24 + +* Thu Jan 14 2010 Jaroslav Kysela - 1.0.22-1 +- Updated to 1.0.22 + +* Mon Sep 7 2009 Eric Moret - 1.0.21-2 +- Added missing dbus-devel dependency to maemo subpackage + +* Mon Sep 7 2009 Eric Moret - 1.0.21-1 +- Updated to 1.0.21 +- Patch clean up +- Added maemo subpackage + +* Tue Aug 4 2009 Lennart Poettering - 1.0.20-5 +- Add a couple of more clean up patches for the pulse plugin + +* Fri Jul 31 2009 Lennart Poettering - 1.0.20-4 +- Add a couple of clean up patches for the pulse plugin + +* Fri Jul 24 2009 Fedora Release Engineering - 1.0.20-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Jun 24 2009 Eric Moret - 1.0.20-2 +- Added speex subpackage +- Removed ascii-art from jack's plugin description + +* Fri May 8 2009 Eric Moret - 1.0.20-1 +- Updated to 1.0.20 +- Added arcam-av subpackage + +* Fri Apr 24 2009 Eric Moret - 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 - 1.0.18-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Dec 28 2008 Eric Moret - 1.0.18-2 +- Updated to 1.0.18 final + +* Thu Sep 11 2008 Jaroslav Kysela - 1.0.18-1.rc3 +- Updated to 1.0.18rc3 +- Added usbstream subpackage + +* Mon Jul 21 2008 Jaroslav Kysela - 1.0.17-1 +- Updated to 1.0.17 + +* Tue Mar 25 2008 Lubomir Kundrak - 1.0.16-4 +- Kind of fix the plugins not to complain about the hints + +* Wed Mar 19 2008 Eric Moret - 1.0.16-3 +- Fixing jack.conf (#435343) + +* Sun Mar 09 2008 Lubomir Kundrak - 1.0.16-2 +- Add descriptions to various PCM plugins, so they're visible in aplay -L + +* Sat Mar 08 2008 Lubomir Kundrak - 1.0.16-1 +- New upstream, dropping upstreamed patches +- Do not assert fail when pulseaudio is unavailable (#435148) + +* Tue Mar 04 2008 Lubomir Kundrak - 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 - 1.0.15-3 +- Autorebuild for GCC 4.3 + +* Fri Jan 18 2008 Eric Moret - 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 - 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 - 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 - 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 - 1.0.14-3 +- Change PulseAudio buffering defaults to more sane values + +* Tue Aug 14 2007 Eric Moret - 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 - 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 - 1.0.14-0.3.rc2 +- Really remove a52 plugin package (including changes in + configure and configure.in) + +* Thu Feb 15 2007 Eric Moret 1.0.14-0.2.rc2 +- Adding configuration files +- Removing a52 plugin package + +* Wed Jan 10 2007 Eric Moret 1.0.14-0.1.rc2 +- Initial package for Fedora