Commit graph

3021 commits

Author SHA1 Message Date
Arnaud Rebillout
90c6416b18 meson: Enable raop-discover module, add avahi dependency
Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
4e6c3c0d79 meson: modules/raop: Fix rtsp_client.h include path
Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
4c9b6370d1 meson: Enable raop-sink module, add raop lib, add openssl dependency
Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
83b6903849 meson: Enable jack modules, add jack dependency
Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
7f320318ff meson: Enable dbus-protocol module
This is similar to alsa and rtp modules.

Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
8bc6e40daf meson: Fix all the missing dependencies uncovered by -Wl,--no-undefined
Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
dac59dbf81 meson: Build modules with '-Wl,no-undefined'
This flag will make the loader fail if symbols are not resolved. It
seems to be our best bet to uncover every missing module dependencies.

For more details, I recommend to read:
<http://www.kaizou.org/2015/01/linux-libraries/>

Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
13adc3a805 meson: Comment bluez5 modules for now
Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
918af59268 meson: Add the rtp module library
This is based on the existing libalsa-util library.

Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
5c1a9bb10f meson: Make equalizer-sink modulde depend on fftw, add fftw dependency
Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
026768311b meson: Make systemd-login module depend on systemd
Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
50bb97261e meson: modules/alsa: Fix udev-util include path
Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
652d3db8f4 meson: modules/alsa: Make alsa-util a shared library
This is to be consistent. In pa currently, as built by the autotools,
libalsa-util is a shared library. Moreover, all the libraries for the
modules, as defined in `src/meson.build`, are also shared libraries.

So let's stick to shared libraries everywhere for now, for simplicity.

We can rework that later on.

Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
Arnaud Rebillout
097a2ee6e6 meson: modules/alsa: Add udev support
This is needed now that we define HAVE_UDEV

Signed-off-by: Arnaud Rebillout <arnaud.rebillout@collabora.com>
2018-10-04 08:44:18 +05:30
João Paulo Rechi Vita
723ae5119e module-rescue-streams: Fix tab used for identation 2018-10-03 11:37:14 +03:00
João Paulo Rechi Vita
b15f12ef66 switch-on-connect: Add debug logs
Log when module-switch-on-connect tries to change the default sink or
source.
2018-10-03 11:36:00 +03:00
João Paulo Rechi Vita
b53d817754 switch-on-connect: Clean-up tabs used for identation 2018-10-03 11:33:34 +03:00
João Paulo Rechi Vita
e9f5fa94b2 switch-on-connect: Improve readability
Make code easier to read by moving pa_proplist_gets out of the if
condition and using pa_safe_streq.
2018-10-03 11:31:51 +03:00
João Paulo Rechi Vita
cefe037afc switch-on-port-available: Improve readability
Split a big conditional into separate checks and use pa_safe_streq
instead of checking if a pointer is valid and calling pa_streq inside a
conditional.
2018-10-03 11:27:42 +03:00
Joseph Herlant
61d35fd22f
Fix typo: transmited -> transmitted 2018-09-17 10:02:56 -07:00
Joseph Herlant
93c07da3eb
Fix typo: definately -> definitely 2018-09-17 10:01:46 -07:00
Joseph Herlant
c1acdfee33
Fix typo: prefered -> preferred 2018-09-17 10:00:57 -07:00
Joseph Herlant
87a41d7bbb
Fix typo: comming -> coming 2018-09-17 10:00:14 -07:00
Joseph Herlant
7aa2d9e54b
Fix typo: recieved -> received 2018-09-17 09:59:38 -07:00
Joseph Herlant
502293ffa5
Fix typo: distuingish -> distinguish 2018-09-17 09:59:03 -07:00
Joseph Herlant
01d50b8c88
Fix typo: properies -> properties 2018-09-17 09:58:25 -07:00
Joseph Herlant
d6e7aa2bdc
Fix typo: explicitely -> explicitly 2018-09-17 09:57:20 -07:00
Joseph Herlant
3fb7e9bcb1
Fix typo: differnt -> different 2018-09-17 09:56:41 -07:00
Joseph Herlant
83c3384d3a
Fix typo: Extention -> Extension 2018-09-17 09:55:37 -07:00
Joseph Herlant
517c727a98
Fix typo: Doulbe -> Double 2018-09-17 09:54:36 -07:00
Will Stott
7f1fb63dda alsa: Support the older model of NI's Traktor Audio 2 DJ 2018-08-13 14:24:02 +03:00
Takashi Sakamoto
37358e42c4 alsa: Suppress udev detection of sound card for some units on IEEE 1394 bus
A bug was filed to bugzilla.kernel.org for a quirk of some models which
ALSA BeBoB driver supports.

Bug 199365 - repeating bus resets on Firewire bus with Focusrite Saffaire 26/io
https://bugzilla.kernel.org/show_bug.cgi?id=199365

Some models (two models as long as I know) have a quirk to disappear from
IEEE 1394 bus at disconnections of packet streaming. Corresponding
character devices are removed according to 'remove' callbacks of relevant
drivers from Linux dd core. Then the models re-appear on the bus by
generating bus resets and corresponding character devices are added
according to 'probe' callbacks from Linux dd core.

In a view of ALSA applications, this looks that plug-out/plug-in occur in
a sequential order for the models when they stop playback/capture substream.
For most applications, this doesn't cause large issue. However, this quirk
is not good for combination of below modules in PulseAudio. PulseAudio
enters endless loop to detect the models and start/stop PCM substream.
 - module-udev-detect
 - module-alsa-card
 - module-suspend-on-idle

In detail, please read my comment no.6:
https://bugzilla.kernel.org/show_bug.cgi?id=199365#c6

This commit suppressed udev detection of sound card for the issued models.
For the models, 'PULSE_IGNORE' flag is added to udev rules, then
module-udev-detect don't handle the models and PulseAudio never uses the
models automatically. In a scenario for users to load
module-alsa-card/module-alsa-sink/module-alsa-source by hand, although
these modules can still stop PCM substreams with module-suspend-on-idle,
PulseAudio never enters the endless loop because udev detection doesn't
work for the models. In this case, as long as special files for ALSA
character devices for these models are the same, corresponding sinks and
sources are available even if the voluntary plug-out/plug-in occur.

(Focusrite Saffire Pro 10 i/o with systemd 237)
$ udevadm info -q all -p /devices/pci0000:00/0000:00:07.0/fw1/fw1.0/sound/card1
P: /devices/pci0000:00/0000:00:07.0/fw1/fw1.0/sound/card1
E: DEVPATH=/devices/pci0000:00/0000:00:07.0/fw1/fw1.0/sound/card1
E: ID_BUS=firewire
E: ID_FOR_SEAT=sound-pci-0000_00_07_0
E: ID_ID=firewire-0x00130e01000606e0
E: ID_MODEL=Pro10IO
E: ID_MODEL_FROM_DATABASE=XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express]
E: ID_MODEL_ID=0x000006
E: ID_PATH=pci-0000:00:07.0
E: ID_PATH_TAG=pci-0000_00_07_0
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
E: ID_PCI_INTERFACE_FROM_DATABASE=OHCI
E: ID_PCI_SUBCLASS_FROM_DATABASE=FireWire (IEEE 1394)
E: ID_SERIAL=0x00130e01000606e0
E: ID_SERIAL_SHORT=0x00130e01000606e0
E: ID_VENDOR=Focusrite
E: ID_VENDOR_FROM_DATABASE=Texas Instruments
E: ID_VENDOR_ID=0x00130e
E: SOUND_INITIALIZED=1
E: SUBSYSTEM=sound
E: SYSTEMD_WANTS=sound.target
E: TAGS=:systemd:seat:
E: USEC_INITIALIZED=957089064

(Focusrite Saffire Pro 26 i/o with systemd 237)
$ udevadm info -q all -p /devices/pci0000:00/0000:00:07.0/fw1/fw1.0/sound/card1
P: /devices/pci0000:00/0000:00:07.0/fw1/fw1.0/sound/card1
E: DEVPATH=/devices/pci0000:00/0000:00:07.0/fw1/fw1.0/sound/card1
E: ID_BUS=firewire
E: ID_FOR_SEAT=sound-pci-0000_00_07_0
E: ID_ID=firewire-0x00130e0100030cdd
E: ID_MODEL=Pro26IO
E: ID_MODEL_FROM_DATABASE=XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express]
E: ID_MODEL_ID=0x000003
E: ID_PATH=pci-0000:00:07.0
E: ID_PATH_TAG=pci-0000_00_07_0
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
E: ID_PCI_INTERFACE_FROM_DATABASE=OHCI
E: ID_PCI_SUBCLASS_FROM_DATABASE=FireWire (IEEE 1394)
E: ID_SERIAL=0x00130e0100030cdd
E: ID_SERIAL_SHORT=0x00130e0100030cdd
E: ID_VENDOR=Focusrite
E: ID_VENDOR_FROM_DATABASE=Texas Instruments
E: ID_VENDOR_ID=0x00130e
E: SOUND_INITIALIZED=1
E: SUBSYSTEM=sound
E: SYSTEMD_WANTS=sound.target
E: TAGS=:systemd:seat:
E: USEC_INITIALIZED=1071026684

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
2018-08-11 13:10:03 +03:00
João Paulo Rechi Vita
32bd68bc31 bluetooth: Remove leftover references to the BlueZ 4/5 split
There is no need to mention a module argument is valid only when using
BlueZ 5 now that we don't support BlueZ 4 anymore.
2018-07-27 11:28:11 +03:00
João Paulo Rechi Vita
4863d190e2 bluetooth: Add missing argument to module's usage
module-bluetooth-discover usage was missing the autodetect_mtu argument.
2018-07-27 11:27:40 +03:00
Arun Raghavan
f38485dc1a build-sys: Drop ancient check for dbus_watch_get_unix_fd()
This function was added shortly after dbus 1.1.0, and our minimum
required dbus version is greater than 1.4.
2018-07-23 19:38:37 +05:30
João Paulo Rechi Vita
1f45082c68 card-restore: Don't restore profile on Bluetooth cards by default
We can provide a better overall user experience with Bluetooth cards by
always choosing the higher audio quality profile (A2DP) by default and
updating the profile selection dynamically according to which streams
are active at a certain moment. The default initial selection has been
addressed by "85daab272 bluetooth: set better priorities for profiles"
and the dynamic profile selection is covered by module-bluetooth-policy.

In addition, module-card-restore's database entries for Bluetooth devices
are retained after a device is removed from the system, leading to the
previously selected profile being restored after a new pairing with the
same device, with no way for the user to erase this memory and reset the
default profile except manually fiddling with module-card-restore's
database.

This commit adds a module argument to have module-card-restore ignore
Bluetooth profiles and this behavior is set as default.
2018-07-22 17:39:17 +03:00
Tanu Kaskinen
916be59151 pipe-sink, pipe-source: fix file permissions
We recently changed the umask of the daemon from 022 to 077, which broke
module-pipe-sink in the system mode, because nobody was allowed to read
from the pipe.

module-pipe-source in the system mode was probably always broken,
because the old umask of 022 should prevent anyone from writing to the
pipe.

This patch uses chmod() after the file creation to set the permissions
to 0666, which is what the fkfifo() call tried to set.

Bug link: https://bugs.freedesktop.org/show_bug.cgi?id=107070
2018-07-10 14:44:46 +03:00
Tanu Kaskinen
1b377d4428 ladspa-sink: fix search path
Having a single level macro for stringizing LADSPA_PATH doesn't work,
because the '#' preprocessor operator doesn't expand any macros in its
parameter. As a result, we used the string "LADSPA_PATH" as the search
path, and obviously no plugins were ever found.

This adds a two-level macro in macro.h and uses that to expand and
stringize LADSPA_PATH.

Bug link: https://bugs.freedesktop.org/show_bug.cgi?id=107078
2018-07-09 15:16:56 +03:00
Sangchul Lee
c4efbc81b0 alsa-sink/source: Rename a variable for supported sample rates in userdata
It is changed from 'rates' to 'supported_rates'.

Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
2018-07-05 14:51:46 +03:00
Ing. Jaroslav Safka
bee9b9481a rtp-send: add configurable RTP stream name
Add configuration option 'stream_name' for stream/session name so user
will see it on receiver side as RTP Strean ($stream_name)

ex: load-module module-rtp-send source=rtp.monitor stream_name=MyServerMedia
2018-07-05 14:47:17 +03:00
Sangchul Lee
9d7055004e alsa-util/sink/source: Add infrastructure for supported sample formats
There has been a function to get supported sample rates from alsa and
an array for it in userdata of each module-alsa-sink/source. Similarly,
this patch adds a function to get supported sample formats(bit depth)
from alsa and an array for it to each userdata of the modules.

Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
2018-07-04 12:51:23 +03:00
Tanu Kaskinen
6665b466d2 sink, source: remove the state getters
pa_sink_get_state() and pa_source_get_state() just return the state
variable. We can as well access the state variable directly.

There are no behaviour changes, except that module-virtual-source
accessed the main thread's sink state variable from its push() callback.
I fixed the module so that it uses the thread_info.state variable
instead. Also, the compiler started to complain about comparing a sink
state variable to a source state enum value in protocol-esound.c. The
underlying bug was that a source pointer was assigned to a variable
whose type was a sink pointer (somehow using the pa_source_get_state()
macro confused the compiler enough so that it didn't complain before).
I fixed the variable type.
2018-07-02 21:23:13 +03:00
Tanu Kaskinen
b4a36453da sink-input, source-output: remove the state getters
pa_sink_input_get_state() and pa_source_output_get_state() just return
the state variable. We can as well access the state variable directly.

There are no behaviour changes, except that some filter sources accessed
the main thread's state variable from their push() callbacks. I fixed
them so that they use the thread_info.state variable instead.
2018-07-02 18:54:03 +03:00
Tanu Kaskinen
64ba239f65 sink-input: remove the DRAINED state
The only thing that the drained state was being used for was "pacmd
list-sink-inputs". In all other cases the drained and running states
were treated as equivalent. IMHO, this usage doesn't justify the
complexity that the additional state brings.

This patch was inspired by a bug report[1] that pointed out an error in
an if condition in pa_sink_input_set_state_within_thread(). The buggy
code is now removed altogether.

[1] https://bugs.freedesktop.org/show_bug.cgi?id=106982
2018-07-02 18:16:10 +03:00
Tanu Kaskinen
e40adfa9cc switch-on-port-available: ignore bluetooth cards
When the user manually switches the profile of a bluetooth headset from
"off" to "a2dp_sink", the port availability changes from "unknown" to
"yes", which triggered a recursive profile change in
module-switch-on-port-available. Such recursivity isn't (and possibly
can't) be handled well (that is, PulseAudio crashed), so let's avoid
doing bluetooth profile changes from module-switch-on-port-available
(they're useless anyway).

Bug link: https://bugs.freedesktop.org/show_bug.cgi?id=107044
2018-07-02 18:14:18 +03:00
João Paulo Rechi Vita
517ee7c924 bluetooth: backend-ofono: Demote registration failure to info
Now that both backend-native and backend-ofono can coexist and
backend-ofono is always loaded, even on systems without oFono, failing
to register with org.ofono is not necessarily an error.

This lowers the failure message log level from error to info.
2018-06-28 12:26:08 +03:00
Nazar Mokrynskyi
1e734e9946 alsa-mixer: Don't move LFE in 2.1 and 4.1 modes on SB Omni Surround 5.1
A bit hacky approach, but it allows to preserve LFE output position
even in reduced output modes 2.1 and 4.1.

Signed-off-by: Nazar Mokrynskyi <nazar@mokrynskyi.com>
2018-06-21 06:30:25 +05:30
Tanu Kaskinen
3455d62e49 alsa-mixer: make the mono mapping a fallback only
If a sound card doesn't have the "front" device defined for it, we have
to use the "hw" device for stereo. Not so long ago, the analog-stereo
mapping had "hw:%f" in its device-strings and everything worked great,
except that it caused trouble with the Intel HDMI LPE driver that uses
the first "hw" device for HDMI, and we were incorrectly detecting it as
an analog device. That problem was fixed in commit ea3ebd09, which
removed "hw:%f" from analog-stereo and added a new stereo fallback
mapping for "hw".

Now the problem is that if a sound card doesn't have the "front" device
defined for it, and it supports both mono and stereo, only the mono
mapping is used, because the stereo mapping is only a fallback. This
patch makes the mono mapping a fallback too, so the mono mapping is used
only if there's absolutely nothing else that works.

This can cause trouble at least in theory. Maybe someone actually wants
to use mono output on a card that supports both mono and stereo. But
that seems quite unlikely.
2018-06-21 06:30:25 +05:30
Arun Raghavan
d0a9eabbac build-sys: Update meson.build based on recent changes
Bump the protocol version, and drop (commented out) references to BlueZ
4.
2018-06-21 06:30:25 +05:30
Sangchul Lee
ef094638f5 udev-detect, alsa-card: Adopt avoid resampling option from daemon.conf
Previously, the "avoid-resampling" option of daemon.conf is to make the
daemon try to use the stream sample rate if possible for all sinks or
sources.

This patch applies this option to module-udev-detect and module-alsa-card
as a module argument in order to override the default value of daemon.conf.

As a result, user can use this argument for more fine-grained control.
e.g.) set it false in daemon.conf and set it true for module-udev-detect
or a particular module-alsa-card in default.pa.(or vice versa)

To set it, use "avoid_resampling=true or false" as the module argument.

Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
2018-06-21 06:30:25 +05:30