Commit graph

245 commits

Author SHA1 Message Date
Wim Taymans
2b88dde567 fmtconvert: add conversions for planar to planar 2018-11-07 11:56:19 +01:00
Wim Taymans
00a570f7de audio-format: set unpossisioned flag
If we don't have position information in the format, set the
unpositioned flag. Don't set position info in the format when the
unpositioned flag is set.
2018-11-07 11:54:23 +01:00
Wim Taymans
85f2e93c54 Relicense as MIT/X11
Remove some obsolete files
2018-11-05 17:48:52 +01:00
Wim Taymans
9088b2f0d9 splitter: fix compilation 2018-11-02 17:51:30 +01:00
Wim Taymans
7b6df9e127 audioconvert: don't clear profile when format is cleared 2018-11-02 17:19:15 +01:00
Wim Taymans
10531d99eb fmt: fix conversion 2018-10-31 10:40:06 +00:00
Wim Taymans
63363d09dd fmt: small fix to s16 conversion 2018-10-31 09:38:31 +00:00
Wim Taymans
ef7a111611 fmt: fix and enable f32 -> s16 conversion 2018-10-30 08:37:07 +00:00
Wim Taymans
4432db4fa7 fmt-ops: fix conversion 2018-10-29 18:38:14 +00:00
Wim Taymans
ae9843aca2 disable s16 sse until fixed 2018-10-29 14:07:19 +00:00
Wim Taymans
9f61ef96ff fmt-ops: add f32 -> s16 see optimisations 2018-10-29 09:21:33 +00:00
Wim Taymans
66de372e9a add node set_io function
Also allow setting io areas on nodes. We need this to set the
graph clock and period size on the nodes.
2018-10-23 12:31:41 +02:00
Wim Taymans
d2570142fa resample: don't output 0 buffers 2018-10-22 11:32:53 +02:00
Wim Taymans
f2e03077a8 audioconvert: add volume and mute property
Expose volume and mute property in channelmix and use this
in audioconvert.
2018-10-18 15:04:40 +02:00
Wim Taymans
79e976e5d7 audioconvert: small cleanups 2018-10-18 12:47:46 +02:00
Wim Taymans
d27674722a improve debug and error handling 2018-10-17 10:02:44 +02:00
Wim Taymans
6e6e87223f channelmix: improve mute/volume handling
Don't try to merge the mute/volume into the matrix but pass the volume
as a separate parameter.
2018-10-15 17:57:23 +02:00
Wim Taymans
456c01afbc meson: enable more options by default
Update submodules to latest version
2018-10-10 17:16:01 +02:00
Tapasweni Pathak
8d71d2dab8 pipewire: add enable/disable to meson for spa plugins 2018-10-10 16:01:28 +02:00
Wim Taymans
805240258b Improve channel positions
Sort the channel positions as the suggested format
Use the session node channel positions as the target profile
2018-10-09 20:11:01 +02:00
Wim Taymans
754782f302 add some more debug 2018-10-09 15:17:31 +02:00
Wim Taymans
822b033fb1 channelmix: fix copy multiple channels 2018-10-08 18:19:15 +02:00
Wim Taymans
f06c1723a8 fmtconvert: also return inio status 2018-10-08 17:47:52 +02:00
Wim Taymans
e1ec1bad23 spa: add profile param
Make a profile param that can be used to configure a node with a
certain profile.
Use the profile to configure the ports on splitter and merger and
get rid of the dynamic ports.
Use the profile to configure the client-node and audio-dsp.
Don't try to link more ports than available between client-node and
dsp.
2018-10-08 11:45:52 +02:00
Wim Taymans
4764d69e26 merger/splitter: only dynamic ports are dsp ports 2018-10-05 10:26:30 +02:00
Wim Taymans
8de1d03feb audioconvert: use splitter/merger
Remove the split/merge functionality from fmtconvert.
Make audioconvert use the splitter/merger.
Let client-stream decide what mode to configure audioconvert in.
2018-10-04 16:03:14 +02:00
Wim Taymans
4401e479c6 small cleanups 2018-10-02 17:37:38 +02:00
Wim Taymans
4fd72eaee0 channelmix: debug matrix 2018-09-18 17:23:05 +02:00
Wim Taymans
64c38e3a6f channelmix: construct matrix and use coefficients 2018-09-18 17:06:47 +02:00
Wim Taymans
61cc453cbe channelmix: mix some LFE as well 2018-09-18 12:32:46 +02:00
Wim Taymans
75a22eedb0 fmt: fix conversion > 4 channels 2018-09-17 17:15:47 +02:00
Wim Taymans
20cbbd2cc9 explicitly allow mono and stereo with unknown layouts 2018-09-17 17:15:22 +02:00
Wim Taymans
78b7da608f channelmix: more improvements
work with the default channel layout
remap to default channel layout in fmconvert
Pass channel positions in resample format
2018-09-17 09:41:41 +02:00
Wim Taymans
fcd90b25d3 More work on multichannel
Reorder channels to a more common default order.
Only add channel layout when channels > 1
Don't try to link to a session that is still starting
Small sse fixes.
2018-09-14 15:23:12 +02:00
Wim Taymans
5196f7f053 audio: remove layout from audio
Make special format types for planar and interleaved instead of
having a field.
Add enum for audio channel positions
Add some default audio channel layouts
Place the channel layout in the audio format when possible
alsa: place audio channel positions in format
Add sse optimized channel mixing for some common cases
Remove name from port info, it's not mandatory and in the properties
Add direction to port info
2018-09-13 17:03:56 +02:00
Wim Taymans
cc842cbdc8 Type changes
Only allow properties inside objects, this makes it easier to
iterate the object, which is needed for efficiently processing
control streams.
Add a choice type to mark variable properties.
SPA_TYPE_Enum -> SPA_TYPE_Id to avoid confusion with choice enum
Make it easier to allocate and initialize properties on the stack
Make more efficient methods to make objects.
2018-09-05 16:41:07 +02:00
Wim Taymans
699bed4a1f channelmix: improve control parsing 2018-08-31 09:17:21 +02:00
Wim Taymans
0bce72d898 stream: reimplement volume changes with notify stream
Implement volume changes with a notify stream.
Do volume changes in the channel mixer with control streams.
2018-08-30 12:02:39 +02:00
Wim Taymans
7cdb980b1a debug: allow custom type root 2018-08-30 12:01:52 +02:00
Wim Taymans
ff6a244d8f Make media type and subtype properties
This is easier to debug and we only want properties in objects
in the future.
2018-08-29 18:08:52 +02:00
Wim Taymans
514528f2c7 format: make helper functions to create formats
Use helper functions to create a fully specified format.
2018-08-29 15:53:26 +02:00
Wim Taymans
80de83f38a format: make helper function to parse media type 2018-08-29 14:50:58 +02:00
Wim Taymans
5976beb149 hook up some more control streams 2018-08-29 12:43:31 +02:00
Wim Taymans
c9526dc2bb Implement control streams
spa_io_control_range -> spa_io_range
Add helpers for sequence and control pod objects
Implement control properties in audiotestsrc, update test example.
2018-08-28 18:16:41 +02:00
Wim Taymans
90c1a95eef More type cleanups
SPA_ID_* -> SPA_TYPE_*. We use 'type' for all registered types.
ID refers to either a registered type or an enum.
Improve introspection of object ids. Make 0 an invalid enum and
use it to look up the object id type.
Move some type-info files together.
Swap type and id of the object, we first specify the type and then
the id because the meaning of the id depends on the object type.
2018-08-27 15:03:11 +02:00
Wim Taymans
281b65934e audioconvert: fix debug 2018-08-27 09:04:29 +02:00
Wim Taymans
d26aecfef2 More type fixes
Param ids and IO ids are now simple enums.
Move some type info in one place, delete some type-info files
Fix type debug
Make audio layout an enum
Mark more enums as enums in types so they show us with their names in
the debug.
2018-08-25 12:08:29 +02:00
Wim Taymans
805e3bb6c1 types: work on types
Move static pod types to type system
work on type info for types
Move the event and command ids to an enum to make it easier to extend
later.
2018-08-24 10:53:09 +02:00
Wim Taymans
fca3e1d85d Remove dynamic types
Do not use dynamic types anymore. The reason is that it's difficult:

- to maintain a shared type database over a network.
- the extra overhead when translating between processes and for
  maintaining the translation tables.
- race conditions in translating in RT-threads, this is a problem
  because we want to make event streams.

We now have simple enums with types and extension points for all
types. This is also nicer to use in general.
We don't need the mapper anymore or pass strings around as types.
There is a parallel type info system to get more info about ids and
enums and their hierarchy. It can also be used for debugging.
2018-08-23 17:47:57 +02:00
Wim Taymans
e6977fa178 fmt: unrolled loop only works for stereo 2018-08-21 10:02:16 +02:00