Commit graph

72 commits

Author SHA1 Message Date
Wim Taymans 62cf8c6130 alsa-plugin: improve client name 2021-02-04 12:52:23 +01:00
Wim Taymans 675a12ef33 alsa: clamp elapsed time to delay
If the elapsed time is larger than the delay, we are dealing with
an older timestamp.

Fixes #597
2021-01-20 11:54:19 +01:00
Wim Taymans fd520c4b39 alsa-plugin: set buffer size correctly
Our output buffer size is always what is needed to produce one
period of samples. We use nframes from the hardware and the rest
we fill with silence.
2021-01-18 10:03:19 +01:00
Wim Taymans d2aee61880 alsa: don't write more than wat is requested 2021-01-17 17:20:59 +01:00
Wim Taymans b4e3d546e0 alsa: fill frames with silence when underrun
Keep track of how many samples we need to produce. If we don't have
enough samples in the ringbuffer, fill the rest with silence.

See #564
2021-01-15 18:34:38 +01:00
Wim Taymans 5817b66a20 alsa-plugin: only parse props when updated
Check if the properties got update before we try to parse them.
If they are not updated, they might be empty and we would lose
our previously parse values.

Fixes default volume in alsa-mixer.
2021-01-15 10:29:32 +01:00
Wim Taymans 0c2b4df8e5 alsa: implement _delay to get smoother timestamps
Fixes #536
2021-01-09 10:50:39 +01:00
Wim Taymans 3f0cadfa00 alsa: use rate_match to read exactly what we need
Use the rate match from the resampler to get the exact amount
of samples we need to provide in this cycle.
2021-01-08 16:55:24 +01:00
Wim Taymans 55c5e48578 alsa: set offset to 0 for playback streams 2020-12-18 15:32:27 +01:00
Wim Taymans b8300c663b improve some errors
Silence some -ENOENT warnings, they can happen when the object we
are introspecting is destroyed
2020-11-29 16:22:50 +01:00
Elliott Sales de Andrade 0a30eb6329 Fix a possible uninitialized variable.
Also, change the type to more accurately reflect its usage.
2020-11-23 15:36:08 +00:00
Oschowa 92c541ea03 pipewire-alsa: Make sure to always fill the pipewire buffers with
silence on process if there is not enough data.
This fixes noise with the retroarch alsa backend on pause, which doesn't
actually pause the device.
2020-11-01 19:28:38 +01:00
Oschowa 86acbabe8f pipewire-alsa: implement pause 2020-11-01 19:04:37 +01:00
Oschowa d960724dfc pipewire-alsa: fix inconsistent formating (tabs vs. spaces) 2020-11-01 18:38:46 +01:00
Wim Taymans e571c0bcb1 alsa: Use "PipeWire ALSA" as the node name
So that it is easier to know it is the PipeWire one.
2020-10-27 16:11:14 +01:00
Mersad Jelacic 9de98df1b7 pipewire-alsa: Use monotonic clock
Use monotonic clock instead of gettimeofday for timestamps.
2020-10-27 14:53:17 +00:00
Wim Taymans 3567efb7f8 alsa: allow setting playback/capture_node as node name
See !314
2020-10-24 15:53:48 +02:00
Jan Grulich 743cf58fb7 Define SPA_FALLTHROUGH to make fall-through annotations work for all compilers
This is needed for example for Clang compiler which uses different
annotations than GCC. It will make WebRTC to happily use PipeWire
since the spa library is header-only and WebRTC defaults to use
Clang with -Wimplicit-fallthrough.
2020-10-22 13:31:19 +02:00
Wim Taymans 1bd31c1cf1 don't force a MEDIA_ROLE property
The application has to set a media role.
2020-10-14 12:11:35 +02:00
Wim Taymans 9dfd261c71 add some more debug info 2020-09-25 17:01:52 +02:00
Wim Taymans 368366b88d alsa: avoid loading the plugin when linked against 0.2
chromium is linked against 0.2, avoid trying to load the alsa
plugin that is linked against 0.3

See #275
2020-09-07 17:41:50 +02:00
Wim Taymans b6e84ded75 alsa: protect against SIGPFE
Make sure we don't try to divide by 0 when the app calls the status
before we are PREPARED.

Fixes #283
2020-09-07 14:57:47 +02:00
Wim Taymans 030bef8dd3 alsa: use PIPEWIRE_PROPS for extra stream properties 2020-09-04 16:53:45 +02:00
Wim Taymans 64ee110356 alsa: rework process function to support planar formats 2020-09-04 15:40:22 +02:00
Wim Taymans bfc91c27a6 alsa: implement planar formats some more 2020-09-04 13:49:51 +02:00
Wim Taymans 6f4f9e5abb alsa: support planar types
We can support 2 buffers.
2020-09-04 12:23:11 +02:00
Wim Taymans 950e81c5fb alsa: put mixer entry in alsa conf files 2020-09-03 14:40:46 +02:00
Wim Taymans 0c04481ba7 metadata: improve default sink/source
Only check defaults when subject is PW_ID_CORE
Handle NULL keys: remove the defaults
2020-08-18 17:56:05 +02:00
Wim Taymans e71936f870 Improve naming
master -> driving
priority_master -> priority_driver
segment_master -> segment_owner
2020-08-06 13:49:33 +02:00
Wim Taymans 5bf6acad06 alsa: use PIPEWIRE_REMOTE env variable 2020-08-04 14:13:07 +02:00
Wim Taymans 37f43aba35 alsa: add mixer plugin
Add plugin to manage the volume of default source and sink
2020-07-24 17:13:51 +02:00
Wim Taymans b517a2a6ec alsa: use server name to connect 2020-07-23 20:43:08 +02:00
Wim Taymans e11d35107f alsa: don't leak properties on error 2020-07-02 15:53:16 +02:00
Wim Taymans ac54b7ace1 alsa: don't leak structure on error 2020-07-02 15:52:50 +02:00
Wim Taymans 6e03b4005d increase amount of datas in a buffer 2020-07-01 11:43:22 +02:00
Wim Taymans 09b6ef41a8 alsa: compare the scaled value to decide on xrun 2020-05-13 15:46:50 +02:00
Wim Taymans 56730197d9 alsa: report xrun
When we record but there is not enough space in the ringbuffer, report
xrun.
2020-05-13 12:09:28 +02:00
Wim Taymans b9bb318cb7 alsa: install conf files 2020-05-02 10:43:10 +02:00
Wim Taymans 029f431418 alsa: implement drain function
Implement a drain function that blocks and waits for the drain to
complete.
2020-04-07 17:48:28 +02:00
Wim Taymans 70f5abfe35 alsa: report error from server when we can 2020-04-07 17:38:39 +02:00
Wim Taymans c658574c01 alsa: improve drain 2020-04-06 17:53:46 +02:00
Jonas Holmberg b99313a59e pipewire-alsa: Get period_bytes from config
Use period_bytes constraint from config if present.
2020-03-12 15:00:50 +01:00
Jonas Holmberg 195ac82394 pipewire-alsa: Correct the max channels value 2020-03-12 09:19:58 +01:00
Jonas Holmberg 56f4ee5999 pipewire-alsa: Support hw constraints in config
Use rate, format and channels constraints from config if present.
2020-03-11 17:10:15 +01:00
Wim Taymans 936c290cc1 plugins: fix the licence of alsa and jack libraries
It's all MIT
2020-02-07 15:43:13 +01:00
Wim Taymans a7e36ddd9d alsa: split up conf files 2020-02-07 13:24:42 +01:00
Wim Taymans ae4e17e9a2 Remove old LICENSE files and README 2020-02-07 13:24:06 +01:00
Wim Taymans 6ac9b7b3a7 spa: add spa_aprintf helper
Add a asprintf helper function that handles errors correctly.
Use this in places where we use asprintf to avoid warnings when we
don't check the return value.
2020-01-27 12:19:21 +01:00
Wim Taymans 043e7f24fe add some more useful defines
Add define to match all ids for nodes and params.
Add define for invalid permissions
2020-01-15 11:15:51 +01:00
Wim Taymans 698ab911c3 loop: pass spa_dict to *_loop_new
Make the thread_loop alloc its own loop by default to simplify
some core. Add extra new_full method to pass a custom pw_loop.
Make other loop implementations ready to support custom loops
if we want that later.
2019-12-13 11:34:25 +01:00