Commit graph

94 commits

Author SHA1 Message Date
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
Wim Taymans
cbeee04809 mainloop: add threaded mainloop
Add a mainloop wrapper that runs the mainloop in a separate thread and
has some synchronization primitives.
Use new mainloop in gstreamer source and sink elements
2015-07-08 12:11:55 +02:00
Wim Taymans
a3505fb880 more rename PV -> PINOS, Pv -> Pinos, pv -> pinos 2015-07-07 16:46:23 +02:00
Wim Taymans
0dd41f5e40 gst: fix fixation
Implement fixate for video and audio caps
2015-06-30 18:14:36 +02:00
Wim Taymans
4b72848a1a Rename pulsevideo to pinos 2015-06-30 18:06:36 +02:00
Wim Taymans
b68b62740c Fix locking and threadsafety
Emit all notify in the context thread.
Handle error cases better.
Make sure we hold the lock when running the mainloop, this will cause
all of the signals to be emited with the lock. Make sure we call all
methods with the lock.
2015-06-12 12:10:27 +02:00
Wim Taymans
83223f0a83 pvsink: fix cleanup 2015-06-05 18:21:18 +02:00
Wim Taymans
273a5d35dc more cleanup fixes 2015-05-27 18:16:52 +02:00
Wim Taymans
ac6d73f913 improve cleanup
Start stream when input socket is given.
2015-05-27 16:08:51 +02:00
Wim Taymans
4a61f988dc pvsrc: implement source selection
Allow pvsrc to select what source to connect to.
2015-05-20 12:01:54 +02:00
Wim Taymans
98861cb940 avoid fd-leaks
Set rank of source to PRIMARY + 1
2015-05-18 16:58:16 +02:00
Wim Taymans
31cc37b6a5 Fix client-source negotiation and states
Avoid buffers without data.

Handle stream state changes in gstpvsrc and gstpvsink

Implement capabilities in v4l2 source
2015-05-15 15:58:13 +02:00
Wim Taymans
cbe7b52a70 Improve error reporting
Pass GError around for things that can fail and report the errors back
to the client.

Improve shutdown of pipeline when no clients are consuming.

Make GStreamer elements handle all kinds of data and not just video
because we can.
2015-05-15 13:34:32 +02:00
Wim Taymans
4bc308835a Implement negotiation
Use generic byte blobs for formats. We currently use them to store
gstreamer caps but we could also use them to exchange serialized
GVariants if we want.

Make properties a variant dictionary
2015-05-14 17:46:12 +02:00
Wim Taymans
ca7e4602f6 Work on adding pulsevideosink
Add the beginnings of a pulsevideosink
Make a new client-source object for every client that wants to provide
a stream. The client will have a handle to write the stream to.
2015-05-11 18:24:34 +02:00
Wim Taymans
c185755b3f misc hacking
Add introspect API
Move private things to private.h
Use custom main-context for the context, and ensure everything is called
from the custom main-context. does not work well with glib proxy signals
yet.
Work with custom mainloop in the gstreamer element.
2015-04-29 17:51:51 +02:00
Wim Taymans
592e99a317 Add gstreamer source element
Add a source gstreamer element
Expose error in context
Make it possible to set the source in the error state
Add properties to a stream and use those to get a source-output
Fix signal for new-buffer
Attach the socket source to the thread default mainloop
Make subscribe cancellable.
Propagate state and error in context.
Add bus handler for v4l2 source
Use negotiated properties to set capsfilter in v4l2
Fix subscribe in test-client
2015-04-28 17:36:44 +02:00
Wim Taymans
75d5fa91e2 fdpay: use fd allocator
Use the fd allocator instead of the dmabuf allocator.
Update the wire protocol
2015-04-17 10:44:03 +02:00
Wim Taymans
8b02c9040a pulsevideo: add gstreamer elements
Add custom gstreamer elements to pad/depay
Add pv_init() to register new elements
2015-04-16 19:45:26 +02:00