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