Commit graph

1057 commits

Author SHA1 Message Date
Aleix Conchillo Flaqué
966065a018 stream: release lock even not all transports have been removed
We don't want to keep the lock even we return FALSE because not all the
transports have been removed. This could lead into a deadlock.

https://bugzilla.gnome.org/show_bug.cgi?id=737797
2014-10-21 10:08:44 +02:00
Olivier Crête
dde6a89928 rtsp-sdp: Rename clock-base and seqnum-base to timestamp-offset and seqnum-offset
These were renamed in GstRTPBasePayload in 1.0
2014-10-10 18:43:00 -04:00
Aleix Conchillo Flaqué
6c0c90c9d2 client: set session media to NULL without the lock
We need to set session medias to NULL without the client lock otherwise
we can end up in a deadlock if another thread is waiting for the lock
and media unprepare is also waiting for that thread to end.

https://bugzilla.gnome.org/show_bug.cgi?id=737690
2014-10-01 10:31:04 +01:00
Sebastian Dröge
1badcd83c3 rtsp-media: Set state to UNPREPARING in all cases 2014-09-30 23:22:45 +03:00
Ognyan Tonchev
d48e022c13 media: set state to unpreparing when unprepare is initiated
https://bugzilla.gnome.org/show_bug.cgi?id=737675
2014-09-30 23:15:29 +03:00
Sebastian Rasmussen
404a80e38a rtsp-client: Remove backlog limit while processings requests
If the backlog limit is kept two cases of deadlocks may be
encountered when streaming over TCP. Without the backlog
limit this deadlocks can not happen, at the expence of
memory usage.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=737631
2014-09-30 12:22:49 +02:00
Ognyan Tonchev
17f5785638 rtsp-client: do not free main context before rtsp watch
https://bugzilla.gnome.org/show_bug.cgi?id=737110
2014-09-24 10:42:16 +03:00
Branko Subasic
2745e6f654 tests: Extend unit test timeout to accomodate for valgrind
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=736647
2014-09-24 10:38:08 +03:00
Branko Subasic
2218510cae rtsp-*: Treat sending packets to clients as keepalive
As long as gst-rtsp-server can successfully send RTP/RTCP data to
clients then the client must be reading. This change makes the server
timeout the connection if the client stops reading.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=736647
2014-09-24 10:37:59 +03:00
Branko Subasic
733ef1162b rtsp-client: Allow backlog to grow while expiring session
Allow the send backlog in the RTSP watch to grow to unlimited size while
attempting to bring the media pipeline to NULL due to a session
expiring.  Without this change the appsink element cannot change state
because it is blocked while rendering data in the new_sample callback.
This callback will block until it has successfully put the data into the
send backlog. There is a chance that the send backlog is full at this
point which means that the callback may block for a long time, possibly
forever. Therefore the media pipeline may also be prevented from
changing state for a long time.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=736647
2014-09-24 10:37:49 +03:00
Edward Hervey
980553547d rtsp-client: Make old compilers happy
rtsp-client.c:2553:50: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]

Just in case that guint8 doesn't fit in a pointer. Just in case ...
2014-09-22 09:30:39 +02:00
Göran Jönsson
23b9d8fbb0 client: raise the backlog limits before pausing
We need to raise the backlog limits before pausing the pipeline or else
the appsink might be blocking in the render method in wait_backlog() and
we would deadlock waiting for paused.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=736322
2014-09-16 11:41:52 +02:00
Göran Jönsson
ebd9be59fe client: make define for the WATCH_BACKLOG
See https://bugzilla.gnome.org/show_bug.cgi?id=736322
2014-09-16 11:29:38 +02:00
Wim Taymans
0292be09ea client: simplify session transport handling
link/unlink of the transport in a session was done to keep track of all
TCP transports and to send RTP/RTCP data to the streams. We can simplify
that by putting all the TCP transports in a hashtable indexed with the
channel number.

We also don't need to link/unlink the transports when we pause/resume
the streams. The same effect is already achieved when we pause/play the
media. Indeed, when we pause the media, the transport is removed from
the media and the callbacks will not be called anymore.

See https://bugzilla.gnome.org/show_bug.cgi?id=736041
2014-09-16 10:46:13 +02:00
Wim Taymans
ea5d4cfc7e stream-transport: make method to handle received data
Make a method to handle the data received on a channel. It sends the
data to the stream of the transport on the RTP or RTCP pads based on
the channel number.
2014-09-16 10:45:20 +02:00
Wim Taymans
4056897111 test: add example of dumping RTCP reports 2014-09-15 16:54:36 +02:00
Srimanta Panda
376488d8c7 rtsp-media: Make sure that sequence numbers are monotonic after pause
The sequence number is not monotonic for RTP packets after pause. The
reason is basepayloader generates a randon sequence number when the
pipeline goes from ready to pause. With this fix generation of sequence
number will be monotonic when going from pause to play request.

https://bugzilla.gnome.org/show_bug.cgi?id=736017
2014-09-12 17:29:30 +03:00
Göran Jönsson
09bf2025f8 rtsp-client: Protect saved clients watch with a mutex
Fixes a crash when close() is called while merging clients
in handle_tunnel(). In that case close() would destroy the
watch while it is still being used in handle_tunnel().

https://bugzilla.gnome.org/show_bug.cgi?id=735570
2014-09-04 10:35:56 +03:00
Sebastian Dröge
1b47b6d9b0 rtsp-stream: Remove the multicast group udp sources when removing from the bin 2014-08-25 10:39:04 +03:00
Sebastian Dröge
6ba5ca447f rtsp-media: Query position and stop time only on the RTP parts of the pipeline
The RTCP parts, in specific the RTCP udpsinks, are not flushed when
seeking and will always continue counting the time. This leads to
the NPT after a backwards seek to be something completely different
to the actual seek position.

https://bugzilla.gnome.org/show_bug.cgi?id=732644
2014-08-12 10:54:12 +03:00
Tim-Philipp Müller
04e69cf83b examples: fix another reference leak
gst_rtsp_media_get_element() returns a new ref.
2014-08-09 14:41:35 +01:00
Sebastian Rasmussen
486f30558a examples: unref element after usage
gst_bin_get_by_name_recurse_up() returns an element
reference that must be unreffed after usage.

https://bugzilla.gnome.org/show_bug.cgi?id=734546
2014-08-09 14:18:09 +01:00
Arun Raghavan
e297dd1fee signals: Fix copy-pasto in target-state signal offset 2014-08-04 14:16:26 +05:30
Edward Hervey
bad8eca332 Makefile: Add usage of build-checks step
Allows building checks without running them
2014-08-01 10:46:44 +02:00
Sebastian Dröge
3159b374b9 rtsp-stream: Listen on the multicast group for RTP/RTCP packets
When a UDP multicast transport is used it is expected that the server listens
for RTP and RTCP packets on the multicast group with the corresponding port.
Without this we will never get RTCP packets from clients in multicast mode.

https://bugzilla.gnome.org/show_bug.cgi?id=732238
2014-07-22 14:26:49 +02:00
Sebastian Dröge
e58eeb408d Back to development 2014-07-19 18:04:52 +02:00
Sebastian Dröge
67644cb625 Release 1.4.0 2014-07-19 17:56:31 +02:00
Hyunjun Ko
a8e604355c media: correct misspelled words in description
https://bugzilla.gnome.org/show_bug.cgi?id=733244
2014-07-16 12:50:48 +01:00
Sebastian Dröge
5932dc3336 Release 1.3.91 2014-07-11 12:19:08 +02:00
Wim Taymans
0b9e72f279 docs: update docs 2014-07-10 17:37:45 +02:00
Wim Taymans
ecde0051db server: implement client REMOVE filter 2014-07-10 17:10:06 +02:00
Wim Taymans
ced406cc28 client: expose _close() method
Expose a previously internal close method to close the client
connection.
2014-07-10 17:05:13 +02:00
Wim Taymans
301585b30f session-pool: signal session-removed outside of the lock
Release the lock before emiting the session-removed signal.
2014-07-10 12:20:15 +02:00
Wim Taymans
945c93fde0 filter: Release lock in filter functions
Release the object lock before calling the filter functions. We need to
keep a cookie to detect when the list changed during the filter
callback. We also keep a hashtable to make sure we only call the filter
function once for each object in case of concurrent modification.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732950
2014-07-10 11:36:55 +02:00
Ognyan Tonchev
6543082d2b client: check if watch is set in handle_teardown()
The unit tests run without a watch
2014-07-09 16:17:00 +02:00
Ognyan Tonchev
bfd498585a client tests: send teardown to cleanup session 2014-07-09 16:17:00 +02:00
Ognyan Tonchev
f78886e7cb server tests: send teardown to cleanup session 2014-07-09 16:17:00 +02:00
Ognyan Tonchev
e0bc97e40c client: keep ref to client for the session removed handler
This extra ref will be dropped when all client sessions have been
removed. A session is removed when a client sends teardown, closes its
endpoint of the TCP connection or the sessions expires.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732226
2014-07-09 16:16:50 +02:00
Wim Taymans
5aec4af1b9 client: manage media in session as a last step
Once we manage a media in a session, we can't unmanage it anymore
without destroying it. Therefore, first check everything before we
manage the media, otherwise if something is wrong we have no way to
unmanage the media.
If we created a new session and something went wrong, remove the session
again. Fixes a leak in the unit test.
2014-07-08 14:46:13 +02:00
Tim-Philipp Müller
fc6fa3f16a examples: print 'stream ready at url' for mp4 and ogg example 2014-07-03 19:52:42 +01:00
Wim Taymans
99f670d8bc rtsp: fix for MIKEY api change 2014-07-02 16:04:53 +02:00
Wim Taymans
72a57e792f client: free watch context only once
The watch context is freed when the source is destroyed. Avoids
a CRITICAL when we try to unref the context twice.
2014-07-01 16:12:13 +02:00
Wim Taymans
517bb78ae3 client: fix build 2014-07-01 15:02:15 +02:00
Wim Taymans
5e2afcefdd client: protect sessions with lock
Protect the list of sessions with the lock.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732226
2014-07-01 14:41:14 +02:00
Wim Taymans
fe081e7301 Client: keep a ref to the session
Don't just keep a weak ref to the session objects but use a hard ref. We
will be notified when a session is removed from the pool (expired) with
the new session-removed signal.
Don't automatically close the RTSP connection when all the sessions of
a client are removed, a client can continue to operate and it can create
a new session if it wants. If you want to remove the client from the
server, you have to use gst_rtsp_server_client_filter() now.

Based on patch from Ognyan Tonchev <ognyan.tonchev at axis.com>

See https://bugzilla.gnome.org/show_bug.cgi?id=732226
2014-07-01 12:28:41 +02:00
Wim Taymans
964ca3c988 session-pool: add session-removed signal
Add a signal to be notified when a session is removed from the pool.
2014-06-30 15:14:34 +02:00
Evan Nemerson
41d1ef7ed3 Make rtsp-server.h a single-include header, use it for G-I
https://bugzilla.gnome.org/show_bug.cgi?id=732411
2014-06-30 09:45:11 +02:00
Sebastian Dröge
b6f4dd4c28 Release 1.3.90 2014-06-28 11:48:29 +02:00
Wim Taymans
db95746f6b stream: crypto can be NULL 2014-06-27 16:55:07 +02:00
Evan Nemerson
cecc2cb4ff introspection: add missing allow-none annotations
https://bugzilla.gnome.org/show_bug.cgi?id=730952
2014-06-26 19:08:56 +02:00