Sebastian Dröge [Thu, 15 Jan 2015 18:34:20 +0000 (19:34 +0100)]
rtsp-stream: Set format=TIME on our app sources for TCP
Sebastian Rasmussen [Tue, 13 Jan 2015 14:29:29 +0000 (15:29 +0100)]
Revert "rtsp-session-pool: Make sure session IDs are properly URI-escaped"
This reverts commit
935e8f852d050b4939f1d0f44b38e9b55a2fbe36.
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
Stefan Sauer [Mon, 12 Jan 2015 15:14:12 +0000 (16:14 +0100)]
Automatic update of common submodule
From f2c6b95 to bc76a8b
Tim-Philipp Müller [Wed, 31 Dec 2014 13:04:57 +0000 (13:04 +0000)]
Fix 'make check' from top-level directory
Nirbheek Chauhan [Tue, 30 Dec 2014 12:43:49 +0000 (18:13 +0530)]
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
Sebastian Dröge [Mon, 29 Dec 2014 11:06:50 +0000 (12:06 +0100)]
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.
Sebastian Dröge [Thu, 18 Dec 2014 09:56:44 +0000 (10:56 +0100)]
Automatic update of common submodule
From ef1ffdc to f2c6b95
Sebastian Rasmussen [Wed, 17 Dec 2014 19:02:05 +0000 (20:02 +0100)]
configure: add --disable-examples switch
https://bugzilla.gnome.org/show_bug.cgi?id=741678
Matthew Waters [Mon, 1 Dec 2014 12:42:34 +0000 (23:42 +1100)]
examples: add a retransmisison example implementing RFC4588
Currently only SSRC-multiplexed rtx streams are supported
Sebastian Dröge [Tue, 16 Dec 2014 15:46:15 +0000 (16:46 +0100)]
rtsp-stream: Fix some minor memory leaks
Sebastian Dröge [Tue, 16 Dec 2014 15:46:06 +0000 (16:46 +0100)]
rtsp-media: Some minor cleanup
Sebastian Dröge [Tue, 16 Dec 2014 15:42:13 +0000 (16:42 +0100)]
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));
^
Matthew Waters [Wed, 26 Nov 2014 14:12:36 +0000 (01:12 +1100)]
media: implement ssrc-multiplexed retransmission support
based off RFC 4588 and the server-rtpaux example in -good
Göran Jönsson [Fri, 28 Nov 2014 11:45:14 +0000 (12:45 +0100)]
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
Edward Hervey [Thu, 27 Nov 2014 16:13:05 +0000 (17:13 +0100)]
Automatic update of common submodule
From 7bb2bce to ef1ffdc
Wim Taymans [Fri, 7 Nov 2014 11:48:53 +0000 (12:48 +0100)]
client: refactor cleanup of cached media
Linus Svensson [Thu, 23 Oct 2014 11:39:10 +0000 (13:39 +0200)]
tests: Remove FIXME
The session leak is now fixed, lets remove those FIXME comments.
Linus Svensson [Thu, 23 Oct 2014 15:54:37 +0000 (17:54 +0200)]
tests: Test to setup two sessions on one connection
https://bugzilla.gnome.org/show_bug.cgi?id=739112
Linus Svensson [Fri, 24 Oct 2014 10:05:27 +0000 (12:05 +0200)]
tests: Test setup with tcp transport
https://bugzilla.gnome.org/show_bug.cgi?id=739112
Linus Svensson [Fri, 24 Oct 2014 10:04:54 +0000 (12:04 +0200)]
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
Linus Svensson [Thu, 23 Oct 2014 10:54:03 +0000 (12:54 +0200)]
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
Aleix Conchillo Flaqué [Sat, 1 Nov 2014 06:01:53 +0000 (23:01 -0700)]
rtsp-stream: unref srtp decoder when leaving bin
https://bugzilla.gnome.org/show_bug.cgi?id=739481
Aleix Conchillo Flaqué [Thu, 30 Oct 2014 04:01:39 +0000 (21:01 -0700)]
rtsp-client: mikey memory leaks
https://bugzilla.gnome.org/show_bug.cgi?id=739383
Sebastian Dröge [Mon, 27 Oct 2014 17:01:35 +0000 (18:01 +0100)]
Automatic update of common submodule
From 84d06cd to 7bb2bce
Tim-Philipp Müller [Fri, 24 Oct 2014 16:48:04 +0000 (17:48 +0100)]
Parallelise 'make check-valgrind'
Tim-Philipp Müller [Tue, 21 Oct 2014 12:04:14 +0000 (13:04 +0100)]
Automatic update of common submodule
From a8c8939 to 84d06cd
Stefan Sauer [Tue, 21 Oct 2014 11:00:49 +0000 (13:00 +0200)]
Automatic update of common submodule
From 36388a1 to a8c8939
Vincent Penquerc'h [Wed, 1 Oct 2014 11:12:30 +0000 (07:12 -0400)]
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
Aleix Conchillo Flaqué [Mon, 20 Oct 2014 22:40:59 +0000 (15:40 -0700)]
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
Aleix Conchillo Flaqué [Thu, 2 Oct 2014 19:02:48 +0000 (12:02 -0700)]
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
Olivier Crête [Fri, 10 Oct 2014 22:43:00 +0000 (18:43 -0400)]
rtsp-sdp: Rename clock-base and seqnum-base to timestamp-offset and seqnum-offset
These were renamed in GstRTPBasePayload in 1.0
Aleix Conchillo Flaqué [Tue, 30 Sep 2014 23:36:51 +0000 (16:36 -0700)]
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
Sebastian Dröge [Tue, 30 Sep 2014 20:22:45 +0000 (23:22 +0300)]
rtsp-media: Set state to UNPREPARING in all cases
Ognyan Tonchev [Tue, 30 Sep 2014 17:17:04 +0000 (19:17 +0200)]
media: set state to unpreparing when unprepare is initiated
https://bugzilla.gnome.org/show_bug.cgi?id=737675
Sebastian Rasmussen [Mon, 29 Sep 2014 23:35:02 +0000 (01:35 +0200)]
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
Ognyan Tonchev [Mon, 22 Sep 2014 11:32:06 +0000 (13:32 +0200)]
rtsp-client: do not free main context before rtsp watch
https://bugzilla.gnome.org/show_bug.cgi?id=737110
Branko Subasic [Fri, 19 Sep 2014 16:29:00 +0000 (18:29 +0200)]
tests: Extend unit test timeout to accomodate for valgrind
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=736647
Branko Subasic [Fri, 19 Sep 2014 16:28:50 +0000 (18:28 +0200)]
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
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.