platform/upstream/gstreamer.git
15 months agovalidate-scenario: fix g-i warning in annotation
Tim-Philipp Müller [Sat, 28 Jan 2023 20:02:49 +0000 (20:02 +0000)]
validate-scenario: fix g-i warning in annotation

gst-validate-scenario.c:2485: Warning: GstValidate: missing ":" at column 28:

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

15 months agogstreamer: bin: Don't unlock unlocked mutex in gst_bin_remove_func()
medithe [Tue, 7 Feb 2023 13:43:06 +0000 (13:43 +0000)]
gstreamer: bin: Don't unlock unlocked mutex in gst_bin_remove_func()

Calling `g_mutex_unlock(mutex)` leads to an undefined behavior if the
mutex is not locked by the current thread.

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

15 months agowebrtc examples: Use webrtc.gstreamer.net
Nirbheek Chauhan [Thu, 26 Jan 2023 11:58:24 +0000 (17:28 +0530)]
webrtc examples: Use webrtc.gstreamer.net

Actually just a CNAME to webrtc.nirbheek.in for now, but it allows
replacement / hosting without my involvement, so reduces the bus
factor.

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

15 months agonvencoder: Fix min buffers parameter of allocation query in auto GPU mode
Seungha Yang [Fri, 3 Feb 2023 13:10:12 +0000 (22:10 +0900)]
nvencoder: Fix min buffers parameter of allocation query in auto GPU mode

At the time when propose_allocation() get called, encoder session
would not be initialized yet.

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

15 months agogl/cocoa: Return a strong ref to the parent GstGLContext
Jan Schmidt [Thu, 2 Feb 2023 12:20:04 +0000 (23:20 +1100)]
gl/cocoa: Return a strong ref to the parent GstGLContext

If the GstGLCAOpenGLLayer was initialized via a parent
context, make sure to ref the context before returning it
from getGLContext as all callers will unref it.

Follow up to !3729

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

15 months agova: Avoid the array index overflow when filling 8x8 scaling list.
He Junyan [Thu, 19 Jan 2023 03:03:09 +0000 (11:03 +0800)]
va: Avoid the array index overflow when filling 8x8 scaling list.

The VA API has not defined the scaling list entries for U/V planes
for the 4:4:4 stream. In fact, we do not meet the 4:4:4 format output
for H264 so far, and scaling list is not used frequently, so we just
print out some warning and ignore these scaling list values.

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

15 months agoFix gstreamer-validate-1.0 dependency name
James Hilliard [Wed, 1 Feb 2023 04:38:09 +0000 (21:38 -0700)]
Fix gstreamer-validate-1.0 dependency name

The gst-devtools project generates gstreamer-validate-1.0.pc, this
must match the dependency in gst-editing-services for detection
to work properly.

Fixes:
Run-time dependency gst-validate-1.0 found: NO (tried pkgconfig and cmake)

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

15 months agovtenc: Disable HW acceleration for interlaced ProRes
Piotr Brzeziński [Wed, 9 Nov 2022 19:20:35 +0000 (20:20 +0100)]
vtenc: Disable HW acceleration for interlaced ProRes

Due to a bug in the VT API, attempting to encode interlaced content
with ProRes results in an error, halting the pipeline instead of
gracefully falling back to software encoding.
Should be removed in the future if Apple ever fixes this issue.

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

15 months agoaom: Include stream-format and alignment in the AV1 caps
Sebastian Dröge [Wed, 1 Feb 2023 15:26:57 +0000 (17:26 +0200)]
aom: Include stream-format and alignment in the AV1 caps

The decoder does not work with arbitrary alignment and annexb stream
format and the encoder can give the information that it outputs
obu-stream/tu to downstream.

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

15 months agonvvp9dec: Fix return value
Seungha Yang [Wed, 1 Feb 2023 20:04:48 +0000 (05:04 +0900)]
nvvp9dec: Fix return value

It should return GstFlowReturn value, not boolean

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

15 months agortspsrc: Also consider "Method Not Valid In This State" error in broken control URL...
Sebastian Dröge [Tue, 31 Jan 2023 14:56:18 +0000 (16:56 +0200)]
rtspsrc: Also consider "Method Not Valid In This State" error in broken control URL handling workaround

Some servers send a 455 error instead of any reasonable error when using
a correctly constructed control URL.

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

15 months agoci: rebuild windows image
Tim-Philipp Müller [Wed, 1 Feb 2023 18:55:17 +0000 (18:55 +0000)]
ci: rebuild windows image

Needed for the backport of https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3805
to take effect, once cerbero is made to use the new image.

Should fix errors like

cp: will not create hard link `./cerbero-sources/sbc-1.3' to directory `./cerbero-sources/bzip2-1.0.8'

and similar.

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

15 months agortpptdemux: set different stream-id on each src pad
Guillaume Desmottes [Tue, 31 Jan 2023 15:44:10 +0000 (16:44 +0100)]
rtpptdemux: set different stream-id on each src pad

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

15 months agortpssrcdemux: set different stream-id on each src pad
Guillaume Desmottes [Tue, 31 Jan 2023 14:28:22 +0000 (15:28 +0100)]
rtpssrcdemux: set different stream-id on each src pad

All the RTP src pads were sharing the same stream-id while each actually
carry a different stream.

This was causing problem for example when funneling the streams together
and then trying to split them using 'streamiddemux'.

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

15 months agogst-env: Handle installing python modules to dist-packages
Thibault Saunier [Fri, 27 Jan 2023 14:47:22 +0000 (11:47 -0300)]
gst-env: Handle installing python modules to dist-packages

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

15 months agoBaseSrc: fix transfer annotation for fixate virtual method
Mathieu Duponchelle [Fri, 27 Jan 2023 18:29:24 +0000 (19:29 +0100)]
BaseSrc: fix transfer annotation for fixate virtual method

The fixate virtual method has the same semantics as gst_caps_fixate(),
so the caps parameter must be marked as (transfer full).

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

15 months agovalidate: Fix gst_validate_execute_action annotation
Thibault Saunier [Fri, 27 Jan 2023 16:49:33 +0000 (13:49 -0300)]
validate: Fix gst_validate_execute_action annotation

The action passed in is transfer full

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

15 months agogldisplay: Mark `gst_gl_display_create_context()` `other_context` parameter as nullable
Sebastian Dröge [Fri, 27 Jan 2023 14:22:06 +0000 (16:22 +0200)]
gldisplay: Mark `gst_gl_display_create_context()` `other_context` parameter as nullable

See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/438

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

15 months agouritranscodebin: Fix unref of NULL
Thibault Saunier [Fri, 27 Jan 2023 18:54:48 +0000 (15:54 -0300)]
uritranscodebin: Fix unref of NULL

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

15 months agompegpsdemux: Ignore DTS if PTS < DTS
Seungha Yang [Thu, 29 Dec 2022 15:49:27 +0000 (00:49 +0900)]
mpegpsdemux: Ignore DTS if PTS < DTS

It's possibly timestamp rollover case. But PTS < DTS is already
invalid case anyway.

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

15 months agoBaseSrc, PushSrc: add nullable annotations to virtual methods
Mathieu Duponchelle [Thu, 26 Jan 2023 14:42:18 +0000 (15:42 +0100)]
BaseSrc, PushSrc: add nullable annotations to virtual methods

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

15 months agowebrtc_sendrecv.py: Fix PEP8 warnings in CI lint
Nirbheek Chauhan [Wed, 18 Jan 2023 02:08:51 +0000 (07:38 +0530)]
webrtc_sendrecv.py: Fix PEP8 warnings in CI lint

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

15 months agowebrtc_sendrecv.py: Handle LATENCY messages
Nirbheek Chauhan [Wed, 18 Jan 2023 02:06:47 +0000 (07:36 +0530)]
webrtc_sendrecv.py: Handle LATENCY messages

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

15 months agowebrtc_sendrecv.py: Add bus message handling
Nirbheek Chauhan [Wed, 18 Jan 2023 02:06:21 +0000 (07:36 +0530)]
webrtc_sendrecv.py: Add bus message handling

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

15 months agowebrtc_sendrecv.py: Add support for using H264 encoding
Nirbheek Chauhan [Wed, 18 Jan 2023 02:05:18 +0000 (07:35 +0530)]
webrtc_sendrecv.py: Add support for using H264 encoding

Currently only works when we are creating the offer or the offer only
contains H264.

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

15 months agowebrtc_sendrecv.py: Use sine wave for audio instead of red-noise
Nirbheek Chauhan [Wed, 18 Jan 2023 02:02:36 +0000 (07:32 +0530)]
webrtc_sendrecv.py: Use sine wave for audio instead of red-noise

Makes it easier to notice when there's packet loss or other audio
distortion.

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

15 months agoci/windows: Remove cargo-vendor sources from the cerbero source cache
Nirbheek Chauhan [Thu, 29 Sep 2022 14:00:05 +0000 (19:30 +0530)]
ci/windows: Remove cargo-vendor sources from the cerbero source cache

Copying the source cache to a running Cerbero CI job on Windows causes
strange / corrupted errors that talk about hard links like:

++ cp -a C:/cerbero/cerbero-sources .
cp: will not create hard link `./cerbero-sources/gstreamer-1.0/subprojects/gst-plugins-good/sys/osxaudio' to directory `./cerbero-sources/cargo-c-0.9.12/cargo-vendor/adler/benches'
[...]

So, delete it. The vendored sources are cached by cargo in its own
cache inside CARGO_HOME, which is build/rust/cargo/ and is preserved
in the image. We won't need to redownload any of this.

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

15 months agowasapi2src: Fix loopback capture on Windows 10 Anniversary Update
Seungha Yang [Tue, 24 Jan 2023 14:26:50 +0000 (23:26 +0900)]
wasapi2src: Fix loopback capture on Windows 10 Anniversary Update

... or older. Work around an OS bug that loopback capture
device doesn't notify event.

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

15 months agoaggregator: Warn about the right segment's format
Jan Alexander Steffens (heftig) [Thu, 26 Jan 2023 09:33:26 +0000 (10:33 +0100)]
aggregator: Warn about the right segment's format

We were checking the head segment here, not the current segment.

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

15 months agoaggregator: Always lock aggpad around update_time_level
Jan Alexander Steffens (heftig) [Wed, 2 Sep 2020 15:59:30 +0000 (17:59 +0200)]
aggregator: Always lock aggpad around update_time_level

`aggpad->segment` is protected by the `aggpad`'s object lock. We need to
take the lock before calling `update_time_level`.

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

15 months agortsp: gstrtspurl: gst_rtsp_url_get_request_uri: fix incorrect scheme for tls transpor...
Bart Van Severen [Wed, 25 Jan 2023 12:58:16 +0000 (13:58 +0100)]
rtsp: gstrtspurl: gst_rtsp_url_get_request_uri: fix incorrect scheme for tls transport methods

gst_rtsp_url_get_request_uri returns rtsp://... url when requested url is rtsps://, this is not
in accordance with https://www.rfc-editor.org/rfc/rfc7826.html#section-19.2.
This also impedes setting up a rtsps session with a live555 rtsp server.

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

15 months agosdp: gstmikey: gst_mikey_message_to_caps: extract salt and append to srtp-key
Bart Van Severen [Wed, 14 Dec 2022 09:31:14 +0000 (10:31 +0100)]
sdp: gstmikey: gst_mikey_message_to_caps: extract salt and append to srtp-key

A KEMAC can hold both key and salt, so if salt is present, we should extract it
and append it to the srtp-key cap because libsrtp expects the srtp-key to hold
the concantenated srtp master key and salt.

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

15 months agosdp: gstmikey: gst_mikey_message_to_caps: extract ROC from first crypto session
Bart Van Severen [Wed, 14 Dec 2022 09:29:27 +0000 (10:29 +0100)]
sdp: gstmikey: gst_mikey_message_to_caps: extract ROC from first crypto session

We need the ROC to decrypt a SRTP stream as the ROC is part of the AES IV.
So look for first crypto session, from which we can get the ROC and find corresponding
crypto policy.

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

15 months agogst: Fix gst_type_find_peek() return value annotation
Sebastian Dröge [Wed, 25 Jan 2023 11:26:08 +0000 (13:26 +0200)]
gst: Fix gst_type_find_peek() return value annotation

It's not possible to annotate a in-parameter for a return value array as
the array length. Both are assumed to have the same direction and the
current annotation causes the size parameter to be considered an out
parameter.

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

15 months agosdp: Fix gst_mikey_payload_key_data_set_interval() array length annotation
Sebastian Dröge [Wed, 25 Jan 2023 11:19:01 +0000 (13:19 +0200)]
sdp: Fix gst_mikey_payload_key_data_set_interval() array length annotation

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

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

15 months agov4l2h264dec: Fix Raspberry Pi4 will not play video in application
Pawel Stawicki [Wed, 25 Jan 2023 00:52:28 +0000 (00:52 +0000)]
v4l2h264dec: Fix Raspberry Pi4 will not play video in application

Ensure object v4l2object->pool will be released by
correctly releasing the temporary thread-safety lock

Fixes issue #1729

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

15 months agovulkan: memory: Flush non coherent memory after write.
Víctor Manuel Jáquez Leal [Wed, 4 Jan 2023 16:30:47 +0000 (17:30 +0100)]
vulkan: memory: Flush non coherent memory after write.

Spec 7.1.3:

If a memory object does not have the VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
property, then vkFlushMappedMemoryRanges must be called in order to guarantee
that writes to the memory object from the host are made available to the host
domain, where they can be further made available to the device domain via a
domain operation. Similarly, vkInvalidateMappedMemoryRanges must be called to
guarantee that writes which are available to the host domain are made visible to
host operations.

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

15 months agonvcodec: Log readable errors when initializing CUDA
Nirbheek Chauhan [Tue, 24 Jan 2023 05:56:02 +0000 (11:26 +0530)]
nvcodec: Log readable errors when initializing CUDA

It is really difficult for people to figure out why nvcodec has
0 features. Even the debug log is cryptic. Also make sure the errors
go to the ERROR log level, which is more likely to be enabled by
default.

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

15 months agonvcodec: Fix reporting of CuDeviceGetCount error
Nirbheek Chauhan [Tue, 24 Jan 2023 05:46:38 +0000 (11:16 +0530)]
nvcodec: Fix reporting of CuDeviceGetCount error

cuda_ret is was always going to be CUDA_SUCCESS in the error log.

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

15 months agoredenc: fix setting of extension ID for twcc
Mathieu Duponchelle [Tue, 24 Jan 2023 21:50:37 +0000 (22:50 +0100)]
redenc: fix setting of extension ID for twcc

1 was previously hardcoded in, and the bug went under the radar because
webrtcsink hardcodes the number too.

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

15 months agomultiqueue: Handle use-interleave latency live pipelines
Edward Hervey [Mon, 23 Jan 2023 16:26:07 +0000 (17:26 +0100)]
multiqueue: Handle use-interleave latency live pipelines

Due to the dynamic nature of multiqueue, when `use-interleave` is used we can't
report a maximum tolerated latency (when queried) since it is calculated
dynamically.

When in such live pipelines, we need to make sure multiqueue can handle the
lowest global latency (provided by this event). Failure to do that would
result in not providing enough buffering for a realtime pipeline.

Fixes #1732

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

15 months agoavvidenc: Don't take ffmpeg timestamps verbatim but only use them to calculate DTS
Sebastian Dröge [Tue, 24 Jan 2023 13:38:20 +0000 (15:38 +0200)]
avvidenc: Don't take ffmpeg timestamps verbatim but only use them to calculate DTS

The ffmpeg timestamps are inaccurate and only in framerate granularity.
To avoid generating inaccurate output timestamps, especially with
variable framerate streams, only use the ffmpeg timestamps for
calculating the DTS.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1544
again.

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

15 months agoRevert "avvidenc: Set timebase in the ffmpeg context to nanoseconds and set framerate"
Sebastian Dröge [Tue, 24 Jan 2023 13:28:17 +0000 (15:28 +0200)]
Revert "avvidenc: Set timebase in the ffmpeg context to nanoseconds and set framerate"

This reverts commit 50db59449e9cdb637c5f0c1b7c5dccd582fac4ee.

This broke the MPEG-1 video encoder as it requires the framerate to be
used for the timebase.

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

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

15 months agovaapi: Skip plugin pc file for shared plugins
Jan Alexander Steffens (heftig) [Tue, 24 Jan 2023 02:52:49 +0000 (02:52 +0000)]
vaapi: Skip plugin pc file for shared plugins

Following similar logic in the other subprojects.

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

15 months agoudpsrc: GstSocketTimestampMessage only for SCM_TIMESTAMPNS
David Svensson Fors [Mon, 23 Jan 2023 11:01:00 +0000 (12:01 +0100)]
udpsrc: GstSocketTimestampMessage only for SCM_TIMESTAMPNS

Deserialize socket control messages as GstSocketTimestampMessage only
if (level, type) is (SOL_SOCKET, SCM_TIMESTAMPNS).

Without this patch, messages with types SCM_RIGHTS or SCM_CREDENTIALS
could be deserialized as GstSocketTimestampMessage instead of
GUnixFDMessage or GUnixCredentialsMessage from gio.

Fixes #1736

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

15 months agoci: update for 1.22 branch
Tim-Philipp Müller [Wed, 25 Jan 2023 17:51:45 +0000 (17:51 +0000)]
ci: update for 1.22 branch

Don't have validate do --check-bugs in the 1.22 branch, as
any issues fixed may only have been fixed in the main branch.

15 months agoBack to development
Tim-Philipp Müller [Wed, 25 Jan 2023 16:46:42 +0000 (16:46 +0000)]
Back to development

15 months agoRelease 1.22.0 1.22.0
Tim-Philipp Müller [Mon, 23 Jan 2023 19:29:34 +0000 (19:29 +0000)]
Release 1.22.0

15 months agogst-plugins-ugly: update translations
Tim-Philipp Müller [Mon, 23 Jan 2023 16:28:13 +0000 (16:28 +0000)]
gst-plugins-ugly: update translations

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

15 months agogst-plugins-bad: update translations
Tim-Philipp Müller [Mon, 23 Jan 2023 16:28:08 +0000 (16:28 +0000)]
gst-plugins-bad: update translations

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

15 months agogst-plugins-good: update translations
Tim-Philipp Müller [Mon, 23 Jan 2023 16:27:56 +0000 (16:27 +0000)]
gst-plugins-good: update translations

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

15 months agogst-plugins-base: update translations
Tim-Philipp Müller [Mon, 23 Jan 2023 16:27:50 +0000 (16:27 +0000)]
gst-plugins-base: update translations

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

15 months agogstreamer: update translations
Tim-Philipp Müller [Mon, 23 Jan 2023 16:27:36 +0000 (16:27 +0000)]
gstreamer: update translations

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

15 months agod3d11compositor: Workaround blending artifacts on Intel platform
Seungha Yang [Mon, 23 Jan 2023 14:29:08 +0000 (23:29 +0900)]
d3d11compositor: Workaround blending artifacts on Intel platform

Disable vendor implemented converter in d3d11compositor to workaround
artifacts

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

15 months agoglvideomixer: Fixing error with mouse navigation events when no pixel-aspect-ratio
Ruben Gonzalez [Sat, 21 Jan 2023 23:52:56 +0000 (00:52 +0100)]
glvideomixer: Fixing error with mouse navigation events when no pixel-aspect-ratio

Handling mouse navigation events in glvideomixer element, if no
pixel-aspect-ratio info in the caps, an assertion error is produced
inside gst_util_fraction_multiply because default denominator is zero.

Error fixed:
```
(gst-launch-1.0:102654): GStreamer-CRITICAL **: 00:47:51.598: gst_util_fraction_multiply: assertion 'b_d != 0' failed
```

Simple pipeline to reproduce the issue:
```
gst-launch-1.0 -v glvideomixer name=mix ! glimagesinkelement  gltestsrc  ! mix.sink_0
```

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

15 months agoplayback: New playback elements are no longer experimental
Edward Hervey [Fri, 20 Jan 2023 08:59:06 +0000 (09:59 +0100)]
playback: New playback elements are no longer experimental

The API is not expected to change and it has been used extensively since 1.18.

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

15 months agoexamples: webrtc: rust: Update dependencies
Sebastian Dröge [Fri, 20 Jan 2023 11:06:47 +0000 (13:06 +0200)]
examples: webrtc: rust: Update dependencies

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

15 months agoexamples: webrtc: multiparty-sendrecv: rust: Remove unnecessary macro recursion limit...
Sebastian Dröge [Fri, 20 Jan 2023 10:55:50 +0000 (12:55 +0200)]
examples: webrtc: multiparty-sendrecv: rust: Remove unnecessary macro recursion limit annotation

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

15 months agoexamples: webrtc: sendrecv: rust: Implement `OFFER_REQUEST` handling
Sebastian Dröge [Fri, 20 Jan 2023 10:25:23 +0000 (12:25 +0200)]
examples: webrtc: sendrecv: rust: Implement `OFFER_REQUEST` handling

Allow requesting an offer from the peer if we're joining a call with a
peer, and allow the peer to request an offer from us if waiting for an
incoming call.

This implements all 4 variants the protocol allows for.

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

15 months agoexamples: webrtc: sendrecv: rust: Allow providing our ID via the commandline
Sebastian Dröge [Fri, 20 Jan 2023 10:23:36 +0000 (12:23 +0200)]
examples: webrtc: sendrecv: rust: Allow providing our ID via the commandline

Otherwise it continues to use a random ID as before.

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

15 months agoexamples: webrtc: sendrecv: rust: Implement TWCC support in both directions
Sebastian Dröge [Thu, 19 Jan 2023 18:56:44 +0000 (20:56 +0200)]
examples: webrtc: sendrecv: rust: Implement TWCC support in both directions

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

15 months agoexamples: webrtc: rust: Set keyframe-max-dist=2000 and picture-id-mode=15-bit for...
Sebastian Dröge [Thu, 19 Jan 2023 18:38:41 +0000 (20:38 +0200)]
examples: webrtc: rust: Set keyframe-max-dist=2000 and picture-id-mode=15-bit for VP8 and perfect-timestamps=true for audio

This makes it in sync with the C sendrecv and generally behaves better.

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

15 months agoexamples: webrtc: sendrecv: rust: Use the correct payload types if the remote is...
Sebastian Dröge [Thu, 19 Jan 2023 18:38:12 +0000 (20:38 +0200)]
examples: webrtc: sendrecv: rust: Use the correct payload types if the remote is the offerer

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

15 months agowpe: Add 'run-javascript' action signal
Jonas Danielsson [Thu, 19 Jan 2023 14:24:05 +0000 (15:24 +0100)]
wpe: Add 'run-javascript' action signal

Introduce way of running a script in the context of the internal
webView.

Fixes #1722

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

15 months agodecodebin3: Remove failing stream from selection
Edward Hervey [Thu, 19 Jan 2023 15:35:08 +0000 (16:35 +0100)]
decodebin3: Remove failing stream from selection

If no decoder is present for a given stream, remove it from the requested
selection.

Fixes #1581 and #1662

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

15 months agodecodebin3: Don't intercept queries if no parsebin present
Edward Hervey [Thu, 19 Jan 2023 15:27:57 +0000 (16:27 +0100)]
decodebin3: Don't intercept queries if no parsebin present

If we don't use a parsebin, we forward the queries as-is from upstream. There is
no reconfiguration possible within identity.

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

15 months agodecodebin3: Don't insert parsebin if input is already parsed
Edward Hervey [Thu, 19 Jan 2023 15:25:51 +0000 (16:25 +0100)]
decodebin3: Don't insert parsebin if input is already parsed

This is a temporary workaround until we find a generic solution to indicate that
a stream has already been "parsed".

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

15 months agowin32ipcvideosrc: Fix leak in fallback copy path
Seungha Yang [Thu, 19 Jan 2023 13:40:36 +0000 (22:40 +0900)]
win32ipcvideosrc: Fix leak in fallback copy path

Clear shared memory after use

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

15 months agova: Fix path leak
Edward Hervey [Thu, 19 Jan 2023 14:36:40 +0000 (15:36 +0100)]
va: Fix path leak

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

15 months agogst: Mark caps parameters in ALLOCATION query API as nullable
Sebastian Dröge [Thu, 19 Jan 2023 14:01:21 +0000 (16:01 +0200)]
gst: Mark caps parameters in ALLOCATION query API as nullable

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

15 months agogst-play: add --no-position
Guillaume Desmottes [Mon, 9 Jan 2023 10:36:38 +0000 (11:36 +0100)]
gst-play: add --no-position

It can be useful to reduce or remove the clutter in logs due to those
queries when debugging.

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

15 months agomatroska: Add `stream-format = (string) obu-stream` to AV1 caps
Sebastian Dröge [Tue, 17 Jan 2023 15:51:16 +0000 (17:51 +0200)]
matroska: Add `stream-format = (string) obu-stream` to AV1 caps

Anything else is not allowed in Matroska/WebM.

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

15 months agoisomp4: Add `stream-format = (string) obu-stream` to AV1 caps
Sebastian Dröge [Tue, 17 Jan 2023 15:50:27 +0000 (17:50 +0200)]
isomp4: Add `stream-format = (string) obu-stream` to AV1 caps

Anything else is not allowed in MP4.

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

15 months agogst-examples: Update Rust dependencies
Sebastian Dröge [Thu, 19 Jan 2023 08:40:32 +0000 (10:40 +0200)]
gst-examples: Update Rust dependencies

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

15 months agogleglimage: Fix GL_OES_EGL_image_external name in debug trace
Nicolas Dufresne [Wed, 18 Jan 2023 21:39:03 +0000 (16:39 -0500)]
gleglimage: Fix GL_OES_EGL_image_external name in debug trace

There is a debug log when this extension is missing, but it was
reporting the wrong extension name, which was confusing.

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

15 months agoinput-selector: Take the object lock while iterating sinkpads
Jan Alexander Steffens (heftig) [Wed, 18 Jan 2023 15:07:39 +0000 (16:07 +0100)]
input-selector: Take the object lock while iterating sinkpads

Otherwise we can race with pad removal and crash from use-after-free.

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

15 months agoglvideomixer: don't clear pad->geometry_change when setting an identical value
Michiel Konstapel [Mon, 16 Jan 2023 10:43:37 +0000 (11:43 +0100)]
glvideomixer: don't clear pad->geometry_change when setting an identical value

Closes #1715

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

15 months agogst-docs: include dmabuf and gapless playback design docs
Tim-Philipp Müller [Wed, 18 Jan 2023 13:42:38 +0000 (13:42 +0000)]
gst-docs: include dmabuf and gapless playback design docs

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

15 months agouridecodebin3: clear subitem if suburi is set to NULL
Tim-Philipp Müller [Sat, 14 Jan 2023 16:16:49 +0000 (16:16 +0000)]
uridecodebin3: clear subitem if suburi is set to NULL

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

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

15 months agoqtdemux: Add basic support for AVC-Intra video
Jan Alexander Steffens (heftig) [Tue, 17 Jan 2023 14:04:10 +0000 (15:04 +0100)]
qtdemux: Add basic support for AVC-Intra video

AVC-Intra is a range of H.264-compliant intra-only codecs from
Panasonic. The codes and descriptions have been taken from VLC.

The (encumbered) sample I have here produces byte-stream H.264,
including SPS and PPS and no `avcC` box.

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

15 months agogl: Fix crash in cocoa due to race in gst_gl_context_activate()
Nirbheek Chauhan [Mon, 16 Jan 2023 10:25:56 +0000 (15:55 +0530)]
gl: Fix crash in cocoa due to race in gst_gl_context_activate()

We create a new context in `gst_gl_context_create_thread()` and then
activate it on the current thread. Thereafter we assume that the
current thread continues to be the active thread for that context and
call `gst_gl_context_fill_info()` which asserts that the current
thread is the active thread.

However, if at the same time a different thread calls
`send_message_async()`, it will call into
`gst_gl_window_cocoa_send_message_async()` which will schedule the
message to be invoked using GCD. That anonymous function will also
call `gst_gl_context_activate()`, which creates a race, which can lead
to:

```
gst_gl_context_fill_info: assertion 'context->priv->active_thread == g_thread_self ()' failed
```

Fix it by using `gst_gl_context_thread_add()` to invoke `fill_info()`
on the context.

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

15 months agoges: smart-mixer: Avoid video freeze on NLE stack changes
Thibault Saunier [Thu, 12 Jan 2023 14:52:21 +0000 (11:52 -0300)]
ges: smart-mixer: Avoid video freeze on NLE stack changes

Since we support "nested compositors"[0] we were not finalizing the pads_infos
and thus not releasing the mixer pad on stack change, meaning that
the following stacks were never prerolling.

[0] https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2094

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

15 months agoges: Fix issues avoiding to use `operator` when unavailable on mixer
Thibault Saunier [Thu, 12 Jan 2023 14:07:45 +0000 (11:07 -0300)]
ges: Fix issues avoiding to use `operator` when unavailable on mixer

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

15 months agogl/cocoa: Store a weak reference to the `GstGLWindow` instead of the `GstGLContext`
Sebastian Dröge [Sat, 14 Jan 2023 10:46:39 +0000 (16:16 +0530)]
gl/cocoa: Store a weak reference to the `GstGLWindow` instead of the `GstGLContext`

We can't rely on the `GstGLContext` to stay alive and need to keep track
of it. For that we keep track of the `GstGLWindow` in a weak reference
to avoid a reference cycle, and get the corresponding `GstGLContext`
whenever needed.

With contributions from Nirbheek Chauhan.

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

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

15 months agoRelease 1.21.90
Tim-Philipp Müller [Fri, 13 Jan 2023 19:08:48 +0000 (19:08 +0000)]
Release 1.21.90

15 months agoavvidenc: Offset PTS to zero to fix bitrate control
Sebastian Dröge [Fri, 13 Jan 2023 10:43:30 +0000 (12:43 +0200)]
avvidenc: Offset PTS to zero to fix bitrate control

Otherwise ffmpeg's rate control algorithm will not work correctly as
it is based on the absolute PTS values.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/91

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

15 months agourisourcebin: Cleanup on failure
Edward Hervey [Fri, 13 Jan 2023 15:39:51 +0000 (16:39 +0100)]
urisourcebin: Cleanup on failure

This ensures there is a source present/valid *ONLY* in PAUSED and above.

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

15 months agourisourcebin: Unset locked state
Edward Hervey [Fri, 13 Jan 2023 15:37:03 +0000 (16:37 +0100)]
urisourcebin: Unset locked state

Some elements still had it in failure cases

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

15 months agouridecodebin3: Handle state synchronization failures
Edward Hervey [Fri, 13 Jan 2023 15:34:45 +0000 (16:34 +0100)]
uridecodebin3: Handle state synchronization failures

Properly reset and remove the failing urisourcebin if we failed bringing them up
to the same state as ourselves.

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

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

15 months agortopuspay: Use GstStaticCaps to cache parsed caps
Olivier Crête [Thu, 12 Jan 2023 19:32:30 +0000 (14:32 -0500)]
rtopuspay: Use GstStaticCaps to cache parsed caps

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

15 months agortopuspay: Ignore the stereo parameter in multiopus caps
Olivier Crête [Thu, 12 Jan 2023 19:25:52 +0000 (14:25 -0500)]
rtopuspay: Ignore the stereo parameter in multiopus caps

Also add unit tests for the various variants

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

15 months agortpopuspay: Leave original caps as-is
Olivier Crête [Tue, 3 Jan 2023 23:55:24 +0000 (18:55 -0500)]
rtpopuspay: Leave original caps as-is

This should make it work if someone specifies stereo with MULTIOPUS
somehow.

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

15 months agortpopuspay: Return upstream channel filter based on OPUS vs MULTICAPS
Olivier Crête [Tue, 3 Jan 2023 23:06:56 +0000 (18:06 -0500)]
rtpopuspay: Return upstream channel filter based on OPUS vs MULTICAPS

Only allow 1 or 2 channels if the caps are OPUS, or 3+ if they are
MULTIOPUS.

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

15 months agortpopus: Put MULTIOPUS in all caps
Olivier Crête [Tue, 3 Jan 2023 22:44:37 +0000 (17:44 -0500)]
rtpopus: Put MULTIOPUS in all caps

The RTP payload encoding-name are always in caps in GStreamer.
In SDP, they are not case-sensitive, but since caps are, we need to pick
a caps, and we picked upper-case along time ago.

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

15 months agoandroid: Update minimum SDK version to Android 21
Sebastian Dröge [Thu, 12 Jan 2023 19:33:25 +0000 (21:33 +0200)]
android: Update minimum SDK version to Android 21

Otherwise we can't bump the minimum version of the cerbero build without
it breaking linking of the applications.

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

15 months agod3d11memory: Fix potential crash in GstD3D11PoolAllocator
Seungha Yang [Thu, 12 Jan 2023 13:17:24 +0000 (22:17 +0900)]
d3d11memory: Fix potential crash in GstD3D11PoolAllocator

Allocator object can be the final refcount holder, when a GstD3D11Memory
is being released. Do unref allocator once there's no more
remaining operation.

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

15 months agod3d11memory: Remove GstD3D11PoolAllocator::dispose
Seungha Yang [Thu, 12 Jan 2023 13:14:30 +0000 (22:14 +0900)]
d3d11memory: Remove GstD3D11PoolAllocator::dispose

Clear GstD3D11Device object in finalize method as well

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

15 months agoglbasefilter: Copy metas when they only contain they "video" tag
Thibault Saunier [Thu, 12 Jan 2023 17:39:20 +0000 (14:39 -0300)]
glbasefilter: Copy metas when they only contain they "video" tag

Same logic as in `GstVideoFilter`

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

15 months agodecodebin3: Fix global group-id handling
Edward Hervey [Wed, 11 Jan 2023 16:30:09 +0000 (17:30 +0100)]
decodebin3: Fix global group-id handling

The goal of the "global" group-id is to fix new inputs that do not come from the
same "source" as others. In order to ensure all "current" streams have the same
group-id we distribute the first valid group-id to all streams.

This commit fixes two issues with that:

* When inputs are unlinked they weren't always properly resetted (it would only
  work if parsebin is used, which is no longer the default in
  uridecodebin3/playbin3).

* When computing the global group-id, take into account unset
  group-id (i.e. GST_GROUP_ID_INVALID).

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

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

15 months agogst-plugins-ugly: update translations
Tim-Philipp Müller [Wed, 11 Jan 2023 15:41:26 +0000 (15:41 +0000)]
gst-plugins-ugly: update translations

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

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