David Svensson Fors
bba7c4042d
client: send out teardown signal before tearing down
...
The advantage is that in the signal handler you get direct access to
information about what streams are about to get torn down (in the
GstRTSPClientState).
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=697686
2013-04-15 12:21:54 +02:00
David Svensson Fors
825d6f0b51
client: expose connection
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=697546
2013-04-15 12:17:34 +02:00
Wim Taymans
a64cb68164
media: add method to get the base_time of the pipeline
...
Together with a shared clock, this base-time could eventually be sent to
the client so that it can reconstruct the exact running-time of the clock
on the server.
2013-04-12 11:34:38 +01:00
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
Wim Taymans
9f8e8bc02d
client: fix compilation
2012-11-26 17:34:24 +01:00
Wim Taymans
eb88fa9e76
client: call destroy without the lock
2012-11-26 17:28:29 +01:00
Wim Taymans
33da3af265
client: make the client usable without a socket
...
Make a method to let the client handle a message and a callback when the client
wants us to send a response message back. This makes it possible to also use the
client object without the sockets, which should make it easier to test.
2012-11-26 17:20:39 +01:00
Wim Taymans
26a4b98ab0
client: small cleanup
2012-11-26 16:45:04 +01:00
Wim Taymans
8da4171055
client: remove reference to server
...
We don't need to keep a ref to the server
2012-11-26 16:39:26 +01:00
Wim Taymans
4fa7502fd9
client: add locking
...
Also add some g_return_if()
2012-11-26 16:31:43 +01:00
Wim Taymans
b21b46ec4d
client: log more errors
2012-11-26 13:37:20 +01:00
Wim Taymans
f460e7360e
client: fix compilation
2012-11-26 13:36:19 +01:00
Wim Taymans
84e72262d0
client: add generic close-after-send support
...
Add a property to send_response() to close the connection after the response has
been sent to the client.
2012-11-26 13:19:06 +01:00
Wim Taymans
1d53c46d23
MediaMapping -> MountPoints
...
Describes better what the object manages.
2012-11-26 12:37:55 +01:00
Wim Taymans
0f93879b2c
media: fix seeking
2012-11-21 17:21:28 +01:00
Wim Taymans
5eb5fd45f3
media: support more Range formats
...
Use the new -base methods to convert the Range string into a seek start and stop
value.
2012-11-21 16:41:56 +01:00
Wim Taymans
37a7ec8033
factory: keep ref to factory while media active
...
While the media from a factory is alive, keep a ref to the factory.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=663555
2012-11-20 12:29:55 +01:00
Wim Taymans
8fcdca987d
factory-uri: add some debug
2012-11-20 12:29:26 +01:00
Wim Taymans
1826844ee4
stream: set udp sources to PLAYING
...
Set the UDP sources to PLAYING and locked state before we add it to the pipeline
so that it doesn't cause our pipeline to produce ASYNC-DONE.
2012-11-20 12:24:13 +01:00
Wim Taymans
8211cdfdc2
factory-uri: take ref to factory
...
Take a ref to the factory that we place in our list.
2012-11-20 12:10:16 +01:00
David Svensson Fors
0eeb4a5c73
server: start and stop multiple times
...
Stop listening on the RTSP port when the GSource is removed, so clients
can't connect and the server can be started again.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=688395
2012-11-20 11:30:37 +01:00
Wim Taymans
8a7197f078
server: fix small leak
2012-11-20 11:24:35 +01:00
Wim Taymans
989f004e24
media: unref source in finish_unprepare
...
The source is created in prepare, unref it in finish_unprepare.
See https://bugzilla.gnome.org/show_bug.cgi?id=688707
2012-11-20 09:46:40 +01:00
David Svensson Fors
01973c924d
rtsp-media: remove bus watch before finalizing
...
* A GDestroyNotify function is set for the bus watch in gst_rtsp_media_prepare.
* An extra media ref is added for the bus watch. This extra ref is unreffed by
the GDestroyNotify function.
* gst_rtsp_media_unprepare destroys the source so the bus watch is removed.
* GstRTSPClient, which calls gst_rtsp_media_prepare, also calls
gst_rtsp_media_unprepare before unreffing the media.
This way, the bus watch will be removed before the media is finalized.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=688707
2012-11-20 09:46:00 +01:00
Alessandro Decina
65042a9551
client: wait until the TEARDOWN response is sent to close the connection
...
Responses can be sent async so we need to wait until the TEARDOWN response has
been written before we close the connection to the client. This avoids the risk
of writing/polling closed sockets.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=688535
2012-11-20 09:32:19 +01:00
David Svensson Fors
0996266342
rtsp-stream: plug socket leak
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=688703
2012-11-20 09:26:28 +01:00
Tim-Philipp Müller
0006ca6d60
rtsp-server: don't use deprecated API
2012-11-17 00:11:27 +00:00
Tim-Philipp Müller
290968eb8c
rtsp-client: fix unused-but-set-variable compiler warning
...
rtsp-client.c:1260:21: error: variable 'protocols' set but not used
2012-11-17 00:03:42 +00:00
Wim Taymans
26ff5fc073
rtsp: cleanups
2012-11-15 17:11:16 +01:00
Wim Taymans
e4ea72ccdf
stream: use the address managed by the stream
...
Use the address managed by the stream for multicast. This allows us to have 1
multicast address for each stream.
Because the address is now managed by the stream we don't have to pass it around
anymore.
Set the address pool on the streams.
2012-11-15 16:18:29 +01:00
Wim Taymans
ba21661ce4
rtsp: improve debug
2012-11-15 16:15:20 +01:00
Wim Taymans
c34f5d1c1a
media: add signal for new streams
...
This allows applications to listen for new streams and configure properties on
them, like the address pool.
2012-11-15 15:41:42 +01:00
Wim Taymans
4168a67992
media: configure address pool in new streams
2012-11-15 15:41:19 +01:00
Wim Taymans
44a2855eb3
stream: add methods to deal with address pool
...
Add methods to get and set the address pool for the stream
Add method to allocate and get the multicast addresses for this stream.
2012-11-15 15:36:21 +01:00
Wim Taymans
1b4ac6e5b0
media: remove MTU property
...
It is a stream property
2012-11-15 15:32:43 +01:00
Wim Taymans
2160d6dbd3
client: set blocksize only on stream
...
Set the blocksize only on the current stream.
2012-11-15 15:29:35 +01:00
Wim Taymans
6c2947e68b
stream: share src and sink sockets
...
the allocated socket is in the used-socket property, not socket.
2012-11-15 13:52:07 +01:00
Wim Taymans
45b6693b39
rtsp: make address-pool return an address object
...
Return a boxed GstRTSPAddress from the GstRTSPAddressPool. This allows us to
store more info in the structure and allows us to more easily return the address
to the right pool when no longer needed.
Pass the address to the StreamTransport so that we can return it to the pool
when the stream transport is freed or changed.
2012-11-15 13:25:14 +01:00
Wim Taymans
f15ffb521c
rtsp: use AddressPool
...
Remove the multicast_group property.
Use the configured addresspool to allocate multicast addresses.
2012-11-14 17:23:59 +01:00
Wim Taymans
d0ffc8e679
address-pool: add clear method
2012-11-14 16:20:36 +01:00
Wim Taymans
6085b1fcc1
address-pool: small cleanups
2012-11-14 16:10:45 +01:00
Wim Taymans
b30202b174
address-pool: add object to manage multicast addresses
...
Make an object that can manage a rage of multicast addresses and ports.
2012-11-14 15:49:06 +01:00
Wim Taymans
7d6e4606fa
server: set default max-threads property
2012-11-13 12:05:42 +01:00
Wim Taymans
dfe3efef74
media: wait for concurrent _prepare
...
If a prepare is busy, wait for the result.
2012-11-13 11:54:17 +01:00
Wim Taymans
47127bd270
media: add lock around message handler
...
We don't want to dispatch messages while we are still processing the result of
the state change.
2012-11-13 11:49:08 +01:00
Wim Taymans
9a97de88ea
media: add lock to protect state changes
2012-11-13 11:15:35 +01:00
Wim Taymans
4753588b09
stream: add locking
2012-11-13 11:14:49 +01:00
Wim Taymans
c7d20e5603
stream-transport: add keep-alive method
2012-11-12 17:11:18 +01:00
Wim Taymans
75473fc88d
stream-transport: add method to handle RTP/RTCP
...
Call new methods instead of poking into the structures directly.
2012-11-12 17:06:42 +01:00
Wim Taymans
883cf794e4
session-media: add locking
2012-11-12 16:51:03 +01:00
Wim Taymans
11cf3f3ccb
session: add locking
2012-11-12 16:42:37 +01:00