Commit graph

155 commits

Author SHA1 Message Date
Wim Taymans
ae5d26e049 fdmanager: add global object manager
Add a global object that can be used to track outstanding fds for a
client. This can later also be used to limit the number of fds per
client.
Use this in the payloader to track fds. This makes it possible to track
the fds even when the client reconnects.
Set the client patch on the socket so that we can use it to track the
fds we sent to this client.
When the client disappears, release all outstanding fds.
2016-04-08 16:50:01 +02:00
Wim Taymans
29e664ee21 more leak fixes 2016-04-07 17:40:18 +02:00
Wim Taymans
6b19e7a2d8 fix various leaks 2016-04-07 17:28:46 +02:00
Wim Taymans
bc73610dd0 pinossrc: don't send empty buffers 2016-04-07 12:14:16 +02:00
Wim Taymans
4149e34e67 monitor: put marks on all properties 2016-04-07 11:51:05 +02:00
Wim Taymans
2af64edd29 pinossink: send format change messages
Rework stream connect/disconnect from start/stop
Start the stream in setcaps when the format is known.
When the stream is already started in setcaps, send a format_change
message instead.
2016-04-07 11:39:52 +02:00
Wim Taymans
4121c421aa pinossrc: handle format change messages 2016-04-07 11:39:33 +02:00
Wim Taymans
ccb93c9652 stream: handle against zero length payload
Don't send empty payloads in pinospay
2016-04-07 11:38:00 +02:00
Wim Taymans
2d392c7410 buffer: construct and parse format change messages 2016-04-07 11:37:21 +02:00
Wim Taymans
e408c5a9a5 buffer: fix header pointer after buffer realloc 2016-04-07 11:36:04 +02:00
Wim Taymans
50228dddf8 pinossink: stop and disconnect the old stream when renegotiating
When we get a new format, stop, disconnect and unref the old stream.
In the future we should try to send a format change on the existing stream.
2016-04-06 21:05:44 +02:00
Wim Taymans
563f2a2726 client: Fix unref of source and source-input
Make sure we unref the source-input when it is removed.
When the source-input is removed, we should also unref the source. Do
this by adding the source as data for the source-input and unreffing it
when the source-input is freed.
2016-04-06 21:03:00 +02:00
Wim Taymans
3ad403ab13 stream: don't g_free a GBytes 2016-04-06 21:02:08 +02:00
Wim Taymans
f67ddb7c7e stream: ref stream in _stop and _start 2016-04-06 21:01:29 +02:00
Ognyan Tonchev
00aed12909 pinospay: don't do logic in g_assert
We still want to code to execute when asserts are disabled.
2016-03-09 10:49:22 +01:00
Ognyan Tonchev
b3d07070f5 buffer: avoid alignment problems
Use memcpy do avoid alignment problems.
2016-03-09 10:48:32 +01:00
Wim Taymans
068032e1dd pinos-monitor: Improve output of removed objects
Don't print NULL properties or formats
Don't print property values for removed objects because they are all
invalid anyway.
2016-02-01 16:29:56 +01: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
f4bd013dce pkgconfig: fix include dir 2016-01-13 10:37:53 +01:00
Wim Taymans
b0cfa86c18 pinos-monitor: improve output
Always print all properties but mark the changed properties with a *
2016-01-07 15:27:35 +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
531fd1beca introspect: fix docs 2016-01-07 13:08:58 +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
0b7393affe gst: enable new properties on gst elements
Enable properties to handle release-fd messages
2015-12-10 13:00:54 +01:00
Jonas Ådahl
8a509ec2a4 pc: Include MAJORMINOR in the .pc filename 2015-12-10 10:12:05 +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
Jonas Ådahl
df171356fe pc: Include MAJORMINOR version in Ldflags
The .so file is libpinos-MAJOR.MINOR.so, so the .pc file should reflect
this.
2015-12-10 09:51:42 +01:00
Wim Taymans
1a9aaa3f11 pc: remove @PTHREAD_LIBS@ 2015-12-10 09:07:31 +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
c3fce0103b stream: remember the source path 2015-12-09 11:23:14 +01:00
Wim Taymans
c875141e69 gst-source: handle state change errors better 2015-12-09 11:19:07 +01:00
Wim Taymans
7aa3032710 gstpinos: pass client_name to stream_new 2015-12-09 09:41:01 +01:00
Wim Taymans
16946dc81c buffer: fix g_return return values 2015-12-09 09:37:50 +01:00
Wim Taymans
9bdc9d757a docs: update design docs
Update design docs with some info about how the lifecycle of fds
are managed.
2015-12-04 16:39:29 +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
d81cbb2d93 client-source: fix caps handling
The caps we stream between the src and sink are always
application/x-pinos. Keep the negotiated format ouside of the
capsfilter in a separate variable. We can then also avoid a query
to get the format.
2015-12-03 15:47:53 +01:00
Wim Taymans
1e5c892564 stream: always listen from messages from pinos
Always listen for messages from Pinos, even when we are sending a stream
because we want to get the release-fd messages.
2015-12-03 15:46:05 +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
6b93b17298 source: don't leak sockets 2015-12-02 20:42:45 +01:00
Wim Taymans
48fdc1d37c doc updates 2015-09-30 13:00:14 +02: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
205a471e49 Improve state output in pinos-monitor
Make a method to return the string representation of the states and
use that in pinos-monitor to improve output
2015-09-30 10:50:45 +02:00
Wim Taymans
c75efac3f9 po: remove autogenerated file 2015-09-14 09:12:50 +02:00