Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/GStreamer/gst-plugins-good.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2020-10-16rtpvp8pay: payload temporally scaled bitstreams.John-Mark Bell
Co-Authored-By: Vincent Sanders <vince@pexip.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/728>
2020-10-16vp8enc: finish support for temporally scaled encodingJohn-Mark Bell
- introduce two new properties: * temporal-scalability-layer-flags: Provide fine-grained control of layer encoding to the outside world. The flags sequence should be a multiple of the periodicity and is indexed by a running count of encoded frames modulo the sequence length. * temporal-scalability-layer-sync-flags: Specify the pattern of inter-layer synchronisation (i.e. which of the frames generated by the layer encoding specification represent an inter-layer synchronisation). There must be one entry per entry in temporal-scalability-layer-flags. - apply temporal scalability settings and expose as buffer metadata. This allows the codec to allocate a given frame to the correct internal bitrate allocator. Additionally, all the non-bitstream metadata needed to payload a temporally scaled stream is now attached to each output buffer as a GstVideoVP8Meta. - add unit test for temporally scaled encoding. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/728>
2020-10-09rtpmanager: implement SMPTE 2022-1 FEC encoderMathieu Duponchelle
+ improve integration of FEC encoders in rtpbin Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/753>
2020-10-09rtpmanager: implement SMPTE 2022-1 FEC decoderMathieu Duponchelle
+ improve integration of FEC decoders in rtpbin Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/753>
2020-10-06rtpfunnel: Also forward custom sticky eventOlivier Crête
This is useful to track metadata about each group of packets Also include a unit test Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/666>
2020-09-28qtmux: properly support initial caps nego failureMatthew Waters
Scenario: - gap event causes h264parse to push made up caps that may fail checks inside qtmux (e.g missing codec_data). - the caps event has already been marked as received and is sticky on the sink pad - gst_qt_mux_pad_can_renegotiate() will retrieve the failed caps event using gst_pad_get_current_caps() and reject the correct updated caps with codec_data. - Failure! Keep track of the configured caps ourselves instead of relying on the sticky event on the pad. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/732>
2020-09-21rtph26*depay: drop FU's without a corresponding start bitMatthew Waters
If we have not received a FU with a start bit set, any subsequent FU data is not useful at all and would result in an invalid stream. This case is constructed from multiple requirements in RFC 3984 Section 5.8 and RFC 7798 Section 4.4.3. Following are excerpts from RFC 3984 but RFC 7798 contains similar language. The FU in a single FU case is forbidden: A fragmented NAL unit MUST NOT be transmitted in one FU; i.e., the Start bit and End bit MUST NOT both be set to one in the same FU header. and dropping is possible: If a fragmentation unit is lost, the receiver SHOULD discard all following fragmentation units in transmission order corresponding to the same fragmented NAL unit. The jump in seqnum case is supported by this from the specification instead of implementing the forbidden_zero_bit mangling: If a fragmentation unit is lost, the receiver SHOULD discard all following fragmentation units in transmission order corresponding to the same fragmented NAL unit. A receiver in an endpoint or in a MANE MAY aggregate the first n-1 fragments of a NAL unit to an (incomplete) NAL unit, even if fragment n of that NAL unit is not received. In this case, the forbidden_zero_bit of the NAL unit MUST be set to one to indicate a syntax violation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/730>
2020-09-21isomp4/mux: add a fragment mode for initial moov with dataMatthew Waters
Used by some proprietary software for their fragmented files. Adds some support for multi-stream fragmented files Flow is as follows. 1. The first 'fragment' is written as a self-contained fragmented mdat+moov complete with an edit list and durations, tags, etc. 2. Subsequent fragments are written with a mdat+moof and each stream is interleaved as data arrives (currently ignoring the interleave-* properties). data-offsets in both the traf and the trun ensure data is read from the correct place on demuxing. Data/chunk offsets are also kept for writing out the final moov. 3. On finalisation, the initial moov is invalidated to a hoov and the size of the first mdat is extended to cover the entire file contents. Then a moov is written as regularly would in moov-at-end mode (the default). This results in a file that is playable throughout while leaving a finalised file on completion for players that do not understand fragmented mp4. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/643>
2020-09-09vp8enc: improve unit testsJohn-Mark Bell
- make test_encode_simple cope with libvpx built with CONFIG_REALTIME_ONLY. Sadly, there's no way to detect this at runtime beyond trying to set lag-in-frames to >0, pushing a buffer and catching the GST_FLOW_NOT_NEGOTIATED return. - fix bitrot in test_encode_simple_when_bitrate_set_to_zero. - port test_encode_simple to GstHarness and introduce a separate test for the lag-in-frames property. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/708>
2020-08-08rtph26[45]pay: Change default aggregate-mode to "none" for backwards ↵Sebastian Dröge
compatibility We didn't aggregate at all in previous versions and there are apparently various RTP implementations that don't handle aggregation well at all. As part of this also document that for RTSP it is recommended to keep it set to "none" while for WebRTC it should be set to "zero-latency". Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/749 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/692>
2020-08-07build: update for gl pkg-config file splitMatthew Waters
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/680>
2020-07-28tests: qtdemux: test correct pad names are createdHosang Lee
Test correct pad names are created in accordance to their media type in mss mode. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/628>
2020-07-15qtdemux: fix allocation explosion with stsd entriesJustin Chadwell
Previously, the user input for stsd entries is trusted completely, and so a maliciously crafted file could choose the length of the stsd entries arbitrarily and cause qtdemux to try to allocate up to 2GB of memory (half of a 32 bit max int). This patch fixes this by sanity checking the stsd input against the size of the entire stsd atom. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/670>
2020-07-15qtdemux: fix crashes when input stream contained no stsd entriesJustin Chadwell
During trak parsing, we need to check for the existence of stsd_entries, otherwise, we end up with a NULL pointer to them. It is entirely possible for the stsd to exist, but for it to have no entries, which the previous checks did not take into account. This patch adds a simply check to ensure that all files that do not contain a stsd entry are deemed corrupt, and adds a test case to prevent a regression. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/670>
2020-07-10examples: hook up rpicamsrc examplesTim-Philipp Müller
webrtc one should probably go into gst-examples. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>
2020-07-10examples: fix indentation of rpicamsrc examplesTim-Philipp Müller
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>
2020-07-10Merge branch 'plugin-move-rpicamsrc'Tim-Philipp Müller
Move rpicamsrc from https://github.com/thaytan/gst-rpicamsrc/ It's a useful little element and works well, so might as well make sure it's widely available so people can stop piping raspivid output into fdsrc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>
2020-07-10rpicamsrc: webrtc example: Add a STUN server to the configurationJan Schmidt
To let the webrtc example work through NAT firewalls
2020-07-10rpicamsrc: webrtc example: Modify HTML to support other ports than 57778Jan Schmidt
2020-07-10rpicamsrc: webrtc example: Remove external fmtp insertionJan Schmidt
GStreamer 1.14.2 should contain the backport of gst-plugins-bad commit 5c450c5 adding FEC and RTX support, and incidentally the fmtp field in the SDP
2020-07-10rpicamsrc: webrtc example: Set the localeJan Schmidt
Make the date format in the overlay respect the current locale
2020-07-10rpicamsrc: Add webrtc streaming exampleJan Schmidt
Add an example for testing webrtc streaming from the rpi camera, based on the code from https://bugzilla.gnome.org/show_bug.cgi?id=795404 Requires GStreamer 1.14.1 or git master
2020-07-10rpicamsrc: Basic orientation interface supportPhilippe Normand
The (h,v)flip attributes are now supported through this interface. It should also be possible to support (h,v)center attributes using the ROI properties.
2020-07-10rpicamsrc: add test-color-balance examplePhilippe Normand
This small test will display a live video preview of the rpicam with the balance controls being updated once a second. The controls to update can be disabled in the source by setting the CONTROL_* macros values to 0.
2020-07-10rpicamsrc: Add dynamic properties exampleJan Schmidt
Python example of adjusting saturation on the fly
2020-06-29imagefreeze: Add test for new live modeSebastian Dröge
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/653>
2020-06-25meson: Build Qt5 tests with -std=c++11Nirbheek Chauhan
We already do this for the plugin. https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/780#note_548179 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/642>
2020-06-20rtpsession: make tests more stableHavard Graff
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/410>
2020-06-18examples: qmlsink: rename qrc file to avoid naming conflicts with older ↵Tim-Philipp Müller
meson versions Would get "Tried to create target "qt5-qmlsink_qrc", but a target of that name already exists." with older meson versions. Work around that by renaming the qrc file. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/633>
2020-06-09tests: don't pull in all -bad plugin, only allow the one we needTim-Philipp Müller
Set up our plugin include list for tests in such a way that we don't pull in *all* plugins from -bad but only the one used in the splitmuxsink unit test, i.e. the timecode plugin, so we don't accidentally use other encoders/decoders such as nvenc/dec for example. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/617>
2020-06-08tests: vp9enc: enforce I420 formatGuillaume Desmottes
Test was not enforcing a video format on videotestsrc. I420 was picked as it was the first format in GST_VIDEO_FORMATS_ALL which will no longer be true (gst-plugins-base!689). Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/615>
2020-06-04vpxenc: Add new bit-per-pixel property to select a better "default" bitrateMikhail Fludkov
As part of this also change the default bitrate value to 0. The default value was 256000 previously. In reality, if the property was not set the bitrate value would be scaled according to the resolution which is not very intuitive behavior. It is better to use 0 for this purpose. Now together with newly introduced property "bits-per-pixel" 0 means to assign the bitrate according to resolution/framerate. The default bitrates are now - 1.2Mbps for VP8 720p@30fps - 0.8Mbps for VP9 720p@30fps and scaled accordingly for different resolutions/framerates. Previously the default bitrate was also not scaled according to the framerate but only took the resolution into account. This also fixes the side effect of setting bitrate to 0. Previously encoder would not produce any data at all. Addition from Sebastian Dröge <sebastian@centricular.com> to assume 30fps if no framerate is given in the caps instead of not calculating any bitrate at all. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/611>
2020-06-02vpxdec: Check that output width and height != 0Stian Selnes
For VP8 it's possible to signal width or height to be 0, but it does not make sense to do so. For VP9 it's impossible. Hence, we most likely have a corrupt stream. Trying to negotiate caps downstream with either width or height as 0 will fail with something like gst_video_decoder_negotiate_default: assertion 'GST_VIDEO_INFO_WIDTH (&state->info) != 0' failed Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/610>
2020-05-27tests: fix meson test env setup to make sure we use the right gst-plugin-scannerTim-Philipp Müller
If core is built as a subproject (e.g. as in gst-build), make sure to use the gst-plugin-scanner from the built subproject. Without this, gstreamer might accidentally use the gst-plugin-scanner from the install prefix if that exists, which in turn might drag in gst library versions we didn't mean to drag in. Those gst library versions might then be older than what our current build needs, and might cause our newly-built plugins to get blacklisted in the test registry because they rely on a symbol that the wrongly-pulled in gst lib doesn't have. This should fix running of unit tests in gst-build when invoking meson test or ninja test from outside the devenv for the case where there is an older or different-version gst-plugin-scanner installed in the install prefix. In case no gst-plugin-scanner is installed in the install prefix, this will fix "GStreamer-WARNING: External plugin loader failed. This most likely means that the plugin loader helper binary was not found or could not be run. You might need to set the GST_PLUGIN_SCANNER environment variable if your setup is unusual." warnings when running the unit tests. In the case where we find GStreamer core via pkg-config we use a newly-added pkg-config var "pluginscannerdir" to get the right directory. This has the benefit of working transparently for both installed and uninstalled pkg-config files/setups. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/603>
2020-05-20qtoverlay: add the root item as a propertyMatthew Waters
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/595>
2020-05-12meson: Fix gstgl checks for qt and gtkNirbheek Chauhan
Also rename from build_ to have_, which is more accurate. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/587>
2020-05-12meson: Revamp qt5qml plugin and example build codeNirbheek Chauhan
Stricter and simpler. For example, now we properly error out when gstreamer-gl-1.0 was not found when the qt5 plugin is enabled or when a C++ compiler is not enabled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/587>
2020-04-20tests: splitmuxsink: Add more timecode based split testSeungha Yang
... and split test cases to run tests in parallel
2020-04-16rtpjitterbuffer: don't use RTX packets in rate-calc and reset-logicHavard Graff
The problem was this: Due to the highly irregular arrival of RTX-packet the max-misorder variable could be pushed very low. (-10). If you then at some point get a big in the sequence-numbers (62 in the test) you end up sending RTX-requests for some of those packets, and then if the sender answers those requests, you are going to get a bunch of RTX-packets arriving. (-13 and then 5 more packets in the test) Now, if max-misorder is pushed very low at this point, these RTX-packets will trigger the handle_big_gap_buffer() logic, and because they arriving so neatly in order, (as they would, since they have been requested like that), the gst_rtp_jitter_buffer_reset() will be called, and two things will happen: 1. priv->next_seqnum will be set to the first RTX packet 2. the 5 RTX-packet will be pushed into the chain() function However, at this point, these RTX-packets are no longer valid, the jitterbuffer has already pushed lost-events for these, so they will now be dropped on the floor, and never make it to the waiting loop-function. And, since we now have a priv->next_seqnum that will never arrive in the loop-function, the jitterbuffer is now stalled forever, and will not push out another buffer. The proposed fixes: 1. Don't use RTX in calculation of the packet-rate. 2. Don't use RTX in large-gap logic, as they are likely to be dropped.
2020-04-03rtpjpeg: Use gst_memory_map() instead of gst_buffer_map()Kristofer Björkström
gst_buffer_map () results in memcopying when a GstBuffer contains more than one GstMemory. This has quite an impact on performance on systems with limited amount of resources. With this patch the whole GstBuffer will not be mapped at once, instead each individual GstMemory will be iterated and mapped separately.
2020-04-03rtpopuspay: make depay ! pay workHavard Graff
There is a use-case for a server to re-payload opus going through it. Problem was that the payloader requires channels in the caps, but this is not something the depayloader can parse out of the stream, meaning caps-negotiation would fail. Removing the requirement of channels in the template-caps fixes this.
2020-04-03tests: Split splitmux test caseSeungha Yang
Since we are adding more and more tests into splitmux, we need to split it to avoid CI timeout.
2020-04-03splitmuxsink: Don't send too many force key unit eventSeungha Yang
splitmuxsink should requst keyframe depending on configured threshold and previously requested time in order to avoid too many keyframe request.
2020-03-31rtpjitterbuffer: various test-improvementsHavard Graff
Mainly generalize all the latest tests that have found various stalls in the jitterbuffer, so that they only consist of a series of packets with various seqnum/rtptime/rtx combinations, arriving at a specific time. This means future tests can be more easily written to prove certain behavior does not cause stalls. Also fix the warning on windows: warning C4244: 'initializing': conversion from 'double' to 'gint', possible loss of data
2020-03-26splitmux: Make the unit test fasterJan Schmidt
The playback test is considerably faster if it runs with the appsink set to sync=false
2020-03-25tests: splitmux: Add test for timecode based splitSeungha Yang
2020-03-24Fix usage of C99Xavier Claessens
It's 2020, way too early for that, let's stick to C89 for now.
2020-03-20rtptimerqueue: remove ->num from the timerHavard Graff
This concept was only used by the "multi"-lost timer, and since that one is not around any longer, the "num" concept is superfluous.
2020-03-20rtpjitterbuffer: remove the concept of "already-lost"Havard Graff
This is a concept that only applies when a buffer arrives in the chain function, and it has already been scheduled as part of a "multi"-lost timer. However, "multi"-lost timers are now a thing of the past, making this whole concept superflous, and this buffer is now simply counted as "late", having already been pushed out (albeit as a lost-event).
2020-03-20rtpjitterbuffer: immediately insert a lost-event on multiple lost packetsHavard Graff
There is a problem with the code today, where a single timer will be scheduled for a series of lost packets, and then if the first packet in that series arrives, it will cause a rescheduling of that timer, going from a "multi"-timer to a single-timer, causing a lot of the packets in that timer to be unaccounted for, and creating a situation in where the jitterbuffer will never again push out another packet. This patch solves the problem by instead of scheduling those lost packets as another timer, it instead asks to have that lost-event pushed straight out. This very much goes with the intent of the code here: These packets are so desperately late that no cure exists, and we might as well get the lost-event out of the way and get on with it. This change has some interesting knock-on effect being presented in later commits. It completely removes the concept of "already-lost", so that is why that test has been disabled in this commit, to be removed later.