Commit graph

1520 commits

Author SHA1 Message Date
Victor Toso
2f77d877c3 tests: matroskamux avoid -Wmaybe-uninitialized
False positive for the three variables but some warnings like:

   ../tests/check/elements/matroskamux.c:875:10:
    warning: 'chapters_offset' may be used uninitialized in this function [-Wmaybe-uninitialized]
   *index = chapters_offset;
   ~~~~~~~^~~~~~~~~~~~~~~~~

The above is false positive as there is a gboolean to check if it was
initialized or not (found_chapters_declaration).
2019-01-18 13:53:18 +00:00
Tim-Philipp Müller
6700c16989 meson: enable tests for orc code 2019-01-16 00:57:46 +00:00
Jan Alexander Steffens (heftig)
8f8de410c5 test: rtph265pay: Verify we only mark the last fragment 2019-01-09 15:36:40 +00:00
Jan Alexander Steffens (heftig)
03d138985f test: rtph265pay: Use a bigger test frame
The existing frame's last slice is too small to be used for
fragmentation tests.
2019-01-09 15:36:40 +00:00
Jan Alexander Steffens (heftig)
791711f9be test: rtph264pay: Verify we only mark the last fragment 2019-01-09 15:36:40 +00:00
Seungha Yang
ac8fc4419a tests: Enable more unit tests on Windows 2018-12-30 21:55:28 +09:00
Seungha Yang
cc5ee5f673 tests: Remove pointless unistd.h include 2018-12-30 21:54:44 +09:00
Tim-Philipp Müller
f054526e6d tests: dist new rtph265.rtp file
Fixes make distcheck.
2018-12-25 16:55:31 +01:00
Mathieu Duponchelle
f52e16ceb8 Revert "rtpbin: receive bundle support"
This reverts commit dcd3ce9751.

This functionality was implemented for gstopenwebrtc, but it
turned out this was not actually needed for webrtc bundling
support, as shown in webrtcbin. It also doesn't correspond
to any standards.

This is an API break, but nothing should actually depend on
this, at least not for its initial purpose.

Changes in rtpbin.c were reverted manually, to preserve some
refactoring that had occurred in the original commit.

Fixes #537
2018-12-20 13:25:10 +00:00
KimTaeSoo
b01210c554 tagschecking: Use gst_message_parse_warning in case of GST_MESSAGE_WARNING
Bus message handler of tags checking unit test uses gst_message_parse_error()
in case of GST_MESSAGE_ERROR and GST_MESAGE_WARNING.
If gst_message_parse_error() is called in case of GST_MESSAGE_WARNING, assert occurs.
So modified to use gst_message_parse_warning() in case of GST_MESSAGE_WARNING.
2018-12-19 15:57:32 +00:00
Nicolas Dufresne
5ae917f62f test: rtph264/265: Add libgstrtp in auto-tool makefile 2018-12-19 09:51:10 -05:00
Nicolas Dufresne
6941079d8d test: rtph265: Copy and port tests from rtph264
This copy and port all the relevant tests from rtph264.
2018-12-18 13:39:54 -05:00
Nicolas Dufresne
a0c58a77dc test: rtph264depay: Check the marker is converted to flag 2018-12-18 13:39:54 -05:00
Nicolas Dufresne
6b89144c9c test: rtph264depay: Check that EOS drains the depayloaded
In AU mode, the depayloader may have accumulated NALs, test that
these NALs are drained and not dropped.
2018-12-18 13:39:54 -05:00
Nicolas Dufresne
aa7e78b8e4 test: rtph264pay: Add tests for marker bit
Test that marker bit is transferred when input buffer has the
marker flag set but also that it's set whenever the payloader
receives complete AU.
2018-12-18 13:39:54 -05:00
Nicolas Dufresne
73ee9cdea2 test: rtph264pay: Verify slices timestamp
This test make sure that timestamps are properly transfered
to each NALU.
2018-12-18 13:39:54 -05:00
Nicolas Dufresne
cd09a3103f test: rtph264pay: Add reserved nals test 2018-12-18 13:39:54 -05:00
Seungha Yang
7aebe60809 tests: Enable unit test on Windows
Allow run some unit tests on Windows.
* Remove hardcoded path separator in whitelist env for Meson to choose
  OS-specific separator automatically (i.e., ';' for windows and ':' for *nix)
* Add dependency explicitly for some test cases, otherwise plugins couldn't be
  loaded on uninstalled environment of Windows.
2018-12-18 22:52:24 +09:00
Seungha Yang
16af121a86 meson: Prefer to use join_paths() over '/'
... to avoid mixing '/' and '\' in a path string on Windows.
2018-12-18 22:52:24 +09:00
Jonny Lamb
9a3e8ad2d7 rtpulpfec: stop and start the harness when setting error-after
gstreamer!55 makes some changes to how the `error-after` counter works
which breaks this test. This change makes the test not rely on the
ability to alter `error-after` at runtime and explicitly stops and
starts the harness before pushing data.

An alternative would be to add another argument to
`harness_rtpulpfecdec` to set `error-after` on construction but that's
slightly more long-winded. so I went for this approach instead.

Fixes #532, even though that's already closed.
2018-12-18 12:32:48 +00:00
Mathieu Duponchelle
306d5021e5 tests: remove rtpaux test
The initial mission statement for this test was:

* demonstrate usage of the request-aux-* signals in rtpbin
* test the rtx elements

We have examples that serve the first use case, and better
(harnessed) tests for the second use case.

This test is slow and racy, it served its purpose but can now
be removed.

Fixes #533
2018-12-18 11:08:50 +00:00
Olivier Crête
59d398b66c rtpjitterbuffer tests: Validate the number of buffers 2018-12-14 12:10:16 +00:00
Olivier Crête
d857522237 rtpjitterbuffer: Run all timers immediately on EOS
When the EOS event is received, run all timers immediately and avoid
pushing the EOS downstream before this has been run. This ensures that
the lost packet statistics are accurate.
2018-12-14 12:10:16 +00:00
Olivier Crête
c6e8325945 rtpjitterbuffer test: Stop jitterbuffer before pads to avoid race
The teardown of the pads checks the refcount, but there are timers
inside the jitterbuffer that can push things, so if we're not lucky,
things could be pushed while the pads are being shut down. Putting the
jitterbuffer to NULL first avoids this.
2018-12-14 12:10:16 +00:00
Tim-Philipp Müller
193dbd20a8 tests: rtpssrcdemux: fix uninstalled autotools build and distcheck 2018-11-30 23:56:12 +00:00
Nicolas Dufresne
c596bdda38 test: rtpssrcdemux: Test event forwarding
This the first unit test of this element. It adds a test that verify
that events are forwarded correctly.
2018-11-29 15:19:17 -05:00
Jordan Petridis
515ada7e22
Run gst-indent through the files
This is required before we enabled an indent test in the CI.

https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/33
2018-11-28 05:52:16 +02:00
Linus Svensson
ac94c706da rtpsession: test: Plug memory leak 2018-11-13 12:30:35 +00:00
Havard Graff
65a7d39bd4 flvmux: Test that timestamps are always increasing
Decreasing timestamps break rtmpsink.

With contributions from Olivier Crête.

https://bugzilla.gnome.org/show_bug.cgi?id=796382
2018-11-05 18:17:04 -05:00
Nirbheek Chauhan
8fd3a98256 meson: Add some missing test dependencies
Without these dependencies, the enumtype may not be generated when the
test is built, which will cause a compile failure.
2018-10-28 14:10:12 +00:00
Nirbheek Chauhan
21d5005688 meson: Cleanup old FIXMEs that relied on meson changes 2018-10-28 14:10:12 +00:00
Olivier Crête
cc69c876fe rtpsession: Allow changing the SDES at runtime
Make it possible to modify the SDES in a packet at runtime.

https://bugzilla.gnome.org/show_bug.cgi?id=763502
2018-10-28 12:10:36 +00:00
Yeongjin Jeong
301142604e tests: flvmux: Fix pushing invalid audio caps in tests
Previous commit created caps with incorrect aac codec data
that did not match the audio channel.

https://bugzilla.gnome.org/show_bug.cgi?id=797256
2018-10-21 02:44:24 -04:00
Havard Graff
13aa805943 rtpsession: fix up GHashTable-behavior dependent tests
GHashTable iteration order changed in recent GLib,
and tests were relying on that.

https://mail.gnome.org/archives/desktop-devel-list/2018-October/msg00016.html
2018-10-20 12:32:44 +01:00
Havard Graff
53a45b1222 Initial commit of GstRtpFunnel
For funneling together rtp-streams into a single session.
Use-cases include multiplexing and bundle.
2018-10-15 14:20:58 +02:00
Yeongjin Jeong
afa4be4b3b tests: flvdemux: Add new test for channel detect using aac codec-data
https://bugzilla.gnome.org/show_bug.cgi?id=797275
2018-10-12 14:35:37 -04:00
Yeongjin Jeong
7b5f7249e8 tests: flvmux: Add new test for caps change after starting to write headers
https://bugzilla.gnome.org/show_bug.cgi?id=797256
2018-10-11 15:35:24 -04:00
Havard Graff
6c05180dc5 rtpmux: respect downstream "timestamp-offset" in caps.
https://bugzilla.gnome.org/show_bug.cgi?id=795162
2018-10-10 15:39:02 -04:00
Havard Graff
6f37bd8f19 rtpmux: cleanup ssrc-handling code a bit
And add some better logging.

https://bugzilla.gnome.org/show_bug.cgi?id=795162
2018-10-10 15:38:57 -04:00
Havard Graff
7cd36d2914 rtpmux: property should overrule both upstream and downstream
https://bugzilla.gnome.org/show_bug.cgi?id=762213

https://bugzilla.gnome.org/show_bug.cgi?id=795162
2018-10-10 15:35:31 -04:00
Tim-Philipp Müller
1a871b1883 meson: only build gtk gl examples if gst-gl was found
And fix typo in glliveshader example binary name.
2018-10-08 20:35:41 +01:00
Tim-Philipp Müller
553a479e89 examples: dist qt examples
https://bugzilla.gnome.org/show_bug.cgi?id=796968
2018-08-17 11:45:47 +01:00
Nirbheek Chauhan
ebcf3f5f63 meson: Add an option for tests
This is needed because we don't always have gstreamer-check available,
for instance inside Cerbero on iOS.
2018-08-17 00:31:14 +05:30
Nirbheek Chauhan
8f807477eb meson: Add feature options for all plugins
Checks for GL, Qt5, and C++ are still automagic. FIXMEs have been
added for these so they can be fixed later.

https://bugzilla.gnome.org/show_bug.cgi?id=795107
2018-07-27 18:42:54 +05:30
Nicolas Dufresne
cc38469f04 example: Build GTK and GTK GL example code 2018-07-19 22:59:11 -04:00
Havard Graff
ac6e77acad rtpsession: Don't start the RTCP thread until it's needed
Always wait with starting the RTCP thread until either a RTP or RTCP
packet is sent or received. Special handling is needed to make sure the
RTCP thread is started when requesting an early RTCP packet.

We want to wait with starting the RTCP thread until it's needed in order
to not send RTCP packets for an inactive source.

https://bugzilla.gnome.org/show_bug.cgi?id=795139
2018-07-12 18:37:33 +02:00
Matthew Waters
ee046864d8 qt: also check for un-suffixed moc
e.g. Qt windows installer doesn't have suffixes
2018-06-07 14:28:37 +10:00
Seungha Yang
aecc17251d tests: qtdemux: Add checking exposed segment event
https://bugzilla.gnome.org/show_bug.cgi?id=796480
2018-06-06 11:19:25 -04:00
Thiago Santos
0de143fa3e tests: qtdemux: Avoid using data beyond array and improve error msg
Makes it easier to debug the failures as well as prevents problems
reading out of bounds data.
2018-05-28 11:25:13 -07:00
Tim-Philipp Müller
48dd93662d tests: rtpstorage: fix potential crashes / test failures on 32-bit
Pass 64 bits to g_object_set() for 64-bit integer properties like
rtpstorage's "size-time" property.

https://bugzilla.gnome.org/show_bug.cgi?id=796429
2018-05-27 20:30:46 +01:00
Vivia Nikolaidou
d11339d616 splitmuxsink: Added new async-finalize mode
This mode is useful for muxers that can take a long time to finalize a
file. Instead of blocking the whole upstream pipeline while the muxer is
doing its stuff, we can unlink it and spawn a new muxer+sink combination
to continue running normally.

This requires us to receive the muxer and sink (if needed) as factories,
optionally accompanied by their respective properties structures. Also
added the muxer-added and sink-added signals, in case custom code has to
be called for them.

https://bugzilla.gnome.org/show_bug.cgi?id=783754
2018-05-24 12:47:24 +03:00
Havard Graff
77f3ce2e45 rtpsession: Add tests for PLI and FIR
https://bugzilla.gnome.org/show_bug.cgi?id=795139
2018-05-15 11:52:45 +01:00
Stian Selnes
457fdf95c4 rtpsession: Drop packet if trying to send from non-internal source
If obtain_internal_source() returns a source that is not internal it
means there exists a non-internal source with the same ssrc. Such an
ssrc collision should be handled by sending a GstRTPCollision event
upstream and choose a new ssrc, but for now we simply drop the packet.
Trying to process the packet further will cause it to be pushed
usptream (!) since the source is not internal (see source_push_rtp()).

https://bugzilla.gnome.org/show_bug.cgi?id=795139
2018-05-15 10:34:29 +01:00
Havard Graff
b43ee8f5b1 rtpsession: Try media_ssrc if no src can be found for PLI sender_ssrc
Some RTP stacks out there does not set the sender_ssrc. In order to be
more robust, try to lookup the media_ssrc before dropping the PLI.

https://bugzilla.gnome.org/show_bug.cgi?id=795139
2018-05-13 20:41:39 +01:00
Mikhail Fludkov
386ca1d378 rtpsession: Fix on-feedback-rtcp race
If there is an external source which is about to timeout and be removed
from the source hashtable and we receive feedback RTCP packet with the
media ssrc of the source, we unlock the session in
rtp_session_process_feedback before emitting 'on-feedback-rtcp' signal
allowing rtcp timer to kick in and grab the lock. It will get rid of
the source and rtp_session_process_feedback will be left with RTPSource
with ref count 0.

The fix is to grab the ref to the RTPSource object in
rtp_session_process_feedback.

https://bugzilla.gnome.org/show_bug.cgi?id=795139
2018-05-13 20:33:56 +01:00
John-Mark Bell
0a2b55ac3c rtpsession: do not emit RBs for internal senders.
These are the sources we send from, so there is no reason to
report receive statistics for them (as we do not receive on them,
and the remote side has no knowledge of them).

https://bugzilla.gnome.org/show_bug.cgi?id=795139
2018-05-13 19:16:59 +01:00
Havard Graff
cd8c12f240 tests: rtpsession: fix indentation
https://bugzilla.gnome.org/show_bug.cgi?id=795139
2018-05-13 19:09:29 +01:00
Seungha Yang
3f090be2d1 tests: qtdemux: Add test for stream change
Add test case to verify track-id change and stream change

https://bugzilla.gnome.org/show_bug.cgi?id=684790
2018-05-10 08:09:20 +02:00
Olivier Crête
168fae813b flvmux: Wait for caps from both srcs before writing header
Wait for caps on all pads to start writing data even when source is live.

Includes unit test by Havard Graff that simulates it.

https://bugzilla.gnome.org/show_bug.cgi?id=794722
2018-04-26 15:41:54 -04:00
Mathieu Duponchelle
90f5ae8f45 ulpfecdec: output perfect seqnums
ULP FEC, as defined in RFC 5109, has the protected and protection
packets sharing the same ssrc, and a different payload type, and
implies rewriting the seqnums of the protected stream when encoding
the protection packets. This has the unfortunate drawback of not
being able to tell whether a lost packet was a protection packet.

rtpbasedepayload relies on gaps in the seqnums to set the DISCONT
flag on buffers it outputs. Before that commit, this created two
problems:

* The protection packets don't make it as far as the depayloader,
  which means it will mark buffers as DISCONT every time the previous
  packets were protected

* While we could work around the previous issue by looking at
  the protection packets ignored and dropped in rtpptdemux, we
  would still mark buffers as DISCONT when a FEC packet was lost,
  as we cannot know that it was indeed a FEC packet, even though
  this should have no impact on the decoding of the stream

With this commit, we consider that when using ULPFEC, gaps in
the seqnums are not a reliable indicator of whether buffers should
be marked as DISCONT or not, and thus rewrite the seqnums on
the decoding side as well to form a perfect sequence, this
obviously doesn't prevent the jitterbuffer from doing its job
as the ulpfec decoder is downstream from it.

https://bugzilla.gnome.org/show_bug.cgi?id=794909
2018-04-19 18:17:39 +02:00
Sebastian Dröge
6d92fcd043 Revert "rtspsrc: Fix up sendonly/recvonly attribute handling"
This reverts commit af273b4de9.

While RFC 3264 (SDP) says that sendonly/recvonly are from the point of view of
the requester, the actual RTSP RFCs (RFC 2326 / 7826) disagree and say
the opposite, just like the ONVIF standard.

Let's follow those RFCs as we're doing RTSP here, and add a property at
a later time if needed to switch to the SDP RFC behaviour.

https://bugzilla.gnome.org/show_bug.cgi?id=793964
2018-04-17 17:58:01 +03:00
Matthew Waters
ca67a460ee meson: add build files for the qml plugin
Tested on linux with X11/wayland and semi-tested on Windows.

Windows crashes on item destruction however this is better than nothing.

Fix up some win32 build issues on the way with mismatched {} and
G_STMT_{START,END}
2018-04-15 23:49:57 +10:00
Mathieu Duponchelle
9b1aec0f79 flvmux test: refactor looped test.
Looping the test 500 times to only execute the test once every
33 times means we inited and deinited gstreamer 467 times
for no reason at all, which was annoying when running the test
with valgrind.
2018-04-13 23:02:26 +02:00
Mathieu Duponchelle
79f16d69af valgrind supps: ignore gnutls leaking a certificate
After investigating, we do dispose of the TLS connections
appropriately in the souphttpsrc test, which in turn
calls gnutls_deinit, but certificates get leaked anyway.
2018-04-13 21:28:44 +02:00
Mathieu Duponchelle
ec3c49e958 souphttpsrc test: free g_get_current_dir return 2018-04-13 20:35:24 +02:00
Mathieu Duponchelle
a9f01a88b8 valgrind supps: bring getaddrinfo suppression from -base 2018-04-13 20:31:07 +02:00
Mathieu Duponchelle
e74e1ec6bd valgrind supps: ignore more twolame conditional moves 2018-04-13 20:28:35 +02:00
Mathieu Duponchelle
cc9fe814d6 rtpulpfec tests: Fix leaks 2018-04-13 17:37:47 +02:00
Tim-Philipp Müller
503a854eff tests: remove broken and now pointless v4l2src-test
This tests APIs that don't exist any longer and also doesn't
work at all, and was last touched in a meaningful way in 2006.
2018-04-02 12:50:36 +01:00
Sebastian Dröge
ed2ccb1a60 rtp: Fix compilation with non-C99 compilers
By moving variable declarations out of loop headers.
2018-03-20 12:08:28 +02:00
Olivier Crête
96261ce220 flvmux: Duration & unit tests
The muxed buffers will not carry the duration of the
incoming buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=793457
2018-03-01 18:25:02 -05:00
Mathieu Duponchelle
b0dd092ea6 tests: fix redenc tests
The default of the allow-no-red-blocks property was changed in a
previous commit, thus breaking the test assumptions
2018-02-27 16:34:51 +01:00
Tim-Philipp Müller
7f6aa7c344 .gitignore more test binaries 2018-02-22 10:54:02 +00:00
Tim-Philipp Müller
4fbbf28558 tests: also dist new fec test header file 2018-02-21 20:46:10 +00:00
Mathieu Duponchelle
c8f442deb0 check: Fix ulpfec test build
The test name was updated but not the build definition
2018-02-21 18:51:17 +01:00
Mikhail Fludkov
d5ad50bd61 rtp: Implement ULPFEC (RFC 5109)
We expose a set of new elements:

* ULPFEC encoder / decoder
* A storage element, which should be placed before jitterbuffers,
  and is used to store packets in order to attempt reconstruction
  after the jitterbuffer has sent PacketLost events
* RED encoder / decoder (RFC 2198), these are necessary to
  use FEC in webrtc, as browsers will propose and expect ulpfec
  packets to be wrapped in red packets

With contributions from:

Mathieu Duponchelle <mathieu@centricular.com>
Sebastian Dröge <sebastian@centricular.com>

https://bugzilla.gnome.org/show_bug.cgi?id=792696
2018-02-21 14:15:22 +01:00
Tim-Philipp Müller
22ddef8ef4 examples: rtsp: fix meson build take 2 2018-02-16 09:42:59 +00:00
Sebastian Dröge
3e15b6651d rtsp: Fix meson.build of the example 2018-02-16 11:30:01 +02:00
Nirbheek Chauhan
befa41cdf6 rtspsrc: Implement ONVIF backchannel support
Set backchannel=onvif to enable, and use the 'push-backchannel-sample'
action signal with the correct stream id.
2018-02-16 11:06:27 +02:00
Tim-Philipp Müller
bbab8f79ad qt: hook up to build
https://bugzilla.gnome.org/show_bug.cgi?id=754094
2018-02-12 18:40:10 +00:00
Tim-Philipp Müller
6c75e6c5e0 Move qt plugin from -bad
https://bugzilla.gnome.org/show_bug.cgi?id=754094
2018-02-12 18:13:17 +00:00
Tim-Philipp Müller
eb29ffa36d gtk: hook up to meson build 2018-02-12 15:18:37 +00:00
Tim-Philipp Müller
9c21a17a9a gtk: hook up to autotools build 2018-02-10 13:33:42 +00:00
Tim-Philipp Müller
a12f8df0c6 Move gtk plugin from -bad
https://bugzilla.gnome.org/show_bug.cgi?id=754094
2018-02-10 12:49:36 +00:00
Tim-Philipp Müller
7ac08fd0a5 autotools: use -fno-strict-aliasing where supported
https://bugzilla.gnome.org/show_bug.cgi?id=769183
2018-02-05 08:25:45 +01:00
Jan Alexander Steffens (heftig)
54f312644e tests: aacparser: Test that short raw frames don't get concatenated
https://bugzilla.gnome.org/show_bug.cgi?id=792644
2018-01-18 19:09:25 +00:00
Mathieu Duponchelle
03dc22951b rtpbin: fix leak of elements requested by signals
When the signal returns a floating reference, as its return type
is transfer full, we need to sink it ourselves before passing
it to gst_bin_add (which is transfer floating).

This allows us to unref it in bin_remove_element later on, and
thus to also release the reference we now own if the signal
returns a non-floating reference as well.

As we now still hold a reference to the element when removing it,
we also need to lock its state and setting it to NULL before
unreffing it

Also update the request_aux_sender test.

https://bugzilla.gnome.org/show_bug.cgi?id=792543
2018-01-18 15:26:43 +01:00
Sebastian Rasmussen
0d57709d38 tests: udpsink: add check that sets QoS on IPv4/6 sockets
https://bugzilla.gnome.org/show_bug.cgi?id=757449
2017-12-23 12:45:11 +01:00
Olivier Crête
3bdb3a89c2 gtk example: Fix cflags in Makefile.am 2017-12-19 16:22:52 -05:00
Tim-Philipp Müller
2106bf0151 gl: update plugins to use GstGL from -base 2017-12-19 12:02:31 +00:00
fengalin
3464aac3c9 matroska: fix memory leaks due to toc related updates
https://bugzilla.gnome.org/show_bug.cgi?id=790686
2017-12-15 16:14:43 +02:00
Sebastian Dröge
c55824e4fa matroskamux: Fix various memory leaks in the unit test
https://bugzilla.gnome.org/show_bug.cgi?id=790686
2017-12-15 16:14:43 +02:00
fengalin
694c07fe63 matroska-mux: migrate test to gst_harness
... following the guide lines from Håvard Graff (see https://gstconf.ubicast.tv/videos/moar-better-tests/).

https://bugzilla.gnome.org/show_bug.cgi?id=790686
2017-12-15 16:14:43 +02:00
fengalin
a6702a76d5 matroska: re-activate and update TOC support
TOC support in mastroskamux has been deactivated for a couple of years. This commit updates it to recent GstToc evolutions and introduces toc unit tests for both matroska-mux and matroska-demux.

There are two UIDs for Chapters in Matroska's specifications:
- The ChapterUID is a mandatory unsigned integer which internally refers to a given chapter. Except for title & language which use dedicated fields, this UID can also be used to add tags to the Chapter. The tags come in a separate section of the container.
- The ChapterStringUID is an optional UTF-8 string which also uniquely refers to a chapter but from an external perspective. It can act as a "WebVTT cue identifier" which "can be used to reference a specific cue, for example from script or CSS".

During muxing, the ChapterUID is generated and checked for unicity, while the ChapterStringUID receives the user defined UID. In order to be able to refer to chapters from the tags section, we maintain an internal Toc tree with the generated ChapterUID.

When demuxing, the ChapterStringUIDs (if available) are assigned to the GstTocEntries UIDs and an internal toc mimicking the toc is used to keep track of the ChapterUIDs and match the tags with the appropriate GstTocEntries.

https://bugzilla.gnome.org/show_bug.cgi?id=790686
2017-12-15 16:14:43 +02:00
Sebastian Dröge
4f7b995ae7 v4l2src: Fix compiler error in example caused by re-declaring index
../tests/examples/v4l2/v4l2src-renegotiate.c:57:13: error: ‘index’ redeclared as different kind of symbol
 static gint index = 0;
             ^
2017-12-14 18:28:00 +02:00
Tim-Philipp Müller
c6b686624a tests: ignore rtph264 test binary 2017-12-09 16:15:24 +00:00
George Kiagiadakis
33bddfe321 tests: udpsrc: verify the correct amount of bytes is sent to the socket
https://bugzilla.gnome.org/show_bug.cgi?id=786799
2017-12-09 16:08:49 +00:00
George Kiagiadakis
ea7d2a0257 tests: udpsrc: ensure test won't timeout if the buffers are already received
Sometimes all the buffers are received before the time we lock the
check_mutex, in which case g_cond_wait will wait forever for another
one. Just check if this is the case before waiting.

https://bugzilla.gnome.org/attachment.cgi?id=358397
2017-12-09 16:08:38 +00:00
George Kiagiadakis
45c82ee798 tests: udpsrc: fix test_udpsrc to actually run and fix locking
Previously this would silently be skipped because 1600 != 1400
and there is no assertion on this call.

Also unlock check_mutex after use.

https://bugzilla.gnome.org/show_bug.cgi?id=786799
2017-12-09 16:05:28 +00:00
Haakon Sporsheim
3c0d006c03 rtpsession: Handle zero length feedback packets
https://bugzilla.gnome.org/show_bug.cgi?id=791074
2017-12-02 13:58:34 +00:00
Havard Graff
96d837b301 tests: rtpsession: refactor tests to use GstHarness
This patch simplifies the tests (44% less code) and
makes them much more readable.

The provided SessionHarness also makes it much easier
to write new tests for rtpsession.

https://bugzilla.gnome.org/show_bug.cgi?id=791070
2017-12-02 13:05:01 +00:00
Jan Schmidt
76e458a119 splitmuxsink: Use muxer reserved space properties if present.
If the use-robust-muxing property is set, check if the
assigned muxer has reserved-max-duration and
reserved-duration-remaining properties, and if so set
the configured maximum duration to the reserved-max-duration
property, and monitor the remaining space to start
a new file if the reserved header space is about to run out -
even though it never ought to.
2017-11-25 00:56:11 +11:00
Jan Schmidt
3a813a0dcc splitmux: Fix file switch-on-caps-change.
Switching to a new fragment because the input caps have
changed didn't properly end the previous file. Use the normal
EOS sequence to ensure that happens. Add a test that it works.
2017-11-24 16:56:03 +11:00
Tim-Philipp Müller
bca8ac2cf0 tests: rtp-payloading: add unit test for rtph264pay codec_data
Make sure no trailing zero bytes sneak into our SPS or PPS.

https://bugzilla.gnome.org/show_bug.cgi?id=732758
2017-11-23 09:36:15 +01:00
Tim-Philipp Müller
a9e57f3608 tests: rtph264depay: add test for using downstream memory allocator 2017-11-23 09:36:00 +01:00
Nicolas Dufresne
3ea2621036 v4l2-renegotiate: Don't leak the option context 2017-09-13 11:38:44 -04:00
Nicolas Dufresne
22a5f56f2a v4l2src-renegotiate: Don't leak pipeline desc string 2017-09-13 11:33:33 -04:00
Nicolas Dufresne
3975e87136 v4l2-renegotiate: Change --enable-dmabuf into --io-mode=
This gives allow testing dmabuf importation but also exportation buy
letting user pick anything from the io-mode property on v4l2src.
2017-09-13 11:32:09 -04:00
Tim-Philipp Müller
ccd15c0dfd tests: mpg123audiodec: add files needed by unit tests 2017-08-26 12:59:35 +01:00
Tim-Philipp Müller
9cc395a589 tests: add basic unit test for twolame as well 2017-08-26 10:10:19 +01:00
Tim-Philipp Müller
60b6128d0c tests: lame: fix build 2017-08-26 09:59:22 +01:00
Tim-Philipp Müller
8fe7dbf8ef tests: ignore another binary 2017-08-26 09:52:33 +01:00
Tim-Philipp Müller
1473b662de lame: hook up to build system
https://bugzilla.gnome.org/show_bug.cgi?id=774252
2017-08-26 09:14:55 +01:00
Tim-Philipp Müller
53ec444963 Moving lame mp3 encoder plugin from -ugly
https://bugzilla.gnome.org/show_bug.cgi?id=774252
2017-08-25 21:13:58 +01:00
Julien Isorce
a4d74fda9a gl: do not include GL headers in public gstgl headers
Except for gst/gl/gstglfuncs.h

It is up to the client app to include these headers.
It is coherent with the fact that gstreamer-gl.pc does not
require any egl.pc/gles.pc. I.e. it is the responsability
of the app to search these headers within its build setup.

For example gstreamer-vaapi includes explicitly EGL/egl.h
and search for it in its configure.ac.

For example with this patch, if an app includes the headers
  gst/gl/egl/gstglcontext_egl.h
  gst/gl/egl/gstgldisplay_egl.h
  gst/gl/egl/gstglmemoryegl.h
it will *no longer* automatically include EGL/egl.h and GLES2/gl2.h.
Which is good because the app might want to use the gstgl api only
without the need to bother about gl headers.

Also added a test: cd tests/check && make libs/gstglheaders.check

https://bugzilla.gnome.org/show_bug.cgi?id=784779
2017-08-22 10:00:19 +01:00
Thibault Saunier
97b58bd263 meson: Link mpeg123audiodec test against gstfft
Fixing build error:

/run/build/gst-plugins-good/_flatpak_build/../tests/check/elements/mpg123audiodec.c:150: undefined reference to `gst_fft_s32_new'
/run/build/gst-plugins-good/_flatpak_build/../tests/check/elements/mpg123audiodec.c:151: undefined reference to `gst_fft_s32_window'
/run/build/gst-plugins-good/_flatpak_build/../tests/check/elements/mpg123audiodec.c:151: undefined reference to `gst_fft_s32_fft'
/run/build/gst-plugins-good/_flatpak_build/../tests/check/elements/mpg123audiodec.c:147: undefined reference to `gst_fft_s32_free'
2017-08-20 20:41:20 -03:00
Tim-Philipp Müller
32591f5649 tests: tagschecking: remove gst-check-xmp-* temp files when done
Also fix temp file creation a bit.
2017-08-20 17:25:25 +01:00
Tim-Philipp Müller
5547901a37 mpg123: hook up to build system
https://bugzilla.gnome.org/show_bug.cgi?id=774252
2017-08-20 15:50:22 +01:00
Tim-Philipp Müller
4b1f43ebe3 Moving mpg123 plugin from -ugly 2017-08-20 13:48:48 +01:00
Tim-Philipp Müller
81e5b0bdee tests: icles: fix build
Can't do additions/subtractions on void* pointers.
2017-07-21 19:02:26 +01:00
Thibault Saunier
b028d91439 tests:icles: Fix previous patch by implementing our memmem
Using the string version of it will fail on '\0'.
2017-07-21 11:10:00 -04:00
Thibault Saunier
7e8fe2844b tests:icles: Do not use memmem GNU extension function
As it is not avalaible on windows/msvc and we can use pure GLib for that
2017-07-21 10:19:37 -04:00
Sebastian Dröge
7e718d6039 Revert "matroskamux: adjust unit test to modified behaviour"
This reverts commit 8fe478c8a7.

We're back to previous behaviour
2017-07-18 10:08:33 +03:00
Reynaldo H. Verdejo Pinochet
3cfec119b1 examples: v4l2: fix wrong initializations brought by 4e8ad58302
https://bugzilla.gnome.org/show_bug.cgi?id=682770
2017-07-07 23:53:01 -07:00
Nicolas Dufresne
4e8ad58302 examples: v4l2: add example for v4l2src renegotiation
Based on work from Thiago Santos <thiagoss@osg.samsung.com>

https://bugzilla.gnome.org/show_bug.cgi?id=682770
2017-07-07 17:19:17 -04:00
Tim-Philipp Müller
e5f3e2268d tests: rtpbin: fix build in uninstalled setup 2017-07-05 14:44:41 +01:00
Olivier Crête
96e71b0286 rtpsession: Send EOS if all internal sources sent bye
The ones which are not internal should not matter, and we should
wait for all sources to have sent their BYEs.

And add unit test

https://bugzilla.gnome.org/show_bug.cgi?id=773218
2017-07-04 21:14:10 -04:00
Jan Alexander Steffens (heftig)
aa8ac28d86 tests: souphttpsrc: Avoid deprecated ssl-ca-file property
SoupSession's ssl-ca-file property is deprecated. Use the recommended
tls-database property.

This is a bit more complex as it requires creating a GTlsFileDatabase
object for an absolute (!) path to the CA certificates file.

https://bugzilla.gnome.org/show_bug.cgi?id=784005
2017-06-29 15:32:30 -04:00
Jan Alexander Steffens (heftig)
9922091f1b tests: souphttpsrc: Avoid deprecated server ssl properties
The ssl-cert-file and ssl-key-file properties are deprecated. Use the
soup_server_set_ssl_cert_file function to load the files.

https://bugzilla.gnome.org/show_bug.cgi?id=784005
2017-06-29 15:32:30 -04:00
Jan Alexander Steffens (heftig)
27a0ea8cf5 tests: souphttpsrc: Make ssl_cert/key_file static
Just a bit of cleanup.

https://bugzilla.gnome.org/show_bug.cgi?id=784005
2017-06-29 15:32:30 -04:00
Jan Alexander Steffens (heftig)
e63a12c77d tests: souphttpsrc: Update test-cert.pem
Recent GnuTLS disregards the Common Name and only looks at the Subject
Alternative Name extension. Since our test-cert has no SAN extension,
validation fails.

Generate a new certificate with SAN. In addition to 127.0.0.1, for good
measure make it valid for localhost and ::1, too.

https://bugzilla.gnome.org/show_bug.cgi?id=784005
2017-06-29 15:32:30 -04:00
Tim-Philipp Müller
9f678898f8 meson: build examples
https://bugzilla.gnome.org/show_bug.cgi?id=784134
2017-06-26 11:10:29 +01:00
Tim-Philipp Müller
0fd4a11711 meson: tests: icles: simplify build file 2017-06-26 09:39:13 +01:00
Tim-Philipp Müller
57a6e2ffd4 meson: build tests/icles/
https://bugzilla.gnome.org/show_bug.cgi?id=784134
2017-06-26 00:22:56 +01:00
Tim-Philipp Müller
dd23afb6d4 sys: remove sunaudio plugin
Even though hooked up to the build system, it's clear that no one
has ever built or used this with GStreamer 1.x. It wants to link
against libgstinterfaces, which no longer exists. And uses 0.10-style
raw audio caps. And the last meaningful change was done in 2009.
Let's just remove it.
2017-06-23 20:02:43 +01:00
Jan Schmidt
de26b9e5f3 qmlsink example: Add CMakeLists.txt
Make it possible to build using cmake instead of qmake
2017-06-22 01:01:40 +10:00
Thibault Saunier
d3cbea0919 meson: Do not use path separator in test names
Avoiding warnings like:

    WARNING: Target "elements/audioamplify" has a path separator in its name.
2017-06-07 12:47:59 -04:00
Nicolas Dufresne
e937a8856d Fix v4l2 example 2017-06-06 11:30:07 -04:00
Tim-Philipp Müller
c35292505b meson: add options to set package name and origin
https://bugzilla.gnome.org/show_bug.cgi?id=782172
2017-05-20 14:53:42 +01:00
Tim-Philipp Müller
4df3669c0c tests: rtp-payloading: add test for rtph264depay avc/byte-stream output
Make sure avc output doesn't contain SPS/PPS inline, but
byte-stream output does.
2017-04-24 17:31:04 +01:00
Edward Hervey
7e9b7658e5 tests: Add vp9enc to gitignore 2017-04-12 11:33:05 +02:00
George Kiagiadakis
21f532f1c6 tests/check/rtprtx: add checks for rtprtxqueue's max-size-{time,packets} properties
https://bugzilla.gnome.org/show_bug.cgi?id=780867
2017-04-11 09:44:33 +03:00
Vincent Penquerc'h
d7212dac2e tests: fix leak in splitmux test
https://bugzilla.gnome.org/show_bug.cgi?id=781025
2017-04-09 11:19:56 +03:00
Thibault Saunier
a7be8815b5 meson: Use get_pkgconfig_variable instead of calling pkg-config ourself
It is avalaible in meson 0.36 which is now are requirement
2017-03-28 14:23:16 -03:00
Thibault Saunier
8fab61bd22 meson: test: Fix environment object usage 2017-03-28 11:22:21 -03:00
Olivier Crête
d9cd0e2e44 pulse example: Remove
That example only tested the property probe interface, which has been removed.
The same kind of thing can now be done with the generic gst-device-monitor tool.
2017-03-14 16:42:25 -04:00
Jan Schmidt
57939fd98a splitmux test: Use passed first/last timestamps
Don't hard-code the expected timestamp range, use the
values the caller is passing in.
2017-03-14 15:48:08 +11:00
Nicolas Dufresne
27303b5904 tests: Add missing LDADD for libm in tests using math.h
Also, remove the math.h include for the one that just prentend to need
it.
2017-03-08 22:55:09 -05:00
Jan Schmidt
4335c4c160 splitmux: Add unit test for reverse playback
Ensure that reverse playback works and generates the range
of timestamps (0-3s) we expect, in monotonically descending order.
2017-03-04 00:35:32 +11:00
Edward Hervey
4ac5abcdb9 check: Fix splitmux test CFLAGS
Needs to know where the gstapp headers are
2017-02-28 11:02:54 +01:00
Sebastian Dröge
eefcdc9ee1 rtp-payloading: Add new test for Vorbis renegotiation
Check if encoding, payloading, depayloading and decoding works if the
stream configuration (and thus the headers) change.
2017-02-27 19:25:35 +02:00
George Kiagiadakis
e6bd2a5c18 tests: splitmux: add unit test for content with sparse streams
https://bugzilla.gnome.org/show_bug.cgi?id=761086
2017-02-27 12:58:21 +02:00
Guillaume Desmottes
0f719af307 tests: matroskamux, qtmux: don't add codec_data buffers to template caps
streamheader and codec_data buffers fields are only meant to be
in the negotiated caps, not the template caps.

Fixes false-positive leaks of those buffers detected by the leaks
tracer, as template caps are static, and we decided to not include
code in gstreamer core to handle this unusual case of template caps
having buffers in them.

https://bugzilla.gnome.org/show_bug.cgi?id=768762
2017-02-21 15:47:16 +00:00
Søren Juul
1184429e21 icydemux: reset tags on empty value
Some radio streams uses StreamTitle='' to reset the title after a
track stopped playing, e.g. while the host talks between tracks or
during news segments.
This change forces an empty tag object to be distributed if
StreamTitle or StreamUrl is received with empty value, thus allowing
downstream elements to get notified about this.

https://bugzilla.gnome.org/show_bug.cgi?id=778437
2017-02-14 12:24:13 +02:00
Sebastian Dröge
9f5fe2673e rtp: Remove unused variable in example
client-PCMA.c:84:22: warning: unused variable 'isrc' [-Wunused-variable]
  GObject *session, *isrc, *osrc;
                     ^
2017-01-25 20:56:24 +02:00
Thibault Saunier
44f09d74ff meson: Properly use ':' for defining keywords 2017-01-24 19:24:52 -03:00
Juan Pablo Ugarte
efa2ed59c7 gl/examples/gtk: fixed compilation on systems without GL_GEOMETRY_SHADER
https://bugzilla.gnome.org/show_bug.cgi?id=777143
2017-01-13 11:20:51 +11:00
Tim-Philipp Müller
781b5ac781 tests: rtpjitterbuffer: fix compiler warning due to c99-ism
rtpjitterbuffer.c:592:3: error: ‘for’ loop initial declarations are only allowed in C99 mode
2017-01-09 19:04:04 +00:00
Jan Schmidt
f7009eb5d7 splitmuxsink: Add format-location-full signal
Add a new signal for formatting the filename, which receives
a GstSample containing the first buffer from the reference
stream that will be muxed into that file.

Useful for creating filenames that are based on the
running time or other attributes of the buffer.

To make it work, opening of files and setting filenames is
now deferred until there is some data to write to it,
which also requires some changes to how async state changes
and gap events are handled.
2017-01-03 01:34:02 +11:00
Edward Hervey
3a4d4dcd27 check: Remove dead code 2017-01-02 15:06:33 +01:00
Nicola Murino
8fe478c8a7 matroskamux: adjust unit test to modified behaviour
Now matroskamux mark all packets of audio-only streams as keyframes so
in test_block_group after pushing the test audio data 4 buffers are produced
and not more 2. The last buffer is the original data and must match with what
pushed. The remaining ones are matroskamux headers

https://bugzilla.gnome.org/show_bug.cgi?id=754696
2016-12-21 16:58:42 +00:00
Havard Graff
0a81f71df5 tests/jitterbuffer: Major refactoring and cleanups
* Changed PCMU->TEST for common macros
* Changed verify-functions (lost & rtx) into macros.
* Remove option to add marker-bit for test-buffers (not used anywhere)
* Add new push_test_buffer function that makes sure there are correlation
  between dts and the time on the clock. (classic test-mistake)
* Established a generic starting-point for tests with the
  construct_deterministic_initial_state function and use it where
  applicable, which removes lots of "boilerplate" everywhere.
* Add basic lost-event test
* Remove as much "magic constants" as possible.
* Remove 3 tests that no longer are testing anything that others don't,
  and was completely unmaintainable.
* Remove unnecessary use of the testclock
* Verify each test is testing what it actually says it does (and modify
  where it doesn't)

In general, make the tests much smaller, better, more maintainable and
readable.

https://bugzilla.gnome.org/show_bug.cgi?id=774409
2016-12-14 15:00:37 +02:00
Sebastian Dröge
63938ef730 gst: Don't declare variables inside the for loop header
This is a C99 feature.
2016-12-13 22:32:46 +02:00
Matthew Waters
6ce990d24e tests/examples/qmlsink: scope QApplication/Engine
So they are destroyed before gst_deinit() is run and the leaks tracer
doesn't show false-positives.

https://bugzilla.gnome.org/show_bug.cgi?id=775746
2016-12-07 23:02:02 +11:00
Philippe Normand
dcd3ce9751 rtpbin: receive bundle support
A new signal named on-bundled-ssrc is provided and can be
used by the application to redirect a stream to a different
GstRtpSession or to keep the RTX stream grouped within the
GstRtpSession of the same media type.

https://bugzilla.gnome.org/show_bug.cgi?id=772740
2016-11-16 08:56:34 +01:00
Havard Graff
1a4393fb4d rtpjitterbuffer: fix timer-reuse bug
When doing rtx, the jitterbuffer will always add an rtx-timer for the next
sequence number.

In the case of the packet corresponding to that sequence number arriving,
that same timer will be reused, and simply moved on to wait for the
following sequence number etc.

Once an rtx-timer expires (after all retries), it will be rescheduled as
a lost-timer instead for the same sequence number.

Now, if this particular sequence-number now arrives (after the timer has
become a lost-timer), the reuse mechanism *should* now set a new
rtx-timer for the next sequence number, but the bug is that it does
not change the timer-type, and hence schedules a lost-timer for that
following sequence number, with the result that you will have a very
early lost-event for a packet that might still arrive, and you will
never be able to send any rtx for this packet.

Found by Erlend Graff - erlend@pexip.com

https://bugzilla.gnome.org/show_bug.cgi?id=773891
2016-11-04 16:56:56 +02:00
Havard Graff
fb9c75db36 rtpjitterbuffer: fix lost-event using dts instead of pts
The lost-event was using a different time-domain (dts) than the outgoing
buffers (pts). Given certain network-conditions these two would become
sufficiently different and the lost-event contained timestamp/duration
that was really wrong. As an example GstAudioDecoder could produce
a stream that jumps back and forth in time after receiving a lost-event.

The previous behavior calculated the pts (based on the rtptime) inside the
rtp_jitter_buffer_insert function, but now this functionality has been
refactored into a new function rtp_jitter_buffer_calculate_pts that is
called much earlier in the _chain function to make pts available to
various calculations that wrongly used dts previously
(like the lost-event).

There are however two calculations where using dts is the right thing to
do: calculating the receive-jitter and the rtx-round-trip-time, where the
arrival time of the buffer from the network is the right metric
(and is what dts in fact is today).

The patch also adds two tests regarding B-frames or the
“rtptime-going-backwards”-scenario, as there were some concerns that this
patch might break this behavior (which the tests shows it does not).
2016-11-04 16:51:20 +02:00
Havard Graff
bea35f97c8 rtpjitterbuffer: fix bug in reschedule_timer
The new timeout is always going to be (timeout + delay), however, the
old behavior compared the current timeout to just (timeout), basically
being (delay) off.

This would happen if rtx-delay == rtx-retry-timeout, with the result that
a second rtx attempt for any buffers would be scheduled immediately instead
of after rtx-delay ms.

Simply calculate (new_timeout = timeout + delay) and then use that instead.

https://bugzilla.gnome.org/show_bug.cgi?id=773905
2016-11-04 16:40:14 +02:00
Tim-Philipp Müller
752dd15c54 tests: wavparse: add test for processing an actual .wav file
https://bugzilla.gnome.org/show_bug.cgi?id=773861
2016-11-03 15:42:29 +02:00
Havard Graff
78ab8cbdcd rtph263ppay: Fix caps leak
Fix leaking caps when downstream has not-fixed caps.

https://bugzilla.gnome.org/show_bug.cgi?id=773515
2016-11-01 20:20:47 +02:00
Nirbheek Chauhan
5c152314de Revert "meson: move gstreamer-check-1.0 dependency to tests/check"
This reverts commit 4663269466.

Does not actually work. See:
https://bugzilla.gnome.org/show_bug.cgi?id=773114#c31
2016-10-25 11:47:22 +05:30
Tim-Philipp Müller
6beadb9062 meson: fix build outside of gst-all 2016-10-24 00:34:15 +01:00
Scott D Phillips
4663269466 meson: move gstreamer-check-1.0 dependency to tests/check
https://bugzilla.gnome.org/show_bug.cgi?id=773114
2016-10-21 06:01:10 -03:00
Tim-Philipp Müller
834339b773 tests: videomixer: disable racy flush_start_flush_stop test
It's been broken for years, and it's unlikely it will ever
be fixed for collectpads/videomixer now that there's compositor
which works fine. So let's disable it, since all it does
is that it creates noise that distracts from other failures.

Also see the corresponding adder bug as it failed in the same way:
 https://bugzilla.gnome.org/show_bug.cgi?id=708891
2016-10-20 22:08:14 +01:00
Jan Alexander Steffens (heftig)
6deab72e10 tests: Fix souphttpsrc tests without CK_FORK=no
It seems that the forked processes all attempt to handle the listening
socket from the server, and only one has to shutdown the socket to break
the server completely.

Create a new server inside each test to avoid this.

https://bugzilla.gnome.org/show_bug.cgi?id=772656
2016-10-20 13:29:07 +03:00
Jan Alexander Steffens (heftig)
22ced681af tests: Fix level test in CK_FORK=no mode
The tests accumulate buffers in GstCheck's buffers list, and the list is
not (consistently) reset between tests. Do that and remove the now
conflicting unrefs for outbuffers.

https://bugzilla.gnome.org/show_bug.cgi?id=772644
2016-10-20 13:23:30 +03:00
Thibault Saunier
887a5911f5 meson: Make use of new environment object and set plugin path to builddir
Workaround source_root being the root directory of all projects in the subproject
case and remove now unneeded getpluginsdir

Bump meson requirement to 0.35
2016-10-11 02:09:04 +02:00
Gaurav Gupta
6542edd909 tests: Fix memory leak in test rtpaux test
https://bugzilla.gnome.org/show_bug.cgi?id=772496
2016-10-06 13:23:28 +03:00
Thibault Saunier
b910ecca68 meson: Setup pre commit hook and fix getpluginsdir for standalone case 2016-09-30 12:57:51 -03:00
Arun Raghavan
153b716490 tests: Fix tagschecking failure due to missing PTS
qtmux now needs the PTS (commit a993883b7), so let's make sure we
produce one with our buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=772228
2016-09-30 13:25:10 +05:30
Tim-Philipp Müller
7f294ad125 meson: tests: fix vp8 availability checks
Those variables are not defined if vp8 was not found.
2016-09-27 12:41:21 +01:00
Thibault Saunier
375f3aab89 meson: Add gst-plugins-base plugins directories to be used by tests 2016-09-26 13:22:29 -03:00
Tim-Philipp Müller
787f47604d meson: add unit tests
Only works properly in an installed setup currently, most
likely won't work with a subprojects setup yet.
2016-09-26 14:31:09 +01:00
Tim-Philipp Müller
e6d188967a tests: fix indentation 2016-09-15 09:53:07 +01:00
Havard Graff
f440b074b1 rtpjitterbuffer: improved rtx-rtt averaging
The basic idea is this:
1. For *larger* rtx-rtt, weigh a new measurement as before
2. For *smaller* rtx-rtt, be a bit more conservative and weigh a bit less
3. For very large measurements, consider them "outliers"
   and count them a lot less

The idea being that reducing the rtx-rtt is much more harmful then
increasing it, since we don't want to be underestimating the rtt of the
network, and when using this number to estimate the latency you need for
you jitterbuffer, you would rather want it to be a bit larger then a bit
smaller, potentially losing rtx-packets. The "outlier-detector" is there
to prevent a single skewed measurement to affect the outcome too much.
On wireless networks, these are surprisingly common.

https://bugzilla.gnome.org/show_bug.cgi?id=769768
2016-09-14 19:37:50 -04:00
Stian Selnes
f8238f0a9f rtpjitterbuffer: Detect whether to assume equidistant spacing when loss
Assuming equidistant packet spacing when that's not true leads to more
loss than necessary in the case of reordering and jitter. Typically this
is true for video where one frame often consists of multiple packets
with the same rtp timestamp. In this case it's better to assume that the
missing packets have the same timestamp as the last received packet, so
that the scheduled lost timer does not time out too early causing the
packets to be considered lost even though they may arrive in time.

https://bugzilla.gnome.org/show_bug.cgi?id=769768
2016-09-14 19:37:50 -04:00
Stian Selnes
2eb7383816 rtpjitterbuffer: Don't request rtx if 'now' is past retry period
There is no need to schedule another EXPECTED timer if we're already
past the retry period. Under normal operation this won't happen, but if
there are more timers than the jitterbuffer is able to process in
real-time, scheduling more timers will just make the situation worse.
Instead, consider this packet as lost and move on. This scenario can
occur with high loss rate, low rtt and high configured latency.

https://bugzilla.gnome.org/show_bug.cgi?id=769768
2016-09-14 19:37:50 -04:00
Stian Selnes
ab49dfd0b2 rtpjitterbuffer: Fix lost duration when gap after lost timer
This patch fixes an issue with the estimated gap duration when there is
a gap immediately after a lost timer has been processed. Previously
there was a discrepancy beteen the gap in seqnum and gap in dts which
would cause wrong calculated duration. The issue would only be seen with
retranmission enabled since when it's disabled lost timers are only
created when a packet is received and the actual gap length and last dts
is known.

https://bugzilla.gnome.org/show_bug.cgi?id=769768
2016-09-14 19:37:50 -04:00
Havard Graff
8087a8a31c rtpjitterbuffer: Improved expected-timer handling when gap > 0
https://bugzilla.gnome.org/show_bug.cgi?id=769768
2016-09-14 19:37:50 -04:00
Stian Selnes
38a7545003 rtpjitterbuffer: Major improvements for RTX stats
Stats should also be collected for unsuccessful packets.

rtx-rtt is very important for determining the necessary configured
latency on the jitterbuffer. It's especially important to be able to
increase the latency when retransmitted packets arrive too late and are
considered lost. This patch includes these late packets in the
calculation of the various rtx stats, making them more correct and
useful.

Also in the case where the original packet arrives after a NACK is sent,
the received RTX packet should update the stats since it provides useful
information about RTT.

The RTT is only updated if and only if all requested retranmissions are
received. That way the RTT is guaranteed to make sense. If not we don't
know which request the packet is a response to and the RTT may be bogus.
A consequence of this patch is that RTT is not updated for a request
when one of the RTX packets for that seqnum is lost, but that since
measured RTT will be more accurate.

The implementation store the RTX information from the timed out timers
and use this when the retransmitted packet arrives. For performance
these timers are stored separately from the "normal" timers in order to
not impact performance (see attached performance test).

https://bugzilla.gnome.org/show_bug.cgi?id=769768
2016-09-14 19:37:50 -04:00
Havard Graff
1b868cc9b1 rtpjitterbuffer: Add and expose more stats and increase testing of it
Add num-pushed and num-lost.
Expose num-late, num-duplicates and avg-jitter.

https://bugzilla.gnome.org/show_bug.cgi?id=769768
2016-09-14 19:37:50 -04:00
Sebastian Dröge
63b0e519fa tests/examples: #define GDK_DISABLE_DEPRECATION_WARNINGS
We use gdk_cairo_create() which is deprecated since 3.22.
2016-09-01 10:59:51 +03:00
Josep Torra
d40f007d61 gitignore: ignore qtdemux, rtph261 and rtpvp9 tests 2016-08-26 21:32:07 +02:00
Josep Torra
8f89d2a439 tests: use GST_NET_LIBS instead of hardcoded -lgstnet
Fixes build in OSX when running 'make check' in gst-uninstalled.
2016-08-26 21:22:16 +02:00
Josep Torra
ccc7d7e5a3 tests: remove a wrong 'const' specifier
Fixes "error: duplicate 'const' declaration specifier"
2016-08-26 21:14:47 +02:00
Josep Torra
77585fdade build: silence error about pthread for 'make check' in osx
Fixes "clang: error: argument unused during compilation: '-pthread'"
2016-08-26 21:11:59 +02:00
Sebastian Dröge
bc99a86472 vp9enc: Fix build of unit test by letting it link to libgstvideo 2016-08-26 20:31:10 +03:00
Stian Selnes
8bf77e34f2 rtpvp9depay: Support flexible mode 2016-08-26 11:57:15 -04:00
Stian Selnes
195d181828 vp9enc: Fix leak of vpx_image_t 2016-08-26 11:57:15 -04:00
Stian Selnes
5f3b570d53 rtph263pdepay: Don't try to push empty frame
If the result of depayloading is an empty frame, just drop it. This is
likely the result of a buggy payloader.
2016-08-26 11:57:15 -04:00
Stian Selnes
11b7575cff rtph263pdepay: Fix picture header for non-writable payload
Under certain conditions gst_rtp_buffer_get_payload() returns a copy of
the payload. In this case the payload modifications will not affect the
rtp buffer. So instead of modifying the payload buffer directly we
should modify the buffer that actually gets pushed on the adapter.
2016-08-26 11:53:22 -04:00
Stian Selnes
793327cce2 rtph261depay: Fix check of valid payload length
Packets with no H.261 payload should be dropped to avoid invalid
write/reads.
2016-08-26 11:53:22 -04:00
Stian Selnes
64f9d08d3d rtph263pay: Fix double free, invalid reads and leak 2016-08-26 11:53:22 -04:00
Mikhail Fludkov
880f494050 tests/rtprtx: refactor the tests to use gstharness
The functionality of all the tests was kept exactly the same. Some tests
were renamed:
test_push_forward_seq -> test_rtxsend_rtxreceive
test_drop_one_sender -> test_rtxsend_rtxreceive_with_packet_loss
test_drop_multiple_sender -> test_multi_rtxsend_rtxreceive_with_packet_loss

test_rtxreceive_data_reconstruction was testing that retransmitted
buffer produced by rtxsend was correctly transformed to the original
buffer by rtxreceive. Now we are checking for this in all the tests
where both rtxsend & rtxreceive are involved. That's why the test was
removed.
2016-08-25 18:21:10 -04:00
Nirbheek Chauhan
b09f478e80 Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.
2016-08-20 11:21:12 +01:00
Sebastian Dröge
a1eefe23de rtpjitterbuffer: Fix unit test by disabling adaptive misorder/dropout calculations
Need to set max-misorder-time and max-dropout-time to 0 so the
jitterbuffer does not base them on packet rate calculations.
If it does, out gap is big enough to be considered a new stream and
we wait for a few consecutive packets just to be sure

https://bugzilla.gnome.org/show_bug.cgi?id=751311
2016-08-18 09:58:58 +03:00
Haihua Hu
2ae2b7fa80 qmlglsrc: Add qmlglsrc unit test example
https://bugzilla.gnome.org/show_bug.cgi?id=768160
2016-08-03 22:11:11 +10:00
Sebastian Dröge
ac35df33e0 qml: Don't forget to unref the actual sink element after setting it on glsinkbin 2016-07-22 17:00:14 +03:00
Sebastian Dröge
f7ee11f68b qml: Use glsinkbin instead of glupload directly 2016-07-22 16:57:45 +03:00
Guillaume Desmottes
7da2bac2e3 tests: qtdemux: fix element and pad leak
https://bugzilla.gnome.org/show_bug.cgi?id=768739
2016-07-18 10:54:59 +01:00
Guillaume Desmottes
94232da665 tests: fix bus leaks
gst_bus_add_signal_watch() takes a ref on the bus which should be
released using gst_bus_remove_signal_watch().

https://bugzilla.gnome.org/show_bug.cgi?id=768739
2016-07-18 10:53:19 +01:00
Olivier Crête
a390a6791c rtp example: Fix leak
Also stop fetching the internal source as this
functionality has been broken.
2016-07-11 11:59:21 -04:00
Jonas Holmberg
833c530553 rtph265pay: Accept array_completeness=1
When parsing NAL unit type in codec_data, check the 6bits of
NAL_unit_type only and do not require the array_completeness bit to be
0, since the default and mandatory value of array_completeness is 1 for
hvc1.

https://bugzilla.gnome.org/show_bug.cgi?id=768653
2016-07-11 11:49:41 +03:00
Jonas Holmberg
a06152c40a rtph265pay/depay: Sync against RFC 7798
Handle sprop-vps, sprop-sps and sprop-pps in caps instead of
sprop-parameter-sets.

rtph265pay works with byte-stream and hvc1 formats but not hev1 yet. It
handles profile-id, tier-flag and level-id in caps query.

https://bugzilla.gnome.org/show_bug.cgi?id=753760
2016-07-07 14:59:50 +03:00
Sebastian Dröge
6289280535 qtmux: Use complete AAC caps with codec_data in the tests 2016-07-04 17:45:40 +02:00
Edward Hervey
e3923df800 qtdemux: Handle upstream GAP in push-mode/time segment
This is to handle cases where upstream handles the fragmented streaming in TIME
segments and sends us data with gaps within fragments. This would happen when dealing
with trick-modes.

When upstream (push-based, TIME SEGMENT) wishes to send discontinuous samples,
it must obey the following rules:
* The buffer containing the [moof] must have a valid GST_BUFFER_OFFSET
* The buffers containing the first sample after a gap:
 * MUST start at the beginning of a sample,
 * MUST have the DISCONT flag set,
 * MUST have a valid GST_BUFFER_OFFSET relative to the beginning of the fragment.

https://bugzilla.gnome.org/show_bug.cgi?id=767354
2016-07-01 14:21:04 +02:00
Tim-Philipp Müller
c68b7f944a tests: splitmux: skip tests if theora or ogg plugins are not available
https://bugzilla.gnome.org/show_bug.cgi?id=767861
2016-06-21 17:54:21 +01:00
Guillaume Desmottes
6ae9c23fa3 fix buffer leaks in tests
Need to call gst_check_drop_buffers() to release the buffers exchanged
during the test.

https://bugzilla.gnome.org/show_bug.cgi?id=766561
2016-06-21 10:51:08 +03:00
Guillaume Desmottes
fb41b307a6 interleave: fix message leaks in test
Flush the bus when cleaning up so pending messages are destroyed.

https://bugzilla.gnome.org/show_bug.cgi?id=766561
2016-06-21 10:51:08 +03:00
Guillaume Desmottes
23c8f7128b videomixer: fix event leaks in test
https://bugzilla.gnome.org/show_bug.cgi?id=766561
2016-06-21 10:51:08 +03:00
Guillaume Desmottes
c7621e24ec deinterleave: fix leaks
- Flush the bus so messages aren't leaked
- Fix pad leak

https://bugzilla.gnome.org/show_bug.cgi?id=766561
2016-06-21 10:51:08 +03:00
Sebastian Dröge
6cb4208710 simple-launch-lines: Use correct JPEG2000 caps 2016-06-11 12:16:23 +03:00
Guillaume Desmottes
57eb9fec72 tests: rtpbin: fix caps leak
https://bugzilla.gnome.org/show_bug.cgi?id=767156
2016-06-02 14:19:02 +01:00
Guillaume Desmottes
507e99cb96 tests: amrparse: clean up test
- use GST_CHECK_MAIN() to reduce boilerplate
- unref the input caps using a teardown function to prevent leaks

https://bugzilla.gnome.org/show_bug.cgi?id=767156
2016-06-02 14:18:53 +01:00
Tim-Philipp Müller
eaf329d39b tests: add unit test for JPEG-2000 rtp payloader leak
https://bugzilla.gnome.org/show_bug.cgi?id=766870
2016-05-27 12:58:37 +01:00
Mikhail Fludkov
ee7e80d615 rtpsession: don't act on suspicious BYE RTCP
Some endpoints (like Tandberg E20) can send BYE packet containing our
internal SSRC. I this case we would detect SSRC collision and get rid
of the source at some point. But because we are still sending packets
with that SSRC the source will be recreated immediately.
This brand new internal source will not have some variables incorrectly
set in its state. For example 'seqnum-base` and `clock-rate` values will be
-1.
The fix is not to act on BYE RTCP if it contains internal or unknown
SSRC.

https://bugzilla.gnome.org/show_bug.cgi?id=762219
2016-05-20 09:28:39 +03:00
Mikhail Fludkov
fa1c711a2f rtpsession: Add test for locking of the stats signal
Keeping the lock while emitting the stats signal introduces potential
deadlock in those situations when the signal callback wants the access
to rtpsession's properties which also requre the lock.

https://bugzilla.gnome.org/show_bug.cgi?id=762216
2016-05-20 09:26:20 +03:00
Thiago Santos
79e52b9f81 tests: souphttpsrc: replace deprecated API
Avoid using soup_server_run_async and old get_port() APIs,
replace with me soup_server_listen and get the port through the
URIs list returned from the server.
2016-05-14 08:40:12 -03:00
Havard Graff
8f7962e1c3 rtpjitterbuffer: Fix stall when receiving already lost packet
When a packet arrives that has already been considered lost as part of a
large gap the "lost timer" for this will be cancelled. If the remaining
packets of this large gap never arrives, there will be missing entries
in the queue and the loop function will keep waiting for these packets
to arrive and never push another packet, effectively stalling the
pipeline.

The proposed fix conciders parts of a large gap definitely lost (since
they are calculated from latency) and ignores the late arrivals.

In practice the issue is rare since large gaps are scheduled immediately,
and for the stall to happen the late arrival needs to be processed
before this times out.

https://bugzilla.gnome.org/show_bug.cgi?id=765933
2016-05-06 14:32:42 +03:00
George Kiagiadakis
c0dd2029e9 tests: add splitmuxsrc test for new "format-location" signal
https://bugzilla.gnome.org/show_bug.cgi?id=753625
2016-05-05 10:53:23 +01:00
Tim-Philipp Müller
03e2655f70 tests: add unit test for jpeg depayloader packet loss handling
Make sure it always outputs something that looks like a valid
JPEG frame, ie. starts with an SOI marker and ends with an EOI
marker.
2016-04-04 17:42:03 +01:00
Stian Selnes
4c0e509328 rtpsession: Add new signal 'on-app-rtcp'
Similar to the 'on-feedback-rtcp' signal, but emitted for RTCP APP
packets.

https://bugzilla.gnome.org/show_bug.cgi?id=762217
2016-03-30 15:42:01 +03:00
Thiago Santos
d738fa0787 splitmuxsink: only try to create internal sink if it doesn't exist
This allows splitmuxsink to be reused after being put to NULL.

Test included

https://bugzilla.gnome.org/show_bug.cgi?id=762893
2016-03-24 20:10:25 -03:00
Edward Hervey
c4f06420b3 check: Fix indentation 2016-03-24 16:22:31 +01:00
Edward Hervey
f0a27084f9 tests: Remove unused variables 2016-03-24 16:22:28 +01:00
Vivia Nikolaidou
02a932d789 deinterlace: Added unit tests for field=auto
https://bugzilla.gnome.org/show_bug.cgi?id=763869
2016-03-24 14:34:11 +02:00
Havard Graff
bcbb8fc1da flvdemux: don't emit pad-added until caps are ready
In other words, gst_pad_get_current_caps should never return NULL
in a pad-added callback from the demuxer.

Added tests for the two special cases with AAC and H.264 where this
would happen every time.

https://bugzilla.gnome.org/show_bug.cgi?id=763780
2016-03-24 14:33:33 +02:00
Vineeth TM
1071309870 good: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763076
2016-03-24 14:32:20 +02:00
David Buchmann
2b8b5f2246 flvmux: Test to verify flvmux handles DTS with GST_CLOCK_TIME NONE
https://bugzilla.gnome.org/show_bug.cgi?id=762207
2016-03-24 14:30:21 +02:00
Sebastian Dröge
d37822173d gtk: examples: #define GST_USE_UNSTABLE_API and link with X11_LIBS
X11_LIBS is needed for XInitThreads() and without the #define we get
warnings about the GL API being still unstable.
2016-03-05 11:38:46 +02:00
Tim-Philipp Müller
a4d64b5caa rgvolume: make tag list writable before modifying it
Making the event itself writable is not enough, it won't make
the actual taglist in the event writable as well. Instead, just
make a copy of the taglist and then create a new tag event from
that if required, replacing the old one. Before we would
inadvertently modify taglists upstream elements might still
be holding on to. Add unit test for this as well.

https://bugzilla.gnome.org/show_bug.cgi?id=762793
2016-02-28 14:44:39 +00:00
Tim-Philipp Müller
7335d03070 tests: fix indentation 2016-02-19 14:44:11 +00:00
Havard Graff
69436d5a61 tests: rtpjitterbuffer: port testharness to GstHarness and cleanup/improve
Probably found a bug as well, in that there are some timestamps in
there that are looking very wrong. (marked with FIXME)

https://bugzilla.gnome.org/show_bug.cgi?id=762267
2016-02-19 14:44:02 +00:00
Havard Graff
d52765fabb tests: rtpjitterbuffer: test cleanups/improvements
Use fail_unless and friends instead of g_assert
Factor seq-num checking out to separate function
Check more return-values from push and crank and others

https://bugzilla.gnome.org/show_bug.cgi?id=762254
2016-02-19 11:26:45 +00:00
Stian Selnes
fb4c2909ca tests: rtpjitterbuffer: fix leaks in unit test
https://bugzilla.gnome.org/show_bug.cgi?id=762214
2016-02-19 11:07:52 +00:00
Tim-Philipp Müller
8e2c1d1de5 tests: fix spurious souphttpsrc test timouts
Set GSETTINGS_BACKEND=memory, apparently there's something
about fork() and the dconf backend (or whatever else that
drags in or activates) that messes up locking and causes
timeouts due to deadlocks in g_mutex_lock(), since
everything works fine with CK_FORK=no as well.
2016-02-18 13:46:45 +00:00
Stian Selnes
3eeca9c7d2 rtpjitterbuffer: Add test for big seqnum gap handling
Make sure that the packets queued when detecting a big gap are pushed
after reset (5 consective seqnums) and not dropped.

https://bugzilla.gnome.org/show_bug.cgi?id=762211
2016-02-18 09:39:01 +02:00
Tim-Philipp Müller
52bd182e98 tests: fix mpg123audiodec test for big-endian architectures 2016-02-16 10:40:39 +00:00
Sebastian Dröge
265ecb5171 mpg123audiodec: Fix event handling in unit test 2016-02-16 10:40:39 +00:00
Vineeth TM
03e40efb65 tests: rtpmux: Fix element memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=762057
2016-02-15 09:55:30 +00:00