platform/upstream/gstreamer.git
17 months agouridecodebin3: Protect against NULL uri/suburi
Edward Hervey [Fri, 2 Dec 2022 14:52:56 +0000 (15:52 +0100)]
uridecodebin3: Protect against NULL uri/suburi

Fixes #1625

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3511>

17 months agoREADME: Add section how to build and visualize documentation
Xavier Claessens [Mon, 21 Nov 2022 16:38:39 +0000 (11:38 -0500)]
README: Add section how to build and visualize documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3442>

17 months agomeson: Add toplevel "gst-doc" alias target
Xavier Claessens [Mon, 21 Nov 2022 16:21:27 +0000 (11:21 -0500)]
meson: Add toplevel "gst-doc" alias target

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3442>

17 months agomeson: Add doc directory to XDG_DATA_DIRS
Xavier Claessens [Mon, 21 Nov 2022 15:20:41 +0000 (10:20 -0500)]
meson: Add doc directory to XDG_DATA_DIRS

gst-env.py does it already, but it was missing from meson devenv.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3442>

17 months agomultiqueue: Handle gapless with flushing
Edward Hervey [Wed, 30 Nov 2022 15:16:53 +0000 (16:16 +0100)]
multiqueue: Handle gapless with flushing

Don't reset the stream-start group-id when stop/pausing single queues. They are
only resetted when re-used (in READY->PAUSED).

Fixes #1586

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3487>

17 months agouridecodebin3: Always store pending buffering messages
Edward Hervey [Wed, 30 Nov 2022 08:26:48 +0000 (09:26 +0100)]
uridecodebin3: Always store pending buffering messages

Fixes #1586

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3487>

17 months agovajpegdec: Reenable element negotiation.
Víctor Manuel Jáquez Leal [Fri, 2 Dec 2022 06:03:30 +0000 (07:03 +0100)]
vajpegdec: Reenable element negotiation.

negotiation vmethod were overwritten by vabasedec, leading to errors.

This was a regression of commit b6538e0560.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3509>

17 months agogstinfo: Optimize color escape code creation
Edward Hervey [Thu, 1 Dec 2022 07:16:45 +0000 (08:16 +0100)]
gstinfo: Optimize color escape code creation

When coloring is in use, those escape codes are going to be created many times
for almost all debug lines.

Don't create plenty of temporary allocations, and instead build the escape code
ourselves statically

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3498>

17 months agowebrtc: Fix possible use-after-free of GstWebRTCICETransport
Johan Sternerup [Thu, 1 Dec 2022 12:28:16 +0000 (13:28 +0100)]
webrtc: Fix possible use-after-free of GstWebRTCICETransport

Because of the asynchronous resolving of mDNS ICE candidates it is
possible that GstWebRTCICE outlives webrtcbin. This in turn prolongs
the lifetime of the GstWebRTCNiceStream objects via refs in
nice_stream_map. Thus the GstWebRTCICETransport objects held in
GstWebRTCNiceStream may be invalid at the time they are accessed by
the _on_candidate_gathering_done() callback since GstWebRTCNiceStream
doesn't take a reference to them. Doing so would create a circular
reference, so instead this commit introduces weak references to the
transport objects and then we can check if the objects are valid before
accessing them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3502>

17 months agortspsrc: fix seek event leaks
Aleksandr Slobodeniuk [Thu, 1 Dec 2022 09:34:10 +0000 (10:34 +0100)]
rtspsrc: fix seek event leaks

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3500>

17 months agova: Handle input caps change.
Victor Manuel Jaquez Leal [Mon, 28 Nov 2022 19:42:29 +0000 (20:42 +0100)]
va: Handle input caps change.

Update output caps if it's notified by baseclass

See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3328

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>

17 months agovaav1dec: Use gst_va_base_dec_set_output_state().
Victor Manuel Jaquez Leal [Sun, 27 Nov 2022 12:00:20 +0000 (13:00 +0100)]
vaav1dec: Use gst_va_base_dec_set_output_state().

And even that vaav1dec doesn't use vabasedec negotiate vmethod, it should align
with the new scheme of using base's width & height for surface size and
output_info structure for downstream display size negotiation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>

17 months agovavp9dec: Use gst_va_base_dec_set_output_state().
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 10:45:52 +0000 (11:45 +0100)]
vavp9dec: Use gst_va_base_dec_set_output_state().

As this element reopen the internal decoder differently, it only uses the helper
function to negotiate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>

17 months agovampeg2dec: Streams are progressive by default.
Victor Manuel Jaquez Leal [Mon, 28 Nov 2022 18:31:57 +0000 (19:31 +0100)]
vampeg2dec: Streams are progressive by default.

By initializating progressive, then interlaced streams are detected correctly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>

17 months agova: Add and use common decode negotiate vmethod.
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 08:11:39 +0000 (09:11 +0100)]
va: Add and use common decode negotiate vmethod.

This vmethod can be used by decoders with the same VA decoder reopen logic:
same profile, chroma, width and height.

Also a new public method called gst_va_base_dec_set_output_state() with the
common GStreamer code for setting the output state, which is always called by
the negotiate vmethod.

In order to do this refactoring, new variables in vabasedec have to be populated
by the decoders:

* width and height define the resolution set in VA decoder. In the case of H264
  would be de coded_width and codec_height, or max_width and max_height in AV1.
* output_info is the downstream video info used for negotiation in
  gst_va_base_dec_set_output_state().
* input_state, from codec parent class shall be also held by vabasedec

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>

17 months agovaav1dec: Use gst_va_base_dec_prepare_output_frame().
Víctor Manuel Jáquez Leal [Thu, 24 Nov 2022 12:52:59 +0000 (13:52 +0100)]
vaav1dec: Use gst_va_base_dec_prepare_output_frame().

And simplify a bit the code flow.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>

17 months agova: Add and use gst_va_base_dec_prepare_output_frame().
Víctor Manuel Jáquez Leal [Thu, 24 Nov 2022 12:15:04 +0000 (13:15 +0100)]
va: Add and use gst_va_base_dec_prepare_output_frame().

This helper will do downstream negotiation and later will
allocate the output frame.

H265 and AV1 decoders don't use this approach since their output
frame allocation is different.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>

17 months agova: Remove last_ret error handling in decoders.
Víctor Manuel Jáquez Leal [Wed, 23 Nov 2022 17:29:58 +0000 (18:29 +0100)]
va: Remove last_ret error handling in decoders.

It was used in the early development of the base classes. Now it
shouldn't be needed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>

17 months agova: Add and use gst_va_base_dec_process_output().
Víctor Manuel Jáquez Leal [Wed, 23 Nov 2022 17:14:30 +0000 (18:14 +0100)]
va: Add and use gst_va_base_dec_process_output().

This function will copy the frame, if it's needed, and will apply buffer flags.

The function is used by all the decoders.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>

17 months agova: Fix the caps memory leak by gst_va_pool_new_with_config().
He Junyan [Thu, 1 Dec 2022 14:50:30 +0000 (22:50 +0800)]
va: Fix the caps memory leak by gst_va_pool_new_with_config().

The gst_va_pool_new_with_config() will ref the caps, and so we need
to unref after that.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3503>

17 months agova: Add render node name in non-first devices.
Víctor Manuel Jáquez Leal [Wed, 30 Nov 2022 12:33:49 +0000 (13:33 +0100)]
va: Add render node name in non-first devices.

There could be multi-GPU setups where the non-first has more
entrypoints than the first one, and the elements names are not
homogeneous, leading to pipeline building error.

This patch add the render node in the elements names when they belong
to the non-first device.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3491>

17 months agovafilter: Increase the caps for HDR.
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 20:02:00 +0000 (21:02 +0100)]
vafilter: Increase the caps for HDR.

As they might be other medatadata types.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3473>

17 months agovafilter: Increase the number of 3DLUT caps to 16.
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 19:48:45 +0000 (20:48 +0100)]
vafilter: Increase the number of 3DLUT caps to 16.

To fix the warning on Alderlake

vafilter gstvafilter.c:534:gst_va_filter_ensure_filters:<vafilter0>
vaQueryVideoProcFiltersCaps: list argument exceeds maximum number

Increase the number of caps to 16 as vadumpcaps does.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3473>

17 months agoqt: deactivate context if fill_info fails
Bo Elmgreen [Wed, 30 Nov 2022 13:32:52 +0000 (14:32 +0100)]
qt: deactivate context if fill_info fails

Now the OpenGL context is deactivated if call to gst_gl_context_fill_info()
fails in gst_qt_get_gl_wrapcontext(), preventing that the context is left
activated, which could lead to invalid memory reads.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3492>

17 months agoav{aud,vid}dec: Report decoding errors to the base class
Sebastian Dröge [Tue, 8 Mar 2022 14:05:17 +0000 (16:05 +0200)]
av{aud,vid}dec: Report decoding errors to the base class

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1889>

17 months agov4l2: Fix SIGSEGV on 'change state' during 'format change'
Pawel Stawicki [Mon, 28 Nov 2022 22:26:50 +0000 (22:26 +0000)]
v4l2: Fix SIGSEGV on 'change state' during 'format change'

Ensure all access to v4l2object->pool imply taking a lock and a hard ref on the pool

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3481>

17 months agogst-inspect: Don't leak list
Edward Hervey [Wed, 30 Nov 2022 08:59:09 +0000 (09:59 +0100)]
gst-inspect: Don't leak list

Just iterate the list instead of trying to be smart...

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3497>

17 months agoexample: vaenc-dynamic-reconfigure: Support H265.
Víctor Manuel Jáquez Leal [Tue, 15 Nov 2022 05:58:14 +0000 (06:58 +0100)]
example: vaenc-dynamic-reconfigure: Support H265.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>

17 months agova: Add H265 SCC profile support.
He Junyan [Wed, 4 May 2022 02:42:59 +0000 (10:42 +0800)]
va: Add H265 SCC profile support.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>

17 months agova: Add extended formats support such as 10/12 bits, 4:2:2 and 4:4:4.
He Junyan [Mon, 2 May 2022 15:14:32 +0000 (23:14 +0800)]
va: Add extended formats support such as 10/12 bits, 4:2:2 and 4:4:4.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>

17 months agova: enable multi tile support for H265 encoder.
He Junyan [Mon, 25 Apr 2022 07:49:31 +0000 (15:49 +0800)]
va: enable multi tile support for H265 encoder.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>

17 months agova: enable vah265lpenc for low power mode H265 encoder.
He Junyan [Thu, 2 Jun 2022 13:18:16 +0000 (21:18 +0800)]
va: enable vah265lpenc for low power mode H265 encoder.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>

17 months agova: Add the low-delay-b frame support for H265.
He Junyan [Mon, 18 Apr 2022 14:36:09 +0000 (22:36 +0800)]
va: Add the low-delay-b frame support for H265.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>

17 months agova: Add prediction direction attribute support for H265 encoder.
He Junyan [Wed, 6 Apr 2022 09:06:20 +0000 (17:06 +0800)]
va: Add prediction direction attribute support for H265 encoder.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>

17 months agova: Register and enable and the vah265enc plugin.
He Junyan [Fri, 25 Mar 2022 13:55:28 +0000 (21:55 +0800)]
va: Register and enable and the vah265enc plugin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>

17 months agova: Implement the vah265enc plugin for va HEVC encoding.
He Junyan [Fri, 25 Mar 2022 13:54:30 +0000 (21:54 +0800)]
va: Implement the vah265enc plugin for va HEVC encoding.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>

17 months agoopusdec: Use proper guint/guint8 type conversion
Vivia Nikolaidou [Wed, 30 Nov 2022 18:48:28 +0000 (20:48 +0200)]
opusdec: Use proper guint/guint8 type conversion

Do not cast, that might yield wrong results.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494>

17 months agoopusdec: Negotiate default to 2 channels
Vivia Nikolaidou [Wed, 30 Nov 2022 18:47:11 +0000 (20:47 +0200)]
opusdec: Negotiate default to 2 channels

In that place, dec->n_channels can still theoretically be 0. Default to
2 in that case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494>

17 months agoopusenc: Reverse channel order in template caps
Vivia Nikolaidou [Wed, 30 Nov 2022 18:46:05 +0000 (20:46 +0200)]
opusenc: Reverse channel order in template caps

We want to make it so that we prefer a higher, not lower, number of
channels. Otherwise, this pipeline would convert from 2 to 1 channels:

gst-launch-1.0 audiotestsrc ! audio/x-raw,channels=2 ! opusenc ! queue ! opusdec ! queue ! opusenc ! fakesink

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494>

17 months agoavviddec: Report flow error when decoder refused packet
Philippe Normand [Thu, 24 Nov 2022 17:39:50 +0000 (17:39 +0000)]
avviddec: Report flow error when decoder refused packet

In cases where an invalid input packet is submitted to the decoder we emit a
warning but reporting the flow error upstream would also be useful. This came up
with a case were the application interacts directly with the decoder, using a
mechanism similar to GstHarness.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3463>

17 months agoaudiodecoder: Make data processing errors non-fatal by default
Philippe Normand [Mon, 28 Nov 2022 16:05:16 +0000 (16:05 +0000)]
audiodecoder: Make data processing errors non-fatal by default

The previous default value of `max-errors` was too small and would potentially trigger the
decoder to emit errors too often for most cases.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3478>

17 months agovideodecoder: Make data processing errors non-fatal by default
Philippe Normand [Wed, 30 Nov 2022 10:27:27 +0000 (10:27 +0000)]
videodecoder: Make data processing errors non-fatal by default

The previous default value of `max-errors` was too small and would potentially trigger the
decoder to emit errors too often for most cases.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3478>

17 months agosdpmessage: Annotate SDP message parameters for `parse_uri()` and `parse_buffer(...
Sebastian Dröge [Tue, 29 Nov 2022 12:02:55 +0000 (14:02 +0200)]
sdpmessage: Annotate SDP message parameters for `parse_uri()` and `parse_buffer()` correctly

They are not actually `out` parameters but must be allocated and
initialized to a valid SDP message by the caller. Just allocating them
without initialization will cause memory corruptions because the
functions will try to clear/append to the existing SDP message.

As such they should be just marked as `transfer none`.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1605

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3484>

17 months agomfvideosrc: Fix buffer leak
Seungha Yang [Mon, 28 Nov 2022 17:22:50 +0000 (02:22 +0900)]
mfvideosrc: Fix buffer leak

The allocated buffer should be released

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3479>

17 months agomediafoundation: Chain up from GObject::constructed
Seungha Yang [Mon, 28 Nov 2022 17:10:42 +0000 (02:10 +0900)]
mediafoundation: Chain up from GObject::constructed

... so that GstTracer can trace it

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3479>

17 months agod3d11: Use correct ref/unref methods
Seungha Yang [Mon, 28 Nov 2022 17:06:11 +0000 (02:06 +0900)]
d3d11: Use correct ref/unref methods

Those objects are GstObject subclasses

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3479>

17 months agosdp: use g_strdup instead of strdup
Ignacio Casal Quinteiro [Mon, 28 Nov 2022 09:19:20 +0000 (10:19 +0100)]
sdp: use g_strdup instead of strdup

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3475>

17 months agoglimagesink: Fix render rect assertion
Nicolas Dufresne [Fri, 25 Nov 2022 15:01:06 +0000 (10:01 -0500)]
glimagesink: Fix render rect assertion

Whenever the surface is resized before the stream is negotiated, we endup
with an assertion in libgstvideo.

  gst_video_center_rect: assertion 'src->h != 0' failed

This fixes it, by following the style aready in place, which is to ensure
surfaces have a minimum size of 1x1.

Fixes #1139

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3467>

17 months agoaudioconvert, audioresample, audiofilter: fix divide by 0 for input buffer without...
Tim-Philipp Müller [Sat, 26 Nov 2022 08:23:59 +0000 (09:23 +0100)]
audioconvert, audioresample, audiofilter: fix divide by 0 for input buffer without caps

gst-launch-1.0 audiotestsrc ! udpsink host=127.0.0.1
gst-launch-1.0 udpsrc ! audioconvert ! autoaudiosink

would crash with a floating point exception when clipping the input
buffer owing to a division by zero because no caps event was received.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3469>

17 months agowin32ipcvideosrc: Fix property name and enum value mismatch
Seungha Yang [Fri, 25 Nov 2022 11:19:22 +0000 (20:19 +0900)]
win32ipcvideosrc: Fix property name and enum value mismatch

Make them consistent

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3465>

17 months agowin32ipcvideosrc: Protect pipe from flush thread
Seungha Yang [Fri, 25 Nov 2022 11:14:43 +0000 (20:14 +0900)]
win32ipcvideosrc: Protect pipe from flush thread

The pipe object must be protected against GstBaseSrc::unlock()
thread.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3465>

17 months agoh264parser: Fix a typo in pred_weight_table parsing.
He Junyan [Fri, 25 Nov 2022 10:38:27 +0000 (18:38 +0800)]
h264parser: Fix a typo in pred_weight_table parsing.

When setting default values, the reference list number of l1 is wrong.

Fix: https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/issues/336
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3464>

17 months agomsdkdec: Update decoding pts
Ma, Mingyang [Tue, 22 Nov 2022 09:01:37 +0000 (17:01 +0800)]
msdkdec: Update decoding pts

Update frame pts before calling gst_video_decoder_finish_frame, or frames may be lost when transcoding in specific stream

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3449>

17 months agoInstall meson from git when MESON_COMMIT variable is set
Xavier Claessens [Fri, 16 Sep 2022 12:28:49 +0000 (08:28 -0400)]
Install meson from git when MESON_COMMIT variable is set

When starting manually a CI pipeline with MESON_COMMIT variable defined,
install the specified version of Meson. This can be used to help the
Meson project smoke testing RC releases or investigate eventual
regressions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3036>

17 months agowin32ipc: Add WIN32 shared memory videosrc/sink elements
Seungha Yang [Fri, 18 Nov 2022 17:56:27 +0000 (02:56 +0900)]
win32ipc: Add WIN32 shared memory videosrc/sink elements

Windows supports various IPC methods but that's completely
different form that of *nix from implementation point of view.
So, instead of adding shared memory functionality to existing
shm plugin, new WIN32 shared memory source/sink elements
are implemented in this commit.

Each videosink (server) and videosrc (client) pair will communicate
using WIN32 named pipe and thus user should configure unique/proper
pipe name to them (e.g., \\.\pipe\MyPipeName).
Once connection is established, videosink will create named shared memory
object per frame and client will be able to consume the object
(i.e., memory mapped file handle) without additional copy operation.

Note that implementations under "protocol" directory are almost
pure C/C++ with WIN32 APIs except for a few defines and debug functions.
So, applications can take only the protocol part so that the application
can send/receive shared-memory object from/to the other end
even if it's not an actual GStreamer element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3441>

17 months agortpsession: Support disabling late adjustment of ntp-64 header ext
Matt Crane [Tue, 22 Nov 2022 16:32:57 +0000 (11:32 -0500)]
rtpsession: Support disabling late adjustment of ntp-64 header ext

Currently in rtp_session_send_rtp(), the existing ntp-64 RTP header
extension timestamp is updated with the actual NTP time before sending
the packet. However, there are some circumstances where we would like
to preserve the original timestamp obtained from reference timestamp
buffer metadata.

This commit provides the ability to configure whether or not to update
the ntp-64 header extension timestamp with the actual NTP time via the
update-ntp64-header-ext boolean property. The property is also exposed
via rtpbin. Default property value of TRUE will preserve existing
behavior (update ntp-64 header ext with actual NTP time).

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1580

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3451>

17 months agoadd new plugin for Qt 6 rendering inside a QML scene
Matthew Waters [Thu, 6 Oct 2022 06:08:54 +0000 (17:08 +1100)]
add new plugin for Qt 6 rendering inside a QML scene

- Based heavily on the existing Qt5 integration however:
  - The sharing of OpenGL resources is slightly different
  - The integration with the scengraph is a bit different
- Wayland, XCB and KMS have been smoke tested.  Android, MacOS/iOS,
  Windows may or may not work.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3281>

17 months agomfvideosrc: check HRESULT of CreateClassEnumerator correctly
Jan Lorenz [Wed, 23 Nov 2022 13:35:07 +0000 (14:35 +0100)]
mfvideosrc: check HRESULT of CreateClassEnumerator correctly

Fixes a crash during direct show device enumeration

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1599
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3460>

17 months agov4l2: bypass check some transfer types in colorimetry
Elliot Chen [Mon, 21 Nov 2022 07:35:58 +0000 (15:35 +0800)]
v4l2: bypass check some transfer types in colorimetry

v4l2 will report fail for some streams whose colorimetry value such as 2:4:8:3.
Can bypass check these transfer types in colorimetry to avoid error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3440>

17 months agodocs/design: Add document detailing the new gapless/instant-uri changes
Edward Hervey [Fri, 12 Aug 2022 15:25:28 +0000 (17:25 +0200)]
docs/design: Add document detailing the new gapless/instant-uri changes

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

17 months agouridecodebin3: propagate about-to-finish for new inputs
Edward Hervey [Tue, 9 Aug 2022 08:26:00 +0000 (10:26 +0200)]
uridecodebin3: propagate about-to-finish for new inputs

If the pending next urisourcebin is already draining, make sure we propagate it
when activating it.

Fixes gapless playback of small entries

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1588

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

17 months agouridecodebin3: Remove old fixme
Edward Hervey [Wed, 10 Aug 2022 14:52:23 +0000 (16:52 +0200)]
uridecodebin3: Remove old fixme

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

17 months ago(uri)decodebin3: Ensure group-id consistency
Edward Hervey [Tue, 9 Aug 2022 14:31:26 +0000 (16:31 +0200)]
(uri)decodebin3: Ensure group-id consistency

Make sure that group-id of a given play item are made consistent from the
start (sources) and all the way through the output.

This ensures that we can reliably detect that we have switched to the next play
item on the output of decodebin3 (and we can therefore properly free/release it)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

17 months agouridecodebin3: Fix shutdown procedures in probe
Edward Hervey [Tue, 9 Aug 2022 08:42:22 +0000 (10:42 +0200)]
uridecodebin3: Fix shutdown procedures in probe

When shutting down, we want to remove the urisourcebin blocking probes ... but
we also want to propagate a GST_FLOW_FLUSHING upstream (and not
GST_FLOW_NOT_LINKED) to make the upstream task gracefully stop instead of
posting an error message.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

17 months agodecodebin3: Properly reset when going back to READY
Edward Hervey [Fri, 5 Aug 2022 14:58:08 +0000 (16:58 +0200)]
decodebin3: Properly reset when going back to READY

Clear the remaining stream-related fields when going from PAUSED to READY, and
use when disposing.

Fixes various issues when re-using decodebin3/playbin3

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

17 months agodecodebin3: Don't output bogus GST_MESSAGE_STREAMS_SELECTED
Edward Hervey [Fri, 5 Aug 2022 08:37:23 +0000 (10:37 +0200)]
decodebin3: Don't output bogus GST_MESSAGE_STREAMS_SELECTED

When `is_selection_done` is called, it checks that all the requested streams are
present in the active stream list ...

... except there could very well be a (about to be removed) stream from the
previous selection present.

Therefore filter the list of streams we add to the message by the streams which
are actually requested.

Fixes issues when switching between different stream types (ex: video-only to
audio-only).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

17 months agoUse the correct SSRC(s) when routing a RTCB FB FIR
Johan Sternerup [Thu, 27 Oct 2022 15:30:28 +0000 (17:30 +0200)]
Use the correct SSRC(s) when routing a RTCB FB FIR

Previously we tried to route an incoming RTCP FB FIR to the correct ssrc
using the "media source" component of the RTCP FB message. However,
according to RFC5104 (section 4.3.1.2) the "media source" SHALL be set
to 0. Instead the ssrc(s) in use are propagated via the FCI data. Now
a specific GstForceKeyUnit event is sent for every ssrc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3292>

17 months agortpsource: Track the seqnum for senders
Jan Schmidt [Wed, 23 Nov 2022 05:37:40 +0000 (16:37 +1100)]
rtpsource: Track the seqnum for senders

RTP source statistics are tracked for local senders by
treating them as a receiver of their own outbound packets.

Accordingly, track the highest packet seqnum so that the
packets-lost calculation generates a sensible number instead
of always reporting -$number_of_packets_sent

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3454>

17 months agoadaptivedemux2: Add GStreamer to the deps list
Jan Schmidt [Tue, 22 Nov 2022 10:57:16 +0000 (21:57 +1100)]
adaptivedemux2: Add GStreamer to the deps list

Explicitly dep on GStreamer so as not to accidentally
link to the system version in a git build

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3453>

17 months agokmssink: Fix compilation without kernel headers
Nicolas Dufresne [Tue, 22 Nov 2022 20:27:38 +0000 (15:27 -0500)]
kmssink: Fix compilation without kernel headers

There was a drm/drm_mode.h included added recently, drm/ is usually
referencing the linux kernel header, but we only requires the libdrm
headers to be installed. On top of this, including drm_mode.h is never
needed as its already included by drm.h.

Fixes #1596

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3452>

17 months agoonnx: Update to OnnxRT >= 1.13.1 API
Daniel Morin [Thu, 10 Nov 2022 13:50:35 +0000 (08:50 -0500)]
onnx: Update to OnnxRT >= 1.13.1 API

- Replace deprecated methods
- Add a check on ORT version we are compatible with.
- Add clarification to the example given.
- Add the url to retrieve the model mentioned in the example.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3388>

17 months agoh265parse: Add the missing timestamp when splitting a frame.
He Junyan [Tue, 22 Nov 2022 08:42:26 +0000 (16:42 +0800)]
h265parse: Add the missing timestamp when splitting a frame.

When splitting a frame, the gst_buffer_copy_region() does not copy
the timestamp correctly for sub frames when the offset is not 0.
We still need those timestamps for each output sub frame.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3448>

17 months agoh264parse: Add the missing timestamp when splitting a frame.
He Junyan [Tue, 22 Nov 2022 07:50:44 +0000 (15:50 +0800)]
h264parse: Add the missing timestamp when splitting a frame.

When splitting a frame, the gst_buffer_copy_region() does not copy
the timestamp correctly for sub frames when the offset is not 0.
We still need those timestamps for each output sub frame.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3448>

17 months agodvbsubenc: Write Display Definition Segment if a non-default width/height is used
Sebastian Dröge [Mon, 21 Nov 2022 17:40:35 +0000 (19:40 +0200)]
dvbsubenc: Write Display Definition Segment if a non-default width/height is used

Otherwise it can't be rendered by dvbsuboverlay or ffmpeg at least.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3446>

17 months agoinputselector: Add drop-backwards property
Vivia Nikolaidou [Mon, 24 Oct 2022 15:02:27 +0000 (18:02 +0300)]
inputselector: Add drop-backwards property

When sync-streams=true, drop backwards buffers on pad switch.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3256>

17 months agoinputselector: Fix waiting on sync-mode=clock
Vivia Nikolaidou [Mon, 24 Oct 2022 13:49:47 +0000 (16:49 +0300)]
inputselector: Fix waiting on sync-mode=clock

Basically copy over what clocksync does, but taking into account that we
have multiple upstream latencies.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3256>

17 months agoav1dec: Demote rank to secondary
Seungha Yang [Thu, 27 Oct 2022 15:06:23 +0000 (00:06 +0900)]
av1dec: Demote rank to secondary

cerbero does not build this plugin for now, and there's altanative
dav1ddec

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3287>

17 months agortspsrc: Don't replace 404 errors with "no auth protocol found"
Jan Alexander Steffens (heftig) [Tue, 15 Nov 2022 10:56:35 +0000 (11:56 +0100)]
rtspsrc: Don't replace 404 errors with "no auth protocol found"

When getting a "404 Not Found" response from the DESCRIBE request, the
source produced a "No supported authentication protocol was found" error
instead of passing on the 404, which was confusing.

Only produce this error message when we're handling a response of "401
Unauthorized" without a compatible WWW-Authenticate header.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3414>

17 months agovaapipostproc: Fix the negotiation failure of some formats
Mengkejiergeli Ba [Mon, 14 Nov 2022 07:59:37 +0000 (15:59 +0800)]
vaapipostproc: Fix the negotiation failure of some formats

This patch fixes issue https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1565

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3399>

17 months agokmssink: add HDR10 infoframe support
Bill Hofmann [Fri, 18 Nov 2022 21:32:10 +0000 (13:32 -0800)]
kmssink: add HDR10 infoframe support

If stream has HDR10 metadata and HDMI device EDID supports it, this patch
will set the DRM properties accordingly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3303>

17 months agokmssink: Add skip-vsync property
Bill Hofmann [Mon, 21 Nov 2022 20:48:49 +0000 (15:48 -0500)]
kmssink: Add skip-vsync property

The legacy emulation in DRM/KMS drivers badly interact with GStreamer and
may cause the framerate to be halved. With this property, users can disable
vsync (which is handled internally by the emulation) in order to regain the
full framerate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3303>

17 months agoadaptivedemux2: Don't leak caps in debug statements
Edward Hervey [Mon, 21 Nov 2022 16:24:38 +0000 (17:24 +0100)]
adaptivedemux2: Don't leak caps in debug statements

Instead just directly use the stream object (which will report the caps)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

17 months agoadaptivedemux2: Don't leak tags
Edward Hervey [Mon, 21 Nov 2022 16:23:44 +0000 (17:23 +0100)]
adaptivedemux2: Don't leak tags

If we got them from GstStream, we should unref them when done

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

17 months agoadaptivedemux: Use gst_clear_tag_list_where applicable
Edward Hervey [Mon, 21 Nov 2022 16:23:10 +0000 (17:23 +0100)]
adaptivedemux: Use gst_clear_tag_list_where applicable

Clearer and ensures fields are reset

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

17 months agooggdemux: Don't leak pending seek event
Edward Hervey [Mon, 21 Nov 2022 14:12:26 +0000 (15:12 +0100)]
oggdemux: Don't leak pending seek event

Make sure any pending seek event is released when going back down to READY.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

17 months agortspsrc: Don't leak sticky events
Edward Hervey [Mon, 21 Nov 2022 14:11:21 +0000 (15:11 +0100)]
rtspsrc: Don't leak sticky events

We have incremented the reference 2 lines above, and
gst_pad_store_sticky_event() does not take a reference, therefore release it

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

17 months agoparsebin: Don't leak parsepad list on shutdown
Edward Hervey [Mon, 21 Nov 2022 14:10:35 +0000 (15:10 +0100)]
parsebin: Don't leak parsepad list on shutdown

Free it as it is down in other cases

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

17 months agotextrender: Don't pass plaintext as pango markup to Pango
Sebastian Dröge [Mon, 21 Nov 2022 16:47:50 +0000 (18:47 +0200)]
textrender: Don't pass plaintext as pango markup to Pango

Otherwise e.g. & in the text will cause Pango to complain about invalid
markup and render the text incorrectly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3445>

17 months agotextrender: Don't blindly forward all events
Sebastian Dröge [Mon, 21 Nov 2022 16:43:54 +0000 (18:43 +0200)]
textrender: Don't blindly forward all events

Use gst_pad_event_default(), which does the right thing by default.
Especially it does not forward text/x-plain caps downstream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3445>

17 months agoevent: Add transfer none annotation to gst_event_new_stream_collection()
Jan Schmidt [Fri, 18 Nov 2022 15:04:13 +0000 (02:04 +1100)]
event: Add transfer none annotation to gst_event_new_stream_collection()

Update the documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3387>

17 months agoadaptivedemux2: Fix sticky event storage.
Jan Schmidt [Tue, 15 Nov 2022 10:42:34 +0000 (21:42 +1100)]
adaptivedemux2: Fix sticky event storage.

Use the new gst_event_type_to_sticky_ordering() method to retrieve
the order that sticky events should be sent / stored in, instead
of assuming it's the event type value.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3387>

17 months agopad: Fix sticky event ordering for instant-rate-change
Jan Schmidt [Fri, 11 Nov 2022 11:57:38 +0000 (22:57 +1100)]
pad: Fix sticky event ordering for instant-rate-change

The event type for instant-rate-change events was poorly chosen,
leading to them being re-sent too late and even after EOS.

Add a mechanism in GstPad for the sticky event order to be
different to the value of the event type to fix that up.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3387>

17 months agoav1decoder: Clear highest_spatial_layer per sequence header
Seungha Yang [Thu, 17 Nov 2022 17:06:51 +0000 (02:06 +0900)]
av1decoder: Clear highest_spatial_layer per sequence header

Clear the value to default zero, indicating that no spatial scalability
layer is used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>

17 months agoav1decoder: Don't error out by dropped OBU
Seungha Yang [Thu, 17 Nov 2022 16:59:55 +0000 (01:59 +0900)]
av1decoder: Don't error out by dropped OBU

OBU can be dropped if the current layer is not in selected operation
point

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>

17 months agoav1decoder: Fix wrong spatial layer validation
Seungha Yang [Thu, 17 Nov 2022 16:49:43 +0000 (01:49 +0900)]
av1decoder: Fix wrong spatial layer validation

Highest spatial id and temporal id is independent, and should not drop
temporal enhance layer by the previous condition. Note that
the decision for dropping OBU based on operation point is being
handled in gst_av1_parser_identify_one_obu() already.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1585
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>

17 months agoav1parser: Don't print warning for expected OBU drop
Seungha Yang [Thu, 17 Nov 2022 16:43:26 +0000 (01:43 +0900)]
av1parser: Don't print warning for expected OBU drop

Dropping an OBU which is not in selected operation point is an
expected condition.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>

17 months agoav1parser: Remove impossible condition
Seungha Yang [Thu, 17 Nov 2022 16:41:33 +0000 (01:41 +0900)]
av1parser: Remove impossible condition

unsigned integer cannot be negative

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>

17 months agofakesrc: avoid time overflow with datarate
Célestin Marot [Fri, 18 Nov 2022 15:57:16 +0000 (16:57 +0100)]
fakesrc: avoid time overflow with datarate

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3433>

17 months agowebrtcbin: Remove queue after rtpfunnel
Jan Schmidt [Sat, 19 Nov 2022 08:22:17 +0000 (19:22 +1100)]
webrtcbin: Remove queue after rtpfunnel

The original BUNDLE support commit placed a queue after the
rtpfunnel that combines streams, but I don't see a good reason for
it. It has default settings, so if network output is slow might
accidentally store up to 1 second of pending data, increasing
latency.

Remove it in favour of doing any necessary buffering before
webrtcbin. If it turns out that there is a reason for it to
exist, the limits should probably be configurable and small.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3437>

17 months agoexamples/sendrecv: Remove extra unref of webrtcbin
Jan Schmidt [Sat, 19 Nov 2022 08:50:38 +0000 (19:50 +1100)]
examples/sendrecv: Remove extra unref of webrtcbin

The code now constructs webrtcbin with a floating ref and then
gives it to the pipeline. The extra unref is one too many.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3436>