Commit graph

346 commits

Author SHA1 Message Date
Wim Taymans
d80274e663 pod: small improvements for pod iterator 2018-09-10 18:46:33 +02:00
Tomas Popela
cea31ff8fb Fix build with clang
By using __typeof__ instead of typeof:

/usr/include/pipewire/array.h:85:11: error: use of undeclared identifier 'typeof'; did you mean 'typeid'?
                alloc = SPA_MAX(alloc, arr->extend);
2018-09-10 10:08:28 +02:00
Wim Taymans
c904bed186 More test 2018-09-05 17:23:14 +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
db277bebb6 add missing file 2018-09-01 14:10:04 +02:00
Wim Taymans
699bed4a1f channelmix: improve control parsing 2018-08-31 09:17:21 +02:00
Wim Taymans
7cdb980b1a debug: allow custom type root 2018-08-30 12:01:52 +02:00
Wim Taymans
2631db14a8 pod: use {} as object delimited, like json
Use <> for sequence
2018-08-30 09:53:29 +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
cb3ccb7001 control: add missing file 2018-08-28 19:56:58 +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
b79c7f578e Move format types 2018-08-26 22:45:48 +02:00
Wim Taymans
265b4476a1 more type cleanup
Move some types in the type-info
Remove unused type files
2018-08-25 12:26:18 +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
93a8747a44 type: add command 2018-08-24 10:59:39 +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
5fe230e5ff list: add iteration with a cursor
Iterating a list with a cursor is heavier but is safe against removal
of any element in the list. Move the hook cursor iterator to list.
2018-08-15 11:17:12 +02:00
Wim Taymans
c710b6f6a4 debug: add specific format debug 2018-08-14 15:30:48 +02:00
Wim Taymans
a6ad8f747f remove spalib 2018-08-14 15:29:25 +02:00
Wim Taymans
3b1c40f17f pod: move compare and filter functions out of the library 2018-08-14 14:52:32 +02:00
Wim Taymans
a63523650d hooks: enforce version on hook emission
Pass the minimum required version to the hook emission and only call
events when the handler is recent enough.
Add some macros to make event emission easier to read.
2018-08-01 21:41:25 +02:00
Wim Taymans
ca898a00db work on separating port mixers
Make it possible to assign an arbitary node as the port mixer.
Also remove dynamically added ports.
Improve negotiation and allocation on the mixer ports
Add some more SSE optimisations
Move float mixer from the audio dsp to the port
Remove pw_node_get_free_port() and do things more explicitly.
Handle mixer ports in client-node
2018-07-31 12:23:35 +02:00
Wim Taymans
f55cb422cb hook: add priv fields for future expansion 2018-07-20 10:34:27 +02:00
Wim Taymans
b67fb6fa5b io: add latency io area 2018-07-19 15:17:21 +02:00
Wim Taymans
0d148654c0 stream: add more timing info
Keep track of queued data in the stream
Pass delay field around to make it possible to know about the raw
software read/write pointer and the hardware one.
Start stream position at 0
2018-07-19 13:30:27 +02:00
Wim Taymans
d3c203b744 spa: use clock info
Use the port clock io area to get timing info and use this as
the time in the graph when we wake up.
2018-07-17 17:37:55 +02:00
Wim Taymans
fba00fb791 clock: remove clock interface
Remove the clock interface, we need to get timing information with an io
area to get the required precision and performance.
2018-07-17 09:50:51 +02:00
Wim Taymans
e5807cd467 small cleanups 2018-07-13 11:43:06 +02:00
Wim Taymans
5a3eee9cac command: remove clock-update 2018-07-12 13:22:50 +02:00
Wim Taymans
f49ab32874 meta: add video damage region metadata
Add damage region meta
Implement damage region in video-src and export-sink
2018-07-09 12:07:30 +02:00
Wim Taymans
c98fbfe0a9 meta: make safer find_meta_data function 2018-07-09 12:04:23 +02:00
Wim Taymans
33427b4cd3 small cleanups 2018-07-08 15:23:56 +02:00
Wim Taymans
e5c2896fca pod: add padding to float pod 2018-07-03 21:28:48 +02:00
Wim Taymans
b53f96eae9 alloc: fix buffer data mem
We also need to skip over the metadata and chunk memory
2018-06-15 11:13:02 +02:00
Wim Taymans
1bfb1d9228 loop: return number of dispatched fds and update docs 2018-06-01 11:16:53 +02:00
Wim Taymans
6f5a2701f3 utils: add some more helpers 2018-06-01 11:08:25 +02:00
Wim Taymans
5a1bd77fb5 buffer: add dummy field for better alignment 2018-05-24 16:15:40 +02:00
Wim Taymans
ef9fcd1093 node: keep better track of driver node
When a session disappears, try to move nodes to another session.
2018-05-17 17:40:08 +02:00
Wim Taymans
65e00631da hook: make safer
Also protect against removal of the next hook by using a cursor.
2018-05-17 17:21:30 +02:00
Wim Taymans
6d79ce2589 small cleanups 2018-05-10 11:28:02 +02:00
Wim Taymans
d93dd5ec93 graph: remove io from graph port, it's not needed 2018-05-08 12:21:57 +02:00
Wim Taymans
249110eb79 graph: trigger does not need to be a callback 2018-05-08 12:19:54 +02:00
Wim Taymans
7bb0e4da85 small cleanups 2018-05-08 10:42:17 +02:00
Wim Taymans
ced868c208 graph: improve debug 2018-04-25 15:49:08 +02:00
Wim Taymans
3b8ffdfb4e io: make status as flags
This way we can return status of both input and output
2018-04-19 20:10:47 +02:00
Wim Taymans
30d8df7d25 add layout to format 2018-04-19 20:09:10 +02:00