Tim-Philipp Müller
913e17e19e
rtpmanager: fix "redefinition of typedef RTPTWCCManager" compiler warning
...
G_DECLARE_FINAL_TYPE includes this typedef as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/675 >
2020-07-20 18:20:59 +01:00
Olivier Crête
7effe918d1
rtp*pay: Allocate using the base class for audio codecs
...
This is required to add RTP header extensions from the
meta automatically.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/674 >
2020-07-17 16:53:40 -04:00
Ognyan Tonchev
adb044c9ed
rtspsrc: Fix segfault with illegal free
...
set_get_param_q is not a pointer so it is illegal to call g_queue_free_full().
Freeing the requests by popping them from the queue instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/669 >
2020-07-15 13:19:38 +00:00
Justin Chadwell
738f32d5d0
qtdemux: fix allocation explosion with stsd entries
...
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-15 12:10:45 +00:00
Justin Chadwell
e6f66f4681
qtdemux: fix crashes when input stream contained no stsd entries
...
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-15 12:10:45 +00:00
Sebastian Dröge
54bc0157b5
qtmux: Don't lock object lock twice in prefill mode
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/762
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/663 >
2020-07-07 12:36:01 +03:00
Tim-Philipp Müller
31ff328727
meson: add update-orc-dist target
...
Add target to update backup orc -dist.[ch] files.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/662 >
2020-07-04 15:04:59 +01:00
Nirbheek Chauhan
c7f8c8d4ef
deinterlace: Disable nasm support on x32
...
The assembly assumes pointers are 64-bit, so just disable it.
Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/757
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/660 >
2020-07-02 07:53:14 +05:30
Nirbheek Chauhan
3fe4626e3c
deinterlace: Fix build on x32
...
Need to pass `-f elfx32` to nasm in that case.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/757
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/657 >
2020-07-01 19:43:41 +00:00
Jan Schmidt
7ae40045ba
matroska-mux: Wait for caps on sparse streams
...
Don't set sparse streams to non-waiting at the collectpads
level until after capa arrive, as we need caps on all
pads before the file headers get written, or else the
subtitle track will be silently absent in the final file.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/724
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/656 >
2020-07-01 19:24:49 +01:00
Jan Schmidt
ed5e935fb7
matroska-mux: Warn on late caps arrival
...
As well as warning when caps change after the headers
were already written, make sure to warn if the *first* caos
arrive late too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/656 >
2020-07-01 16:13:27 +10:00
Sebastian Dröge
e589a950c3
imagefreeze: Return TRUE from the LATENCY query handling
...
We always answer it successfully no matter what.
The default return value in the function is FALSE even if the code below
sets it again to FALSE.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/654 >
2020-06-30 18:37:06 +03:00
Sebastian Dröge
8345caf6e0
imagefreeze: Add a live mode
...
Previously imagefreeze would always operate as non-live element and
output frames as fast as possible according to the configured segment
(via SEEK events) and the negotiated framerate from start to stop or the
other way around.
With the new live mode (enabled via the is-live property) it would only
output frames in PLAYING. Frames would be output according to the
negotiated framerate unless it would be too late, in which case it would
jump ahead and skip over the requirement amount of frames.
This makes it possible to actually use imagefreeze in live pipelines
without having to manually ensure somehow that it would start outputting
at the current running time and without still risking to fall behind
without recovery.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/653 >
2020-06-29 12:07:14 +03:00
Sebastian Dröge
06b29a4aef
imagefreeze: Correctly answer the LATENCY query
...
We never run as a live element, even if upstream is live, and never
output any buffers with latency but immediately generate buffers as
fast as we can according to the negotiated framerate.
Passing the query upstream would proxy whatever mode of operation
upstream has, which has nothing to do with how we produce buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/653 >
2020-06-28 22:26:23 +03:00
Tim-Philipp Müller
4f555ecf8e
splitmuxsink: flesh out docs for format-location* signals
...
Make explicit that the returned strings need to be g_free()-able.
Fixes #753
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/652 >
2020-06-26 18:31:10 +00:00
Havard Graff
57eebe8b05
rtpstats: guard against division by zero
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/646 >
2020-06-26 15:29:25 +00:00
Havard Graff
e45cc475bd
rtptwcc: fix pruning of ack'ed twcc-packets
...
Fixes #750
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/645 >
2020-06-26 12:53:07 +01:00
Sebastian Dröge
13331e051f
splitmuxsink: Add new properties for setting muxer/sink presets
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/644 >
2020-06-25 17:53:00 +03:00
Mathieu Duponchelle
8d464c8361
autodetect: mark filter-caps property as DOC_SHOW_DEFAULT
...
When generating the cache we inspect the base class through
an instance of one of its subclasses. We don't want potential
assignments in subclasses initialization to leak into the
base class documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/641 >
2020-06-24 17:04:51 +02:00
Mathieu Duponchelle
f97430f6e9
docs: mark GstIirEqualizer as plugin API
2020-06-23 19:04:03 +02:00
Mathieu Duponchelle
c897fe2b73
docs: mark more types as plugin API
2020-06-23 10:25:55 -04:00
He Junyan
15fac84f63
deinterlace: Add the missing ORC_RESTRICT define.
...
ORC_RESTRICT may not be defined in yadif.c and cause build error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/637 >
2020-06-21 20:11:06 +08:00
Seungha Yang
9122bfdfb7
meson: deinterlace: Check host cpu type for asm build
...
Add host cpu type check as we would enable asm only for x86_64
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/636 >
2020-06-19 20:28:14 +09:00
Jan Schmidt
5c68e06b00
qtdemux: Split tag reading functions out
...
Move some code out of the enormous qtdemux.c into a separate
qtdemux_tags helper, and make some structs available via qtdemux.h
to accommodate that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/634 >
2020-06-18 14:41:27 +00:00
Jan Schmidt
0ddfc5020f
qtdemux: Move some tree parsing files out to a separate file.
...
Reduce a tiny bit of the bulk of qtdemux.c by moving some
agnostic helper functions out.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/634 >
2020-06-18 14:41:27 +00:00
Jan Schmidt
e2d75939bb
qtdemux: Factor out svmi parsing. Fix bounds checking.
...
Move the SVMI stereoscopic atom parsing out to a helper
function to shrink qtdemux_parse_trak a bit.
Add a bounds check that the received atom is large enough
before parsing it.
Add a note to the atom parser that svmi comes from the
MPEG-A spec 23000-11.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/634 >
2020-06-18 14:41:27 +00:00
Seungha Yang
8b4f18d53b
rtspsrc: Don't return TRUE for unhandled query
...
Expected return value for unhandled query is FALSE
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/629 >
2020-06-16 19:35:30 +09:00
Vivia Nikolaidou
536ff4776f
deinterlace: Add yadif ASM optimisations
...
Measured to be about 3.4x faster than C
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/621 >
2020-06-16 12:53:25 +03:00
Vivia Nikolaidou
ef78014d15
deinterlace: Fix invalid read in yadif
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/621 >
2020-06-12 13:21:02 +03:00
Sebastian Dröge
556e7ab210
flvdemux: Change a GST_ERROR_OBJECT() back to GST_DEBUG_OBJECT()
...
It was accidentally changed in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/436
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/624 >
2020-06-12 09:52:56 +03:00
Jordan Petridis
3e2420361a
Use gst_element_class_set_metadata when passing dynamic strings
...
gst_element_class_set_metadata is meant to only be used with
static or inlined strings, which isn't the case for the 2 elements
here resulting in use-after-free later on.
https://gstreamer.freedesktop.org/documentation/gstreamer/gstelement.html?gi-language=c#gst_element_class_set_static_metadata
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/622 >
2020-06-11 20:39:33 +03:00
Sebastian Dröge
f8196e06d5
Revert "rtpjitterbuffer: Avoid deadlock on flush"
...
This reverts commit 54810bf44f
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/620 >
2020-06-10 16:31:06 +00:00
U. Artie Eoff
bf0842aa0c
rtpjitterbuffer: g_queue_clear_full introduced in glib 2.60
...
Define g_queue_clear_full if glib < 2.60.
Fixes #747
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/619 >
2020-06-09 13:09:20 -07:00
Thibault Saunier
29a661d4a4
rtpsession: Make internal-ssrc as show default for doc
2020-06-09 11:45:13 -04:00
Nicolas Dufresne
5b2ad31583
rtptimerqueue: Fix leak on timer collision
...
While the caller should make sure this does not happen, make sure timer
collision are not silently ignored and leaked.
Fixes #726
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/616 >
2020-06-08 17:54:53 -04:00
Nicolas Dufresne
b4f421e9aa
rtpjitterbuffer: Keep JBUF lock while processing timers
...
Until now, do_expected_timeout() was shortly dropping the JBUF_LOCK in order
to push RTX event event without causing deadlock. As a side effect, some
CPU hung would happen as the timerqueue would get filled while looping over
the due timers. To mitigate this, we were processing the lost timer first and
placing into a queue the remainign to be processed later.
In the gap caused by an unlock, we could endup receiving one of the seqnum
present in the pending timers. In that case, the timer would not be found and
a new one was created. When we then update the expected timer, the seqnum
would already exist and the updated timer would be lost.
In this patch we remove the unlock from do_expected_timeout() and place all
pending RTX event into a queue (instead of pending timer). Then, as soon as
we have selected a timer to wait (or if there is no timer to wait for) we send
all the upstream RTX events. As we no longer unlock, we no longer need to pop
more then one timer from the queue, and we do so with the lock held, which
blocks any new colliding timers from being created.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/616 >
2020-06-08 17:54:53 -04:00
Edward Hervey
54810bf44f
rtpjitterbuffer: Avoid deadlock on flush
...
When a GST_EVENT_FLUSH_START reaches the jitterbuffer, there is a chance that
our task is currently blocking waiting for a timer.
There was two problems:
* That wait wasn't checking for flushing situations
* The flushing handling wasn't waking up that conditional (to check whether it
should abort)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/608 >
2020-06-08 13:34:26 +02:00
Mathieu Duponchelle
f63299ff2f
plugins: uddate gst_type_mark_as_plugin_api() calls
2020-06-06 00:42:25 +02:00
Sebastian Dröge
e527eb3e4c
rtpbin: Initialize uninitialized variable correctly
...
`last_out` would be used uninitialized if the element has no `set-active`
signal. Initialize it to -1 as that's what the "default" value is
further below.
CID 1455443
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/727
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/613 >
2020-06-05 11:49:17 +03:00
Thibault Saunier
6f0f41fef0
doc: Fix wrong link to GString in rtpjitterbuffer
2020-06-03 22:44:09 -04:00
Mathieu Duponchelle
37c619f995
plugins: Use gst_type_mark_as_plugin_api() for all non-element plugin types
2020-06-03 22:44:09 -04:00
Sebastian Dröge
b94b9988fa
rtspsrc: Use the correct type for storing the max-rtcp-rtp-time-diff property
...
It's an integer property and rtpbin also expects an integer. Passing it
as a GstClockTime (guint64) to g_object_set() will cause problems, and
on big endian MIPS apparently causes crashes.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/737
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/605 >
2020-05-27 22:33:31 +03:00
Thibault Saunier
3fdae346ca
rtspsrc: Error out when failling to receive message response
...
And let it rety twice.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/717
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/601 >
2020-05-25 20:13:06 -04:00
Sebastian Dröge
2c278bb2ab
flvdemux: Send gap events if one of the streams falls behind the other by more than 3s
...
Same mechanism and threshold as in other demuxers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/597 >
2020-05-20 18:46:41 +00:00
Sebastian Dröge
0bb9880b36
flvdemux: Remove unused audio_linked/video_linked booleans
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/597 >
2020-05-20 18:46:41 +00:00
Edward Hervey
5dd3643d94
flvdemux: Answer bitrate queries from upstream
...
If upstream (such as queue2 in urisourcebin) asks for our bitrate, check if we
have stored audio/video bitrates, and use them.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/596 >
2020-05-20 16:51:47 +03:00
Edward Hervey
e8282661b6
flvdemux: Handle empty metadata strings
...
g_utf8_validate() errors out on empty string. But empty strings are valid,
so only check if they're not
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/596 >
2020-05-20 10:48:06 +02:00
Edward Hervey
9f5f906515
flvdemux: Set ACCEPT_TEMPLATE flag on sinkpad
...
A demuxer can accept any caps matching its sinkpad template caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/596 >
2020-05-20 10:48:06 +02:00
Jan Schmidt
d8f0deadc3
deinterlace: Split out NULL checks in yadif
...
Separate out explicit NULL checks for fields we depend on so
that coverity can hopefully verify dependencies better.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/585 >
2020-05-09 03:09:03 +10:00
Jan Schmidt
1106eb16b6
deinterlace: Handle NV12/NV21 for the greedyl mode.
...
Don't fall back on the default interpolate_scanline function, which
blindly tries to copy from the next field, which can be NULL in
mixed progressive/interlaced streams
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/585 >
2020-05-09 03:07:33 +10:00