Edward Hervey [Fri, 27 May 2022 09:20:06 +0000 (11:20 +0200)]
hlsdemux2: Look for mpegts synchronization point further
Some mpeg-ts streams have extra data at the beginning. While it's not ideal, we
should be able to cope with it.
Therefore increase the initial search window for at least 4 consecutive
synchronization points to 1kB.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2626>
Olivier Crête [Wed, 15 Jun 2022 19:06:20 +0000 (15:06 -0400)]
webrtcbin: Limit sink query to sink pads
This allows the reception of streams that don't exactly match
the codec preferences. In particular, the ssrc in the codec preferences
is local sender SSRC, the other side is expected to send a different SSRC.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2615>
Vivia Nikolaidou [Wed, 8 Jun 2022 16:18:48 +0000 (19:18 +0300)]
avviddec, video.c, h265parse: Workaround for broken field-based interlaced encoders
Some encoders (e.g. Makito) have H265 field-based interlacing, but then
also specify an 1:2 pixel aspect ratio. That makes it kind-of work with
decoders that don't properly support field-based decoding, but makes us
end up with the wrong aspect ratio if we implement everything properly.
As a workaround, detect 1:2 pixel aspect ratio for field-based
interlacing, and check if making that 1:1 would make the new display
aspect ratio common. In that case, we override it with 1:1.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2577>
Tim-Philipp Müller [Tue, 14 Jun 2022 10:37:13 +0000 (11:37 +0100)]
gst-env.py: drop 'gst-' prefix from branch name in prompt
Probably leftover from the days where we would have a gst-foo.sh
script to set up the devenv for a particular checkout/branch.
Kind of confusing now if you're working on a named branch and
it just adds an extra gst- prefix in the prompt.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2594>
Tim-Philipp Müller [Tue, 14 Jun 2022 15:30:08 +0000 (16:30 +0100)]
docs: ensure coretracers plugin index page is index.html
And not blank.html
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2592>
Tim-Philipp Müller [Tue, 14 Jun 2022 15:18:35 +0000 (16:18 +0100)]
docs: make sure rtspclientsink plugin docs index page is called index.html
.. instead of plugin-index.html.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2592>
Tim-Philipp Müller [Sun, 12 Jun 2022 22:28:21 +0000 (23:28 +0100)]
gst-inspect: print link to documentation for gstreamer elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2592>
Stéphane Cerveau [Wed, 19 May 2021 14:03:22 +0000 (16:03 +0200)]
srtsrc: add "keep-listening" property to avoid EOS on disconnect
The property 'keep-listening' avoids EOS
when the remote client disconnects.
It can be useful to a keep a pipeline alive
when the srt connection drops remotely.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/967>
Stéphane Cerveau [Wed, 19 May 2021 14:00:13 +0000 (16:00 +0200)]
srtsrc: remove dead code
Remove code useless since
132e3a1af9deb1d2cdf84d22b954967207bcc03a
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/967>
Seungha Yang [Wed, 18 May 2022 20:24:08 +0000 (05:24 +0900)]
qsvh264dec: Use newly added avcC data parsing API
Use gst_h264_parser_parse_decoder_config_record() method to parse
codec_data.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2449>
Seungha Yang [Wed, 18 May 2022 20:06:04 +0000 (05:06 +0900)]
h264parse: Use newly added avcC data parsing API
Use gst_h264_parser_parse_decoder_config_record() method to parse
codec_data.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2449>
Seungha Yang [Wed, 18 May 2022 19:49:36 +0000 (04:49 +0900)]
h264decoder: Use newly added avcC data parsing API
Use gst_h264_parser_parse_decoder_config_record() method to parse
codec_data.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2449>
Seungha Yang [Wed, 18 May 2022 19:25:38 +0000 (04:25 +0900)]
h264parser: Add an API for AVCDecoderConfigurationRecord parsing
Add a method for AVC configuration date parsing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2449>
Sebastian Dröge [Wed, 18 May 2022 07:23:15 +0000 (10:23 +0300)]
matroskademux: Avoid integer-overflow resulting in heap corruption in WavPack header handling code
blocksize + WAVPACK4_HEADER_SIZE might overflow gsize, which then
results in allocating a very small buffer. Into that buffer blocksize
data is memcpy'd later which then causes out of bound writes and can
potentially lead to anything from crashes to remote code execution.
Thanks to Adam Doupe for analyzing and reporting the issue.
CVE: CVE-2022-1920
https://gstreamer.freedesktop.org/security/sa-2022-0004.html
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1226
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2612>
Sebastian Dröge [Mon, 30 May 2022 07:15:37 +0000 (10:15 +0300)]
qtdemux: Fix integer overflows in zlib decompression code
Various variables were of smaller types than needed and there were no
checks for any overflows when doing additions on the sizes. This is all
checked now.
In addition the size of the decompressed data is limited to 200MB now as
any larger sizes are likely pathological and we can avoid out of memory
situations in many cases like this.
Also fix a bug where the available output size on the next iteration in
the zlib decompression code was provided too large and could
potentially lead to out of bound writes.
Thanks to Adam Doupe for analyzing and reporting the issue.
CVE: tbd
https://gstreamer.freedesktop.org/security/sa-2022-0003.html
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1225
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2610>
Sebastian Dröge [Wed, 18 May 2022 08:24:37 +0000 (11:24 +0300)]
matroskademux: Fix integer overflows in zlib/bz2/etc decompression code
Various variables were of smaller types than needed and there were no
checks for any overflows when doing additions on the sizes. This is all
checked now.
In addition the size of the decompressed data is limited to 120MB now as
any larger sizes are likely pathological and we can avoid out of memory
situations in many cases like this.
Also fix a bug where the available output size on the next iteration in
the zlib/bz2 decompression code was provided too large and could
potentially lead to out of bound writes.
Thanks to Adam Doupe for analyzing and reporting the issue.
CVE: CVE-2022-1922, CVE-2022-1923, CVE-2022-1924, CVE-2022-1925
https://gstreamer.freedesktop.org/security/sa-2022-0002.html
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1225
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2610>
Sebastian Dröge [Wed, 18 May 2022 09:00:48 +0000 (12:00 +0300)]
avidemux: Fix integer overflow resulting in heap corruption in DIB buffer inversion code
Check that width*bpp/8 doesn't overflow a guint and also that
height*stride fits into the provided buffer without overflowing.
Thanks to Adam Doupe for analyzing and reporting the issue.
CVE: CVE-2022-1921
See https://gstreamer.freedesktop.org/security/sa-2022-0001.html
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1224
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2608>
Adam Doupe [Thu, 19 May 2022 04:59:58 +0000 (04:59 +0000)]
queuearray: Fix potential heap overflow when expanding GstQueueArray
Check that elt_size*newsize doesn't overflow when expanding a
GstQueueArray, which has the potential for a heap overwrite.
Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1232
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2606>
Adam Doupe [Thu, 19 May 2022 04:16:25 +0000 (04:16 +0000)]
smpte: Fix integer overflow with possible heap corruption in GstMask creation.
Check that width*height*sizeof(guint32) doesn't overflow when
allocated user_data for mask, potential for heap overwrite when
inverting.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1231
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2603>
Sebastian Dröge [Wed, 15 Jun 2022 07:07:26 +0000 (10:07 +0300)]
decklinkvideosink: Fix selection of > PAL widescreen modes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2601>
Víctor Manuel Jáquez Leal [Wed, 15 Jun 2022 10:56:13 +0000 (12:56 +0200)]
docs: harness: Fix example
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2602>
James Hilliard [Sun, 12 Jun 2022 11:35:27 +0000 (05:35 -0600)]
decodebin3: fix EOS event sequence
See docs:
https://gstreamer.freedesktop.org/documentation/additional/design/seqnums.html?gi-language=c#seqnums-sequence-numbers
Per docs:
When a sink element receives an EOS event and creates a new EOS
message to post, it should copy the seqnum from the event to the
message because the EOS message is a consequence of the EOS event
being received.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2588>
He Junyan [Thu, 9 Jun 2022 12:00:35 +0000 (20:00 +0800)]
vaapi: Do not disable the whole vpp when some va operations not available.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2578>
Piotr Brzeziński [Tue, 14 Jun 2022 21:03:26 +0000 (23:03 +0200)]
adaptivedemux2: Prevent duplicate symbols on static builds
Uses prelude header files with #defines to rename DASH and MSS
symbols duplicated in their old standalone versions.
Also redefines soup-related functions when building it for
adaptivedemux2 to prevent symbol conflicts there.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2534>
Víctor Manuel Jáquez Leal [Tue, 7 Jun 2022 14:30:36 +0000 (16:30 +0200)]
va: basedec: Select output format with the used chroma in decoder.
Currently, video format is decided with downstream caps intersection,
but that's not correct since chroma is not considered. The video
decoders have to decide the output format given the used chroma, not
by the downstream caps negotiation.
This patch changes that. Still, caps feature is selected by caps
negotiation, then, with the preferred caps feature, the output format
is search within that caps feature.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2569>
Tim-Philipp Müller [Tue, 14 Jun 2022 16:29:31 +0000 (17:29 +0100)]
multiqueue: fix potential crash on shutdown
The mq we get out of the weak ref might be NULL if we're
shutting down, which could cause assertion failures or
crashes.
It might also cause miscompilations where the compiler just
optimises away the NULL check because it jumps to a code path
that then dereferences the pointer which clearly isn't going
to work. Seems like something like this happens with gcc 11.
Fixes #1262
Co-authored-by: Doug Nazar <nazard@nazar.ca>
Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2599>
Jan Alexander Steffens (heftig) [Mon, 28 Feb 2022 13:21:52 +0000 (14:21 +0100)]
.editorconfig: Add some indentation settings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1812>
James Hilliard [Tue, 14 Jun 2022 09:29:41 +0000 (03:29 -0600)]
multiqueue: fix warning: ‘is_query’ may be used uninitialized in this function
Fixes:
../plugins/elements/gstmultiqueue.c: In function ‘gst_multi_queue_loop’:
../plugins/elements/gstmultiqueue.c:2394:19: warning: ‘is_query’ may be used uninitialized in this function [-Wmaybe-uninitialized]
2394 | if (object && !is_query)
| ^~~~~~~~~
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2593>
Jan Schmidt [Wed, 11 May 2022 16:51:00 +0000 (02:51 +1000)]
adaptivedemux2: Improve reverse playback buffering.
In reverse playback, store the lowest running time in each GOP
as the input_time for buffering purposes. That means we end up
storing at least a complete GOP before declaring buffering
100%
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2510>
Jan Schmidt [Fri, 8 Apr 2022 13:06:09 +0000 (23:06 +1000)]
adaptivedemux2: reverse playback running times
Account for running time moving non-monotonically in
reverse playback by tracking the highest running time
seen at each point.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2510>
Matthew Waters [Mon, 23 May 2022 01:41:17 +0000 (11:41 +1000)]
vulkan: add vulkan overlay compositor element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
Matthew Waters [Mon, 23 May 2022 01:26:24 +0000 (11:26 +1000)]
vkfullscreenquad: add support for disabling clearing
e.g. if drawing over the top of an existing image, we don'w want to
clear.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
Matthew Waters [Mon, 23 May 2022 01:25:03 +0000 (11:25 +1000)]
vkfullscreenquad: support setting blend operations
Allows e.g. blending with an existing image.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
Matthew Waters [Mon, 23 May 2022 01:24:04 +0000 (11:24 +1000)]
vkfullscreenaud: create the vulkan command pool upfront
Allows outside to reuse the same command buffer pool much more easily.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
Matthew Waters [Tue, 17 May 2022 07:07:49 +0000 (17:07 +1000)]
vulkan: add some missing GAutoPtr definitions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
Matthew Waters [Tue, 17 May 2022 06:32:09 +0000 (16:32 +1000)]
vulkan: remove unneeded #ifdef for GAutoPtr
Not necessary anymore as we depend on a new enough Glib version
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
Matthew Waters [Tue, 17 May 2022 03:22:33 +0000 (13:22 +1000)]
vulkan: move element register definition to relevant element headers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2470>
Seungha Yang [Sun, 12 Jun 2022 18:29:11 +0000 (03:29 +0900)]
d3d11converter: Add support for colorimetry conversion
Handle color primaries and gamma functions.
HDR <-> SDR conversion (tone mapping) should be implemented as well
but not a part of this patch.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2581>
Seungha Yang [Mon, 13 Jun 2022 18:15:42 +0000 (03:15 +0900)]
d3d11convert: Don't passthrough if colorimetry conversion is required
Different input/output colorimetry requires conversion
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2581>
Seungha Yang [Mon, 13 Jun 2022 15:24:41 +0000 (00:24 +0900)]
d3d11window: Use SDR colorspace whenever possible
PQ uses completely different light level scale
and it should not be used for SDR bt2020.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2581>
Seungha Yang [Sun, 5 Jun 2022 18:41:52 +0000 (03:41 +0900)]
d3d11converter: Rewrite conversion object
Rewriting GstD3D11Converter (equivalent to GstVideoConverter)
to optimize some conversion path and clean up.
* Extract YUV <-> RGB conversion matrix building method to
utils. It will be used by other implementation
* Use calculated offset values for YCbCr <-> YPbPr conversion
instead of hardcoded values
* Handle color range adjustment
* Move transform matrix building helper function to utils.
The method will be used by other elements
* Use single constant buffer. Multiple constatne buffer for
conversion pipeline is almost pointless
* Remove lots of duplicated HLSL code and split pixel shader
code path into sampling -> colorspace conversion ->
shader output packing
* Avoid floating point precision error around UV coordinates
* Optimize RGB -> YUV conversion path
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2581>
Benjamin Gaignard [Tue, 24 May 2022 08:40:26 +0000 (10:40 +0200)]
v4l2codecs: Add P010 pixel format
Copy V4L2_PIX_FMT_P010 define from linux header.
V4L2_PIX_FMT_P010 is the little endian definition of P010 so map
it GST_VIDEO_FORMAT_P010_10LE.
Add it v4l2 default video formats to allows v4l2 decoders to
enumerate and use it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2590>
Tim-Philipp Müller [Fri, 10 Jun 2022 10:40:18 +0000 (11:40 +0100)]
docs: update technical howto in moving-plugins
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2583>
Nirbheek Chauhan [Thu, 9 Jun 2022 00:08:19 +0000 (05:38 +0530)]
ci: Disable werror for documentation build
The documentation build is running on an ancient Fedora 30 image that
cannot be updated at present, and it's now triggering deprecation
warnings in system headers:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2568#note_1418956
Disable werror here, it's not actually useful.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2568>
Nirbheek Chauhan [Wed, 8 Jun 2022 06:03:22 +0000 (11:33 +0530)]
clock: Use g_atomic_rc_box for refcounting entry clocks
g_atomic_rc_box was added in GLib 2.58, and we require 2.62 now, so we
can fix the FIXME and use this.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2568>
Tim-Philipp Müller [Wed, 6 Apr 2022 11:56:30 +0000 (12:56 +0100)]
Bump GLib requirement to >= 2.62
Can't require 2.64 yet because of
https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/323
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2568>
Sebastian Dröge [Wed, 8 Jun 2022 07:42:18 +0000 (10:42 +0300)]
decklink: Add support for 4K DCI, 8K/UHD2 and 8K DCI modes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2570>
Seungha Yang [Wed, 1 Jun 2022 21:06:48 +0000 (06:06 +0900)]
qsvencoder: Do not copy if input is D3D11 texture
In case that input is D3D11 texture, QSV seems to work regardless
of the alignment. Actually the alignment requirement seems to make
only sense for system memory.
Other Intel GPU dependent implementations (new VA encoder, and MediaFoundation)
do not require such alignment nor other vendor specific ones (NVENC and AMF)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2540>
Seungha Yang [Thu, 9 Jun 2022 14:19:24 +0000 (23:19 +0900)]
d3d11decoder: Fix for alternate interlacing signalling
Don't set d3d11+interlace caps feature. None of d3d11 elements
support it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2579>
Seungha Yang [Sat, 4 Jun 2022 13:33:34 +0000 (22:33 +0900)]
d3d11: Add d3d11testsrc element
Adding Direct3D11 based videotestsrc element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2554>
Mathieu Duponchelle [Wed, 8 Jun 2022 14:38:00 +0000 (16:38 +0200)]
-bad/docs: be more selective about header files to exclude
A few header files in -bad contain comments that start with the
/** gtk-doc pattern, but should not actually be parsed (and warned
about as such).
Previously, we were using far-reaching wildcard patterns to avoid
parsing those, but this had the unintended side effect of also
excluding legitimate files, and creating confusion when comments
were not parsed from those.
Switch to excluding specific files instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2576>
Marc Leeman [Wed, 8 Jun 2022 12:11:57 +0000 (14:11 +0200)]
fix trivial distination -> destination
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2573>
Ignacio Casal Quinteiro [Thu, 21 Apr 2022 10:47:31 +0000 (12:47 +0200)]
osxaudio: remove usage of goto
It is easier to follow the code without the goto now
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2251>
Ignacio Casal Quinteiro [Wed, 30 Mar 2022 10:59:46 +0000 (12:59 +0200)]
osxaudio: support hidden devices
macOS features hidden devices. These are devices that will
not be shown in the macOS UIs and that cannot be retrieved
without having the specific UID of the hidden device. There
are cases when you might want to have a hidden device, for example
when having a virtual speaker that forwards the data to a virtual
hidden input device from which you can then grab the audio.
The blackhole project supports these hidden devices and
this patch provides a way that if the device id is a hidden
device it will use it instead of check the hardware list of devices
to understand if the device is valid.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2251>
Ignacio Casal Quinteiro [Wed, 20 Apr 2022 16:12:02 +0000 (18:12 +0200)]
osx: fix indent
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2251>
Ignacio Casal Quinteiro [Wed, 30 Mar 2022 10:48:02 +0000 (12:48 +0200)]
osxaudio: iterate device only if needed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2251>
Ignacio Casal Quinteiro [Wed, 30 Mar 2022 07:59:59 +0000 (09:59 +0200)]
osxaudio: reduce scope of default device id variable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2251>
Jan Schmidt [Thu, 26 May 2022 19:15:13 +0000 (05:15 +1000)]
amc: Add H.265 encoder mapping.
Add mime type mapping to enable the use of Android H.265 encoders
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2511>
Mengkejiergeli Ba [Fri, 13 May 2022 09:21:25 +0000 (17:21 +0800)]
msdkdec: Decoder should use its own pool when downstream allocator is not recognizable
Msdkdec should use it own pool when the allocation from downstream query
is not any msdk_allocator (i.e. msdk_video_allocator,
msdk_dmabuf_allocator and msdk_system_allocator). Otherwise, when using
pipeline "msdkh264dec ! vah264enc !" to transcode a not 16-bit-aligned
stream (i.e. 1920x1080), the transcoding will fail due to the size
mismatch issue between decoder pool and encoder pool.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2451>
Bastien Nocera [Tue, 7 Jun 2022 15:31:43 +0000 (17:31 +0200)]
gtk: Fix double-free when OpenGL can't be initialised
gtk_gl_area_get_error() doesn't return a copy of the error, but just the
error. If initialising OpenGL fails, then GtkGstGLWidget will consume
the error, and cause GTK to try and display freed memory.
==50914== Invalid read of size 8
==50914== at 0x4C4CB8A: gtk_gl_area_draw_error_screen (gtkglarea.c:663)
==50914== by 0x4C4CB8A: gtk_gl_area_draw (gtkglarea.c:687)
==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084)
==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854)
==50914== by 0x4D4B6BF: gtk_stack_render (gtkstack.c:2207)
==50914== by 0x4BB4B03: gtk_css_custom_gadget_draw (gtkcsscustomgadget.c:159)
==50914== by 0x4BBA4C4: gtk_css_gadget_draw (gtkcssgadget.c:885)
==50914== by 0x4D4D780: gtk_stack_draw (gtkstack.c:2119)
==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084)
==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854)
==50914== by 0x4BAF0C3: gtk_container_draw (gtkcontainer.c:3674)
==50914== by 0x4E061CA: gtk_widget_draw_internal (gtkwidget.c:7084)
==50914== by 0x4BAEFB1: gtk_container_propagate_draw (gtkcontainer.c:3854)
==50914== Address 0x187a0818 is 8 bytes inside a block of size 16 free'd
==50914== at 0x48480E4: free (vg_replace_malloc.c:872)
==50914== by 0x49A5B8C: g_free (gmem.c:218)
==50914== by 0x49C1013: g_slice_free1 (gslice.c:1183)
==50914== by 0x4990DE4: g_error_free (gerror.c:870)
==50914== by 0x4990FE9: g_clear_error (gerror.c:1052)
==50914== by 0x1A489780: _get_gl_context (gtkgstglwidget.c:540)
==50914== by 0x1A4863CB: gst_gtk_invoke_func (gstgtkutils.c:39)
==50914== by 0x49A3834: g_main_context_invoke_full (gmain.c:6137)
==50914== by 0x1A486450: gst_gtk_invoke_on_main (gstgtkutils.c:59)
==50914== by 0x1A48A29E: gtk_gst_gl_widget_init_winsys (gtkgstglwidget.c:632)
==50914== by 0x1A4887E7: gst_gtk_gl_sink_start (gstgtkglsink.c:267)
==50914== by 0x6579810: gst_base_sink_change_state (gstbasesink.c:5662)
==50914== Block was alloc'd at
==50914== at 0x484586F: malloc (vg_replace_malloc.c:381)
==50914== by 0x49A9278: g_malloc (gmem.c:125)
==50914== by 0x49C1BA5: g_slice_alloc (gslice.c:1072)
==50914== by 0x49C3BCC: g_slice_alloc0 (gslice.c:1098)
==50914== by 0x499096B: g_error_allocate (gerror.c:708)
==50914== by 0x4990AF1: UnknownInlinedFun (gerror.c:722)
==50914== by 0x4990AF1: g_error_copy (gerror.c:892)
==50914== by 0x4C4B9F9: gtk_gl_area_set_error (gtkglarea.c:1036)
==50914== by 0x4C4BAF7: gtk_gl_area_real_create_context (gtkglarea.c:346)
==50914== by 0x4B21B28: _gtk_marshal_OBJECT__VOIDv (gtkmarshalers.c:2730)
==50914== by 0x4920B78: UnknownInlinedFun (gclosure.c:893)
==50914== by 0x4920B78: g_signal_emit_valist (gsignal.c:3406)
==50914== by 0x4920CB2: g_signal_emit (gsignal.c:3553)
==50914== by 0x4C4B927: gtk_gl_area_realize (gtkglarea.c:308)
Reproduced by running:
MESA_GL_VERSION_OVERRIDE=2.7 totem
See https://gitlab.gnome.org/GNOME/totem/-/issues/522
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2565>
Víctor Manuel Jáquez Leal [Mon, 6 Jun 2022 08:56:12 +0000 (10:56 +0200)]
va: Update plugin cache.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2522>
Víctor Manuel Jáquez Leal [Sun, 29 May 2022 11:43:29 +0000 (13:43 +0200)]
vah264enc: Guard logging functions
.. and use spec for rate control rather than static switch.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2522>
Víctor Manuel Jáquez Leal [Mon, 30 May 2022 08:20:11 +0000 (10:20 +0200)]
vah264enc: Support default and none rate control.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2522>
Víctor Manuel Jáquez Leal [Sun, 29 May 2022 10:09:05 +0000 (12:09 +0200)]
va: encoder: Rate control property.
Fixes: #1241
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2522>
Philippe Normand [Mon, 30 May 2022 10:26:24 +0000 (11:26 +0100)]
webrtcbin: Add a prepare-data-channel GObject signal
This new signal allows data-channel consumers to configure signal handlers on a
newly created data-channel, before any data or state change has been notified.
The webrtcin unit-tests were refactored to make use of this new signal.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2427>
Philippe Normand [Mon, 16 May 2022 15:43:57 +0000 (16:43 +0100)]
webrtcdatachannel: Chain to parent class constructed
And add a debug log statement.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2427>
Sebastian Dröge [Mon, 6 Jun 2022 09:31:52 +0000 (12:31 +0300)]
flvdemux: Make use of the streams API if used in a streams-aware bin
This allows adding audio/video streams after 6s.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2559>
Eric Knapp [Thu, 2 Jun 2022 14:32:28 +0000 (10:32 -0400)]
decklinkvideosink: Add 3G-SDI Level A output support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2544>
He Junyan [Mon, 6 Dec 2021 08:30:46 +0000 (16:30 +0800)]
Docs: Add the design document for DMA buffer sharing.
Co-authored-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Co-authored-by: Victor Jaquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1431>
He Junyan [Sat, 4 Jun 2022 07:05:05 +0000 (15:05 +0800)]
h264parser: Fix memory leaks in parse_user_data_unregistered().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2551>
Jan Alexander Steffens (heftig) [Sat, 4 Jun 2022 15:23:00 +0000 (17:23 +0200)]
rtmp2: Fix allocation of GstRtmpMeta
Use the right size.
On 64-bit platforms, `GstMetaInfo` is larger than `GstRtmpMeta`, which
masked this bug. On 32-bit platforms, it causes crashes. Thanks to
@maxatka for discovering this.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1721
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2553>
Jan Alexander Steffens (heftig) [Fri, 3 Jun 2022 16:35:54 +0000 (18:35 +0200)]
aacparse: Avoid mismatch between src_caps and output_header_type
If our downstream caps didn't intersect, we attempted to convert between
raw and ADTS stream formats, if possible. If the caps still did not
intersect, we then used the modified `src_caps` but left the
`output_header_type` unmodified.
This caused a mismatch between caps and actual stream format.
Avoid this by first copying the `src_caps` to `convcaps` for the
additional intersection tests, replacing `src_caps` if we succeed.
While we're here, clean up the code a bit and remove the `codec_data`
field from outgoing ADTS caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2550>
Sebastian Dröge [Sat, 4 Jun 2022 07:27:09 +0000 (10:27 +0300)]
flvdemux: Actually make use of the debug category
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2552>
Robert Mader [Thu, 2 Jun 2022 14:38:55 +0000 (16:38 +0200)]
gstwaylandsink: Add support for the "render-rectangle" property
We already implement the `set_render_rectangle` videooverlay interface,
thus install the videooverlay property accordingly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2479>
Robert Mader [Tue, 4 Jan 2022 14:20:41 +0000 (15:20 +0100)]
gstwayland: Move reusable parts of the waylandsink into a library
In preparation for the new element `GstGtkWaylandSink`, move reusable
parts out of `GstWaylandSink` into the already exisiting but very
barebone library.
Notable changes include:
- the `GstWaylandVideo` interface was dropped
- support for `wl-shell` was dropped
- lots of renaming in order to match established naming patterns
- lots of code modernisations, reducing boilerplate
- members were made private wherever possible
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2479>
Jan Alexander Steffens (heftig) [Sun, 5 Jun 2022 22:30:15 +0000 (00:30 +0200)]
opencv: Allow building against 4.6.x
Replace the broken version checks with one modeled after
`GLIB_CHECK_VERSION`.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2557>
Thibault Saunier [Mon, 30 May 2022 18:00:55 +0000 (14:00 -0400)]
validate: Fix running as a tracer
We need to rebuild runner.c as this is where the plugin is defined
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2555>
Olivier Crête [Mon, 30 May 2022 20:31:38 +0000 (16:31 -0400)]
webrtcbin: Reject answers that don't contain the same number of m-line as offer
Otherwise, it segfaults later. Also add test to validate this.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2526>
Marc Leeman [Tue, 15 Mar 2022 11:44:20 +0000 (12:44 +0100)]
rfbsrc: add uri interface
Adding a uri interface enables plugging in RFB/VNC sources to anything
that makes use of uridecodebin:
gst-play-1.0 rfb://:password@10.40.216.180:5903?shared=1
Use userinfo to pass user (ignored) and password, other key/value pairs
can be encoded in the query part of the URI (see shared)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1963>
Seungha Yang [Thu, 2 Jun 2022 18:22:03 +0000 (03:22 +0900)]
gst-env: Add support for PowerShell 7
The executable binary name of "PowerShell 7" is "pwsh.exe"
which is different from system default installed
"Windows PowerShell (version 5.x or older)"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2545>
Andoni Morales Alastruey [Mon, 16 May 2022 22:36:24 +0000 (00:36 +0200)]
videoparse: rename from _free to _clear
The function does not free the structure but the data
contained within.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458>
Andoni Morales Alastruey [Mon, 16 May 2022 17:29:10 +0000 (19:29 +0200)]
video: add new video-sei.h header to the list of video_headers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458>
Andoni Morales Alastruey [Mon, 16 May 2022 12:21:53 +0000 (14:21 +0200)]
h264parse: fix leak in user data unregistered
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458>
Andoni Morales Alastruey [Mon, 16 May 2022 10:46:06 +0000 (12:46 +0200)]
test: update tests to include the new meta
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458>
Andoni Morales Alastruey [Sun, 27 Feb 2022 18:41:12 +0000 (18:41 +0000)]
Fix documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458>
Brad Hards [Thu, 17 Feb 2022 04:55:19 +0000 (15:55 +1100)]
h264parse: add unit test for Precision Time Stamp in SEI messages
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458>
Brad Hards [Thu, 17 Feb 2022 04:55:19 +0000 (15:55 +1100)]
h264parse: fix copying of data and UUID
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458>
Andoni Morales Alastruey [Sun, 19 Dec 2021 18:14:05 +0000 (19:14 +0100)]
h264parse: add support Precision Time Stamp in SEI messages
Expose User Data Unregistered as a new Meta and add
API to parse Precision Time Stamp (ST 0604).
Fixes #927
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1458>
Seungha Yang [Wed, 1 Jun 2022 17:22:19 +0000 (02:22 +0900)]
meson: cuda: Add missing override_dependency()
Required for GstCuda library to be consumed via "gstreamer-cuda-1.0"
dependency.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2539>
Seungha Yang [Thu, 2 Jun 2022 12:25:38 +0000 (21:25 +0900)]
cuda: Fix uninitialized debug category
Make sure debug category init
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2542>
Mengkejiergeli Ba [Fri, 22 Apr 2022 06:46:07 +0000 (06:46 +0000)]
msdkav1enc: Reorder pts
This is a workaround for pts because oneVPL cannot handle the pts
correctly when there is b-frames. We first cache the input frame pts in
a queue then retrive the smallest one for the output encoded frame as
we always output the coded frame when this frame is displayable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2089>
Mengkejiergeli Ba [Thu, 31 Mar 2022 06:45:03 +0000 (06:45 +0000)]
msdkav1enc: Add b-pyramid and p-pyramid
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2089>
Mengkejiergeli Ba [Thu, 31 Mar 2022 06:33:55 +0000 (06:33 +0000)]
msdkav1enc: Add tile for encoding
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2089>
Mengkejiergeli Ba [Thu, 31 Mar 2022 06:03:36 +0000 (06:03 +0000)]
msdk: Add msdkav1enc element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2089>
Stéphane Cerveau [Wed, 1 Jun 2022 14:14:24 +0000 (16:14 +0200)]
soup: fix soup debug category
Use soup debug category in souploader
for soup plugin element load.
Inititalize properly soup utils category.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2535>
Jakub Adam [Tue, 31 May 2022 18:39:29 +0000 (20:39 +0200)]
amfencoder: always empty the queue when pushing output samples
gst_amf_encoder_try_output() pushes at most one output buffer downstream
although more may be ready. As a consequence, output samples will keep
queueing up in AMFComponent whenever QueryOutput() returns AMF_REPEAT
(and do_wait is FALSE). This has negative impact on latency when the
video being encoded is a live stream.
In order to avoid it, always retrieve and push all samples available in
AMFComponent's output queue at once.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2536>
Seungha Yang [Sat, 28 May 2022 21:05:27 +0000 (06:05 +0900)]
hlsdemux2: Adjust debug log level
HLS manifest might not be represented by a single common caps
when different codecs are mixed in a playlist, but it
does not seem to be a critical issue we need to warn.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2516>
Guillaume Desmottes [Wed, 1 Jun 2022 07:25:29 +0000 (09:25 +0200)]
basetransform: handle gst_base_transform_query_caps() returning NULL
If gst_base_transform_transform_caps() returns NULL, gst_base_transform_query_caps()
will return NULL as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2532>
Jan Alexander Steffens (heftig) [Wed, 18 May 2022 15:03:27 +0000 (17:03 +0200)]
clock: Avoid creating a weakref with every entry
Creating and destroying weakrefs takes a write lock on a global
`GRWLock`. This makes for a very contended lock when the pipeline has
many synchronizing elements.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2530>
Nicolas Dufresne [Fri, 27 May 2022 18:18:30 +0000 (14:18 -0400)]
video: Fix NV12_16L32 size calculation
The subsampling of the second plane was not taken into account, resulting in a
16bit per pixel buffers instead of 12.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2512>