Commit graph

7922 commits

Author SHA1 Message Date
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 85e09e7a5b source-output: fix wrongly marked property 2015-07-17 17:14:57 +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 191909cb05 introspect: add api get daemon info 2015-07-17 16:58:42 +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 c77d7718a2 properties: add generic property bag
Add a structure to hold string key/value pairs. This is basically a thin
wrapper around GHashTable with some extra API.
2015-07-17 16:52:16 +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 619c1f83d0 deamon: remove obsolete method 2015-07-16 17:19:05 +02:00
Wim Taymans 12301b6ef1 source: add method to mark a source idle or busy
Marking a source idle will start an idle timeout to suspend the source.
2015-07-16 17:18:01 +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 9425a2bd2f dbus-xml: remove introspection API
We use the ObjectManager and its signals for introspection.
2015-07-14 15:44:51 +02:00
Wim Taymans aa558bf105 client-source: fix state changes
Keep the client-source in the playing state for as long as the input is
streaming. Pausing the pipeline when there are no more readers causes
data to bunch up in the socket that gets bursted to new clients when
they connect.
2015-07-14 15:42:47 +02:00
Wim Taymans 1fec75d2a5 client-source: set format on client source
Set the format on the client source when it is created so that other
clients can inspect the format. It also makes client sources show up in
the device monitor.
2015-07-14 11:34:59 +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 1e4e4ef185 client-source: handle NULL filter 2015-07-09 17:58:40 +02:00
Wim Taymans ba15f1f977 gst-source: handle NULL filters 2015-07-09 17:36:17 +02:00
Wim Taymans b85fd0ed25 source: set our possible-formats 2015-07-09 17:36:00 +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 be762c326c deviceprovider: reorganize the code a little 2015-07-09 17:34:01 +02:00
Wim Taymans 3ddbea9874 subscribe: disconnect signals 2015-07-09 17:33:05 +02:00
Wim Taymans 533ec2c19d stream: Use path as the string identifier for a source
Cleanup headers
avoid strlen because we can
2015-07-09 17:31:31 +02:00
Wim Taymans cca0e8eb15 introspect: improve introspect
Use the values from the proxy
2015-07-09 17:30:37 +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 4199d5652e introspect: implement get_source_info_by_id 2015-07-09 11:33:45 +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 7e5fcf6771 more work on cleanup 2015-06-04 16:34:47 +02:00
Wim Taymans e632540983 fix object refcounting some more 2015-06-02 18:00:57 +02:00
Wim Taymans f6bb35cb98 Handle crash on cleanup
It's possible that the last ref to a source-output is removed with
the remove signal, in that case, remove the object from the client
watched objects to avoid freeing it twice.

Use installed gstreamer and fix library name
2015-06-02 17:01:35 +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 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 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 c2a35199f7 Remove obsolete test
Add negotiation to the test client
2015-05-15 17:19:29 +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