Commit graph

426 commits

Author SHA1 Message Date
Wim Taymans
36ff679558 media: add GstNetTimeProvider support
Add a property to let the media provide a GstNetTimeProvider for its clock.
Make methods to get the clock and nettimeprovider
Add a x-gst-clock property to the SDP with the IP and port number of the nettime
provider and also the current time of the clock. This should make it possible
for (GStreamer) clients to slave their clock to the server clock.
2013-04-09 22:38:44 +02:00
Wim Taymans
95bf53513f media: wait for buffering to complete
Wait for buffering to complete before changing the state to the target state.
2013-04-09 20:39:58 +02:00
Wim Taymans
ec0718d7c9 media: small cleanup 2013-04-09 20:11:35 +02:00
Olivier Crête
91210f40f2 rtsp-media-factory: g_signal_connect_object is not thread safe, can't use it here
Instead use a GWeakRef which is safe to use

This is a known GLib bug, see:
https://bugzilla.gnome.org/show_bug.cgi?id=667145
2013-03-22 18:59:50 -04:00
Olivier Crête
c18eafbb24 rtsp-media/client: Reply to PLAY request with same type of Range
Remember the type of Range from the PLAY request and use the same type for
the reply.
2013-03-22 15:53:06 +01:00
Patricia Muscalu
8a08fddb41 rtsp-client: expose uri 2013-03-18 23:44:38 +00:00
Olivier Crête
5a39e25949 stream: Select unicast address from pool if appropriate 2013-03-11 11:07:20 +01:00
Olivier Crête
a797cbde06 stream: Properties are always there in Gst 1.0 2013-03-11 11:07:20 +01:00
Olivier Crête
27a057962c address-pool: Verify that multicast addresses are used for multicast and vice-versa 2013-03-11 11:07:20 +01:00
Olivier Crête
d06e68abd1 address-pool: Add unicast addresses 2013-03-11 11:07:20 +01:00
Olivier Crête
4c61c6d308 rtsp-server: Limit the number of threads per server instance
If we exceed the maximum, just round robin the clients over the existing
threads.
2013-03-11 11:07:20 +01:00
Olivier Crête
4071e1b999 rtsp-server: No need to store the GMainContext in the client context 2013-03-11 11:07:20 +01:00
Olivier Crête
b9d111372e Document locking and its order 2013-03-11 11:07:19 +01:00
Olivier Crête
f0ab7ce1bf docs: Generate docs for GstRTSPAddressPool 2013-03-11 11:07:19 +01:00
Olivier Crête
773c48e22f client: Check client provided addresses against the address pool 2013-03-11 11:07:19 +01:00
Olivier Crête
cda75709bb address-pool: Add API to request a specific address from the pool
Also add relevant unit tests.
2013-03-11 11:07:19 +01:00
Olivier Crête
456f4367e3 address-pool: Fix off by one error
When splitting a port range, the port after a skip is not part of range.
2013-03-11 11:07:19 +01:00
Wim Taymans
6db0dbc76c client: make sure the watch exists while sending data
Protect the send_func with a lock. This allows us to wait for sending
to complete before changing the send_func and user_data. We add an
extra ref to the watch to make sure that it remains valid during
sending.
When closing the connection, set the send_func to NULL

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=692433
2013-01-28 11:11:46 +01:00
Wim Taymans
4100b20b0a rtsp-client: set the client backlog
Set the client backlog to a reasonable default
2012-12-14 11:58:29 +01:00
Ognyan Tonchev
0844e8afbc rtsp-media: Make the element a constructor parameter
https://bugzilla.gnome.org/show_bug.cgi?id=689594
2012-12-10 10:25:57 +01:00
Wim Taymans
6beabf1ed4 media: match prepare with unprepare
Really unprepare when there were an equal amount of prepare calls.
2012-11-30 15:03:15 +01:00
Wim Taymans
ca26588c7e media: media has to be unprepared in finalize
Because unprepare takes away the last ref on the media.
2012-11-30 14:58:46 +01:00
Wim Taymans
38addd7822 Revert "client: never call gst_rtsp_media_unprepare, let gst_rtsp_media_finalize do it"
This reverts commit ba5b78ff2f.

We can't use the refcount to trigger unprepare because it is the unprepare call
that removes the last refcount after all messages are consumed. What we should
probably do is make a prepared refcount and only unprepare when the refcount
reaches 0.
2012-11-30 14:36:30 +01:00
Wim Taymans
119674a828 media: let the source unref the last media ref
the last ref to the media is held by the source so we don't need to add more ref
and unrefs, we simply destroy the media when the source is gone.
2012-11-30 13:35:05 +01:00
Wim Taymans
339ea9b085 media: improve debug 2012-11-30 12:54:10 +01:00
Wim Taymans
241baba20a media: check state
Make sure we are in the right state when collecting the position and duration.
Only make ourselves PREPARED when we were previously PREPARING.
2012-11-30 12:53:02 +01:00
Wim Taymans
edf2ef4f0b media: use g_object_ref/unref for GObjects 2012-11-30 10:05:48 +01:00
Alessandro Decina
ba5b78ff2f client: never call gst_rtsp_media_unprepare, let gst_rtsp_media_finalize do it
Calling gst_rtsp_media_unprepare breaks shared medias. Just unref
GstRTSPMedia instances and let gst_rtsp_media_finalize unprepare when a media
isn't being used anymore.
2012-11-30 07:06:17 +01:00
Alessandro Decina
00d9a94e1a Fix compiler warning 2012-11-30 06:17:46 +01:00
Alessandro Decina
e2a7690cb3 Add missing g_type_class_add_private in GstRTSPMediaFactoryURI 2012-11-30 06:14:49 +01:00
Wim Taymans
1abc9be682 small cleanup 2012-11-29 17:21:12 +01:00
Wim Taymans
28fd887547 media: avoid element leak 2012-11-29 17:20:56 +01:00
Wim Taymans
4eb010824e media: require an element in media constructor 2012-11-29 17:20:26 +01:00
Wim Taymans
865c9a6b30 Revert "client: TEARDOWN brings that state to Init again"
This reverts commit 4b61fdad85.

The object is already disposed, there is no point in setting the state.
2012-11-29 17:07:30 +01:00
Wim Taymans
4b61fdad85 client: TEARDOWN brings that state to Init again 2012-11-29 12:30:20 +01:00
Wim Taymans
ad00c5e792 rtsp: make object details private
Make all object details private
Add methods to access private bits
2012-11-29 11:11:05 +01:00
Wim Taymans
e11287eb7c media: check if prepared for some methods
Check that the media object is prepared before doing seek and getting the
current position etc.
Add some g_return checks.
2012-11-28 14:45:30 +01:00
Wim Taymans
d3d74ab77b stream: improve debug 2012-11-28 12:40:18 +01:00
Wim Taymans
fe71114a7d media: unref pipeline in finalize to avoid leaking it 2012-11-28 12:39:37 +01:00
Wim Taymans
d43a31055e rtsp: use gst_object_unref on GstObjects 2012-11-28 12:10:47 +01:00
Wim Taymans
6b36241816 media-factory: require an url 2012-11-28 12:10:14 +01:00
Wim Taymans
20f09bf3e7 server: remove unused include 2012-11-28 11:17:27 +01:00
Wim Taymans
e5ba372808 client: fix factory leak
Keep the factory in the state object only for authorization checks and make
sure we unref it on failure. Also don't keep invalid objects in the state
object.
2012-11-28 11:05:08 +01:00
Wim Taymans
b4c168c71d mounts: add g_return_if guards 2012-11-28 10:40:14 +01:00
Wim Taymans
b3fe3357ab client: improve debug 2012-11-27 12:33:02 +01:00
Wim Taymans
d5389c940d client: improve debug and fix leaks
Cleanup the uri and session when there is a bad request.
2012-11-27 12:24:21 +01:00
Wim Taymans
a26e9b621e client: use 454 when session can't be found
We should use 454 when a session can't be found because there was no session
pool configured in the server. This is not a server configuration problem
because the server on which the request is done might not be the same one that
will keep the sessions for us and so it does not need to support sessions.
2012-11-27 12:11:41 +01:00
Wim Taymans
4782d08bdc client: only free connection when there is one
It's possible that the client doesn't have a connection when we try to free it.
2012-11-27 11:17:45 +01:00
Wim Taymans
18bb9ffa6b client: small cleanup 2012-11-26 17:35:51 +01:00
Wim Taymans
fc0f176a17 client: remove unused include 2012-11-26 17:34:35 +01:00