Commit graph

381 commits

Author SHA1 Message Date
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
Wim Taymans
c875141e69 gst-source: handle state change errors better 2015-12-09 11:19:07 +01:00
Wim Taymans
6b93b17298 source: don't leak sockets 2015-12-02 20:42:45 +01: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
6611061683 Improve state management
Split setup of pipeline and state change to inspect the pipeline formats
and properties. Pass the device monitor caps to the gstreamer source so
that we don't have to query that again.

Work on adding time provider to the sender pipeline. Send the port and
address to the client in the source-output object properties.

Improve properties API and add some more docs.
2015-08-13 11:37:10 +02:00
Wim Taymans
7cf87d902e source: add GError to get_formats
Add GError to get_formats to get more error information.
Update the source possible formats when source-output is active
2015-08-11 16:09:05 +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
31da833069 properties: pass PinosProperties around
Pass PinosProperties around instead of GVariant. This is much easier to
deal with.
2015-07-17 16:57:01 +02:00
Wim Taymans
81924afc39 gst-source: query the caps only once
Query the caps only once at startup and keep them around.
2015-07-16 17:19:32 +02:00
Wim Taymans
ba15f1f977 gst-source: handle NULL filters 2015-07-09 17:36:17 +02:00
Wim Taymans
9895395ab9 manager: disable our own provider
Disable our own provider or else we would react to our own sources.
2015-07-09 17:35:13 +02:00
Wim Taymans
5d4350a38f deviceprovider: fix device provider 2015-07-09 11:35:18 +02:00
Wim Taymans
53bc0f7848 Improve default source state
Default source state should be SUSPENDED
2015-07-09 11:34:34 +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
a3505fb880 more rename PV -> PINOS, Pv -> Pinos, pv -> pinos 2015-07-07 16:46:23 +02:00
Wim Taymans
4b72848a1a Rename pulsevideo to pinos 2015-06-30 18:06:36 +02:00
Wim Taymans
f50d1548d5 Add more generic gst source manager object
Use device manager to add/remove all video providers dynamically, remove
v4l2 specific code.

Get the client proxy from subscribe instead of waiting for the
subscription callback. This way we can actually make an error on
failure.

Clean up the objects when the server disappears.

Remove subscription from the server, we don't need it. Install server
objects in bus_acquired.
2015-05-21 16:49:26 +02:00
Wim Taymans
e24398fe8c implement interface remove
Clean up some g_print
2015-05-21 10:18:21 +02:00
Wim Taymans
d531634061 capabilities -> formats 2015-05-15 16:41:53 +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
7bb3ae2562 Move CreateSourceOutput to client object
Move the CreateSourceOutput method back to the client object so that we
can leave the selection of the source in the server.
2015-05-11 16:08:34 +02:00
Wim Taymans
d9444ab360 Make source and source-output server side only
Move source and source-output to the server side again.
Make the daemon track objects per sender so that we can remove them
when the sender disappears.
2015-05-05 18:20:32 +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
417cd76f3e subscribe: rework some more
Track senders in the subscribe object and aggregate events from all
connected clients. This allows each client to get a complete view of all
the objects of pulsevideo. With all the source objects available, we can
then to the selection of the source on each client.

Remove the CreatSourceOutput on the Client1 object but let the client
select a good source and call CreateSourceOutput directly on the source.
This avoid going through the server to get a connection and the client
can just as well select a source.
Add a state property to the source and make it such that it can do async
state changes.

Remove the source provider object, each client can now directly see the
objects of another clients so there is no need for intermediate objects
in the server.
2015-04-27 09:05:14 +02:00
Wim Taymans
38493fe274 source: add extra properties 2015-04-22 16:09:09 +02:00
Wim Taymans
93c246c4ce support remote sources
Watch client object-manager and keep the remote source object in a
SourceProvider object. Keep a list of all sources in the daemon.

Handle the Client CreateSourceOutput by calling the method on a
registered source in the daemon.

Pass GDBusObject in the subscription signal so that we can get to more
details.
2015-04-20 15:03:14 +02:00
Wim Taymans
752494621c rework subscription
Rework subscription so that we can use it for client and server.

Move source and source-output to client to allow client provided
sources. Still needs some work but registration seems to work partly.

Rework DBUS API: move CreateSourceOutput to Client1 interface, remove
Add/RemoveProvider and Device1 interface. Rework SourceOutput1 to
allow for reconfigure.

Add a client to test v4l2 source.
2015-04-17 17:27:26 +02:00
Wim Taymans
3fba92fb74 Initial commit 2015-04-16 16:58:33 +02:00