You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2354 lines
68 KiB
2354 lines
68 KiB
From e8fabec7adc70220f52588dc170d90d146b92ba7 Mon Sep 17 00:00:00 2001 |
|
From: Jaroslav Kysela <perex@perex.cz> |
|
Date: Thu, 5 Apr 2018 09:23:09 +0200 |
|
Subject: [PATCH 1/8] samplerate: fix unused variable warning |
|
|
|
Signed-off-by: Jaroslav Kysela <perex@perex.cz> |
|
--- |
|
rate/rate_samplerate.c | 4 ++-- |
|
1 file changed, 2 insertions(+), 2 deletions(-) |
|
|
|
diff --git a/rate/rate_samplerate.c b/rate/rate_samplerate.c |
|
index 0b14a59..100d6f2 100644 |
|
--- a/rate/rate_samplerate.c |
|
+++ b/rate/rate_samplerate.c |
|
@@ -154,14 +154,14 @@ static void pcm_src_close(void *obj) |
|
} |
|
|
|
#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002 |
|
-static int get_supported_rates(void *obj, unsigned int *rate_min, |
|
+static int get_supported_rates(void *obj ATTRIBUTE_UNUSED, unsigned int *rate_min, |
|
unsigned int *rate_max) |
|
{ |
|
*rate_min = *rate_max = 0; /* both unlimited */ |
|
return 0; |
|
} |
|
|
|
-static void dump(void *obj, snd_output_t *out) |
|
+static void dump(void *obj ATTRIBUTE_UNUSED, snd_output_t *out) |
|
{ |
|
snd_output_printf(out, "Converter: libsamplerate\n"); |
|
} |
|
-- |
|
2.13.6 |
|
|
|
|
|
From 6e40eb5fd346207021a95d06bc30205a537926ea Mon Sep 17 00:00:00 2001 |
|
From: Jaroslav Kysela <perex@perex.cz> |
|
Date: Wed, 4 Apr 2018 19:57:56 +0200 |
|
Subject: [PATCH 2/8] configure: add --with-alsaaddondir, add default config |
|
files for plugins |
|
|
|
Signed-off-by: Jaroslav Kysela <perex@perex.cz> |
|
--- |
|
a52/60-a52-encoder.conf | 38 ++++++++++++++++++++++++++ |
|
a52/Makefile.am | 4 +++ |
|
a52/pcm_a52.c | 2 +- |
|
arcam-av/50-arcam-av-ctl.conf | 16 +++++++++++ |
|
arcam-av/Makefile.am | 4 +++ |
|
configure.ac | 12 +++++++++ |
|
jack/50-jack.conf | 18 +++++++++++++ |
|
jack/Makefile.am | 4 +++ |
|
maemo/98-maemo.conf | 11 ++++++++ |
|
maemo/Makefile.am | 4 +++ |
|
mix/60-upmix.conf | 26 ++++++++++++++++++ |
|
mix/60-vdownmix.conf | 24 +++++++++++++++++ |
|
mix/Makefile.am | 5 +++- |
|
oss/50-oss.conf | 26 ++++++++++++++++++ |
|
oss/Makefile.am | 4 +++ |
|
pph/10-speexrate.conf | 28 +++++++++++++++++++ |
|
pph/Makefile.am | 4 +++ |
|
pulse/50-pulseaudio.conf | 15 ++++++----- |
|
pulse/Makefile.am | 4 +-- |
|
rate-lavc/10-rate-lavc.conf | 28 +++++++++++++++++++ |
|
rate-lavc/Makefile.am | 4 +++ |
|
rate/10-samplerate.conf | 28 +++++++++++++++++++ |
|
rate/Makefile.am | 4 +++ |
|
speex/60-speex.conf | 63 +++++++++++++++++++++++++++++++++++++++++++ |
|
speex/Makefile.am | 4 +++ |
|
usb_stream/98-usb-stream.conf | 27 +++++++++++++++++++ |
|
usb_stream/Makefile.am | 4 +++ |
|
27 files changed, 401 insertions(+), 10 deletions(-) |
|
create mode 100644 a52/60-a52-encoder.conf |
|
create mode 100644 arcam-av/50-arcam-av-ctl.conf |
|
create mode 100644 jack/50-jack.conf |
|
create mode 100644 maemo/98-maemo.conf |
|
create mode 100644 mix/60-upmix.conf |
|
create mode 100644 mix/60-vdownmix.conf |
|
create mode 100644 oss/50-oss.conf |
|
create mode 100644 pph/10-speexrate.conf |
|
create mode 100644 rate-lavc/10-rate-lavc.conf |
|
create mode 100644 rate/10-samplerate.conf |
|
create mode 100644 speex/60-speex.conf |
|
create mode 100644 usb_stream/98-usb-stream.conf |
|
|
|
diff --git a/a52/60-a52-encoder.conf b/a52/60-a52-encoder.conf |
|
new file mode 100644 |
|
index 0000000..346c94f |
|
--- /dev/null |
|
+++ b/a52/60-a52-encoder.conf |
|
@@ -0,0 +1,38 @@ |
|
+pcm.a52 { |
|
+ @args [ CARD SLAVE RATE BITRATE CHANNELS ] |
|
+ @args.CARD { |
|
+ type integer |
|
+ default { |
|
+ @func refer |
|
+ name defaults.pcm.card |
|
+ } |
|
+ } |
|
+ @args.SLAVE { |
|
+ type string |
|
+ } |
|
+ @args.RATE { |
|
+ type integer |
|
+ default 48000 |
|
+ } |
|
+ @args.BITRATE { |
|
+ type integer |
|
+ default 448 |
|
+ } |
|
+ @args.CHANNELS { |
|
+ type string |
|
+ default 6 |
|
+ } |
|
+ type a52 |
|
+ card $CARD |
|
+ slavepcm $SLAVE |
|
+ rate $RATE |
|
+ bitrate $BITRATE |
|
+ channels $CHANNELS |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "Plugin to convert multichannel stream to A52 (AC3) bitstream" |
|
+ } |
|
+} |
|
diff --git a/a52/Makefile.am b/a52/Makefile.am |
|
index 48567b4..cbc1497 100644 |
|
--- a/a52/Makefile.am |
|
+++ b/a52/Makefile.am |
|
@@ -1,6 +1,10 @@ |
|
+EXTRA_DIST = 60-a52-encoder.conf |
|
+ |
|
asound_module_pcm_a52_LTLIBRARIES = libasound_module_pcm_a52.la |
|
+asound_module_addon_DATA = 60-a52-encoder.conf |
|
|
|
asound_module_pcm_a52dir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @AVCODEC_CFLAGS@ \ |
|
-DAVCODEC_HEADER="@AVCODEC_HEADER@" |
|
diff --git a/a52/pcm_a52.c b/a52/pcm_a52.c |
|
index 348d58f..155da36 100644 |
|
--- a/a52/pcm_a52.c |
|
+++ b/a52/pcm_a52.c |
|
@@ -937,7 +937,7 @@ SND_PCM_PLUGIN_DEFINE_FUNC(a52) |
|
goto error; |
|
} |
|
|
|
- if (! pcm_string) { |
|
+ if (! pcm_string || pcm_string[0] == '\0') { |
|
snprintf(devstr, sizeof(devstr), |
|
"iec958:{AES0 0x%x AES1 0x%x AES2 0x%x AES3 0x%x %s%s}", |
|
IEC958_AES0_CON_EMPHASIS_NONE | IEC958_AES0_NONAUDIO | |
|
diff --git a/arcam-av/50-arcam-av-ctl.conf b/arcam-av/50-arcam-av-ctl.conf |
|
new file mode 100644 |
|
index 0000000..b76caa9 |
|
--- /dev/null |
|
+++ b/arcam-av/50-arcam-av-ctl.conf |
|
@@ -0,0 +1,16 @@ |
|
+ctl.arcam_av { |
|
+ @args [ PORT ] |
|
+ @args.PORT { |
|
+ type string |
|
+ default "/dev/ttyUSB0" |
|
+ } |
|
+ type arcam_av |
|
+ port $PORT |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "Arcam-AV Amplifier" |
|
+ } |
|
+} |
|
diff --git a/arcam-av/Makefile.am b/arcam-av/Makefile.am |
|
index 5c7855f..4a54ccd 100644 |
|
--- a/arcam-av/Makefile.am |
|
+++ b/arcam-av/Makefile.am |
|
@@ -1,6 +1,10 @@ |
|
+EXTRA_DIST = 50-arcam-av-ctl.conf |
|
+ |
|
asound_module_ctl_arcam_av_LTLIBRARIES = libasound_module_ctl_arcam_av.la |
|
+asound_module_addon_DATA = 50-arcam-av-ctl.conf |
|
|
|
asound_module_ctl_arcam_avdir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined |
|
diff --git a/configure.ac b/configure.ac |
|
index ecc265b..ae98caa 100644 |
|
--- a/configure.ac |
|
+++ b/configure.ac |
|
@@ -206,6 +206,18 @@ AC_DEFINE_UNQUOTED(ALSA_DATA_DIR, "$alsadatadir", [directory containing ALSA dat |
|
ALSA_DATA_DIR="$alsadatadir" |
|
AC_SUBST(ALSA_DATA_DIR) |
|
|
|
+dnl ALSA add-on config directory |
|
+AC_ARG_WITH(alsaaddondir, |
|
+ AS_HELP_STRING([--with-alsaaddondir=dir], |
|
+ [path where ALSA add-on config files are stored]), |
|
+ alsaaddondir="$withval", alsaaddondir="") |
|
+if test -z "$alsaaddondir"; then |
|
+ alsaaddondir="/etc/alsa/conf.d" |
|
+fi |
|
+AC_DEFINE_UNQUOTED(ALSA_ADDON_DIR, "$alsaaddondir", [directory containing ALSA add-on config files]) |
|
+ALSA_ADDON_DIR="$alsaaddondir" |
|
+AC_SUBST(ALSA_ADDON_DIR) |
|
+ |
|
SAVE_PLUGINS_VERSION |
|
|
|
AC_OUTPUT([ |
|
diff --git a/jack/50-jack.conf b/jack/50-jack.conf |
|
new file mode 100644 |
|
index 0000000..d780dfc |
|
--- /dev/null |
|
+++ b/jack/50-jack.conf |
|
@@ -0,0 +1,18 @@ |
|
+pcm.jack { |
|
+ type jack |
|
+ playback_ports { |
|
+ 0 alsa_pcm:playback_1 |
|
+ 1 alsa_pcm:playback_2 |
|
+ } |
|
+ capture_ports { |
|
+ 0 alsa_pcm:capture_1 |
|
+ 1 alsa_pcm:capture_2 |
|
+ } |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "JACK Audio Connection Kit" |
|
+ } |
|
+} |
|
diff --git a/jack/Makefile.am b/jack/Makefile.am |
|
index f913cb6..0a3d6ae 100644 |
|
--- a/jack/Makefile.am |
|
+++ b/jack/Makefile.am |
|
@@ -1,6 +1,10 @@ |
|
+EXTRA_DIST = 50-jack.conf |
|
+ |
|
asound_module_pcm_jack_LTLIBRARIES = libasound_module_pcm_jack.la |
|
+asound_module_addon_DATA = 50-jack.conf |
|
|
|
asound_module_pcm_jackdir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @JACK_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
diff --git a/maemo/98-maemo.conf b/maemo/98-maemo.conf |
|
new file mode 100644 |
|
index 0000000..a9ad6a0 |
|
--- /dev/null |
|
+++ b/maemo/98-maemo.conf |
|
@@ -0,0 +1,11 @@ |
|
+pcm.!default { |
|
+ type alsa_dsp |
|
+ playback_device_file [ "/dev/dsptask/pcm2" ] |
|
+ recording_device_file [ "/dev/dsptask/pcm_rec" ] |
|
+} |
|
+ |
|
+ctl.!default { |
|
+ type dsp_ctl |
|
+ playback_devices [ "/dev/dsptask/pcm2" ] |
|
+ recording_devices [ "/dev/dsptask/pcm_rec" ] |
|
+} |
|
diff --git a/maemo/Makefile.am b/maemo/Makefile.am |
|
index 2684781..aca481d 100644 |
|
--- a/maemo/Makefile.am |
|
+++ b/maemo/Makefile.am |
|
@@ -1,8 +1,12 @@ |
|
+EXTRA_DIST = 98-maemo.conf |
|
+ |
|
asound_module_pcm_alsa_dsp_LTLIBRARIES = libasound_module_pcm_alsa_dsp.la |
|
asound_module_ctl_dsp_ctl_LTLIBRARIES = libasound_module_ctl_dsp_ctl.la |
|
+asound_module_addon_DATA = 98-maemo.conf |
|
|
|
asound_module_pcm_alsa_dspdir = @ALSA_PLUGIN_DIR@ |
|
asound_module_ctl_dsp_ctldir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -Wall -O2 @ALSA_CFLAGS@ $(DBUS_CFLAGS) |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
diff --git a/mix/60-upmix.conf b/mix/60-upmix.conf |
|
new file mode 100644 |
|
index 0000000..028cfe1 |
|
--- /dev/null |
|
+++ b/mix/60-upmix.conf |
|
@@ -0,0 +1,26 @@ |
|
+pcm.upmix { |
|
+ @args [ SLAVE CHANNELS DELAY ] |
|
+ @args.SLAVE { |
|
+ type string |
|
+ default "plug:hw" |
|
+ } |
|
+ @args.CHANNELS { |
|
+ type integer |
|
+ default 6 |
|
+ } |
|
+ @args.DELAY { |
|
+ type integer |
|
+ default 0 |
|
+ } |
|
+ type upmix |
|
+ channels $CHANNELS |
|
+ delay $DELAY |
|
+ slave.pcm $SLAVE |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "Plugin for channel upmix (4,6,8)" |
|
+ } |
|
+} |
|
diff --git a/mix/60-vdownmix.conf b/mix/60-vdownmix.conf |
|
new file mode 100644 |
|
index 0000000..32e9c56 |
|
--- /dev/null |
|
+++ b/mix/60-vdownmix.conf |
|
@@ -0,0 +1,24 @@ |
|
+pcm.vdownmix { |
|
+ @args [ SLAVE CHANNELS DELAY ] |
|
+ @args.SLAVE { |
|
+ type string |
|
+ default "plug:hw" |
|
+ } |
|
+ @args.CHANNELS { |
|
+ type integer |
|
+ default 6 |
|
+ } |
|
+ @args.DELAY { |
|
+ type integer |
|
+ default 0 |
|
+ } |
|
+ type vdownmix |
|
+ slave.pcm $SLAVE |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "Plugin for channel downmix (stereo) with a simple spacialization" |
|
+ } |
|
+} |
|
diff --git a/mix/Makefile.am b/mix/Makefile.am |
|
index e31839a..710606c 100644 |
|
--- a/mix/Makefile.am |
|
+++ b/mix/Makefile.am |
|
@@ -1,8 +1,12 @@ |
|
+EXTRA_DIST = 60-upmix.conf 60-vdownmix.conf |
|
+ |
|
asound_module_pcm_upmix_LTLIBRARIES = libasound_module_pcm_upmix.la |
|
asound_module_pcm_vdownmix_LTLIBRARIES = libasound_module_pcm_vdownmix.la |
|
+asound_module_addon_DATA = 60-upmix.conf 60-vdownmix.conf |
|
|
|
asound_module_pcm_upmixdir = @ALSA_PLUGIN_DIR@ |
|
asound_module_pcm_vdownmixdir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
@@ -11,4 +15,3 @@ libasound_module_pcm_upmix_la_SOURCES = pcm_upmix.c |
|
libasound_module_pcm_upmix_la_LIBADD = @ALSA_LIBS@ |
|
libasound_module_pcm_vdownmix_la_SOURCES = pcm_vdownmix.c |
|
libasound_module_pcm_vdownmix_la_LIBADD = @ALSA_LIBS@ |
|
- |
|
diff --git a/oss/50-oss.conf b/oss/50-oss.conf |
|
new file mode 100644 |
|
index 0000000..5b2817b |
|
--- /dev/null |
|
+++ b/oss/50-oss.conf |
|
@@ -0,0 +1,26 @@ |
|
+pcm.oss { |
|
+ @args [ DEVICE ] |
|
+ @args.DEVICE { |
|
+ type string |
|
+ default "/dev/dsp" |
|
+ } |
|
+ type oss |
|
+ port $DEVICE |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "Open Sound System" |
|
+ } |
|
+} |
|
+ |
|
+ctl.oss { |
|
+ @args [ DEVICE ] |
|
+ @args.DEVICE { |
|
+ type string |
|
+ default "/dev/mixer" |
|
+ } |
|
+ type oss |
|
+ device $DEVICE |
|
+} |
|
diff --git a/oss/Makefile.am b/oss/Makefile.am |
|
index 302538b..df83d20 100644 |
|
--- a/oss/Makefile.am |
|
+++ b/oss/Makefile.am |
|
@@ -1,8 +1,12 @@ |
|
+EXTRA_DIST = 50-oss.conf |
|
+ |
|
asound_module_pcm_oss_LTLIBRARIES = libasound_module_pcm_oss.la |
|
asound_module_ctl_oss_LTLIBRARIES = libasound_module_ctl_oss.la |
|
+asound_module_addon_DATA = 50-oss.conf |
|
|
|
asound_module_pcm_ossdir = @ALSA_PLUGIN_DIR@ |
|
asound_module_ctl_ossdir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
diff --git a/pph/10-speexrate.conf b/pph/10-speexrate.conf |
|
new file mode 100644 |
|
index 0000000..1d9eae9 |
|
--- /dev/null |
|
+++ b/pph/10-speexrate.conf |
|
@@ -0,0 +1,28 @@ |
|
+pcm.speexrate { |
|
+ @args [ SLAVE RATE CONVERTER ] |
|
+ @args.SLAVE { |
|
+ type string |
|
+ default "plug:hw" |
|
+ } |
|
+ @args.RATE { |
|
+ type integer |
|
+ default 48000 |
|
+ } |
|
+ @args.CONVERTER { |
|
+ type string |
|
+ default "speexrate" |
|
+ } |
|
+ type rate |
|
+ converter $CONVERTER |
|
+ slave { |
|
+ pcm $SLAVE |
|
+ rate $RATE |
|
+ } |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "Rate Converter Plugin Using Speex Resampler" |
|
+ } |
|
+} |
|
diff --git a/pph/Makefile.am b/pph/Makefile.am |
|
index 551e5bd..abb950b 100644 |
|
--- a/pph/Makefile.am |
|
+++ b/pph/Makefile.am |
|
@@ -1,6 +1,10 @@ |
|
+EXTRA_DIST = 10-speexrate.conf |
|
+ |
|
asound_module_rate_speexrate_LTLIBRARIES = libasound_module_rate_speexrate.la |
|
+asound_module_addon_DATA = 10-speexrate.conf |
|
|
|
asound_module_rate_speexratedir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -DVAR_ARRAYS -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
diff --git a/pulse/50-pulseaudio.conf b/pulse/50-pulseaudio.conf |
|
index dd85dab..62da207 100644 |
|
--- a/pulse/50-pulseaudio.conf |
|
+++ b/pulse/50-pulseaudio.conf |
|
@@ -1,13 +1,16 @@ |
|
# Add a specific named PulseAudio pcm and ctl (typically useful for testing) |
|
|
|
pcm.pulse { |
|
- type pulse |
|
- hint { |
|
- show on |
|
- description "PulseAudio Sound Server" |
|
- } |
|
+ type pulse |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "PulseAudio Sound Server" |
|
+ } |
|
} |
|
|
|
ctl.pulse { |
|
- type pulse |
|
+ type pulse |
|
} |
|
diff --git a/pulse/Makefile.am b/pulse/Makefile.am |
|
index a5550b9..835808c 100644 |
|
--- a/pulse/Makefile.am |
|
+++ b/pulse/Makefile.am |
|
@@ -3,12 +3,12 @@ EXTRA_DIST = 50-pulseaudio.conf 99-pulseaudio-default.conf.example |
|
asound_module_pcm_LTLIBRARIES = libasound_module_pcm_pulse.la |
|
asound_module_ctl_LTLIBRARIES = libasound_module_ctl_pulse.la |
|
asound_module_conf_LTLIBRARIES = libasound_module_conf_pulse.la |
|
-asound_module_data_DATA = 50-pulseaudio.conf 99-pulseaudio-default.conf.example |
|
+asound_module_addon_DATA = 50-pulseaudio.conf 99-pulseaudio-default.conf.example |
|
|
|
asound_module_pcmdir = @ALSA_PLUGIN_DIR@ |
|
asound_module_ctldir = @ALSA_PLUGIN_DIR@ |
|
asound_module_confdir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_datadir = @ALSA_DATA_DIR@/alsa.conf.d |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ $(PTHREAD_CFLAGS) $(pulseaudio_CFLAGS) -D_GNU_SOURCE |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
diff --git a/rate-lavc/10-rate-lavc.conf b/rate-lavc/10-rate-lavc.conf |
|
new file mode 100644 |
|
index 0000000..bab1694 |
|
--- /dev/null |
|
+++ b/rate-lavc/10-rate-lavc.conf |
|
@@ -0,0 +1,28 @@ |
|
+pcm.lavcrate { |
|
+ @args [ SLAVE RATE CONVERTER ] |
|
+ @args.SLAVE { |
|
+ type string |
|
+ default "plug:hw" |
|
+ } |
|
+ @args.RATE { |
|
+ type integer |
|
+ default 48000 |
|
+ } |
|
+ @args.CONVERTER { |
|
+ type string |
|
+ default "lavcrate" |
|
+ } |
|
+ type rate |
|
+ converter $CONVERTER |
|
+ slave { |
|
+ pcm $SLAVE |
|
+ rate $RATE |
|
+ } |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "Rate Converter Plugin Using AVC Library" |
|
+ } |
|
+} |
|
diff --git a/rate-lavc/Makefile.am b/rate-lavc/Makefile.am |
|
index 5cffd44..5f66472 100644 |
|
--- a/rate-lavc/Makefile.am |
|
+++ b/rate-lavc/Makefile.am |
|
@@ -1,6 +1,10 @@ |
|
+EXTRA_DIST = 10-rate-lavc.conf |
|
+ |
|
asound_module_rate_lavcrate_LTLIBRARIES = libasound_module_rate_lavcrate.la |
|
+asound_module_addon_DATA = 10-rate-lavc.conf |
|
|
|
asound_module_rate_lavcratedir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @AVCODEC_CFLAGS@ \ |
|
-DAVCODEC_HEADER="@AVCODEC_HEADER@" |
|
diff --git a/rate/10-samplerate.conf b/rate/10-samplerate.conf |
|
new file mode 100644 |
|
index 0000000..0d2e604 |
|
--- /dev/null |
|
+++ b/rate/10-samplerate.conf |
|
@@ -0,0 +1,28 @@ |
|
+pcm.samplerate { |
|
+ @args [ SLAVE RATE CONVERTER ] |
|
+ @args.SLAVE { |
|
+ type string |
|
+ default "plug:hw" |
|
+ } |
|
+ @args.RATE { |
|
+ type integer |
|
+ default 48000 |
|
+ } |
|
+ @args.CONVERTER { |
|
+ type string |
|
+ default "samplerate" |
|
+ } |
|
+ type rate |
|
+ converter $CONVERTER |
|
+ slave { |
|
+ pcm $SLAVE |
|
+ rate $RATE |
|
+ } |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "Rate Converter Plugin Using Samplerate Library" |
|
+ } |
|
+} |
|
diff --git a/rate/Makefile.am b/rate/Makefile.am |
|
index 0605bfd..25014d8 100644 |
|
--- a/rate/Makefile.am |
|
+++ b/rate/Makefile.am |
|
@@ -1,6 +1,10 @@ |
|
+EXTRA_DIST = 10-samplerate.conf |
|
+ |
|
asound_module_rate_samplerate_LTLIBRARIES = libasound_module_rate_samplerate.la |
|
+asound_module_addon_DATA = 10-samplerate.conf |
|
|
|
asound_module_rate_sampleratedir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ $(samplerate_CFLAGS) |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
diff --git a/speex/60-speex.conf b/speex/60-speex.conf |
|
new file mode 100644 |
|
index 0000000..bf2ce95 |
|
--- /dev/null |
|
+++ b/speex/60-speex.conf |
|
@@ -0,0 +1,63 @@ |
|
+pcm.speex { |
|
+ @args [ SLAVE AGC AGC_LEVEL DENOISE ECHO |
|
+ DEREVERB DEREVERB_DECAY DEREVERB_LEVEL |
|
+ FRAMES FILTER_LENGTH ] |
|
+ @args.SLAVE { |
|
+ type string |
|
+ default "plug:hw" |
|
+ } |
|
+ @args.AGC { |
|
+ type string |
|
+ default off |
|
+ } |
|
+ @args.AGC_LEVEL { |
|
+ type integer |
|
+ default 8000 |
|
+ } |
|
+ @args.DENOISE { |
|
+ type string |
|
+ default on |
|
+ } |
|
+ @args.ECHO { |
|
+ type string |
|
+ default off |
|
+ } |
|
+ @args.DEREVERB { |
|
+ type string |
|
+ default off |
|
+ } |
|
+ @args.DEREVERB_DECAY { |
|
+ type real |
|
+ default 0 |
|
+ } |
|
+ @args.DEREVERB_LEVEL { |
|
+ type real |
|
+ default 0 |
|
+ } |
|
+ @args.FRAMES { |
|
+ type integer |
|
+ default 64 |
|
+ } |
|
+ @args.FILTER_LENGTH { |
|
+ type integer |
|
+ default 256 |
|
+ } |
|
+ type speex |
|
+ agc $AGC |
|
+ agc_level $AGC_LEVEL |
|
+ denoise $DENOISE |
|
+ echo $ECHO |
|
+ dereverb $DEREVERB |
|
+ dereverb_decay $DEREVERB_DECAY |
|
+ dereverb_level $DEREVERB_LEVEL |
|
+ frames $FRAMES |
|
+ filter_length $FILTER_LENGTH |
|
+ slave.pcm $SLAVE |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "Plugin using Speex DSP (resample, agc, denoise, echo, dereverb)" |
|
+ } |
|
+} |
|
diff --git a/speex/Makefile.am b/speex/Makefile.am |
|
index 7d84190..7891954 100644 |
|
--- a/speex/Makefile.am |
|
+++ b/speex/Makefile.am |
|
@@ -1,6 +1,10 @@ |
|
+EXTRA_DIST = 60-speex.conf |
|
+ |
|
asound_module_pcm_speex_LTLIBRARIES = libasound_module_pcm_speex.la |
|
+asound_module_addon_DATA = 60-speex.conf |
|
|
|
asound_module_pcm_speexdir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @speexdsp_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
diff --git a/usb_stream/98-usb-stream.conf b/usb_stream/98-usb-stream.conf |
|
new file mode 100644 |
|
index 0000000..2efc95f |
|
--- /dev/null |
|
+++ b/usb_stream/98-usb-stream.conf |
|
@@ -0,0 +1,27 @@ |
|
+pcm.usbstream { |
|
+ @args [ CARD RATE PERIOD_SIZE ] |
|
+ @args.CARD { |
|
+ type string |
|
+ default { |
|
+ func refer |
|
+ name defaults.pcm.card |
|
+ } |
|
+ } |
|
+ @args.RATE { |
|
+ type integer |
|
+ } |
|
+ @args.PERIOD_SIZE { |
|
+ type integer |
|
+ } |
|
+ type usb_stream |
|
+ card $CARD |
|
+ rate $RATE |
|
+ period_size $PERIOD_SIZE |
|
+ hint { |
|
+ show { |
|
+ @func refer |
|
+ name defaults.namehint.basic |
|
+ } |
|
+ description "USB Stream Output" |
|
+ } |
|
+} |
|
diff --git a/usb_stream/Makefile.am b/usb_stream/Makefile.am |
|
index 50a98a0..b606d3d 100644 |
|
--- a/usb_stream/Makefile.am |
|
+++ b/usb_stream/Makefile.am |
|
@@ -1,6 +1,10 @@ |
|
+EXTRA_DIST = 98-usb-stream.conf |
|
+ |
|
asound_module_pcm_usb_stream_LTLIBRARIES = libasound_module_pcm_usb_stream.la |
|
+asound_module_addon_DATA = 98-usb-stream.conf |
|
|
|
asound_module_pcm_usb_streamdir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic $(LDFLAGS_NOUNDEFINED) |
|
-- |
|
2.13.6 |
|
|
|
|
|
From cc6bed233a3167d806834460befca2c6d655f0fb Mon Sep 17 00:00:00 2001 |
|
From: Jaroslav Kysela <perex@perex.cz> |
|
Date: Fri, 13 Apr 2018 13:37:36 +0200 |
|
Subject: [PATCH 3/8] config/Makefile: make everything modular |
|
|
|
Signed-off-by: Jaroslav Kysela <perex@perex.cz> |
|
--- |
|
Makefile.am | 21 ++++++++++++++++++--- |
|
configure.ac | 20 +++++++++++++++++++- |
|
doc/Makefile.am | 37 ++++++++++++++++++++++++++++++++++--- |
|
3 files changed, 71 insertions(+), 7 deletions(-) |
|
|
|
diff --git a/Makefile.am b/Makefile.am |
|
index 69cfe0d..303bc83 100644 |
|
--- a/Makefile.am |
|
+++ b/Makefile.am |
|
@@ -1,4 +1,10 @@ |
|
-SUBDIRS = oss mix usb_stream arcam-av doc |
|
+SUBDIRS = doc |
|
+if HAVE_OSS |
|
+SUBDIRS += oss |
|
+endif |
|
+if HAVE_MIX |
|
+SUBDIRS += mix |
|
+endif |
|
if HAVE_JACK |
|
SUBDIRS += jack |
|
endif |
|
@@ -8,8 +14,17 @@ endif |
|
if HAVE_SAMPLERATE |
|
SUBDIRS += rate |
|
endif |
|
-if HAVE_AVCODEC |
|
-SUBDIRS += a52 rate-lavc |
|
+if HAVE_A52 |
|
+SUBDIRS += a52 |
|
+endif |
|
+if HAVE_AVCRATE |
|
+SUBDIRS += rate-lavc |
|
+endif |
|
+if HAVE_USBSTREAM |
|
+SUBDIRS += usb_stream |
|
+endif |
|
+if HAVE_ARCAMAV |
|
+SUBDIRS += arcam-av |
|
endif |
|
if HAVE_MAEMO_PLUGIN |
|
SUBDIRS += maemo |
|
diff --git a/configure.ac b/configure.ac |
|
index ae98caa..2d7e6aa 100644 |
|
--- a/configure.ac |
|
+++ b/configure.ac |
|
@@ -135,6 +135,22 @@ AC_SUBST(AVCODEC_CFLAGS) |
|
AC_SUBST(AVCODEC_LIBS) |
|
AC_SUBST(AVCODEC_HEADER) |
|
|
|
+AC_ARG_ENABLE([a52], |
|
+ AS_HELP_STRING([--disable-a52], [Disable building of A52 encoder plugin])) |
|
+ |
|
+if test "x$enable_a52" != "xno" -a "$HAVE_AVCODEC" = "yes"; then |
|
+ HAVE_A52=yes |
|
+fi |
|
+AM_CONDITIONAL(HAVE_A52, test x$HAVE_A52 = xyes) |
|
+ |
|
+AC_ARG_ENABLE([avcrate], |
|
+ AS_HELP_STRING([--disable-avcrate], [Disable building of AVC rate plugin])) |
|
+ |
|
+if test "x$enable_avcrate" != "xno" -a "$HAVE_AVCODEC" = "yes"; then |
|
+ HAVE_AVCRATE=yes |
|
+fi |
|
+AM_CONDITIONAL(HAVE_AVCRATE, test x$HAVE_AVCRATE = xyes) |
|
+ |
|
AC_ARG_ENABLE([speexdsp], |
|
AS_HELP_STRING([--disable-speexdsp], [Disable building of speexdsp plugin])) |
|
|
|
@@ -260,12 +276,14 @@ if test "$HAVE_SAMPLERATE" = "yes"; then |
|
fi |
|
echo "Maemo plugin: $HAVE_MAEMO_PLUGIN" |
|
echo " Using Osso resource manager: $use_maemo_rm" |
|
-echo "A52, lavc plugins: $HAVE_AVCODEC" |
|
if test "$HAVE_AVCODEC" = "yes"; then |
|
+ echo "AVCodec config:" |
|
echo " AVCODEC_CFLAGS: $AVCODEC_CFLAGS" |
|
echo " AVCODEC_LIBS: $AVCODEC_LIBS" |
|
echo " AVCODEC_HEADER: $AVCODEC_HEADER" |
|
fi |
|
+echo "A52 plugin: $HAVE_A52" |
|
+echo "AVC rate plugin: $HAVE_AVCRATE" |
|
echo "Speex rate plugin: $PPH" |
|
echo "Speex preprocess plugin: $HAVE_SPEEXDSP" |
|
if test "$HAVE_SPEEX" = "yes"; then |
|
diff --git a/doc/Makefile.am b/doc/Makefile.am |
|
index 19fa0d2..0d6f6e5 100644 |
|
--- a/doc/Makefile.am |
|
+++ b/doc/Makefile.am |
|
@@ -1,4 +1,35 @@ |
|
-EXTRA_DIST = README-pcm-oss README-jack README-pulse README-maemo \ |
|
- upmix.txt vdownmix.txt samplerate.txt a52.txt lavcrate.txt \ |
|
- speexrate.txt speexdsp.txt README-arcam-av |
|
+EXTRA_DIST = |
|
|
|
+if HAVE_OSS |
|
+EXTRA_DIST += README-pcm-oss |
|
+endif |
|
+if HAVE_MIX |
|
+EXTRA_DIST += upmix.txt vdownmix.txt |
|
+endif |
|
+if HAVE_JACK |
|
+EXTRA_DIST += README-jack |
|
+endif |
|
+if HAVE_PULSE |
|
+EXTRA_DIST += README-pulse |
|
+endif |
|
+if HAVE_MAEMO_PLUGIN |
|
+EXTRA_DIST += README-maemo |
|
+endif |
|
+if HAVE_SAMPLERATE |
|
+EXTRA_DIST += samplerate.txt |
|
+endif |
|
+if HAVE_A52 |
|
+EXTRA_DIST += a52.txt |
|
+endif |
|
+if HAVE_AVCRATE |
|
+EXTRA_DIST += lavcrate.txt |
|
+endif |
|
+if HAVE_PPH |
|
+EXTRA_DIST += speexrate.txt |
|
+endif |
|
+if HAVE_SPEEXDSP |
|
+EXTRA_DIST += speexdsp.txt |
|
+endif |
|
+if HAVE_ARCAMAV |
|
+EXTRA_DIST += README-arcam-av |
|
+endif |
|
-- |
|
2.13.6 |
|
|
|
|
|
From 24db7f59d76984e2901f2834a297735853cab776 Mon Sep 17 00:00:00 2001 |
|
From: Jaroslav Kysela <perex@perex.cz> |
|
Date: Mon, 16 Apr 2018 16:24:29 +0200 |
|
Subject: [PATCH 4/8] Move rate-lavc to rate-lav subdirectory and update to use |
|
libavresample |
|
|
|
- --disable-avcodec renamed to --disable-libav |
|
- --avcodec-includedir renamed to --libav-includedir |
|
- --avcodec-libdir renamed to --libav-libdir |
|
- --disable-lavcrate renamed to --disable-lavrate |
|
|
|
The .c changes are from Anton Khirnov. The rest is from Jaroslav Kysela. |
|
|
|
From: Anton Khirnov |
|
Signed-off-by: Jaroslav Kysela <perex@perex.cz> |
|
--- |
|
Makefile.am | 4 +- |
|
a52/Makefile.am | 5 +- |
|
a52/pcm_a52.c | 2 +- |
|
configure.ac | 85 +++--- |
|
doc/Makefile.am | 4 +- |
|
doc/{lavcrate.txt => lavrate.txt} | 10 +- |
|
.../10-rate-lavc.conf => rate-lav/10-rate-lav.conf | 6 +- |
|
rate-lav/Makefile.am | 25 ++ |
|
{rate-lavc => rate-lav}/gcd.h | 0 |
|
rate-lav/rate_lavrate.c | 235 +++++++++++++++++ |
|
rate-lavc/Makefile.am | 26 -- |
|
rate-lavc/rate_lavcrate.c | 291 --------------------- |
|
12 files changed, 311 insertions(+), 382 deletions(-) |
|
rename doc/{lavcrate.txt => lavrate.txt} (76%) |
|
rename rate-lavc/10-rate-lavc.conf => rate-lav/10-rate-lav.conf (73%) |
|
create mode 100644 rate-lav/Makefile.am |
|
rename {rate-lavc => rate-lav}/gcd.h (100%) |
|
create mode 100644 rate-lav/rate_lavrate.c |
|
delete mode 100644 rate-lavc/Makefile.am |
|
delete mode 100644 rate-lavc/rate_lavcrate.c |
|
|
|
diff --git a/Makefile.am b/Makefile.am |
|
index 303bc83..27f61a4 100644 |
|
--- a/Makefile.am |
|
+++ b/Makefile.am |
|
@@ -17,8 +17,8 @@ endif |
|
if HAVE_A52 |
|
SUBDIRS += a52 |
|
endif |
|
-if HAVE_AVCRATE |
|
-SUBDIRS += rate-lavc |
|
+if HAVE_LAVRATE |
|
+SUBDIRS += rate-lav |
|
endif |
|
if HAVE_USBSTREAM |
|
SUBDIRS += usb_stream |
|
diff --git a/a52/Makefile.am b/a52/Makefile.am |
|
index cbc1497..4ac8edd 100644 |
|
--- a/a52/Makefile.am |
|
+++ b/a52/Makefile.am |
|
@@ -6,9 +6,8 @@ asound_module_addon_DATA = 60-a52-encoder.conf |
|
asound_module_pcm_a52dir = @ALSA_PLUGIN_DIR@ |
|
asound_module_addondir = @ALSA_ADDON_DIR@ |
|
|
|
-AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @AVCODEC_CFLAGS@ \ |
|
- -DAVCODEC_HEADER="@AVCODEC_HEADER@" |
|
+AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @LIBAV_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
|
|
libasound_module_pcm_a52_la_SOURCES = pcm_a52.c |
|
-libasound_module_pcm_a52_la_LIBADD = @ALSA_LIBS@ @AVCODEC_LIBS@ |
|
+libasound_module_pcm_a52_la_LIBADD = @ALSA_LIBS@ @LIBAV_LIBS@ @LIBAV_CODEC_LIBS@ |
|
diff --git a/a52/pcm_a52.c b/a52/pcm_a52.c |
|
index 155da36..29ce45f 100644 |
|
--- a/a52/pcm_a52.c |
|
+++ b/a52/pcm_a52.c |
|
@@ -25,7 +25,7 @@ |
|
#include <alsa/asoundlib.h> |
|
#include <alsa/pcm_external.h> |
|
#include <alsa/pcm_plugin.h> |
|
-#include AVCODEC_HEADER |
|
+#include <libavcodec/avcodec.h> |
|
#include <libavutil/avutil.h> |
|
|
|
/* some compatibility wrappers */ |
|
diff --git a/configure.ac b/configure.ac |
|
index 2d7e6aa..cb1ae2d 100644 |
|
--- a/configure.ac |
|
+++ b/configure.ac |
|
@@ -89,67 +89,55 @@ if test "$use_maemo_rm" = "yes"; then |
|
fi |
|
fi |
|
|
|
-AC_ARG_ENABLE([avcodec], |
|
- AS_HELP_STRING([--disable-avcodec], [Don't build plugins depending on avcodec (a52)])) |
|
+AC_ARG_ENABLE([libav], |
|
+ AS_HELP_STRING([--disable-avlib], [Do not build plugins depending on libav/ffmpeg (a52,lavrate...)])) |
|
|
|
-if test "x$enable_avcodec" != "xno"; then |
|
- PKG_CHECK_MODULES(AVCODEC, [libavcodec libavutil], [HAVE_AVCODEC=yes], [HAVE_AVCODEC=no]) |
|
+if test "x$enable_libav" != "xno"; then |
|
+ PKG_CHECK_MODULES(LIBAV, [libavcodec libavutil libavresample], [HAVE_LIBAV=yes], [HAVE_LIBAV=no]) |
|
fi |
|
|
|
-if test "x$HAVE_AVCODEC" = "xno"; then |
|
- AC_ARG_WITH([avcodec-includedir], |
|
- AS_HELP_STRING([--with-avcodec-includedir=dir], |
|
- [AVcodec include directory]), |
|
- [AVCODEC_CFLAGS="-I$withval"], [AVCODEC_CFLAGS=""]) |
|
- AC_ARG_WITH([avcodec-libdir], |
|
- AS_HELP_STRING([--with-avcodec-libdir=dir], |
|
- [AVcodec library directory]), |
|
- [AVCODEC_LIBS="-L$withval"], [AVCODEC_LIBS=""]) |
|
+if test "x$HAVE_LIBAV" = "xno"; then |
|
+ AC_ARG_WITH([libav-includedir], |
|
+ AS_HELP_STRING([--with-libav-includedir=dir], |
|
+ [Libav/ffmpeg include directory]), |
|
+ [LIBAV_CFLAGS="-I$(withval)"], [LIBAV_CFLAGS=""]) |
|
+ AC_ARG_WITH([libav-libdir], |
|
+ AS_HELP_STRING([--with-libav-libdir=dir], |
|
+ [Libav/ffmpeg library directory]), |
|
+ [LIBAV_LIBS="-L$withval"], [LIBAV_LIBS=""]) |
|
|
|
CFLAGS_saved="$CFLAGS" |
|
LDFLAGS_saved="$LDFLAGS" |
|
- CFLAGS="$CFLAGS $AVCODEC_CFLAGS" |
|
- LDFLAGS="$LDFLAGS $AVCODEC_LIBS" |
|
- AVCODEC_LIBS="$AVCODEC_LIBS -lavcodec" |
|
- AC_CHECK_LIB([avcodec], [avcodec_open], [HAVE_AVCODEC=yes], [HAVE_AVCODEC=no]) |
|
+ CFLAGS="$CFLAGS $LIBAV_CFLAGS" |
|
+ LDFLAGS="$LDFLAGS $LIBAV_LIBS" |
|
+ AC_CHECK_LIB([avcodec], [avcodec_open], [HAVE_LIBAV=yes], [HAVE_LIBAV=no]) |
|
CFLAGS="$CFLAGS_saved" |
|
LDFLAGS="$LDFLAGS_saved" |
|
+ LIBAV_CODEC_LIBS="-lavcodec" |
|
+ LIBAV_RESAMPLE_LIBS="-lavresample -lavutil" |
|
fi |
|
|
|
-if test $HAVE_AVCODEC = yes; then |
|
- AVCODEC_HEADER="" |
|
- CFLAGS_saved="$CFLAGS" |
|
- CFLAGS="$CFLAGS $AVCODEC_CFLAGS" |
|
- AC_CHECK_HEADER([ffmpeg/avcodec.h], [AVCODEC_HEADER='<ffmpeg/avcodec.h>']) |
|
- if test -z "$AVCODEC_HEADER"; then |
|
- AC_CHECK_HEADER([libavcodec/avcodec.h], [AVCODEC_HEADER='<libavcodec/avcodec.h>']) |
|
- fi |
|
- if test -z "$AVCODEC_HEADER"; then |
|
- HAVE_AVCODEC=no |
|
- fi |
|
- CFLAGS="$CFLAGS_saved" |
|
-fi |
|
- |
|
-AM_CONDITIONAL(HAVE_AVCODEC, test x$HAVE_AVCODEC = xyes) |
|
-AC_SUBST(AVCODEC_CFLAGS) |
|
-AC_SUBST(AVCODEC_LIBS) |
|
-AC_SUBST(AVCODEC_HEADER) |
|
+AM_CONDITIONAL(HAVE_LIBAV, test x$HAVE_LIBAV = xyes) |
|
+AC_SUBST(LIBAV_CFLAGS) |
|
+AC_SUBST(LIBAV_LIBS) |
|
+AC_SUBST(LIBAV_CODEC_LIBS) |
|
+AC_SUBST(LIBAV_RESAMPLE_LIBS) |
|
|
|
AC_ARG_ENABLE([a52], |
|
AS_HELP_STRING([--disable-a52], [Disable building of A52 encoder plugin])) |
|
|
|
-if test "x$enable_a52" != "xno" -a "$HAVE_AVCODEC" = "yes"; then |
|
+if test "x$enable_a52" != "xno" -a "$HAVE_LIBAV" = "yes"; then |
|
HAVE_A52=yes |
|
fi |
|
AM_CONDITIONAL(HAVE_A52, test x$HAVE_A52 = xyes) |
|
|
|
-AC_ARG_ENABLE([avcrate], |
|
- AS_HELP_STRING([--disable-avcrate], [Disable building of AVC rate plugin])) |
|
+AC_ARG_ENABLE([lavrate], |
|
+ AS_HELP_STRING([--disable-lavrate], [Disable building of libav/ffmpeg rate plugin])) |
|
|
|
-if test "x$enable_avcrate" != "xno" -a "$HAVE_AVCODEC" = "yes"; then |
|
- HAVE_AVCRATE=yes |
|
+if test "x$enable_lavrate" != "xno" -a "$HAVE_LIBAV" = "yes"; then |
|
+ HAVE_LAVRATE=yes |
|
fi |
|
-AM_CONDITIONAL(HAVE_AVCRATE, test x$HAVE_AVCRATE = xyes) |
|
+AM_CONDITIONAL(HAVE_LAVRATE, test x$HAVE_LAVRATE = xyes) |
|
|
|
AC_ARG_ENABLE([speexdsp], |
|
AS_HELP_STRING([--disable-speexdsp], [Disable building of speexdsp plugin])) |
|
@@ -245,7 +233,7 @@ AC_OUTPUT([ |
|
mix/Makefile |
|
rate/Makefile |
|
a52/Makefile |
|
- rate-lavc/Makefile |
|
+ rate-lav/Makefile |
|
maemo/Makefile |
|
doc/Makefile |
|
usb_stream/Makefile |
|
@@ -276,14 +264,13 @@ if test "$HAVE_SAMPLERATE" = "yes"; then |
|
fi |
|
echo "Maemo plugin: $HAVE_MAEMO_PLUGIN" |
|
echo " Using Osso resource manager: $use_maemo_rm" |
|
-if test "$HAVE_AVCODEC" = "yes"; then |
|
- echo "AVCodec config:" |
|
- echo " AVCODEC_CFLAGS: $AVCODEC_CFLAGS" |
|
- echo " AVCODEC_LIBS: $AVCODEC_LIBS" |
|
- echo " AVCODEC_HEADER: $AVCODEC_HEADER" |
|
+if test "$HAVE_LIBAV" = "yes"; then |
|
+ echo "Libav/ffmpeg config:" |
|
+ echo " LIBAV_CFLAGS: $LIBAV_CFLAGS" |
|
+ echo " LIBAV_LIBS: $LIBAV_LIBS / $LIBAV_CODEC_LIBS / $LIBAV_RESAMPLE_LIBS" |
|
fi |
|
-echo "A52 plugin: $HAVE_A52" |
|
-echo "AVC rate plugin: $HAVE_AVCRATE" |
|
+echo "Libav A52 plugin: $HAVE_A52" |
|
+echo "Libav rate plugin: $HAVE_LAVRATE" |
|
echo "Speex rate plugin: $PPH" |
|
echo "Speex preprocess plugin: $HAVE_SPEEXDSP" |
|
if test "$HAVE_SPEEX" = "yes"; then |
|
diff --git a/doc/Makefile.am b/doc/Makefile.am |
|
index 0d6f6e5..7c004e5 100644 |
|
--- a/doc/Makefile.am |
|
+++ b/doc/Makefile.am |
|
@@ -21,8 +21,8 @@ endif |
|
if HAVE_A52 |
|
EXTRA_DIST += a52.txt |
|
endif |
|
-if HAVE_AVCRATE |
|
-EXTRA_DIST += lavcrate.txt |
|
+if HAVE_LAVRATE |
|
+EXTRA_DIST += lavrate.txt |
|
endif |
|
if HAVE_PPH |
|
EXTRA_DIST += speexrate.txt |
|
diff --git a/doc/lavcrate.txt b/doc/lavrate.txt |
|
similarity index 76% |
|
rename from doc/lavcrate.txt |
|
rename to doc/lavrate.txt |
|
index faf3e25..6575183 100644 |
|
--- a/doc/lavcrate.txt |
|
+++ b/doc/lavrate.txt |
|
@@ -1,14 +1,14 @@ |
|
-Rate Converter Plugin Using libavcodec |
|
-====================================== |
|
+Rate Converter Plugin Using libavresample |
|
+=========================================0 |
|
|
|
-The plugin in rate-lavc subdirectory is an external rate converter using |
|
-libavcodec's resampler. You can use this rate converter plugin by defining a |
|
+The plugin in rate-lavr subdirectory is an external rate converter using |
|
+libavresample library. You can use this rate converter plugin by defining a |
|
rate PCM with "converter" parameter, such as: |
|
|
|
pcm.my_rate { |
|
type rate |
|
slave.pcm "hw" |
|
- converter "lavcrate" |
|
+ converter "lavrate" |
|
} |
|
|
|
The plug plugin has also a similar field, "rate_converter". |
|
diff --git a/rate-lavc/10-rate-lavc.conf b/rate-lav/10-rate-lav.conf |
|
similarity index 73% |
|
rename from rate-lavc/10-rate-lavc.conf |
|
rename to rate-lav/10-rate-lav.conf |
|
index bab1694..48ede62 100644 |
|
--- a/rate-lavc/10-rate-lavc.conf |
|
+++ b/rate-lav/10-rate-lav.conf |
|
@@ -1,4 +1,4 @@ |
|
-pcm.lavcrate { |
|
+pcm.lavrate { |
|
@args [ SLAVE RATE CONVERTER ] |
|
@args.SLAVE { |
|
type string |
|
@@ -10,7 +10,7 @@ pcm.lavcrate { |
|
} |
|
@args.CONVERTER { |
|
type string |
|
- default "lavcrate" |
|
+ default "lavrate" |
|
} |
|
type rate |
|
converter $CONVERTER |
|
@@ -23,6 +23,6 @@ pcm.lavcrate { |
|
@func refer |
|
name defaults.namehint.basic |
|
} |
|
- description "Rate Converter Plugin Using AVC Library" |
|
+ description "Rate Converter Plugin Using Libav/FFmpeg Library" |
|
} |
|
} |
|
diff --git a/rate-lav/Makefile.am b/rate-lav/Makefile.am |
|
new file mode 100644 |
|
index 0000000..0f6ecb6 |
|
--- /dev/null |
|
+++ b/rate-lav/Makefile.am |
|
@@ -0,0 +1,25 @@ |
|
+EXTRA_DIST = 10-rate-lav.conf |
|
+ |
|
+asound_module_rate_lavrate_LTLIBRARIES = libasound_module_rate_lavrate.la |
|
+asound_module_addon_DATA = 10-rate-lav.conf |
|
+ |
|
+asound_module_rate_lavratedir = @ALSA_PLUGIN_DIR@ |
|
+asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+ |
|
+AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @LIBAV_CFLAGS@ |
|
+AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
+ |
|
+libasound_module_rate_lavrate_la_SOURCES = rate_lavrate.c |
|
+libasound_module_rate_lavrate_la_LIBADD = @ALSA_LIBS@ @LIBAV_LIBS@ @LIBAV_RESAMPLE_LIBS@ |
|
+ |
|
+noinst_HEADERS = gcd.h |
|
+ |
|
+install-exec-hook: |
|
+ rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_*.so |
|
+ $(LN_S) libasound_module_rate_lavrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_higher.so |
|
+ $(LN_S) libasound_module_rate_lavrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_high.so |
|
+ $(LN_S) libasound_module_rate_lavrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_fast.so |
|
+ $(LN_S) libasound_module_rate_lavrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_faster.so |
|
+ |
|
+uninstall-hook: |
|
+ rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_*.so |
|
diff --git a/rate-lavc/gcd.h b/rate-lav/gcd.h |
|
similarity index 100% |
|
rename from rate-lavc/gcd.h |
|
rename to rate-lav/gcd.h |
|
diff --git a/rate-lav/rate_lavrate.c b/rate-lav/rate_lavrate.c |
|
new file mode 100644 |
|
index 0000000..2b992c5 |
|
--- /dev/null |
|
+++ b/rate-lav/rate_lavrate.c |
|
@@ -0,0 +1,235 @@ |
|
+/* |
|
+ * Rate converter plugin using libavresample |
|
+ * Copyright (c) 2014 by Anton Khirnov |
|
+ * |
|
+ * This library is free software; you can redistribute it and/or |
|
+ * modify it under the terms of the GNU Lesser General Public |
|
+ * License as published by the Free Software Foundation; either |
|
+ * version 2.1 of the License, or (at your option) any later version. |
|
+ * |
|
+ * This library is distributed in the hope that it will be useful, |
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
+ * Lesser General Public License for more details. |
|
+ */ |
|
+ |
|
+#include <stdio.h> |
|
+#include <alsa/asoundlib.h> |
|
+#include <alsa/pcm_rate.h> |
|
+ |
|
+#include <libavresample/avresample.h> |
|
+#include <libavutil/channel_layout.h> |
|
+#include <libavutil/opt.h> |
|
+#include <libavutil/mathematics.h> |
|
+#include <libavutil/samplefmt.h> |
|
+ |
|
+ |
|
+static unsigned int filter_size = 16; |
|
+static unsigned int phase_shift = 10; /* auto-adjusts */ |
|
+static double cutoff = 0; /* auto-adjusts */ |
|
+ |
|
+struct rate_src { |
|
+ AVAudioResampleContext *avr; |
|
+ |
|
+ unsigned int in_rate; |
|
+ unsigned int out_rate; |
|
+ unsigned int channels; |
|
+}; |
|
+ |
|
+static snd_pcm_uframes_t input_frames(void *obj ATTRIBUTE_UNUSED, |
|
+ snd_pcm_uframes_t frames) |
|
+{ |
|
+ return frames; |
|
+} |
|
+ |
|
+static snd_pcm_uframes_t output_frames(void *obj ATTRIBUTE_UNUSED, |
|
+ snd_pcm_uframes_t frames) |
|
+{ |
|
+ return frames; |
|
+} |
|
+ |
|
+static void pcm_src_free(void *obj) |
|
+{ |
|
+ struct rate_src *rate = obj; |
|
+ avresample_free(&rate->avr); |
|
+} |
|
+ |
|
+static int pcm_src_init(void *obj, snd_pcm_rate_info_t *info) |
|
+{ |
|
+ struct rate_src *rate = obj; |
|
+ int i, ir, or; |
|
+ |
|
+ if (!rate->avr || rate->channels != info->channels) { |
|
+ int ret; |
|
+ |
|
+ pcm_src_free(rate); |
|
+ rate->channels = info->channels; |
|
+ ir = rate->in_rate = info->in.rate; |
|
+ or = rate->out_rate = info->out.rate; |
|
+ i = av_gcd(or, ir); |
|
+ if (or > ir) { |
|
+ phase_shift = or/i; |
|
+ } else { |
|
+ phase_shift = ir/i; |
|
+ } |
|
+ if (cutoff <= 0.0) { |
|
+ cutoff = 1.0 - 1.0/filter_size; |
|
+ if (cutoff < 0.80) |
|
+ cutoff = 0.80; |
|
+ } |
|
+ |
|
+ rate->avr = avresample_alloc_context(); |
|
+ if (!rate->avr) |
|
+ return -ENOMEM; |
|
+ |
|
+ av_opt_set_int(rate->avr, "in_sample_rate", info->in.rate, 0); |
|
+ av_opt_set_int(rate->avr, "out_sample_rate", info->out.rate, 0); |
|
+ av_opt_set_int(rate->avr, "in_sample_format", AV_SAMPLE_FMT_S16, 0); |
|
+ av_opt_set_int(rate->avr, "out_sample_format", AV_SAMPLE_FMT_S16, 0); |
|
+ av_opt_set_int(rate->avr, "in_channel_layout", av_get_default_channel_layout(rate->channels), 0); |
|
+ av_opt_set_int(rate->avr, "out_channel_layout", av_get_default_channel_layout(rate->channels), 0); |
|
+ |
|
+ av_opt_set_int(rate->avr, "filter_size", filter_size, 0); |
|
+ av_opt_set_int(rate->avr, "phase_shift", phase_shift, 0); |
|
+ av_opt_set_double(rate->avr, "cutoff", cutoff, 0); |
|
+ |
|
+ ret = avresample_open(rate->avr); |
|
+ if (ret < 0) { |
|
+ avresample_free(&rate->avr); |
|
+ return -EINVAL; |
|
+ } |
|
+ } |
|
+ |
|
+ return 0; |
|
+} |
|
+ |
|
+static int pcm_src_adjust_pitch(void *obj, snd_pcm_rate_info_t *info) |
|
+{ |
|
+ struct rate_src *rate = obj; |
|
+ |
|
+ if (info->out.rate != rate->out_rate || info->in.rate != rate->in_rate) |
|
+ pcm_src_init(obj, info); |
|
+ return 0; |
|
+} |
|
+ |
|
+static void pcm_src_reset(void *obj) |
|
+{ |
|
+ struct rate_src *rate = obj; |
|
+ |
|
+ if (rate->avr) { |
|
+#if 0 |
|
+ avresample_close(rate->avr); |
|
+ avresample_open(rate->avr); |
|
+#endif |
|
+ } |
|
+} |
|
+ |
|
+static void pcm_src_convert_s16(void *obj, int16_t *dst, |
|
+ unsigned int dst_frames, |
|
+ const int16_t *src, |
|
+ unsigned int src_frames) |
|
+{ |
|
+ struct rate_src *rate = obj; |
|
+ int chans = rate->channels; |
|
+ unsigned int total_in = avresample_get_delay(rate->avr) + src_frames; |
|
+ |
|
+ avresample_convert(rate->avr, (uint8_t **)&dst, dst_frames * chans * 2, dst_frames, |
|
+ (uint8_t **)&src, src_frames * chans * 2, src_frames); |
|
+ |
|
+ avresample_set_compensation(rate->avr, |
|
+ total_in - src_frames > filter_size ? 0 : 1, src_frames); |
|
+} |
|
+ |
|
+static void pcm_src_close(void *obj) |
|
+{ |
|
+ pcm_src_free(obj); |
|
+} |
|
+ |
|
+#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002 |
|
+static int get_supported_rates(void *obj ATTRIBUTE_UNUSED, |
|
+ unsigned int *rate_min, |
|
+ unsigned int *rate_max) |
|
+{ |
|
+ *rate_min = *rate_max = 0; /* both unlimited */ |
|
+ return 0; |
|
+} |
|
+ |
|
+static void dump(void *obj ATTRIBUTE_UNUSED, snd_output_t *out) |
|
+{ |
|
+ snd_output_printf(out, "Converter: libavr\n"); |
|
+} |
|
+#endif |
|
+ |
|
+static snd_pcm_rate_ops_t pcm_src_ops = { |
|
+ .close = pcm_src_close, |
|
+ .init = pcm_src_init, |
|
+ .free = pcm_src_free, |
|
+ .reset = pcm_src_reset, |
|
+ .adjust_pitch = pcm_src_adjust_pitch, |
|
+ .convert_s16 = pcm_src_convert_s16, |
|
+ .input_frames = input_frames, |
|
+ .output_frames = output_frames, |
|
+#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002 |
|
+ .version = SND_PCM_RATE_PLUGIN_VERSION, |
|
+ .get_supported_rates = get_supported_rates, |
|
+ .dump = dump, |
|
+#endif |
|
+}; |
|
+ |
|
+int pcm_src_open(unsigned int version, void **objp, snd_pcm_rate_ops_t *ops) |
|
+ |
|
+{ |
|
+ struct rate_src *rate; |
|
+ |
|
+#if SND_PCM_RATE_PLUGIN_VERSION < 0x010002 |
|
+ if (version != SND_PCM_RATE_PLUGIN_VERSION) { |
|
+ fprintf(stderr, "Invalid rate plugin version %x\n", version); |
|
+ return -EINVAL; |
|
+ } |
|
+#endif |
|
+ rate = calloc(1, sizeof(*rate)); |
|
+ if (!rate) |
|
+ return -ENOMEM; |
|
+ |
|
+ *objp = rate; |
|
+ rate->avr = NULL; |
|
+#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002 |
|
+ if (version == 0x010001) |
|
+ memcpy(ops, &pcm_src_ops, sizeof(snd_pcm_rate_old_ops_t)); |
|
+ else |
|
+#endif |
|
+ *ops = pcm_src_ops; |
|
+ return 0; |
|
+} |
|
+ |
|
+int SND_PCM_RATE_PLUGIN_ENTRY(lavrate)(unsigned int version, void **objp, |
|
+ snd_pcm_rate_ops_t *ops) |
|
+{ |
|
+ return pcm_src_open(version, objp, ops); |
|
+} |
|
+int SND_PCM_RATE_PLUGIN_ENTRY(lavrate_higher)(unsigned int version, |
|
+ void **objp, snd_pcm_rate_ops_t *ops) |
|
+{ |
|
+ filter_size = 64; |
|
+ return pcm_src_open(version, objp, ops); |
|
+} |
|
+int SND_PCM_RATE_PLUGIN_ENTRY(lavrate_high)(unsigned int version, |
|
+ void **objp, snd_pcm_rate_ops_t *ops) |
|
+{ |
|
+ filter_size = 32; |
|
+ return pcm_src_open(version, objp, ops); |
|
+} |
|
+int SND_PCM_RATE_PLUGIN_ENTRY(lavrate_fast)(unsigned int version, |
|
+ void **objp, snd_pcm_rate_ops_t *ops) |
|
+{ |
|
+ filter_size = 8; |
|
+ return pcm_src_open(version, objp, ops); |
|
+} |
|
+int SND_PCM_RATE_PLUGIN_ENTRY(lavrate_faster)(unsigned int version, |
|
+ void **objp, snd_pcm_rate_ops_t *ops) |
|
+{ |
|
+ filter_size = 4; |
|
+ return pcm_src_open(version, objp, ops); |
|
+} |
|
+ |
|
+ |
|
diff --git a/rate-lavc/Makefile.am b/rate-lavc/Makefile.am |
|
deleted file mode 100644 |
|
index 5f66472..0000000 |
|
--- a/rate-lavc/Makefile.am |
|
+++ /dev/null |
|
@@ -1,26 +0,0 @@ |
|
-EXTRA_DIST = 10-rate-lavc.conf |
|
- |
|
-asound_module_rate_lavcrate_LTLIBRARIES = libasound_module_rate_lavcrate.la |
|
-asound_module_addon_DATA = 10-rate-lavc.conf |
|
- |
|
-asound_module_rate_lavcratedir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
- |
|
-AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @AVCODEC_CFLAGS@ \ |
|
- -DAVCODEC_HEADER="@AVCODEC_HEADER@" |
|
-AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
- |
|
-libasound_module_rate_lavcrate_la_SOURCES = rate_lavcrate.c |
|
-libasound_module_rate_lavcrate_la_LIBADD = @ALSA_LIBS@ @AVCODEC_LIBS@ |
|
- |
|
-noinst_HEADERS = gcd.h |
|
- |
|
-install-exec-hook: |
|
- rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_*.so |
|
- $(LN_S) libasound_module_rate_lavcrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_higher.so |
|
- $(LN_S) libasound_module_rate_lavcrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_high.so |
|
- $(LN_S) libasound_module_rate_lavcrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_fast.so |
|
- $(LN_S) libasound_module_rate_lavcrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_faster.so |
|
- |
|
-uninstall-hook: |
|
- rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_*.so |
|
diff --git a/rate-lavc/rate_lavcrate.c b/rate-lavc/rate_lavcrate.c |
|
deleted file mode 100644 |
|
index 14a2198..0000000 |
|
--- a/rate-lavc/rate_lavcrate.c |
|
+++ /dev/null |
|
@@ -1,291 +0,0 @@ |
|
-/* |
|
- * Rate converter plugin using libavcodec's resampler |
|
- * Copyright (c) 2007 by Nicholas Kain <njkain@gmail.com> |
|
- * |
|
- * based on rate converter that uses libsamplerate |
|
- * Copyright (c) 2006 by Takashi Iwai <tiwai@suse.de> |
|
- * |
|
- * This library is free software; you can redistribute it and/or |
|
- * modify it under the terms of the GNU Lesser General Public |
|
- * License as published by the Free Software Foundation; either |
|
- * version 2.1 of the License, or (at your option) any later version. |
|
- * |
|
- * This library is distributed in the hope that it will be useful, |
|
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
- * Lesser General Public License for more details. |
|
- */ |
|
- |
|
-#include <stdio.h> |
|
-#include <alsa/asoundlib.h> |
|
-#include <alsa/pcm_rate.h> |
|
-#include AVCODEC_HEADER |
|
-#include "gcd.h" |
|
- |
|
-static int filter_size = 16; |
|
-static int phase_shift = 10; /* auto-adjusts */ |
|
-static double cutoff = 0; /* auto-adjusts */ |
|
- |
|
-struct rate_src { |
|
- struct AVResampleContext *context; |
|
- int in_rate; |
|
- int out_rate; |
|
- int stored; |
|
- int point; |
|
- int16_t **out; |
|
- int16_t **in; |
|
- unsigned int channels; |
|
-}; |
|
- |
|
-static snd_pcm_uframes_t input_frames(void *obj, snd_pcm_uframes_t frames) |
|
-{ |
|
- return frames; |
|
-} |
|
- |
|
-static snd_pcm_uframes_t output_frames(void *obj, snd_pcm_uframes_t frames) |
|
-{ |
|
- return frames; |
|
-} |
|
- |
|
-static void pcm_src_free(void *obj) |
|
-{ |
|
- struct rate_src *rate = obj; |
|
- int i; |
|
- |
|
- if (rate->out) { |
|
- for (i=0; i<rate->channels; i++) { |
|
- free(rate->out[i]); |
|
- } |
|
- free(rate->out); |
|
- } |
|
- if (rate->in) { |
|
- for (i=0; i<rate->channels; i++) { |
|
- free(rate->in[i]); |
|
- } |
|
- free(rate->in); |
|
- } |
|
- rate->out = rate->in = NULL; |
|
- |
|
- if (rate->context) { |
|
- av_resample_close(rate->context); |
|
- rate->context = NULL; |
|
- } |
|
-} |
|
- |
|
-static int pcm_src_init(void *obj, snd_pcm_rate_info_t *info) |
|
-{ |
|
- struct rate_src *rate = obj; |
|
- int i, ir, or; |
|
- |
|
- if (! rate->context || rate->channels != info->channels) { |
|
- pcm_src_free(rate); |
|
- rate->channels = info->channels; |
|
- ir = rate->in_rate = info->in.rate; |
|
- or = rate->out_rate = info->out.rate; |
|
- i = gcd(or, ir); |
|
- if (or > ir) { |
|
- phase_shift = or/i; |
|
- } else { |
|
- phase_shift = ir/i; |
|
- } |
|
- if (cutoff <= 0.0) { |
|
- cutoff = 1.0 - 1.0/filter_size; |
|
- if (cutoff < 0.80) |
|
- cutoff = 0.80; |
|
- } |
|
- rate->context = av_resample_init(info->out.rate, info->in.rate, |
|
- filter_size, phase_shift, |
|
- (info->out.rate >= info->in.rate ? 0 : 1), cutoff); |
|
- if (!rate->context) |
|
- return -EINVAL; |
|
- } |
|
- |
|
- rate->out = malloc(rate->channels * sizeof(int16_t *)); |
|
- rate->in = malloc(rate->channels * sizeof(int16_t *)); |
|
- for (i=0; i<rate->channels; i++) { |
|
- rate->out[i] = calloc(info->out.period_size * 2, |
|
- sizeof(int16_t)); |
|
- rate->in[i] = calloc(info->in.period_size * 2, |
|
- sizeof(int16_t)); |
|
- } |
|
- rate->point = info->in.period_size / 2; |
|
- if (!rate->out || !rate->in) { |
|
- pcm_src_free(rate); |
|
- return -ENOMEM; |
|
- } |
|
- |
|
- return 0; |
|
-} |
|
- |
|
-static int pcm_src_adjust_pitch(void *obj, snd_pcm_rate_info_t *info) |
|
-{ |
|
- struct rate_src *rate = obj; |
|
- |
|
- if (info->out.rate != rate->out_rate || info->in.rate != rate->in_rate) |
|
- pcm_src_init(obj, info); |
|
- return 0; |
|
-} |
|
- |
|
-static void pcm_src_reset(void *obj) |
|
-{ |
|
- struct rate_src *rate = obj; |
|
- rate->stored = 0; |
|
-} |
|
- |
|
-static void deinterleave(const int16_t *src, int16_t **dst, unsigned int frames, |
|
- unsigned int chans, int overflow) |
|
-{ |
|
- int i, j; |
|
- |
|
- if (chans == 1) { |
|
- memcpy(dst + overflow, src, frames*sizeof(int16_t)); |
|
- } else if (chans == 2) { |
|
- for (j=overflow; j<(frames + overflow); j++) { |
|
- dst[0][j] = *(src++); |
|
- dst[1][j] = *(src++); |
|
- } |
|
- } else { |
|
- for (j=overflow; j<(frames + overflow); j++) { |
|
- for (i=0; i<chans; i++) { |
|
- dst[i][j] = *(src++); |
|
- } |
|
- } |
|
- } |
|
-} |
|
- |
|
-static void reinterleave(int16_t **src, int16_t *dst, unsigned int frames, |
|
- unsigned int chans) |
|
-{ |
|
- int i, j; |
|
- |
|
- if (chans == 1) { |
|
- memcpy(dst, src, frames*sizeof(int16_t)); |
|
- } else if (chans == 2) { |
|
- for (j=0; j<frames; j++) { |
|
- *(dst++) = src[0][j]; |
|
- *(dst++) = src[1][j]; |
|
- } |
|
- } else { |
|
- for (j=0; j<frames; j++) { |
|
- for (i=0; i<chans; i++) { |
|
- *(dst++) = src[i][j]; |
|
- } |
|
- } |
|
- } |
|
-} |
|
- |
|
-static void pcm_src_convert_s16(void *obj, int16_t *dst, unsigned int |
|
- dst_frames, const int16_t *src, unsigned int src_frames) |
|
-{ |
|
- struct rate_src *rate = obj; |
|
- int consumed = 0, chans=rate->channels, ret=0, i; |
|
- int total_in = rate->stored + src_frames, new_stored; |
|
- |
|
- deinterleave(src, rate->in, src_frames, chans, rate->point); |
|
- for (i=0; i<chans; ++i) { |
|
- ret = av_resample(rate->context, rate->out[i], |
|
- rate->in[i]+rate->point-rate->stored, &consumed, |
|
- total_in, dst_frames, i == (chans - 1)); |
|
- new_stored = total_in-consumed; |
|
- memmove(rate->in[i]+rate->point-new_stored, |
|
- rate->in[i]+rate->point-rate->stored+consumed, |
|
- new_stored*sizeof(int16_t)); |
|
- } |
|
- av_resample_compensate(rate->context, |
|
- total_in-src_frames>filter_size?0:1, src_frames); |
|
- reinterleave(rate->out, dst, ret, chans); |
|
- rate->stored = total_in-consumed; |
|
-} |
|
- |
|
-static void pcm_src_close(void *obj) |
|
-{ |
|
- pcm_src_free(obj); |
|
-} |
|
- |
|
-#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002 |
|
-static int get_supported_rates(void *obj, unsigned int *rate_min, |
|
- unsigned int *rate_max) |
|
-{ |
|
- *rate_min = *rate_max = 0; /* both unlimited */ |
|
- return 0; |
|
-} |
|
- |
|
-static void dump(void *obj, snd_output_t *out) |
|
-{ |
|
- snd_output_printf(out, "Converter: liblavc\n"); |
|
-} |
|
-#endif |
|
- |
|
-static snd_pcm_rate_ops_t pcm_src_ops = { |
|
- .close = pcm_src_close, |
|
- .init = pcm_src_init, |
|
- .free = pcm_src_free, |
|
- .reset = pcm_src_reset, |
|
- .adjust_pitch = pcm_src_adjust_pitch, |
|
- .convert_s16 = pcm_src_convert_s16, |
|
- .input_frames = input_frames, |
|
- .output_frames = output_frames, |
|
-#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002 |
|
- .version = SND_PCM_RATE_PLUGIN_VERSION, |
|
- .get_supported_rates = get_supported_rates, |
|
- .dump = dump, |
|
-#endif |
|
-}; |
|
- |
|
-int pcm_src_open(unsigned int version, void **objp, snd_pcm_rate_ops_t *ops) |
|
- |
|
-{ |
|
- struct rate_src *rate; |
|
- |
|
-#if SND_PCM_RATE_PLUGIN_VERSION < 0x010002 |
|
- if (version != SND_PCM_RATE_PLUGIN_VERSION) { |
|
- fprintf(stderr, "Invalid rate plugin version %x\n", version); |
|
- return -EINVAL; |
|
- } |
|
-#endif |
|
- rate = calloc(1, sizeof(*rate)); |
|
- if (!rate) |
|
- return -ENOMEM; |
|
- |
|
- *objp = rate; |
|
- rate->context = NULL; |
|
-#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002 |
|
- if (version == 0x010001) |
|
- memcpy(ops, &pcm_src_ops, sizeof(snd_pcm_rate_old_ops_t)); |
|
- else |
|
-#endif |
|
- *ops = pcm_src_ops; |
|
- return 0; |
|
-} |
|
- |
|
-int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate)(unsigned int version, void **objp, |
|
- snd_pcm_rate_ops_t *ops) |
|
-{ |
|
- return pcm_src_open(version, objp, ops); |
|
-} |
|
-int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_higher)(unsigned int version, |
|
- void **objp, snd_pcm_rate_ops_t *ops) |
|
-{ |
|
- filter_size = 64; |
|
- return pcm_src_open(version, objp, ops); |
|
-} |
|
-int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_high)(unsigned int version, |
|
- void **objp, snd_pcm_rate_ops_t *ops) |
|
-{ |
|
- filter_size = 32; |
|
- return pcm_src_open(version, objp, ops); |
|
-} |
|
-int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_fast)(unsigned int version, |
|
- void **objp, snd_pcm_rate_ops_t *ops) |
|
-{ |
|
- filter_size = 8; |
|
- return pcm_src_open(version, objp, ops); |
|
-} |
|
-int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_faster)(unsigned int version, |
|
- void **objp, snd_pcm_rate_ops_t *ops) |
|
-{ |
|
- filter_size = 4; |
|
- return pcm_src_open(version, objp, ops); |
|
-} |
|
- |
|
- |
|
-- |
|
2.13.6 |
|
|
|
|
|
From 4afd4ab0b276b26b965bae3aadaa31cdb52b1df0 Mon Sep 17 00:00:00 2001 |
|
From: Jaroslav Kysela <perex@perex.cz> |
|
Date: Mon, 16 Apr 2018 17:49:36 +0200 |
|
Subject: [PATCH 5/8] configure: change --with-alsaaddondir to |
|
--with-alsagconfdir and --with-alsalconfdir |
|
|
|
The local add-on configuration directory (/etc/alsa/conf.d) contains |
|
links to the global configuration directory (/usr/share/alsa/alsa.conf.d) now. |
|
|
|
Signed-off-by: Jaroslav Kysela <perex@perex.cz> |
|
--- |
|
a52/Makefile.am | 14 +++++++++++--- |
|
arcam-av/Makefile.am | 14 +++++++++++--- |
|
configure.ac | 32 ++++++++++++++++++++++---------- |
|
install-hooks.am | 16 ++++++++++++++++ |
|
jack/Makefile.am | 14 +++++++++++--- |
|
maemo/Makefile.am | 14 +++++++++++--- |
|
mix/Makefile.am | 14 +++++++++++--- |
|
oss/Makefile.am | 14 +++++++++++--- |
|
pph/Makefile.am | 16 ++++++++++++---- |
|
pulse/Makefile.am | 17 ++++++++++++++--- |
|
rate-lav/Makefile.am | 13 ++++++++++--- |
|
rate/Makefile.am | 14 +++++++++++--- |
|
speex/Makefile.am | 14 +++++++++++--- |
|
usb_stream/Makefile.am | 14 +++++++++++--- |
|
14 files changed, 173 insertions(+), 47 deletions(-) |
|
create mode 100644 install-hooks.am |
|
|
|
diff --git a/a52/Makefile.am b/a52/Makefile.am |
|
index 4ac8edd..cd5ce45 100644 |
|
--- a/a52/Makefile.am |
|
+++ b/a52/Makefile.am |
|
@@ -1,13 +1,21 @@ |
|
-EXTRA_DIST = 60-a52-encoder.conf |
|
+GCONF_FILES = 60-a52-encoder.conf |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) |
|
|
|
asound_module_pcm_a52_LTLIBRARIES = libasound_module_pcm_a52.la |
|
-asound_module_addon_DATA = 60-a52-encoder.conf |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
|
|
asound_module_pcm_a52dir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @LIBAV_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
|
|
libasound_module_pcm_a52_la_SOURCES = pcm_a52.c |
|
libasound_module_pcm_a52_la_LIBADD = @ALSA_LIBS@ @LIBAV_LIBS@ @LIBAV_CODEC_LIBS@ |
|
+ |
|
+include ../install-hooks.am |
|
+ |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
diff --git a/arcam-av/Makefile.am b/arcam-av/Makefile.am |
|
index 4a54ccd..c16aec0 100644 |
|
--- a/arcam-av/Makefile.am |
|
+++ b/arcam-av/Makefile.am |
|
@@ -1,13 +1,21 @@ |
|
-EXTRA_DIST = 50-arcam-av-ctl.conf |
|
+GCONF_FILES = 50-arcam-av-ctl.conf |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) |
|
|
|
asound_module_ctl_arcam_av_LTLIBRARIES = libasound_module_ctl_arcam_av.la |
|
-asound_module_addon_DATA = 50-arcam-av-ctl.conf |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
|
|
asound_module_ctl_arcam_avdir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined |
|
|
|
libasound_module_ctl_arcam_av_la_SOURCES = ctl_arcam_av.c arcam_av.c arcam_av.h |
|
libasound_module_ctl_arcam_av_la_LIBADD = @ALSA_LIBS@ |
|
+ |
|
+include ../install-hooks.am |
|
+ |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
diff --git a/configure.ac b/configure.ac |
|
index cb1ae2d..f49bb6b 100644 |
|
--- a/configure.ac |
|
+++ b/configure.ac |
|
@@ -210,17 +210,29 @@ AC_DEFINE_UNQUOTED(ALSA_DATA_DIR, "$alsadatadir", [directory containing ALSA dat |
|
ALSA_DATA_DIR="$alsadatadir" |
|
AC_SUBST(ALSA_DATA_DIR) |
|
|
|
-dnl ALSA add-on config directory |
|
-AC_ARG_WITH(alsaaddondir, |
|
- AS_HELP_STRING([--with-alsaaddondir=dir], |
|
- [path where ALSA add-on config files are stored]), |
|
- alsaaddondir="$withval", alsaaddondir="") |
|
-if test -z "$alsaaddondir"; then |
|
- alsaaddondir="/etc/alsa/conf.d" |
|
+dnl ALSA add-on global config directory |
|
+AC_ARG_WITH(alsagconfdir, |
|
+ AS_HELP_STRING([--with-alsagconfdir=dir], |
|
+ [path where ALSA global add-on config files are stored]), |
|
+ alsagconfdir="$withval", alsagconfdir="") |
|
+if test -z "$alsagconfdir"; then |
|
+ alsagconfdir="$ALSA_DATA_DIR/alsa.conf.d" |
|
fi |
|
-AC_DEFINE_UNQUOTED(ALSA_ADDON_DIR, "$alsaaddondir", [directory containing ALSA add-on config files]) |
|
-ALSA_ADDON_DIR="$alsaaddondir" |
|
-AC_SUBST(ALSA_ADDON_DIR) |
|
+AC_DEFINE_UNQUOTED(ALSA_GCONF_DIR, "$alsagconfdir", [directory containing global ALSA add-on config files]) |
|
+ALSA_GCONF_DIR="$alsagconfdir" |
|
+AC_SUBST(ALSA_GCONF_DIR) |
|
+ |
|
+dnl ALSA add-on local config directory |
|
+AC_ARG_WITH(alsalconfdir, |
|
+ AS_HELP_STRING([--with-alsalconfdir=dir], |
|
+ [path where ALSA local add-on config files are stored]), |
|
+ alsalconfdir="$withval", alsalconfdir="") |
|
+if test -z "$alsalconfdir"; then |
|
+ alsalconfdir="/etc/alsa/conf.d" |
|
+fi |
|
+AC_DEFINE_UNQUOTED(ALSA_LCONF_DIR, "$alsalconfdir", [directory containing local ALSA add-on config files]) |
|
+ALSA_LCONF_DIR="$alsalconfdir" |
|
+AC_SUBST(ALSA_LCONF_DIR) |
|
|
|
SAVE_PLUGINS_VERSION |
|
|
|
diff --git a/install-hooks.am b/install-hooks.am |
|
new file mode 100644 |
|
index 0000000..2d6d383 |
|
--- /dev/null |
|
+++ b/install-hooks.am |
|
@@ -0,0 +1,16 @@ |
|
+install-conf-hook: |
|
+ mkdir -p $(DESTDIR)$(ALSA_LCONF_DIR) |
|
+ @(echo cd $(DESTDIR)$(ALSA_LCONF_DIR); \ |
|
+ cd $(DESTDIR)$(ALSA_LCONF_DIR); \ |
|
+ for i in $(GCONF_FILES); do \ |
|
+ echo $(RM) $$i";" ln -s $(ALSA_GCONF_DIR)/$$i .; \ |
|
+ $(RM) $$i; \ |
|
+ ln -s $(ALSA_GCONF_DIR)/$$i .; \ |
|
+ done) |
|
+uninstall-conf-hook: |
|
+ @(echo cd $(DESTDIR)$(ALSA_LCONF_DIR); \ |
|
+ cd $(DESTDIR)$(ALSA_LCONF_DIR); \ |
|
+ for i in $(GCONF_FILES); do \ |
|
+ echo $(RM) $$i; \ |
|
+ $(RM) $$i; \ |
|
+ done) |
|
diff --git a/jack/Makefile.am b/jack/Makefile.am |
|
index 0a3d6ae..7801194 100644 |
|
--- a/jack/Makefile.am |
|
+++ b/jack/Makefile.am |
|
@@ -1,13 +1,21 @@ |
|
-EXTRA_DIST = 50-jack.conf |
|
+GCONF_FILES = 50-jack.conf |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) |
|
|
|
asound_module_pcm_jack_LTLIBRARIES = libasound_module_pcm_jack.la |
|
-asound_module_addon_DATA = 50-jack.conf |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
|
|
asound_module_pcm_jackdir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @JACK_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
|
|
libasound_module_pcm_jack_la_SOURCES = pcm_jack.c |
|
libasound_module_pcm_jack_la_LIBADD = @ALSA_LIBS@ @JACK_LIBS@ |
|
+ |
|
+include ../install-hooks.am |
|
+ |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
diff --git a/maemo/Makefile.am b/maemo/Makefile.am |
|
index aca481d..7749926 100644 |
|
--- a/maemo/Makefile.am |
|
+++ b/maemo/Makefile.am |
|
@@ -1,12 +1,14 @@ |
|
-EXTRA_DIST = 98-maemo.conf |
|
+GCONF_FILES = 98-maemo.conf |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) |
|
|
|
asound_module_pcm_alsa_dsp_LTLIBRARIES = libasound_module_pcm_alsa_dsp.la |
|
asound_module_ctl_dsp_ctl_LTLIBRARIES = libasound_module_ctl_dsp_ctl.la |
|
-asound_module_addon_DATA = 98-maemo.conf |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
|
|
asound_module_pcm_alsa_dspdir = @ALSA_PLUGIN_DIR@ |
|
asound_module_ctl_dsp_ctldir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
|
|
AM_CFLAGS = -Wall -O2 @ALSA_CFLAGS@ $(DBUS_CFLAGS) |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
@@ -19,3 +21,9 @@ libasound_module_ctl_dsp_ctl_la_LIBADD = @ALSA_LIBS@ $(DBUS_LIBS) -lpthread |
|
|
|
noinst_HEADERS = constants.h debug.h dsp-protocol.h list.h reporting.h \ |
|
types.h |
|
+ |
|
+include ../install-hooks.am |
|
+ |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
diff --git a/mix/Makefile.am b/mix/Makefile.am |
|
index 710606c..a74c200 100644 |
|
--- a/mix/Makefile.am |
|
+++ b/mix/Makefile.am |
|
@@ -1,12 +1,14 @@ |
|
-EXTRA_DIST = 60-upmix.conf 60-vdownmix.conf |
|
+GCONF_FILES = 60-upmix.conf 60-vdownmix.conf |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) |
|
|
|
asound_module_pcm_upmix_LTLIBRARIES = libasound_module_pcm_upmix.la |
|
asound_module_pcm_vdownmix_LTLIBRARIES = libasound_module_pcm_vdownmix.la |
|
-asound_module_addon_DATA = 60-upmix.conf 60-vdownmix.conf |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
|
|
asound_module_pcm_upmixdir = @ALSA_PLUGIN_DIR@ |
|
asound_module_pcm_vdownmixdir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
@@ -15,3 +17,9 @@ libasound_module_pcm_upmix_la_SOURCES = pcm_upmix.c |
|
libasound_module_pcm_upmix_la_LIBADD = @ALSA_LIBS@ |
|
libasound_module_pcm_vdownmix_la_SOURCES = pcm_vdownmix.c |
|
libasound_module_pcm_vdownmix_la_LIBADD = @ALSA_LIBS@ |
|
+ |
|
+include ../install-hooks.am |
|
+ |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
diff --git a/oss/Makefile.am b/oss/Makefile.am |
|
index df83d20..46dfcac 100644 |
|
--- a/oss/Makefile.am |
|
+++ b/oss/Makefile.am |
|
@@ -1,12 +1,14 @@ |
|
-EXTRA_DIST = 50-oss.conf |
|
+GCONF_FILEs = 50-oss.conf |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) |
|
|
|
asound_module_pcm_oss_LTLIBRARIES = libasound_module_pcm_oss.la |
|
asound_module_ctl_oss_LTLIBRARIES = libasound_module_ctl_oss.la |
|
-asound_module_addon_DATA = 50-oss.conf |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
|
|
asound_module_pcm_ossdir = @ALSA_PLUGIN_DIR@ |
|
asound_module_ctl_ossdir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
@@ -16,3 +18,9 @@ libasound_module_pcm_oss_la_LIBADD = @ALSA_LIBS@ |
|
|
|
libasound_module_ctl_oss_la_SOURCES = ctl_oss.c |
|
libasound_module_ctl_oss_la_LIBADD = @ALSA_LIBS@ |
|
+ |
|
+include ../install-hooks.am |
|
+ |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
diff --git a/pph/Makefile.am b/pph/Makefile.am |
|
index abb950b..6938b74 100644 |
|
--- a/pph/Makefile.am |
|
+++ b/pph/Makefile.am |
|
@@ -1,10 +1,12 @@ |
|
-EXTRA_DIST = 10-speexrate.conf |
|
+GCONF_FILES = 10-speexrate.conf |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) |
|
|
|
asound_module_rate_speexrate_LTLIBRARIES = libasound_module_rate_speexrate.la |
|
-asound_module_addon_DATA = 10-speexrate.conf |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
|
|
asound_module_rate_speexratedir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
|
|
AM_CFLAGS = -DVAR_ARRAYS -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
@@ -20,6 +22,10 @@ libasound_module_rate_speexrate_la_SOURCES += resample.c |
|
libasound_module_rate_speexrate_la_LIBADD += -lm |
|
endif |
|
|
|
+noinst_HEADERS = speex_resampler.h arch.h fixed_generic.h |
|
+ |
|
+include ../install-hooks.am |
|
+ |
|
install-exec-hook: |
|
rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_speexrate_*.so |
|
$(LN_S) libasound_module_rate_speexrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_speexrate_best.so |
|
@@ -28,4 +34,6 @@ install-exec-hook: |
|
uninstall-hook: |
|
rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_speexrate_*.so |
|
|
|
-noinst_HEADERS = speex_resampler.h arch.h fixed_generic.h |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
diff --git a/pulse/Makefile.am b/pulse/Makefile.am |
|
index 835808c..c33e702 100644 |
|
--- a/pulse/Makefile.am |
|
+++ b/pulse/Makefile.am |
|
@@ -1,14 +1,19 @@ |
|
-EXTRA_DIST = 50-pulseaudio.conf 99-pulseaudio-default.conf.example |
|
+GCONF_FILES = 50-pulseaudio.conf |
|
+LCONF_FILES = 99-pulseaudio-default.conf.example |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) $(LCONF_FILES) |
|
|
|
asound_module_pcm_LTLIBRARIES = libasound_module_pcm_pulse.la |
|
asound_module_ctl_LTLIBRARIES = libasound_module_ctl_pulse.la |
|
asound_module_conf_LTLIBRARIES = libasound_module_conf_pulse.la |
|
-asound_module_addon_DATA = 50-pulseaudio.conf 99-pulseaudio-default.conf.example |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
+asound_module_lconf_DATA = $(LCONF_FILES) |
|
|
|
asound_module_pcmdir = @ALSA_PLUGIN_DIR@ |
|
asound_module_ctldir = @ALSA_PLUGIN_DIR@ |
|
asound_module_confdir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
+asound_module_lconfdir = @ALSA_LCONF_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ $(PTHREAD_CFLAGS) $(pulseaudio_CFLAGS) -D_GNU_SOURCE |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
@@ -21,3 +26,9 @@ libasound_module_ctl_pulse_la_LIBADD = @ALSA_LIBS@ $(PTHREAD_LIBS) $(pulseaudio_ |
|
|
|
libasound_module_conf_pulse_la_SOURCES = conf_pulse.c |
|
libasound_module_conf_pulse_la_LIBADD = @ALSA_LIBS@ $(PTHREAD_LIBS) $(pulseaudio_LIBS) |
|
+ |
|
+include ../install-hooks.am |
|
+ |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
diff --git a/rate-lav/Makefile.am b/rate-lav/Makefile.am |
|
index 0f6ecb6..eb672b5 100644 |
|
--- a/rate-lav/Makefile.am |
|
+++ b/rate-lav/Makefile.am |
|
@@ -1,10 +1,12 @@ |
|
-EXTRA_DIST = 10-rate-lav.conf |
|
+GCONF_FILES = 10-rate-lav.conf |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) |
|
|
|
asound_module_rate_lavrate_LTLIBRARIES = libasound_module_rate_lavrate.la |
|
-asound_module_addon_DATA = 10-rate-lav.conf |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
|
|
asound_module_rate_lavratedir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @LIBAV_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
@@ -14,6 +16,8 @@ libasound_module_rate_lavrate_la_LIBADD = @ALSA_LIBS@ @LIBAV_LIBS@ @LIBAV_RESAMP |
|
|
|
noinst_HEADERS = gcd.h |
|
|
|
+include ../install-hooks.am |
|
+ |
|
install-exec-hook: |
|
rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_*.so |
|
$(LN_S) libasound_module_rate_lavrate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_higher.so |
|
@@ -23,3 +27,6 @@ install-exec-hook: |
|
|
|
uninstall-hook: |
|
rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavrate_*.so |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
diff --git a/rate/Makefile.am b/rate/Makefile.am |
|
index 25014d8..488c12a 100644 |
|
--- a/rate/Makefile.am |
|
+++ b/rate/Makefile.am |
|
@@ -1,10 +1,12 @@ |
|
-EXTRA_DIST = 10-samplerate.conf |
|
+GCONF_FILES = 10-samplerate.conf |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) |
|
|
|
asound_module_rate_samplerate_LTLIBRARIES = libasound_module_rate_samplerate.la |
|
-asound_module_addon_DATA = 10-samplerate.conf |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
|
|
asound_module_rate_sampleratedir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ $(samplerate_CFLAGS) |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
@@ -12,6 +14,8 @@ AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUN |
|
libasound_module_rate_samplerate_la_SOURCES = rate_samplerate.c |
|
libasound_module_rate_samplerate_la_LIBADD = @ALSA_LIBS@ @samplerate_LIBS@ |
|
|
|
+include ../install-hooks.am |
|
+ |
|
install-exec-hook: |
|
rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_samplerate_*.so |
|
$(LN_S) libasound_module_rate_samplerate.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_samplerate_best.so |
|
@@ -21,3 +25,7 @@ install-exec-hook: |
|
|
|
uninstall-hook: |
|
rm -f $(DESTDIR)$(libdir)/alsa-lib/libasound_module_rate_samplerate_*.so |
|
+ |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
diff --git a/speex/Makefile.am b/speex/Makefile.am |
|
index 7891954..27c4ea5 100644 |
|
--- a/speex/Makefile.am |
|
+++ b/speex/Makefile.am |
|
@@ -1,13 +1,21 @@ |
|
-EXTRA_DIST = 60-speex.conf |
|
+GCONF_FILES = 60-speex.conf |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) |
|
|
|
asound_module_pcm_speex_LTLIBRARIES = libasound_module_pcm_speex.la |
|
-asound_module_addon_DATA = 60-speex.conf |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
|
|
asound_module_pcm_speexdir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @speexdsp_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) |
|
|
|
libasound_module_pcm_speex_la_SOURCES = pcm_speex.c |
|
libasound_module_pcm_speex_la_LIBADD = @ALSA_LIBS@ @speexdsp_LIBS@ |
|
+ |
|
+include ../install-hooks.am |
|
+ |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
diff --git a/usb_stream/Makefile.am b/usb_stream/Makefile.am |
|
index b606d3d..203618b 100644 |
|
--- a/usb_stream/Makefile.am |
|
+++ b/usb_stream/Makefile.am |
|
@@ -1,10 +1,12 @@ |
|
-EXTRA_DIST = 98-usb-stream.conf |
|
+GCONF_FILES = 98-usb-stream.conf |
|
+ |
|
+EXTRA_DIST = $(GCONF_FILES) |
|
|
|
asound_module_pcm_usb_stream_LTLIBRARIES = libasound_module_pcm_usb_stream.la |
|
-asound_module_addon_DATA = 98-usb-stream.conf |
|
+asound_module_gconf_DATA = $(GCONF_FILES) |
|
|
|
asound_module_pcm_usb_streamdir = @ALSA_PLUGIN_DIR@ |
|
-asound_module_addondir = @ALSA_ADDON_DIR@ |
|
+asound_module_gconfdir = @ALSA_GCONF_DIR@ |
|
|
|
AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic $(LDFLAGS_NOUNDEFINED) |
|
@@ -13,3 +15,9 @@ libasound_module_pcm_usb_stream_la_SOURCES = pcm_usb_stream.c |
|
libasound_module_pcm_usb_stream_la_LIBADD = @ALSA_LIBS@ |
|
|
|
noinst_HEADERS = usb_stream.h |
|
+ |
|
+include ../install-hooks.am |
|
+ |
|
+install-data-hook: install-conf-hook |
|
+ |
|
+uninstall-local: uninstall-conf-hook |
|
-- |
|
2.13.6 |
|
|
|
|
|
From beb24e58763e3b1d831fcd7ef87a478e6ac74fcc Mon Sep 17 00:00:00 2001 |
|
From: Jaroslav Kysela <perex@perex.cz> |
|
Date: Mon, 16 Apr 2018 18:14:18 +0200 |
|
Subject: [PATCH 6/8] oss/Makefile.am: fix typo |
|
|
|
Signed-off-by: Jaroslav Kysela <perex@perex.cz> |
|
--- |
|
oss/Makefile.am | 2 +- |
|
1 file changed, 1 insertion(+), 1 deletion(-) |
|
|
|
diff --git a/oss/Makefile.am b/oss/Makefile.am |
|
index 46dfcac..bff4443 100644 |
|
--- a/oss/Makefile.am |
|
+++ b/oss/Makefile.am |
|
@@ -1,4 +1,4 @@ |
|
-GCONF_FILEs = 50-oss.conf |
|
+GCONF_FILES = 50-oss.conf |
|
|
|
EXTRA_DIST = $(GCONF_FILES) |
|
|
|
-- |
|
2.13.6 |
|
|
|
|
|
From 992b7eb1f1fe95fe7b8b622042aa32c33fffd18d Mon Sep 17 00:00:00 2001 |
|
From: Takashi Iwai <tiwai@suse.de> |
|
Date: Tue, 22 May 2018 14:13:53 +0200 |
|
Subject: [PATCH 7/8] arcam-av: Add explicit -lpthread to *_LIBADD |
|
|
|
The pthread library has to be linked for this module. In some tool |
|
chains, it results in a build error. |
|
|
|
Signed-off-by: Takashi Iwai <tiwai@suse.de> |
|
--- |
|
arcam-av/Makefile.am | 2 +- |
|
1 file changed, 1 insertion(+), 1 deletion(-) |
|
|
|
diff --git a/arcam-av/Makefile.am b/arcam-av/Makefile.am |
|
index c16aec0..57d5542 100644 |
|
--- a/arcam-av/Makefile.am |
|
+++ b/arcam-av/Makefile.am |
|
@@ -12,7 +12,7 @@ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined |
|
|
|
libasound_module_ctl_arcam_av_la_SOURCES = ctl_arcam_av.c arcam_av.c arcam_av.h |
|
-libasound_module_ctl_arcam_av_la_LIBADD = @ALSA_LIBS@ |
|
+libasound_module_ctl_arcam_av_la_LIBADD = @ALSA_LIBS@ -lpthread |
|
|
|
include ../install-hooks.am |
|
|
|
-- |
|
2.13.6 |
|
|
|
|
|
From 2d310f84e7af4c5b4bc68a6e45500e874df482f9 Mon Sep 17 00:00:00 2001 |
|
From: Takashi Iwai <tiwai@suse.de> |
|
Date: Tue, 22 May 2018 14:15:21 +0200 |
|
Subject: [PATCH 8/8] usb_stream: Add explicit -lpthread to *_LIBADD |
|
|
|
The pthread library has to be linked for this module. In some tool |
|
chains, it results in a build error. |
|
|
|
Signed-off-by: Takashi Iwai <tiwai@suse.de> |
|
--- |
|
usb_stream/Makefile.am | 2 +- |
|
1 file changed, 1 insertion(+), 1 deletion(-) |
|
|
|
diff --git a/usb_stream/Makefile.am b/usb_stream/Makefile.am |
|
index 203618b..fde2455 100644 |
|
--- a/usb_stream/Makefile.am |
|
+++ b/usb_stream/Makefile.am |
|
@@ -12,7 +12,7 @@ AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ |
|
AM_LDFLAGS = -module -avoid-version -export-dynamic $(LDFLAGS_NOUNDEFINED) |
|
|
|
libasound_module_pcm_usb_stream_la_SOURCES = pcm_usb_stream.c |
|
-libasound_module_pcm_usb_stream_la_LIBADD = @ALSA_LIBS@ |
|
+libasound_module_pcm_usb_stream_la_LIBADD = @ALSA_LIBS@ -lpthread |
|
|
|
noinst_HEADERS = usb_stream.h |
|
|
|
-- |
|
2.13.6 |
|
|
|
|