Commit graph

1028 commits

Author SHA1 Message Date
Nicolas Dufresne
947a37f3c8 rtpsession: Always keep at least one NACK on early RTCP
We recently added code to remove outdate NACK to avoid using bandwidth
for packet that have no chance of arriving on time. Though, this had a
side effect, which is that it was to get an early RTCP packet with no
feedback into it. This was pretty useless but also had a side effect,
which is that the RTX RTT value would never be updated. So we we stared
having late RTX request due to high RTT, we'd never manage to recover.

This fixes the regression by making sure we keep at least one NACK in
this situation. This is really light on the bandwidth and allow for
quick recover after the RTT have spiked higher then the jitterbuffer
capacity.
2019-05-17 19:13:22 +00:00
Nicolas Dufresne
84c102b6fe rtpsession: Call on-new-ssrc earlier
Right now, we may call on-new-ssrc after we have processed the first
RTP packet. This prevents properly configuring the source as some
property like "probation" are copied internally for use as a
decreasing counter. For this specific property, it prevents the
application from disabling probation on auxiliary sparse stream.

Probation is harmful on sparse streams since the probation algorithm
assume frequent and contiguous RTP packets.
2019-05-02 14:44:58 -04:00
Nicolas Dufresne
a8ea9f0d05 test: rtpsession: Verify on-sending-nacks callback 2019-04-07 12:00:49 -04:00
Mathieu Duponchelle
280d86a841 rtpsession: Add disable-sr-timestamp property
The Onvif Streaming Spec, in section 6.11, mandates that when
Rate-Control is disabled potential RTCP packets shall have
their timestamps set to 0.

<https://www.onvif.org/specs/stream/ONVIF-Streaming-Spec.pdf>
2019-04-05 20:23:08 +02:00
Nicolas Dufresne
464ada3f29 test: rtpsession: Test FB Nack packing
We used to split the NACK if a smaller seqnum of a range of seqnum was
submited. This test also make sure that the three operations (append,
prepend, update) works properly.
2019-04-05 14:53:09 +00:00
Nicolas Dufresne
a31569713f test: rtpsession: Test handling of NACK surplus
This test verify that NACKs that didn't fit in one packet are properly
filtered and inserted into the following pipeline.
2019-04-05 14:53:09 +00:00
John Bassett
74a74bfc99 rtpsession: Fix race when sending PLI, FIR and NACK packets
Calling rtp_session_send_rtcp before marking the source as requiring a
pli/fir/nack meant the rtcp_thread could be scheduled and start running
before the source was updated. This meant the request would not be sent
early but instead was transmitted with the next regular RTCP packet.

Add test for nack generation.
2019-04-05 14:53:09 +00:00
Antonio Ospite
6f12f1cecc test: rtpbin_buffer_list: add test to verify that stats are correct
Add a test to verify that stats about sent and received packets are
correct even when using buffer lists.

NOTE: the newly introduced get_session_source_stats() selects the
desired source (sender or receiver) by filtering them by type (using the
get_sender parameter) rather than by ssrc because this simplifies the
code and it's good enough for testing purposes as there is usually one
source per type in the test setup.

Filtering by ssrc would have required handling asynchronous signals like
"on-new-sender-ssrc", with the relative locking, just to retrieve the
actual ssrc of the sender.
2019-04-02 13:02:28 +02:00
Antonio Ospite
a330012d6a test: rtpbin_buffer_list: move buffer list creation next to its validation
The tests create a buffer list and then use the chain_list callback to
verify that the correct packets have been pushed.

Move the creation and validation code next to each other so that the
reader can more easily understand what is going on.

While at it add some comments to introduce the two related functions.
2019-04-01 18:42:32 +00:00
Antonio Ospite
af8698e656 test: rtpbin_buffer_list: set the chain_list function directly in the test
The helper function set_chain_function does not really do anything useful, remove it.
2019-04-01 18:42:32 +00:00
Antonio Ospite
5567066bff test: rtpbin_buffer_list: make check_packet more flexible
Make it possible to differentiate between the position in the list and
the packet index in the global structures in check_packet, in some
future case the list may change, in case some element removes a buffer
from the list, and the two indices may not coincide.
2019-04-01 18:42:32 +00:00
Antonio Ospite
5807d79a9d test: rtpbin_buffer_list: factor out a function to create packets buffers 2019-04-01 18:42:32 +00:00
Antonio Ospite
6ab13c19b6 test: rtpbin_buffer_list: check if the chain_list function has been called
Make the test more useful to verify that the chain list function has
actually been called.
2019-04-01 18:42:32 +00:00
Antonio Ospite
623d3b930e test: rtpbin_buffer_list: port to GStreamer 1.0
Port the rtpbin_buffer_list test to GStreamer 1.0 and re-enable it.

Some other changes include:
  - the check on the caps has been moved from the buffer level to the
    pad level;
  - remove underscore prefix from static functions names, this is not
    idiomatic in C and rarely used in the other tests;
  - the unused header_buffer variable has been removed;
  - check_group() has been renamed to check_packet() because in
    GStreamer 1.0 there is no concept of "group" anymore, the comments
    have also been updated to reflect this.
2019-04-01 18:42:32 +00:00
Tim-Philipp Müller
abef4e4ea3 tests: jpegdec: bump discoverer timeout for valgrind
Tests might take a bit longer, esp. when run under valgrind
and/or they're running on the CI with other things going on,
so let's just bump the timeout to something higher and let
the test runner time us out if needed.
2019-04-01 18:20:53 +01:00
Olivier Crête
785219a317 rtpstorage: Make debug category available to sub objects 2019-03-26 19:41:06 -04:00
Antonio Ospite
2513edf229 test: imagefreeze: add test for the num-buffers property 2019-03-14 09:12:28 +01:00
Tim-Philipp Müller
a2d01b3a8b tests: rtpulpfec: fix buffer leak in unit test
This freed wrapped memory instead of the GstMemory or buffer.
2019-03-06 19:40:10 +00:00
Tim-Philipp Müller
081da67444 tests: rtpjitterbuffer: fix leaks in new test_push_eos() test 2019-03-06 17:28:57 +00:00
Tim-Philipp Müller
55d43dbbde tests: states: blacklist gtk sinks for state change test
gtk_init() throws GLib-GIO-WARNING **: unknown schema extension 'd'
unrelated to our test environment.
2019-03-06 17:27:32 +00:00
Tim-Philipp Müller
6b68b73341 tests: .gitignore more test and example binaries 2019-03-06 17:26:03 +00:00
Olivier Crête
6530fa53f2 rtp jitterbuffer test: Test for queue filling 2019-02-11 23:41:14 +00:00
Nirbheek Chauhan
062f2c46fa misc: Fix warnings on Cerbero's mingw (gcc 4.7)
error: this decimal constant is unsigned only in ISO C90 [-Werror]
2019-02-06 14:28:54 +00:00
Nicolas Dufresne
0725e54d6c test: h265depay: Add todo for testing aggregate packets with marker
We are missing a sample to test this, but a fix has been made, so add a
todo.
2019-01-31 19:30:14 +00:00
Nicolas Dufresne
cf3da6a443 test: rtph264depay: Check handling of STAP-A marker
Related to #557
2019-01-31 19:30:14 +00:00
Nirbheek Chauhan
ef118bd56e meson: orc-test is not required
This is especially never available on iOS.
2019-01-31 15:28:56 +05:30
Seungha Yang
fe7885b13e meson: Add support orc fallback
Allow fallback to orc subproject if any.
Additionally 'dependencies' keyword is removed from find_library,
because it's invalid keyword for find_library.
2019-01-30 19:44:37 +09:00
Victor Toso
4a33b083f1 tests: rtp-payloading avoid -Wmaybe-uninitialized
More false positives as both of them are initialized in the line
before they are used, wrapped with fail_unless() check.
2019-01-18 13:53:18 +00:00
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
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