Commit graph

5287 commits

Author SHA1 Message Date
Wim Taymans
49b17bca22 json: relax the parser some more
Allow bare strings with all non-special other chars.
Add # to comment a line till \n
Allow = as separator for keys
Fix end of string handling.

Now:

 {
   "#": "this is a comment"
   "key": "value",
   "foo": 24
 }

and

  {
    # this is a comment
    key = value
    foo = 24
  }

Parse to the same thing with less clutter.
2020-12-31 10:04:18 +01:00
Pauli Virtanen
c39ba8570e a2dp-sink/source: don't crash if transport went away 2020-12-30 16:34:23 +02:00
Wim Taymans
24c68b0067 media-session: add config files
Remove -e and -d options
Manage modules in media-session.conf
Add alsa-monitor.conf that can match node/device properties with
a regex and update properties on it. All previous configuration and
more cane be done with this.
2020-12-30 13:15:08 +01:00
Huang-Huang Bao
389a125488
bluez5: fix connecting device with multiple adapters 2020-12-30 06:44:36 +08:00
Wim Taymans
cb8e627b1e media-session: use new properties method to load state 2020-12-29 13:30:04 +01:00
Wim Taymans
923e82df27 properties: Expose _update_string() method
Refactor an internal method and expose as _update_string() to
update an existing properties structure with a string representation.
2020-12-29 13:15:54 +01:00
Huang-Huang Bao
5f561334fb
bluez5: properly handle dbus signals
Fixes pipewire/pipewire#502.

Also move media application creating from filter callback to initialization.
Application object path and endpoint paths only need to be registered once.

Signed-off-by: Huang-Huang Bao <eh5@sokka.cn>
2020-12-29 14:42:15 +08:00
Georges Basile Stavracas Neto
56e2d6a3da filter, stream: Fix error check for DMA-BUF buffers
When a buffer is of type SPA_DATA_DmaBuf, the 'data' field
will be NULL - we instead have to check if the file descriptor
is valid. The current code, however, always checks if the
data is NULL, which gives a false positive for DMA-BUF buffers,
signaling an error when there is none.

Fix that by also checking if the buffer type is MemPtr together
with the NULL check of the 'data' field.
2020-12-28 15:58:38 -03:00
Wim Taymans
4b076549f7 alsa: allow override of channel map 2020-12-28 14:24:59 +01:00
Pauli Virtanen
036c10717d bluez5: refcount transport acquire and release, let it manage fd
Backends don't necessarily allow for opening the same device multiple
times, and it shouldn't be necessary.

Since source and sink are not necessarily both running at the same time,
refcount the transport acquire/release so that it knows to close the fd
only when no source/sink is running.

Let the transport manage the fd lifecycle, also closing it once it is
not needed.

Don't return the fd from acquire(), since each transport is associated
with a single socket fd.
2020-12-28 13:38:41 +01:00
Ihor Kalnytskyi
8942f6b402 launch: avoid autostarting pipewire-pulse systemd units for root
Long story short, this is something pulseaudio has since 2017 [1]. If
pipewire-pulse is aiming to be a drop-in replacement, the same behaviour
is probably expected.

I noticed that without this line I hit some issues with systemd socket
activation. In fact, it does not work properly at all. It probably has
something to do with the fact that pipewire-pulse is started for GDM
session and is somehow propagated down to my own user session.

[1] 24928d6b6f
2020-12-28 13:35:41 +01:00
Jarkko Sakkinen
738d9b7767 Rewrite "Building" section in INSTALL.md
Rephrase steps in "Building" section of INSTALL.md accurately together
with examples. Bunch of steps and concepts were not clearly specified,
e.g. how and when the build options ought to be used.

Finally, explain the role of autogen.sh correctly. It's just for
jhbuild. A more precise build instructions, on the other hand, help a
developer unfamiliar with the build system.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@iki.fi>
2020-12-28 13:33:45 +01:00
Jarkko Sakkinen
8406d36e85 autogen.sh: Remove git submodule *
Remove forgotten git submodule commands from autogen.sh.

Fixes: 59bdab94bc ("Drop git submodule structure")
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@iki.fi>
2020-12-28 13:33:45 +01:00
Wim Taymans
c84646b66f acp: add channel to string function
Add a function to convert the channel to a string and use that
instead of the unsafe one.

Fixes #519
2020-12-28 13:27:34 +01:00
Pauli Virtanen
509152108a sco-source: update clock position and duration at correct rate
The clock for sco-source may run at a different rate than the capture
rate. Update its position taking this into account.
2020-12-26 19:45:44 +01:00
Gabriel Ebner
ad9d485d1b gst: set node.name and node.description based on client-name property 2020-12-26 10:11:42 +01:00
Wim Taymans
921aba9edf media-session: fix help
Use enabled and disabled options from the implementation so that we
can parse them in help.
2020-12-25 19:47:34 +01:00
Wim Taymans
f28fb692a4 pw-top: handle io 2020-12-25 16:35:38 +01:00
Wim Taymans
ae8f8b25f6 pw-top: add new tool
Uses ncurses to display all drivers and nodes with their latency,
error count and DSP usage.
2020-12-25 16:33:54 +01:00
Frédéric Danis
bd051e89a5 bluez5: improve debug 2020-12-25 14:57:30 +00:00
Jarkko Sakkinen
a54cd1ee2b Be explicit, where to run "meson install"
This happens if the autogen.sh compilation method is used:

➜  pipewire (master) ✔ meson install
Install data not found. Run this command in build directory root.
➜  pipewire (master) ✔

Fix this by stating in the "Installing" section the correct
location to run "meson install".

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@iki.fi>
2020-12-24 18:21:46 +02:00
Jarkko Sakkinen
8f76d80fde spa: Fix a compiler warning caused by unchecked read()
Wrap read() with the CHECK() used elsewhre in the test program, in order
to render out the compiler warning represented by this transcript:

➜  pipewire (af38edea) ✔ make
ninja -C /home/jarkko/Projects/pipewire/build
ninja: Entering directory `/home/jarkko/Projects/pipewire/build'
[6/397] Compiling C object spa/plugins/alsa/test-timer.p/test-timer.c.o
../spa/plugins/alsa/test-timer.c: In function ‘main’:
../spa/plugins/alsa/test-timer.c:195:3: warning: ignoring return value of ‘read’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  195 |   read(state.timerfd, &expirations, sizeof(expirations));
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@iki.fi>
2020-12-24 17:54:32 +02:00
Gabriel Ebner
af38edea82 a2dp: automatic delay estimation 2020-12-23 19:13:29 +00:00
Gabriel Ebner
7bdcfb6383 pw-cat: report delay 2020-12-23 19:13:29 +00:00
Wim Taymans
c81fe38285 alsa-pcm: limit channels to MAX
We don't support more than MAX channels

See #507
2020-12-23 20:07:51 +01:00
Gabriel Ebner
392fcda01f a2dp: add aac encoder 2020-12-23 06:15:15 +00:00
Mauricio Collares
d466cffe23 Revert "port a2dp-source.c changes to sco-source.c"
This reverts commit 3ad39d83a1.
2020-12-22 22:05:23 -03:00
Wim Taymans
d7a2b569e4 alsa-monitor: make no-auto-port/profile instead
auto-port and auto-profile are enabled by default so make a no-auto
version to disable.
2020-12-22 13:12:12 +01:00
Wim Taymans
a8937413e6 acp: add options to disable profile and port switching
See #498
2020-12-22 13:08:14 +01:00
Pauli Virtanen
09265e116e media-session: accept multiple -p, -e, and -d command-line arguments
Combine arguments together if given multiple times, instead of using the
last one. Useful, since pipewire.conf appears to not do quotes.

Fixes !348
2020-12-22 12:47:34 +01:00
Léo Stefanesco
7f3a878dd3 Fix typos in architecture.md 2020-12-22 09:15:21 +00:00
Wim Taymans
948255f801 result: don't use undefined shift
Use a different way to generate the upper bits of the ASYNC mask
instead of undefined shift as warned by sanitizer
Add some unit test for this

See #497
2020-12-21 21:08:56 +01:00
Wim Taymans
08ba6097a1 loop: align buffer and invoke_items to 8 bytes
To avoid unaligned access messages from sanitizer

See #497
2020-12-21 20:46:13 +01:00
Wim Taymans
461e3db741 tests: fix some leaks
See #497
2020-12-21 20:07:02 +01:00
Wim Taymans
32c015d01e tests: free resample after usage
See #497
2020-12-21 19:52:35 +01:00
Wim Taymans
5804dd3f9b properties: fix leak with NULL or empty key
See #497
2020-12-21 19:48:55 +01:00
Wim Taymans
3c7699980f tests: make arrays a bit larger
See #479
2020-12-21 19:38:53 +01:00
Wim Taymans
16cf174fbc audiomixer: fix array sizes 2020-12-21 19:34:55 +01:00
Mauricio Collares
a30b7518f3 adapt msbc decoding to a MTU of 48 2020-12-21 10:18:24 +00:00
Mauricio Collares
3ad39d83a1 port a2dp-source.c changes to sco-source.c 2020-12-21 10:18:24 +00:00
Pauli Virtanen
32e861fcf5 ofono: fix wrong name for bluez5.msbc-force-mtu 2020-12-21 06:14:12 +02:00
Pauli Virtanen
f1d9b2317c sco-sink: adjust data flush timeout for msbc according to packet size
Instead of using a hardcoded value for the minimum delay between writes,
select it according to the mtu/packet size that is currently used.

This is necessary for correct playback with lower mtu values.
2020-12-21 04:16:11 +02:00
Pauli Virtanen
4144427655 ofono/hsphfpd: force write_mtu=24 for mSBC codec
Kernel should provide the correct mtu/packet size to use for SCO socket
I/O, but it does not currently appear to (as of linux 5.9), see
https://lore.kernel.org/linux-bluetooth/20201210003528.3pmaxvubiwegxmhl@pali/T/

When using mSBC, instead of using the (incorrect) kernel-provided value,
hardcode mtu to 24, corresponding to ALT1 mode.  BT-UART adapters should
not require specific mtu, and it appears most BT-USB adapters only
support ALT1, see
https://lore.kernel.org/linux-bluetooth/20201210012003.133000-1-tpiepho@gmail.com/

This code needs to be revised when the issue is sorted out on the kernel
side.

Add setting bluez5.msbc-force-mtu for easier debugging in special cases.

Leave read_mtu as the detected value --- it does not seem to affect
whether BT-USB can record, but Raspberry Pi BT-UART fails to record if a
different value is used.
2020-12-21 04:16:11 +02:00
Wim Taymans
62954e14c3 node: improve profiler
Make a new complete event and use it instead of the start event
Use the start event at the start of the cycle
Make the profiler also log incomplete graph cycles
2020-12-20 20:37:21 +01:00
Wim Taymans
f630dd1a3b node: improve debug
Add duration/rate/position in warning
2020-12-20 20:37:21 +01:00
Huang-Huang Bao
b3bbc62870
a2dp: correct ldac config table
Signed-off-by: Huang-Huang Bao <eh5@sokka.cn>
2020-12-20 22:34:51 +08:00
Wim Taymans
2d89ad8533 profiler: add xrun_count and latency to profiler 2020-12-20 12:32:54 +01:00
Wim Taymans
0370d7580f impl-node: save the original requested latency 2020-12-20 12:32:54 +01:00
Wim Taymans
c13183f182 impl-link: mark feedback links with property 2020-12-20 12:32:54 +01:00
Wim Taymans
34c33ccdbf policy-node: clear target node for dont-reconnect streams
When a stream is marked don't reconnect, clear the target-node so that
it does not accidentally gets linked to a save target. This makes it
kill the monitor stream from pavucontrol after a client disconnects.
2020-12-20 12:32:54 +01:00