Commit graph

5128 commits

Author SHA1 Message Date
Wim Taymans
745b7ee900 pulse-server: tweak some parameters to get lower latency 2020-12-04 15:11:35 +01:00
Wim Taymans
ecc975d089 pulse-server: make sure our buffers are large enough
Allocate the buffers a bit larger so that we can handle a client that
sends a bit more data and we don't underrun.
2020-12-04 12:16:07 +01:00
Wim Taymans
635a378ca4 bluez5: don't error on 0 decode length
It can happen for the first frame when the codec is filling up.
2020-12-04 12:00:42 +01:00
Wim Taymans
a592eb60a8 bluez5: fix buffer filled check
Just check if the encode buffer is full. The max number of frames
has been obtained before.
2020-12-04 11:59:40 +01:00
Wim Taymans
106d597305 bluez5: add aptX and aptX HD codecs
They need the libopenaptx libraries from
https://github.com/pali/libopenaptx
2020-12-04 11:34:38 +01:00
Wim Taymans
af8bb55762 spa: fix test on 32 bit
Fixes #441
2020-12-04 09:36:05 +01:00
Wim Taymans
9818582abe a2dp: fix aac codec compilation 2020-12-03 19:03:38 +01:00
Wim Taymans
73b13e8ad5 a2dp: deinit codec_data in stop 2020-12-03 18:11:06 +01:00
Wim Taymans
8bf0b7b4db a2dp: delay codec init to after acquire
Some codecs need the MTU as a parameter so wait until we acquire
with creating the codec context.

Make some method to enumerate the parameters from the transport
config and use that for the EnumFormat param.
2020-12-03 18:05:57 +01:00
Wim Taymans
67694a1491 a2dp-ldac: free handle on error 2020-12-03 11:18:27 +01:00
Wim Taymans
908e3f3d1f bluez5: only register available A2DP encoder/decoder 2020-12-03 11:09:13 +01:00
Wim Taymans
3005d33113 module-device-factory: clean up properties in all cases 2020-12-03 10:24:38 +01:00
Wim Taymans
e98931023f device-factory: save factory_name for debug later
Make a copy of the factory_name, the properties it is inside are
destroyed when the device can't be created and we still need the
name for the debug message.
2020-12-03 10:16:38 +01:00
Wim Taymans
dd8573a5c2 bluez5: add ldac codec 2020-12-03 10:16:14 +01:00
Wim Taymans
3363544d05 bluez5: use start_decode to skip the header 2020-12-02 17:01:22 +01:00
Wim Taymans
3c2ab98a2a Add support for virtual source
A virtual source is usually implemented with a null-sink, it looks
like a source to pulseaudio clients but just forwards what it gets
as input.

Make sure the port names make sense.

You can use the null sink now as:

pactl load-module module-null-sink sink_name=source object.linger=1
     media.class=Audio/Source/Virtual channel_map=FL,FR,RL,RR

     This creates a node with "input" and "capture" ports and looks
     like a virtual source for pulseaudio clients.

pactl load-module module-null-sink sink_name=source object.linger=1
     media.class=Audio/Sink channel_map=FL,FR,RL,RR

     This creates a node with "playback" and "monitor" ports and looks
     like a virtual sink for pulseaudio clients.

pactl load-module module-null-sink sink_name=source object.linger=1
     media.class=Audio/Duplex channel_map=FL,FR,RL,RR

     This creates a node with "playback" and "capture" ports and looks
     like a virtual source and sink for pulseaudio clients.
2020-12-02 15:42:56 +01:00
Wim Taymans
e2f0ab5710 pulse-server: handle channel_map null-sink option 2020-12-02 15:39:31 +01:00
Wim Taymans
53adabea19 adapter: name Duplex port names capture/playback 2020-12-02 13:00:21 +01:00
Wim Taymans
57886c1198 spa: add audio.position support in null sink 2020-12-02 12:59:50 +01:00
Wim Taymans
4c486c7ae3 spa: remove media.class from null-audio-sink
We can use it with othe media.class values as well
2020-12-02 11:47:08 +01:00
Wim Taymans
d6127a4745 handle Duplex media class
Audio/Duplex is both a source and a sink. Name the ports as input/output
and make sure we list them in the source and sink lists in pulse-server.
2020-12-02 11:44:19 +01:00
Wim Taymans
b0a717c95e pulse-server: use right prefix for object check 2020-12-02 10:59:25 +01:00
Wim Taymans
f8059be328 adapter: small cleanup 2020-12-02 10:33:30 +01:00
Wim Taymans
4fb9e7eecc pulse-server: convert some more null-sink properties 2020-12-02 10:31:16 +01:00
Wim Taymans
1e9b152bb5 spa: make an extra level for arrays
Make a level with type info for the array elements.
2020-12-01 13:30:14 +01:00
Wim Taymans
73e0bb255a props: add container property to PROP_INFO
So we can mark a property should be inside a container.
Use this info in pw_stream to construct properties.
2020-12-01 12:58:18 +01:00
Wim Taymans
e995d3a832 media-session: store config data as json objects
So that we can use the json string escaping functions for keys
and use multiline config files.
2020-12-01 12:05:08 +01:00
Wim Taymans
19dc150643 media-session: don't emit metadata remove in shutdown
When in shutdown we destroy all objects but don't remove all
the metadata associated with them, like route settings.
2020-12-01 12:03:28 +01:00
Wim Taymans
19a67a2da5 media-session: add option to disable hardware volume
See #426
2020-12-01 10:45:24 +01:00
Wim Taymans
d098c2ba86 acp: add option to disable hardware mixer
See #426
2020-12-01 10:43:39 +01:00
Wim Taymans
97ec1ce209 pw-cat: handle stream error
Exit when the stream is in error

See #430
2020-12-01 09:39:16 +01:00
Wim Taymans
8b048279f1 pulse-server: handle error during create
Use the create-tag in the error when the stream fails. This way the
client can know when something failed during create.

See #430
2020-12-01 09:37:40 +01:00
Wim Taymans
23bcc21240 media-session: remove metadata when default node is removed 2020-12-01 09:24:16 +01:00
Wim Taymans
f8e501169b media-session: count property changes correctly 2020-11-30 15:05:53 +01:00
Wim Taymans
95718792c4 pw-cli: implement set_param
You can do something like this to set some params:

pw-cli set-param 46 13 '{ "index": 5,
                          "props": { "mute": false,
			             "channelMap": [ "FL", "LFE" ]
				   },
	                  "direction": "Output"
			}'
2020-11-30 13:31:46 +01:00
Wim Taymans
967a5e06b0 spa: fix type info
Link to objects in the parent field
Use the type, not the container for some properties. We need something
else to note the container type maybe
2020-11-30 13:30:19 +01:00
Wim Taymans
3d93b2492c portal: improve error message 2020-11-29 16:51:33 +01:00
Wim Taymans
75a4cff450 improve debug 2020-11-29 16:38:36 +01:00
Wim Taymans
068be74f73 core: silence the errors
Just log a debug message, applications should decide if this is
fatal and log an error message
2020-11-29 16:25:41 +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
Haochen Tong
a1259a75be
spa: enable fallthrough attribute on recent clang 2020-11-29 02:32:12 +01:00
Haochen Tong
3ba73bde48 meson: let meson detect supported compiler flags 2020-11-28 21:19:25 +01:00
Wim Taymans
57a9e82f79 spa: 0 means there is nothing left from from spa_json_next() 2020-11-28 20:35:25 +01:00
Wim Taymans
6e4c138238 properties: support properties from json object sting
Make pw_properties_new_string() work with a json object string.
This makes it possible to specify property strings as more complex
objects and escape characters.
2020-11-28 20:25:39 +01:00
Wim Taymans
62cdec8448 spa: move json parser to utils
Add unit test
Add escape function
2020-11-28 15:34:01 +01:00
Wim Taymans
77791bd427 doc: fix some typos 2020-11-27 17:35:25 +01:00
Wim Taymans
aa63077eea docs: update README and INSTALL 2020-11-27 17:16:57 +01:00
Wim Taymans
6e0fed37b4 pulse-server: also handle planar formats
Also handle streams with planar formats. Just pretend that they
are interleaved, it does not really matter.
2020-11-27 15:39:59 +01:00
Wim Taymans
350fa39aba pulse-server: try to convert name to id when selecting
Obsoletes !327
2020-11-27 15:04:06 +01:00
Wim Taymans
a417ffcd38 alsa: add timerfd based playback example 2020-11-27 10:30:54 +01:00