Branko Subasic [Fri, 19 Sep 2014 16:28:30 +0000 (18:28 +0200)]
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
Edward Hervey [Mon, 22 Sep 2014 07:30:39 +0000 (09:30 +0200)]
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 ...
Göran Jönsson [Tue, 16 Sep 2014 09:41:52 +0000 (11:41 +0200)]
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
Göran Jönsson [Tue, 16 Sep 2014 09:29:38 +0000 (11:29 +0200)]
client: make define for the WATCH_BACKLOG
See https://bugzilla.gnome.org/show_bug.cgi?id=736322
Wim Taymans [Tue, 9 Sep 2014 16:11:39 +0000 (18:11 +0200)]
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
Wim Taymans [Tue, 9 Sep 2014 16:10:12 +0000 (18:10 +0200)]
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.
Wim Taymans [Mon, 15 Sep 2014 14:54:05 +0000 (16:54 +0200)]
test: add example of dumping RTCP reports
Srimanta Panda [Mon, 8 Sep 2014 07:26:23 +0000 (09:26 +0200)]
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
Göran Jönsson [Thu, 28 Aug 2014 11:35:15 +0000 (13:35 +0200)]
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
Sebastian Dröge [Wed, 13 Aug 2014 14:22:16 +0000 (17:22 +0300)]
rtsp-stream: Remove the multicast group udp sources when removing from the bin
Sebastian Dröge [Tue, 5 Aug 2014 14:12:19 +0000 (16:12 +0200)]
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
Tim-Philipp Müller [Sat, 9 Aug 2014 13:41:35 +0000 (14:41 +0100)]
examples: fix another reference leak
gst_rtsp_media_get_element() returns a new ref.
Sebastian Rasmussen [Wed, 16 Jul 2014 23:34:17 +0000 (01:34 +0200)]
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
Arun Raghavan [Wed, 2 Jul 2014 17:15:07 +0000 (22:45 +0530)]
signals: Fix copy-pasto in target-state signal offset
Edward Hervey [Fri, 1 Aug 2014 08:46:44 +0000 (10:46 +0200)]
Makefile: Add usage of build-checks step
Allows building checks without running them
Sebastian Dröge [Wed, 25 Jun 2014 16:23:10 +0000 (18:23 +0200)]
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
Sebastian Dröge [Sat, 19 Jul 2014 16:04:52 +0000 (18:04 +0200)]
Back to development
Sebastian Dröge [Sat, 19 Jul 2014 15:56:31 +0000 (17:56 +0200)]
Release 1.4.0
Hyunjun Ko [Wed, 16 Jul 2014 11:39:42 +0000 (20:39 +0900)]
media: correct misspelled words in description
https://bugzilla.gnome.org/show_bug.cgi?id=733244
Sebastian Dröge [Fri, 11 Jul 2014 10:19:08 +0000 (12:19 +0200)]
Release 1.3.91
Wim Taymans [Thu, 10 Jul 2014 15:37:45 +0000 (17:37 +0200)]
docs: update docs
Wim Taymans [Thu, 10 Jul 2014 15:10:06 +0000 (17:10 +0200)]
server: implement client REMOVE filter
Wim Taymans [Thu, 10 Jul 2014 15:05:13 +0000 (17:05 +0200)]
client: expose _close() method
Expose a previously internal close method to close the client
connection.
Wim Taymans [Thu, 10 Jul 2014 10:20:15 +0000 (12:20 +0200)]
session-pool: signal session-removed outside of the lock
Release the lock before emiting the session-removed signal.
Wim Taymans [Thu, 10 Jul 2014 09:32:20 +0000 (11:32 +0200)]
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
Ognyan Tonchev [Wed, 9 Jul 2014 13:16:08 +0000 (15:16 +0200)]
client: check if watch is set in handle_teardown()
The unit tests run without a watch
Ognyan Tonchev [Wed, 9 Jul 2014 12:19:10 +0000 (14:19 +0200)]
client tests: send teardown to cleanup session
Ognyan Tonchev [Wed, 9 Jul 2014 12:17:46 +0000 (14:17 +0200)]
server tests: send teardown to cleanup session
Ognyan Tonchev [Wed, 9 Jul 2014 13:01:31 +0000 (15:01 +0200)]
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
Wim Taymans [Tue, 8 Jul 2014 10:36:12 +0000 (12:36 +0200)]
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.
Tim-Philipp Müller [Thu, 3 Jul 2014 18:52:42 +0000 (19:52 +0100)]
examples: print 'stream ready at url' for mp4 and ogg example
Wim Taymans [Wed, 2 Jul 2014 14:04:53 +0000 (16:04 +0200)]
rtsp: fix for MIKEY api change
Wim Taymans [Tue, 1 Jul 2014 14:12:13 +0000 (16:12 +0200)]
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.
Wim Taymans [Tue, 1 Jul 2014 13:02:15 +0000 (15:02 +0200)]
client: fix build
Wim Taymans [Tue, 1 Jul 2014 12:41:14 +0000 (14:41 +0200)]
client: protect sessions with lock
Protect the list of sessions with the lock.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732226
Wim Taymans [Tue, 1 Jul 2014 10:13:47 +0000 (12:13 +0200)]
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
Wim Taymans [Mon, 30 Jun 2014 13:14:34 +0000 (15:14 +0200)]
session-pool: add session-removed signal
Add a signal to be notified when a session is removed from the pool.
Evan Nemerson [Mon, 30 Jun 2014 07:37:59 +0000 (00:37 -0700)]
Make rtsp-server.h a single-include header, use it for G-I
https://bugzilla.gnome.org/show_bug.cgi?id=732411
Sebastian Dröge [Sat, 28 Jun 2014 09:48:29 +0000 (11:48 +0200)]
Release 1.3.90
Wim Taymans [Fri, 27 Jun 2014 14:54:22 +0000 (16:54 +0200)]
stream: crypto can be NULL
Evan Nemerson [Wed, 11 Jun 2014 23:42:08 +0000 (16:42 -0700)]
introspection: add missing allow-none annotations
https://bugzilla.gnome.org/show_bug.cgi?id=730952
Evan Nemerson [Wed, 11 Jun 2014 23:38:36 +0000 (16:38 -0700)]
introspection: add (nullable) annotations to return values
https://bugzilla.gnome.org/show_bug.cgi?id=730952
Evan Nemerson [Tue, 24 Jun 2014 07:48:45 +0000 (09:48 +0200)]
gi: improve annotations
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=730953
Wim Taymans [Tue, 24 Jun 2014 07:43:44 +0000 (09:43 +0200)]
signals: use generic marshal function
Use the generic C marshal function.
Use more explicit type instead of G_TYPE_POINTER
Wim Taymans [Tue, 24 Jun 2014 07:42:47 +0000 (09:42 +0200)]
context: add type macro
Wim Taymans [Tue, 24 Jun 2014 07:34:50 +0000 (09:34 +0200)]
sdp: hide key length defines
They don't have a namespace.
Sebastian Dröge [Sun, 22 Jun 2014 17:37:31 +0000 (19:37 +0200)]
Back to development
Sebastian Dröge [Sun, 22 Jun 2014 17:36:14 +0000 (19:36 +0200)]
Release 1.3.3
Aleix Conchillo Flaqué [Tue, 20 May 2014 21:48:37 +0000 (14:48 -0700)]
mikey: add different key length parameters
Add encryption and authentication key length parameters to MIKEY. For
the encoders, the key lengths are obtained from the cipher and auth
algorithms set in the caps. For the decoders, they are obtained while
parsing the key management from the client.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=730472
Ognyan Tonchev [Sun, 16 Mar 2014 16:29:48 +0000 (17:29 +0100)]
stream tests: Make sure we get right multicast address from stream
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=731577
Ognyan Tonchev [Thu, 12 Jun 2014 11:49:17 +0000 (13:49 +0200)]
client: ref the context until rtsp watch is alive
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=731569
Ognyan Tonchev [Thu, 12 Jun 2014 11:48:44 +0000 (13:48 +0200)]
client: Destroy the rtsp watch after connection close
Wim Taymans [Fri, 13 Jun 2014 14:46:06 +0000 (16:46 +0200)]
media: fix confusing comment
Göran Jönsson [Tue, 27 May 2014 10:36:52 +0000 (12:36 +0200)]
rtsp-session: Timeout in header.
Adding the possbilty to always have timout in header.
This is configurabe with setting "timeout-always-visible".
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728264
Sebastian Dröge [Wed, 21 May 2014 11:23:40 +0000 (13:23 +0200)]
Back to development
Sebastian Dröge [Wed, 21 May 2014 11:06:36 +0000 (13:06 +0200)]
Release 1.3.2
Sebastian Dröge [Wed, 21 May 2014 08:54:05 +0000 (10:54 +0200)]
Automatic update of common submodule
From 211fa5f to 1f5d3c3
Wim Taymans [Tue, 20 May 2014 13:57:30 +0000 (15:57 +0200)]
client: store TCP ports in transport
Store the TCP ports in the transport when we are doing RTSP over TCP.
This way, we can easily get to the ports from the transport.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=729776
Aleix Conchillo Flaqué [Fri, 16 May 2014 01:15:04 +0000 (18:15 -0700)]
stream: add signals for new RTP/RTCP encoders
New signals to allow the user to configure the dynamically created
encoders.
https://bugzilla.gnome.org/show_bug.cgi?id=730228
Ognyan Tonchev [Wed, 14 May 2014 07:31:31 +0000 (09:31 +0200)]
media: Make suspend()/unsuspend() virtual
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=730109
Aleix Conchillo Flaqué [Sat, 10 May 2014 00:25:07 +0000 (17:25 -0700)]
client: fix send-message signal marshaller
Use generic marshalling for the send-message signal. It has
two POINTER arguments, not just one.
https://bugzilla.gnome.org/show_bug.cgi?id=729900
Wim Taymans [Fri, 9 May 2014 13:08:48 +0000 (15:08 +0200)]
tests: add and remove pads only once
In this test we simulate a dynamic pad by watching the caps event.
Because of renegotiation in the base payloader now, this caps is sent
multiple times but we can only deal with 1 invocation, use a variable to
only 'add and remove' the pad once.
Tim-Philipp Müller [Fri, 2 May 2014 19:06:29 +0000 (20:06 +0100)]
tests: add unit test for correct handling of Require headers
https://bugzilla.gnome.org/show_bug.cgi?id=729426
Tim-Philipp Müller [Fri, 2 May 2014 18:59:23 +0000 (19:59 +0100)]
rtsp-client: handle Require headers and respond with OPTION_NOT_SUPPORTED
Servers must handle Require headers and must report a failure
if they don't handle any of the Required options, see RFC 2326,
section 12.32: https://tools.ietf.org/html/rfc2326#page-54
https://bugzilla.gnome.org/show_bug.cgi?id=729426
Sebastian Dröge [Sat, 3 May 2014 18:48:43 +0000 (20:48 +0200)]
Back to development
Sebastian Dröge [Sat, 3 May 2014 16:40:24 +0000 (18:40 +0200)]
Release 1.3.1
Sebastian Dröge [Sat, 3 May 2014 08:18:00 +0000 (10:18 +0200)]
Automatic update of common submodule
From bcb1518 to 211fa5f
Tim-Philipp Müller [Fri, 2 May 2014 18:58:15 +0000 (19:58 +0100)]
Update .gitignore
Tim-Philipp Müller [Fri, 2 May 2014 18:57:23 +0000 (19:57 +0100)]
tests: fix memory leak in sessionmedia unit test
Wim Taymans [Thu, 1 May 2014 04:17:06 +0000 (06:17 +0200)]
client: emit a signal before sending a message
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728970
Wim Taymans [Thu, 1 May 2014 04:07:08 +0000 (06:07 +0200)]
client: pass context to send_message
Pass the current context to send_message, we will need it later.
Wim Taymans [Thu, 1 May 2014 03:29:54 +0000 (05:29 +0200)]
client: fix typo in comment
Ognyan Tonchev [Mon, 14 Apr 2014 13:17:14 +0000 (15:17 +0200)]
media: Do not stop thread twice if default_prepare() fails
Wim Taymans [Tue, 15 Apr 2014 14:51:17 +0000 (16:51 +0200)]
client: set the watch to flushing before going to NULL
First set the watch to flushing so that we unblock any current and
future attempt to send data on the watch, Then set the pipeline to
NULL.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728153
Linus Svensson [Fri, 11 Apr 2014 21:52:49 +0000 (23:52 +0200)]
rtsp-session-pool: Fixes annotation
Fixes annotation for gst_rtsp_session_pool_create() and memory leaks
in the sessionpool test.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728060
Ognyan Tonchev [Wed, 9 Apr 2014 14:44:21 +0000 (16:44 +0200)]
media: make media_prepare virtual
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728029
Ognyan Tonchev [Sat, 12 Apr 2014 03:57:00 +0000 (05:57 +0200)]
media: stop the thread in more error cases
Ognyan Tonchev [Sat, 12 Apr 2014 03:53:15 +0000 (05:53 +0200)]
media: allow NULL as the thread
Use the default context whan passing a NULL thread.
Vincent Penquerc'h [Thu, 10 Apr 2014 15:39:11 +0000 (16:39 +0100)]
rtsp-client: indent cleanup
Coverity was moaning about unreachable code, and I think it was just
confused by { being before the label. We'll see if it pops up again.
Coverity 1197705
Göran Jönsson [Tue, 1 Apr 2014 11:04:21 +0000 (13:04 +0200)]
client: Add drop-backlog property
When we have too many messages queued for a client (currently hardcoded
to 100) we overflow and drop the messages. Add a drop-backlog property
to control this behaviour. Setting this property to FALSE will retry
to send the messages to the client by waiting for more room in the
backlog.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725898
Ognyan Tonchev [Thu, 3 Apr 2014 10:19:51 +0000 (12:19 +0200)]
client: support for POST before GET when setting up a tunnel
Ognyan Tonchev [Wed, 2 Apr 2014 10:03:32 +0000 (12:03 +0200)]
client: remove watch of the second client after http tunnel setup
The second client will be freed after the HTTP tunnel has been set up.
Make sure it's RTSP watch is never dispatched again.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727488
Ognyan Tonchev [Mon, 31 Mar 2014 09:00:11 +0000 (11:00 +0200)]
media: Make media_prepare() fail if port allocation fails
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727376
Linus Svensson [Tue, 1 Apr 2014 14:55:13 +0000 (16:55 +0200)]
media test: cleanup the thread pool in tests
Linus Svensson [Tue, 1 Apr 2014 11:16:26 +0000 (13:16 +0200)]
rtsp-media: Unblock blocked streams in unprepare
The streams will be blocked when a live media is prepared.
The streams should be unblocked in gst_rtsp_media_unprepare.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727231
Wim Taymans [Tue, 8 Apr 2014 12:49:41 +0000 (14:49 +0200)]
media: release the state lock when going to NULL
Set our state to UNPREPARING and release the state-lock before
setting the pipeline to the NULL state. This way, any pad-added
callback will be able to take the state-lock and check that we are now
unpreparing instead of deadlocking.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727102
Wim Taymans [Tue, 8 Apr 2014 10:08:17 +0000 (12:08 +0200)]
media: protect status with lock
Make sure we only update the status with the lock.
Wim Taymans [Fri, 4 Apr 2014 15:39:36 +0000 (17:39 +0200)]
rtsp: update for MIKEY API changes
Wim Taymans [Thu, 3 Apr 2014 10:52:51 +0000 (12:52 +0200)]
client: parse the mikey response from the client
Parse the mikey response from the client and update the policy for
each SSRC.
Wim Taymans [Wed, 2 Apr 2014 10:36:16 +0000 (12:36 +0200)]
stream: add method to set crypto info
Make a method to configure the crypto information of a stream.
Set udpsrc in READY instead of PAUSED so that we can configure caps
later.
Wim Taymans [Thu, 3 Apr 2014 10:57:13 +0000 (12:57 +0200)]
client: cleanup error paths
Wim Taymans [Wed, 2 Apr 2014 10:27:24 +0000 (12:27 +0200)]
media: fix docs
Wim Taymans [Tue, 25 Mar 2014 11:42:39 +0000 (12:42 +0100)]
test: enable SRTP only on RTSPS
We only want to enable SRTP when doing rtsp over TLS so that we can
exchange the keys in a secure way.
Wim Taymans [Tue, 25 Mar 2014 11:41:33 +0000 (12:41 +0100)]
test: print an error on failure
Wim Taymans [Thu, 13 Mar 2014 16:35:21 +0000 (17:35 +0100)]
stream: add SRTP support
Install srtp encoder and decoder elements in rtpbin
Add MIKEY in SDP
Sebastian Rasmussen [Sun, 16 Mar 2014 18:45:26 +0000 (19:45 +0100)]
tests: Add unit tests for sessionpool
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726470
Sebastian Rasmussen [Sat, 22 Mar 2014 12:24:27 +0000 (13:24 +0100)]
tests: Improve code coverage of rtsp-threadpool tests
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726873
Sebastian Rasmussen [Sun, 23 Mar 2014 20:26:00 +0000 (21:26 +0100)]
tests: Improve code coverage for rtsp-session-media
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726940
Sebastian Rasmussen [Sun, 23 Mar 2014 20:24:48 +0000 (21:24 +0100)]
gobject-introspection: Add annotations to support language bindings
In addition a few cosmetic changes:
* Adjust the order of arguments
* Fix typo: occured -> occurred
* Fix indentation after Return:-clauses
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726941
Sebastian Rasmussen [Fri, 14 Mar 2014 18:03:24 +0000 (19:03 +0100)]
rtsp-stream: Don't mix IPv4 and IPv6 addresses
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=726362