Commit graph

190 commits

Author SHA1 Message Date
Wim Taymans
d3682067fa node: remove node state
Remove the node state. The state of the node is based on the state
of the ports, which can be derived directly from calling the port
methods. Track this state in the Port instead.
Add a mixer module that puts a mixer in from of audio sinks. This allows
multiple clients to play on one sink (still has some bugs). do some
fixes in the mixer and the scheduler to make this work.
2017-04-08 20:33:54 +02:00
Wim Taymans
70255b5ecd context: wait for proxy info
Only become connected after we have received all proxy bind replies.
2017-04-04 12:04:46 +02:00
Wim Taymans
5c32690cc8 Add sync and async support in *testsrc
Make minumum alsa latency configurable.
2017-04-03 16:54:44 +02:00
Wim Taymans
01c13adab5 improve node io
Unify input and output io areas.
Add support for ranges in the io area.
Automatically recycle buffers in the output areas in process_output
Improve the mixer, add use_buffer support, use a queue of input buffers,
fix mixing, add support for ranges.
Fix mixer and v4l2 tests
2017-04-03 14:56:04 +02:00
Wim Taymans
73ec9e2d24 loop: improve update_timer
Handle NULL time as now when specifying an interval.
2017-03-30 09:18:26 +02:00
Wim Taymans
61885b00b6 stream: also return current monotonic time in _get_time() 2017-03-30 09:07:17 +02:00
Wim Taymans
9a0ada2a3f stream: fix timeout 2017-03-29 16:52:50 +02:00
Wim Taymans
3f8123143d alsa: use absolute timers
Use absolute timers, together with the alsa timestamp they are
potentially more accurate.
fix some crashes
2017-03-29 16:39:24 +02:00
Wim Taymans
46928cbc04 alsa: use timerfd
Use timerfd instead of period events to wake up alsa.
module-autolink: fix crash
Some cleanups
2017-03-28 19:29:08 +02:00
Wim Taymans
29cb7bf39a format: improve format parsing 2017-03-24 18:11:11 +01:00
Wim Taymans
25b7ede0bc uri -> type
Clean up some more types.
2017-03-24 13:11:57 +01:00
Wim Taymans
5825c62d6d types: more work on types 2017-03-24 11:40:58 +01:00
Wim Taymans
acedfe71c0 clean up types 2017-03-23 21:15:52 +01:00
Wim Taymans
d9a51b5d14 mapper: place strings in array
mapper: place strings in a big array.
Make it possible to configure array and map extend size.
2017-03-23 17:57:03 +01:00
Wim Taymans
f613240b66 pod: add support for maybe-NULL types 2017-03-23 17:11:20 +01:00
Wim Taymans
3dba9f0fd4 pod: handle NULL 2017-03-23 16:08:50 +01:00
Wim Taymans
e28b5f91b8 props: make properties dynamic keys and values 2017-03-23 12:38:00 +01:00
Wim Taymans
048a4b81a8 alloc-params: use dynamic types for alloc-params 2017-03-23 10:12:20 +01:00
Wim Taymans
7270986c3a monitor: use dynamic types
Make the monitor item a POD object and use dynamic types.
2017-03-23 08:54:04 +01:00
Wim Taymans
c44a7c9735 command: make commands dynamic
Ensure format object type.
2017-03-22 10:04:24 +01:00
Wim Taymans
4d9f2c5161 event: make events dynamic
Use uri for the events.
2017-03-21 20:39:20 +01:00
Wim Taymans
3f5a3e215b format: make media types and properties dynamic
Use URI properties to dynamically register the media types/subtypes and
property names. Add some helpers to set up the mappings.
2017-03-21 11:28:23 +01:00
Wim Taymans
1588b9df8d serialize: remove serialization
Remove obsolete serialization code. Merge last bits into stream buffer
reconstruction. Use POD copy for the allocation params.
Small cleanups
2017-03-17 17:09:16 +01:00
Wim Taymans
8a6ce3b179 Make AllocParams into POD objects
Make allocparams into pod objects. This makes it easy to serialize,
copy, create and intersect them.
Add convenience macros for properties
Add helper function to collect object properties.
2017-03-17 11:58:09 +01:00
Wim Taymans
c951264fff spa: make events and commands as objects
So we can serialize and introspect them more easily
2017-03-15 16:21:05 +01:00
Wim Taymans
4c4c0f2a7f context: use need_flush signal to schedule flush
Use the need_flush signal to signal an event that triggers a flush in
the main thread.
2017-03-15 16:17:24 +01:00
Wim Taymans
3ab17281f6 connection: add need_flush signal
Add a need_flush signal to the connection when something can be flushed.
Add destroy signal to connection
2017-03-15 16:16:16 +01:00
Wim Taymans
c1cf1e6f67 Add update_uris method and event
Add a way to send mapper updates between client and server and a way
to map between client and server types.
2017-03-14 20:18:31 +01:00
Wim Taymans
997aa036ba id-map: add get_size method 2017-03-14 20:17:51 +01:00
Wim Taymans
ff659ad1a7 proxy: use 0 as the core resource
Make it possible to insert and object with a fixed id for the proxy.
Make it possible to choose an id for a resource.
2017-03-14 16:15:09 +01:00
Wim Taymans
3e472c2dae loop: add before_iterate signal
Add before_iterate signal and use it to flush data to clients.
2017-03-14 16:13:29 +01:00
Wim Taymans
5440435405 connection: guard against fd overflow 2017-03-09 19:42:35 +01:00
Wim Taymans
8fbcb0fef1 remove some unused event and seqnum 2017-03-09 19:21:50 +01:00
Wim Taymans
7ad02f553a improve interfaces
Make an interface structure to hold methods and events.
Move interface setup to protocol
2017-03-09 13:00:56 +01:00
Wim Taymans
78a3cd61b8 pod-builder: make more generic builder
Make a vararg based builder that produces much smaller code.
Catch demarshal errors.
Simplify array handling
2017-03-07 17:23:35 +01:00
Wim Taymans
f92b68c3c3 Use types with known sizes where we can, easier to serialize
Add iterator for POD and use it to implement some demarshalling.
2017-03-07 11:56:43 +01:00
Wim Taymans
23d09d5b60 use format_copy 2017-03-06 15:57:08 +01:00
Wim Taymans
41399b0b25 Rework serialization
Move serialization to the protocol, we now just send blocks of bytes
over the connection and let the protocol deserialize them.
2017-03-06 15:48:04 +01:00
Wim Taymans
842d73ca4b protocol-native: move to separate file
Move protocol-native to separate client and server file
2017-03-03 19:06:54 +01:00
Wim Taymans
b9a0b067be use interfaces in client 2017-03-03 17:43:23 +01:00
Wim Taymans
e0813b679d Use interfaces
Add interfaces and events on objects. Use this to communicate with the
objects and transparently convert/marshall to network in the protocols.
2017-03-02 16:06:45 +01:00
Wim Taymans
710a1a41e6 Improve negotiation
Fix selection of the default property value by restricting it to
something in the valid range of the property.
Fix audio/videotestsrc reuse
Fix format enum with filters.
Fix module property configuration
Fix connection refill
2017-03-01 14:07:02 +01:00
Wim Taymans
7a7ede96e5 Format: implement intersection and fixate 2017-02-28 15:09:34 +01:00
Wim Taymans
dbae2e3f96 rework props with pod 2017-02-27 21:25:33 +01:00
Wim Taymans
f02f93cda9 pod: make format like other PODs 2017-02-27 17:07:48 +01:00
Wim Taymans
16b62de53a Rework formats
Use a POD for the format body. This allows us to more easily build
and copy the formats.
Remove obsolete code to make video and audio formats.
Use SpaVideo/AudioInfo to keep track of formats. Make functions to parse
the format into the structures.
Update plugins
2017-02-24 09:28:18 +01:00
David Svensson Fors
c433df9d32 context: connect to a specified socket
Support in the context API for connecting to a Pinos instance
listening at a specified socket - not only to the one pointed out by
the environment variables XDG_RUNTIME_DIR and PINOS_CORE.
2017-02-15 11:57:40 +01:00
David Svensson Fors
dac9755765 stream: free formats and transport in destroy() 2017-02-15 11:56:45 +01:00
David Svensson Fors
dda5a22fcd context: free objects map in destroy() 2017-02-15 11:56:17 +01:00
Wim Taymans
1370fafd5b Fix renegotiation
When we are idle and are asked to negotiate, suspend first so that we
can do full negotiation again instead of using the old format.
Stability fixes.
2017-02-02 17:48:39 +01:00