Commit graph

1385 commits

Author SHA1 Message Date
Sebastian Rasmussen
94f3e18c5b Revert "rtsp-session-pool: Make sure session IDs are properly URI-escaped"
This reverts commit 935e8f852d.

RFC 2326 states that session IDs may consist of alphanumeric as well as
the safe characters $-_.+ -- N.B. the percent character is not allowed.

Previously the session ID was URI-escaped, this meant that any character
which was not alphanumeric or any of the characters +-._~ would be
percent encoded. While the RFC (surprisingly) mentions that linear white
space in session IDs should be URI-escaped, it does not say anything
about other characters. Moreover no white space is allowed in the
session ID. Finally the percent character which is the result of
URI-escaping is not allowed in a session ID.

So there is no reason to do any URI-escaping, and now it is removed.

https://bugzilla.gnome.org/show_bug.cgi?id=742869
2015-01-14 18:43:37 +01:00
Stefan Sauer
d535cd8cbb Automatic update of common submodule
From f2c6b95 to bc76a8b
2015-01-12 16:14:12 +01:00
Tim-Philipp Müller
e2b31dd9b4 Fix 'make check' from top-level directory 2014-12-31 13:04:57 +00:00
Nirbheek Chauhan
e0d3807cbb examples: Add command-line parsing and take a 'port' argument
This allows users to run multiple servers on different ports for testing.

Only done for examples that actually take arguments and hence are capable of
outputting different streams for each instance on each port.

https://bugzilla.gnome.org/show_bug.cgi?id=742115
2014-12-30 16:04:14 +00:00
Sebastian Dröge
79e41bc2be rtsp-client: Add a send_message default signal handler
This allows subclasses to easily hook into the response sending
mechanism without doing everything from a signal, which seems
awkward from subclasses.
2014-12-29 12:06:50 +01:00
Sebastian Dröge
fc6811697c Automatic update of common submodule
From ef1ffdc to f2c6b95
2014-12-18 10:56:44 +01:00
Sebastian Rasmussen
b6e4587afd configure: add --disable-examples switch
https://bugzilla.gnome.org/show_bug.cgi?id=741678
2014-12-18 09:36:51 +00:00
Matthew Waters
fa4d8db7ea examples: add a retransmisison example implementing RFC4588
Currently only SSRC-multiplexed rtx streams are supported
2014-12-16 16:46:34 +01:00
Sebastian Dröge
a44b564f59 rtsp-stream: Fix some minor memory leaks 2014-12-16 16:46:15 +01:00
Sebastian Dröge
8ae3566591 rtsp-media: Some minor cleanup 2014-12-16 16:46:06 +01:00
Sebastian Dröge
06bfc0697b rtsp-stream: Fix compiler warnings
rtsp-stream.c:1351:3: error: non-void function 'gst_rtsp_stream_get_retransmission_time' should return a value [-Wreturn-type]
  g_return_if_fail (GST_IS_RTSP_STREAM (stream));
  ^

rtsp-stream.c:1384:3: error: non-void function 'gst_rtsp_stream_get_retransmission_pt' should return a value [-Wreturn-type]
  g_return_if_fail (GST_IS_RTSP_STREAM (stream));
  ^
2014-12-16 16:42:13 +01:00
Matthew Waters
4f40781fff media: implement ssrc-multiplexed retransmission support
based off RFC 4588 and the server-rtpaux example in -good
2014-12-16 16:41:08 +01:00
Göran Jönsson
058698c9cf rtsp: Ref transports in hash table.
Also ref streams for transports.
This solves a crash when reciving a rtcp after teardown but before
client finalize.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=740845
2014-12-02 16:29:24 +01:00
Edward Hervey
6ba01ef0ef Automatic update of common submodule
From 7bb2bce to ef1ffdc
2014-11-27 17:13:05 +01:00
Wim Taymans
bd8b2d3fb9 client: refactor cleanup of cached media 2014-11-07 12:48:53 +01:00
Linus Svensson
1a004c5d46 tests: Remove FIXME
The session leak is now fixed, lets remove those FIXME comments.
2014-11-07 12:42:48 +01:00
Linus Svensson
d1ea01d4c6 tests: Test to setup two sessions on one connection
https://bugzilla.gnome.org/show_bug.cgi?id=739112
2014-11-07 12:42:48 +01:00
Linus Svensson
df5850f966 tests: Test setup with tcp transport
https://bugzilla.gnome.org/show_bug.cgi?id=739112
2014-11-07 12:42:48 +01:00
Linus Svensson
088eee6590 client: Configure transport after creating session media
The default implementation of configure_client_transport() in
rtsp-client uses the session media when it chooses channels for
interleaved traffic.

https://bugzilla.gnome.org/show_bug.cgi?id=739112
2014-11-07 12:42:48 +01:00
Linus Svensson
a455181aff client: Stop caching media in client when doing setup
If the media has been managed by a session media, it should not be
cached in the client any longer. The GstRTSPSessionMedia object is now
responsible for unpreparing the GstRTSPMedia object using
gst_rtsp_media_unprepare(). Unprepare the media when finalizing the
session media.

https://bugzilla.gnome.org/show_bug.cgi?id=739112
2014-11-07 12:34:23 +01:00
Aleix Conchillo Flaqué
7c267928ff rtsp-stream: unref srtp decoder when leaving bin
https://bugzilla.gnome.org/show_bug.cgi?id=739481
2014-11-01 11:26:14 +00:00
Aleix Conchillo Flaqué
ef9dc6c9e4 rtsp-client: mikey memory leaks
https://bugzilla.gnome.org/show_bug.cgi?id=739383
2014-10-30 10:34:56 +00:00
Sebastian Dröge
bfc4d54404 Automatic update of common submodule
From 84d06cd to 7bb2bce
2014-10-27 18:01:35 +01:00
Tim-Philipp Müller
f57e8fc570 Parallelise 'make check-valgrind' 2014-10-24 17:48:04 +01:00
Tim-Philipp Müller
39c0feb83f Automatic update of common submodule
From a8c8939 to 84d06cd
2014-10-21 13:04:14 +01:00
Stefan Sauer
8caa8679e9 Automatic update of common submodule
From 36388a1 to a8c8939
2014-10-21 13:00:49 +02:00
Vincent Penquerc'h
f803be2dc8 rtsp-media: deactivate media when shutting down from paused
This was only done when going directly from playing.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=737829
2014-10-21 11:52:27 +02:00
Aleix Conchillo Flaqué
0aad92531d rtsp-client: add stream transport to context
We add the stream transport to the context so we can get the configured
client stream transport in the setup request signal.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=738905
2014-10-21 11:44:40 +02:00
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