Commit graph

68 commits

Author SHA1 Message Date
Wim Taymans
4f08dbcd24 Use more fine grained access control
Make it possible to add more permissions to an object than just visible
or not. Pass these permissions to the client. This way we can make a
difference between being able to see and read, modify or query an
object. More permissions can be added later when needed. Because the
permissions is set on the resource by the access control module, the
implementations can check if the right permission is set before doing
anything.
2017-08-01 17:09:57 +02:00
Wim Taymans
629f824b91 pipewiresrc: improve remote connection errors 2017-07-18 15:28:14 +02:00
Wim Taymans
a003d1a39f Add parent_id
Add parent_id to globals to make hierarchy of interfaces. We can use
this to group interfaces or to describe the owner.
2017-07-18 14:58:14 +02:00
Wim Taymans
1acba78234 API cleanups
Fix docs
Add some more versions to interfaces
Make types for the various proxy object + inline methods that does type
checking and create proxys etc.
Set owner client of client-nodes in the properties
Pass type to bind to in create-node
Don't place global id in the info structs
Improve registration of marshal functions
Pass more types around as ids
2017-07-18 10:06:40 +02:00
Wim Taymans
267547c884 memory leak fixes 2017-07-11 20:54:10 +02:00
Wim Taymans
4f9d631910 Add version to more methods 2017-07-11 19:50:26 +02:00
Wim Taymans
f7e9e0c33a pass the global type as an id instead of string 2017-07-11 18:41:22 +02:00
Wim Taymans
d1655196c3 move things around 2017-07-11 16:08:22 +02:00
Wim Taymans
cdb2028f9b src -> pinos and fix include paths
Rename src to pinos and fix all the include paths so that they contain
pinos/ to avoid conflicts
2016-02-01 15:40:48 +01:00
Wim Taymans
050b8b0300 pinossrc: implement unlock/unlock_stop
Implement unlock and unlock_stop to unblock the create method.
2016-01-07 15:07:15 +01:00
Wim Taymans
0a60cccf6d introspect: improve introspection API
Add GAsyncReadyCallback to the introspection API. This makes it possible
to report errors in the future. Don't pass NULL in the callback anymore
now that we have the Ready callback. We also don't need to have a return
value from the callback because now we can cancel any iteration by using
the GCancelable.
Make pinos_context_info_finish() to get the final result/error of
introspection.
Update tools for new API
2016-01-07 12:15:57 +01:00
Wim Taymans
ae098db0bb gstpinos: detect tmpfile memory
Check if we got tmpfile memory and if we do, don't bother waiting for
the release-fd message but unref the memory directly. We know the memory
is allocated from our allocator and that we won't reuse it.
2015-12-10 10:00:30 +01:00
Wim Taymans
8a7d5a7f80 gstpinos: add stream-properties
Add a property to set the stream properties in the source and sink
streams.
2015-12-09 13:27:43 +01:00
Wim Taymans
7aa3032710 gstpinos: pass client_name to stream_new 2015-12-09 09:41:01 +01:00
Wim Taymans
f82f6ce5e0 pinossink: suggest an allocator
Suggest and allocator upstream so that we might avoid doing a copy into
a tmpfile.
2015-12-04 16:38:20 +01:00
Wim Taymans
a25bf11c1c pinospay: error if downstream doesn't handle control-messages
We really need a downstream element that can handle the control-messages
or else we'll be losing the data.
2015-12-04 12:48:03 +01:00
Wim Taymans
f51307f8f8 pinospay: rename events
Rename the network message. We want the same event name for the
message we received and the one we send.
2015-12-04 12:46:36 +01:00
Wim Taymans
b6f10f508d pinossink: track the fd indices we sent
Track the fd indices we sent to Pinos and free the associated buffer
when Pinos sends us release-fd. Only do this for non tempfile fds, as we
made the tmpfile ones ourselves and we're not going to reuse them.
2015-12-03 15:59:27 +01:00
Wim Taymans
4322ddaf0f pinospay: Also handle plain pinos input
Handle application/x-pinos specially; track all the fd indices in the
buffers and send a release-fd message when the buffer is freed.
We can then use the payloader also in the client-source to handle the
release-fd messages correctly.
2015-12-03 15:55:45 +01:00
Wim Taymans
a3a0a45d0b pinossrc: handle NULL clock type 2015-12-03 15:49:15 +01:00
Wim Taymans
6864ea9830 pinospay: keep buffers around until released
If we are using the original buffer fd without copying it into a temp
file we need to make sure the memory stays alive and is not reused until
all clients are done with it.

To do this, track what fd ids are in the outgoing buffers and ref the
original buffer. We also need to know when a message is sent to a client
and when that client does a release-fd on the fd index. This is done
with some new events on the multisocketsink.

Every time a message is sent to a client we hash the fd index in it and
ref the buffer in a per-client hash table (on the socket). Every time we
receive release-fd we remove the fd index from the hash and unref the
buffer again.

Clients that are killed get their socket removed, which also cleans up
the hashtable and frees the memory again.
2015-12-02 21:03:53 +01:00
Wim Taymans
7aa82d9476 pinossrc: slave a clock to the server clock
Slave our clock to the server clock and provide it as the pipeline
clock.
2015-12-02 20:43:37 +01:00
Wim Taymans
dd9721ee46 reset stream-state
Reset stream_state to unconnected when we remove the stream.
2015-09-30 12:59:42 +02:00
Wim Taymans
dbeee31c89 Track stream state
Keep track of the stream state better
2015-09-30 10:51:38 +02:00
Wim Taymans
8d1ad2ea63 More work on wire protocol
Make separate payload for the header.
Make release-fd payloads
capture_buffer -> peek_buffer to avoid a copy
remove release-buffer, we really need to release each fd in the buffer
separately.
provide_buffer -> send_buffer so that we can also use this to send the
release-fd messages.
in pinossrc, send back release-fd messages when the fd is no longer in
use.
2015-08-31 16:47:32 +02:00
Wim Taymans
c2cf359076 Rework pay/depay elements
Rename the payloader and depayloader to pinospay/pinosdepay because they
now store data in a pinos specific format.
Subclass GstElement because they are not real transform elements.
Rework/remove some buffer functions that are not used by some more
performant ones.
2015-08-27 16:41:25 +02:00
Wim Taymans
eada50916a fix some more leaks 2015-08-26 17:11:10 +02:00
Wim Taymans
78a7a1ea72 Fix some memory leaks 2015-08-26 15:44:29 +02:00
Wim Taymans
0e03080002 Rework buffer API a little
Use BufferIter and BufferBuilder instead of Packet*
Make separate method to set the header so you can set it later and not
only at builder init time.
Add method to clear the builder if you want to abort.
Add method to add fd to builder instead of in _add_fd_payload. This
would make it easier to add multiple fd-payloads using data from the
same fd.
Pass PinosPacketFDPayload to add_fd_payload to make it symetric with the
parsing code. We should be able to get the size from the VERSION passed
when the builder was made.
Add ideas about releasing the fds back to the server.
2015-08-26 12:46:28 +02:00
Wim Taymans
f2c9b6badd stream: handle renegotiation
Don't allow multiple connects on a stream, you need to first disconnect.
Make sure we disconnect before reconnecting again in the source.
2015-08-25 16:36:01 +02:00
Wim Taymans
e098dde0a3 improve application name 2015-08-25 13:06:05 +02:00
Wim Taymans
ec5b9b26df small cleanups and some leak fixing 2015-08-24 16:55:29 +02:00
Wim Taymans
c47fcd8105 Rework the wire protocol
Send a command stream over the socket.
Implement a new buffer object that holds the data and commands.
Make iterator and builders to parse and construct buffers.
Rework gstreamer elements to use new API for creating and parsing
buffers.
Add _release_buffer to notify a stream when we are done processing the
buffer. This will eventually go all the way to the server and will allow
us to do more complicated buffer management.
2015-08-24 16:41:04 +02:00
Wim Taymans
1c2fbac587 deviceprovider: change debug message 2015-08-12 11:49:54 +02:00
Wim Taymans
0378dcd4b7 deviceprovider: update to new method name 2015-08-08 15:22:10 +02:00
Wim Taymans
b055748b1c introspect: add change_mask to introspect
Add a bitmask field to mark what fields have changed since the last
introspection call. We can then remove the properties from the subscribe
call.
2015-08-05 11:57:02 +02:00
Wim Taymans
8361f74646 introspect: improve instrospection
Pass changed properties around so that we can print them
2015-08-04 17:37:25 +02:00
Wim Taymans
95f479a760 deviceprovider: update for new API 2015-08-04 15:59:21 +02:00
Wim Taymans
13d846ec38 Improve introspection
Add instrospection of client and source-output.
Add properties to source-output and to CreateSourceOutput/Input
Add helper to fill properties of context.
Add client-name to pinossrc and pinossink
Improve test-subscribe to show all new introspection details.
2015-07-28 17:05:03 +02:00
Wim Taymans
1378a65fb7 devicemonitor: various improvements
Set the active device providers as a property on the daemon. In the
device monitor we can then obsolete the already monitored devices.
Copy all device properties to the source. Set the device class as
a property on the monitored devices.
2015-07-17 17:01:46 +02:00
Wim Taymans
04eca27890 device-provider: small cleanup 2015-07-14 15:50:08 +02:00
Wim Taymans
cc3f49e177 pinossrc: wait for streaming
Wait for the streaming state before completing the negotiation or else
we might start reading before we are ready and error out.
2015-07-14 15:47:18 +02:00
Wim Taymans
1b74396562 gst: fix the timestamping
We want to store the absolute time against some clock in the message
timestamp.
2015-07-14 15:46:25 +02:00
Wim Taymans
81b7f15a0c pinossrc: also start streaming when caps don't change 2015-07-10 15:32:59 +02:00
Wim Taymans
bd9fa1da65 pinossrc: fix debug 2015-07-10 15:32:12 +02:00
Wim Taymans
88ce3637bc deviceprovider: fix path argument 2015-07-10 15:31:51 +02:00
Wim Taymans
f268cdfda6 Try to use source_path consistently 2015-07-09 17:58:54 +02:00
Wim Taymans
be762c326c deviceprovider: reorganize the code a little 2015-07-09 17:34:01 +02:00
Wim Taymans
5d4350a38f deviceprovider: fix device provider 2015-07-09 11:35:18 +02:00
Wim Taymans
7159ea8408 deviceprovider: add device provider
Add device provider
Clean up states
Make generic object id instead of exposing GDBusProxy
Add more introspection API
2015-07-08 17:40:37 +02:00