platform/upstream/gstreamer.git
16 months agoRelease 1.21.90
Tim-Philipp Müller [Fri, 13 Jan 2023 19:08:48 +0000 (19:08 +0000)]
Release 1.21.90

16 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>

16 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>

16 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>

16 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>

16 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>

16 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>

16 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>

16 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>

16 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>

16 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>

16 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>

16 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>

16 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>

16 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>

16 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>

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

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

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

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

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

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

16 months agogstreamer: update translations
Tim-Philipp Müller [Wed, 11 Jan 2023 15:40:49 +0000 (15:40 +0000)]
gstreamer: update translations

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

16 months agoFix translation pot files when creating dist tarballs
Tim-Philipp Müller [Wed, 11 Jan 2023 14:53:39 +0000 (14:53 +0000)]
Fix translation pot files when creating dist tarballs

Add version as per Translation Project requirements and
also add a .pot file without the ABI suffix.

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

16 months agodecodebin3: ensure recalculate_group_id() is called with INPUT lock
Guillaume Desmottes [Tue, 10 Jan 2023 10:19:12 +0000 (11:19 +0100)]
decodebin3: ensure recalculate_group_id() is called with INPUT lock

This function uses main_input and current_group_id which are protected
by the input lock.
Some calls were already safe but not all.

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

16 months agouridecodebin3: fix stream leak
Guillaume Desmottes [Wed, 21 Dec 2022 14:35:21 +0000 (15:35 +0100)]
uridecodebin3: fix stream leak

GstSourcePad owns the GstStream but was not unreffing it when being
disposed.

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

16 months agodecodebin3: fix dead lock when removing pad
Guillaume Desmottes [Wed, 21 Dec 2022 09:44:40 +0000 (10:44 +0100)]
decodebin3: fix dead lock when removing pad

gst_element_remove_pad() is triggering a call to
gst_decodebin3_input_pad_unlink() which needs the input lock as well,
resulting in a dead lock.

Fix #1667

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

16 months agotools: Use `gst_macos_main()` on macOS
Sebastian Dröge [Wed, 11 Jan 2023 10:17:13 +0000 (12:17 +0200)]
tools: Use `gst_macos_main()` on macOS

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

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

16 months agodocs: Need to use versioned paths on macOS
Nirbheek Chauhan [Tue, 10 Jan 2023 18:50:42 +0000 (00:20 +0530)]
docs: Need to use versioned paths on macOS

Especially with pkg-config, it needs to be called with the right path
otherwise it might not pick up the prefix correctly.

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

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

16 months agomeson: gst-plugins-bad: Disable spammy MSVC warning
Seungha Yang [Tue, 10 Jan 2023 18:23:57 +0000 (03:23 +0900)]
meson: gst-plugins-bad: Disable spammy MSVC warning

warning C5051: attribute 'noinline' requires at least '/std:c++20';
ignored

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

16 months agotests: interactive: test-effect-switch: use autovideosink
Tim-Philipp Müller [Tue, 10 Jan 2023 13:06:37 +0000 (13:06 +0000)]
tests: interactive: test-effect-switch: use autovideosink

Also works on Windows.

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

16 months agomxfmux: Add all local tags to the primer
Sebastian Dröge [Mon, 9 Jan 2023 10:39:55 +0000 (12:39 +0200)]
mxfmux: Add all local tags to the primer

No matter if they're allocated via GSlice or malloc(). The allocator is
completely irrelevant, all local tags need to be in the primer so they
can be handled.

This didn't have any effect in practice because all local tags that
appear in the muxer are allocated via GSlice. Only from the demuxer they
might be allocated via malloc().

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

16 months agojpegdec: Disable libjpeg-turbo SIMD acceleration support for now
Marek Vasut [Sat, 7 Jan 2023 19:03:31 +0000 (20:03 +0100)]
jpegdec: Disable libjpeg-turbo SIMD acceleration support for now

The libjpeg-turbo SIMD acceleration support suffers from multiple
unresolved cornercases. Disable the libjpeg-turbo for now until
those cornercases are resolved.

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

16 months agoci/README: basic instructions for running locally
Mathieu Duponchelle [Wed, 4 Jan 2023 14:33:20 +0000 (15:33 +0100)]
ci/README: basic instructions for running locally

These should be extended upon by someone more knowledgeable with the
topic, but that's the basic information I would want to find there
in order to start debugging CI issues locally.

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

16 months agolibav: avaudec: display flow return name instead of value
Guillaume Desmottes [Mon, 9 Jan 2023 12:23:56 +0000 (13:23 +0100)]
libav: avaudec: display flow return name instead of value

More convenient to read in logs. gstavviddec already does it.

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

16 months agogst-play: fix command line option string formatting
Tim-Philipp Müller [Mon, 9 Jan 2023 01:24:57 +0000 (01:24 +0000)]
gst-play: fix command line option string formatting

Add missing space to translated string.

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

16 months agoav1enc: Add property for controlling max distance between 2 keyframes
Philippe Normand [Thu, 15 Dec 2022 18:42:26 +0000 (18:42 +0000)]
av1enc: Add property for controlling max distance between 2 keyframes

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

16 months agoaom: av1enc: Expose more properties
Yatin Mann [Mon, 11 Jul 2022 05:33:16 +0000 (11:03 +0530)]
aom: av1enc: Expose more properties

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

16 months agoaom: av1enc: Remove redundant enum variants from header
yatinmaan [Sun, 8 Jan 2023 18:16:40 +0000 (23:46 +0530)]
aom: av1enc: Remove redundant enum variants from header

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

16 months agoaom: av1enc: Ensure that input pts is strictly increasing
Yatin Mann [Mon, 11 Jul 2022 03:57:41 +0000 (09:27 +0530)]
aom: av1enc: Ensure that input pts is strictly increasing

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

16 months agoaom: av1enc: Fix pts unit
Yatin Mann [Mon, 4 Jul 2022 14:25:59 +0000 (19:55 +0530)]
aom: av1enc: Fix pts unit

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

16 months agodfbvideosink: Fix compile error
ekwange [Mon, 2 Jan 2023 09:34:59 +0000 (18:34 +0900)]
dfbvideosink: Fix compile error

Fix some compile errors

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

16 months agowebrtc nice: Let libnice handle STUN/TURN DNS resolution
Olivier Crête [Mon, 2 Jan 2023 00:19:03 +0000 (19:19 -0500)]
webrtc nice: Let libnice handle STUN/TURN DNS resolution

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

16 months agowebrtc: Change requirement to libnice 0.1.20
Olivier Crête [Fri, 6 Jan 2023 20:07:42 +0000 (15:07 -0500)]
webrtc: Change requirement to libnice 0.1.20

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

16 months agortspclientsink: Add `publish-clock-mode` property
Sebastian Dröge [Fri, 16 Dec 2022 09:16:52 +0000 (11:16 +0200)]
rtspclientsink: Add `publish-clock-mode` property

This allows modifying the behaviour how/if the pipeline clock is
published according to RFC7273, similar to the same API on
`GstRTSPMedia`.

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

16 months agortspclientsink: Fix docs for various properties
Sebastian Dröge [Wed, 4 Jan 2023 11:46:15 +0000 (13:46 +0200)]
rtspclientsink: Fix docs for various properties

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

16 months agodocs: explicitly declare gir build dependencies
Mathieu Duponchelle [Wed, 4 Jan 2023 20:37:55 +0000 (21:37 +0100)]
docs: explicitly declare gir build dependencies

As the path to the gir file is passed to hotdoc.generate_doc() and
not the build target itself, meson doesn't know about the dependency.

In turn, as the CI doesn't build everything before building the
documentation target, some gir files might not exist, for instance
in the case of gst-rtsp-server, causing the output documentation to
be empty.

The error occurred silently because hotdoc accepts wildcards for
*-sources arguments, thus it won't warn about a missing gir file as
it is legitimate for glob matching to resolve to nothing.

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

16 months agotypefindfunctions: Add missing length check to XML typefinder
Sebastian Dröge [Fri, 6 Jan 2023 16:09:02 +0000 (18:09 +0200)]
typefindfunctions: Add missing length check to XML typefinder

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54811

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

16 months agotypefindfunctions: Reduce XML typefinder minimum data size from 64 to 32 bytes
Sebastian Dröge [Fri, 6 Jan 2023 12:37:31 +0000 (14:37 +0200)]
typefindfunctions: Reduce XML typefinder minimum data size from 64 to 32 bytes

64 bytes makes the typefinder fail on very small XML documents on which
it succeeded previously.

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

16 months agoopusdec: Try harder to negotiate the upstream channels/rate preferences
Sebastian Dröge [Thu, 5 Jan 2023 15:59:41 +0000 (17:59 +0200)]
opusdec: Try harder to negotiate the upstream channels/rate preferences

It might be possible to fulfill those but not with the first caps
structure. Instead of just fixating the first caps structure, check if
the preference can be fulfilled by any of the structures as the first
step.

Without this the following pipeline negotiates to mono after the
decoder because opusenc only has a single channel in its first caps
structure.

    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/3689>

16 months agoRevert "opusenc: Reverse channel order in template caps"
Sebastian Dröge [Thu, 5 Jan 2023 15:35:02 +0000 (17:35 +0200)]
Revert "opusenc: Reverse channel order in template caps"

This reverts commit cdf411e82d7e437e5de138492b6e75e5513686ee. It causes
pipelines to unnecessarily negotiate to 8 channels.

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

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

16 months agodvbbasebin: don't rely on g_key_file_get_(integer|uint64) return
Rodrigo Bernardes [Wed, 4 Jan 2023 21:55:08 +0000 (18:55 -0300)]
dvbbasebin: don't rely on g_key_file_get_(integer|uint64) return

instead check if an error was returned, and fail if any

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

16 months agohlsdemux: Consider starting stream time in presentation offset
Jan Schmidt [Sun, 7 Aug 2022 04:23:04 +0000 (14:23 +1000)]
hlsdemux: Consider starting stream time in presentation offset

When calculating the presentation offset for CMAF input in live
playback, subtract the stream_time of the fragment from the
calculated presentation offset, so that the first fragment
is played at running time zero.

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

16 months agowebrtc examples: Force regular non-MULTIOPUS
Olivier Crête [Tue, 3 Jan 2023 22:44:37 +0000 (17:44 -0500)]
webrtc examples: Force regular non-MULTIOPUS

Using MULTIOPUS breaks with most browsers

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

16 months agowebrtc-unidirectional: Avoid critical
Olivier Crête [Tue, 3 Jan 2023 22:12:12 +0000 (17:12 -0500)]
webrtc-unidirectional: Avoid critical

Don't unref the parameter passed to a signal, it's always owned by
the caller. Fixes a GLib critical.

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

16 months agoaudioenc/dec: Avoid adding temporary structure
Olivier Crête [Tue, 3 Jan 2023 23:53:41 +0000 (18:53 -0500)]
audioenc/dec: Avoid adding temporary structure

As a minor optimisation

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

16 months agoaudioenc/dec: Preserve downstream caps preference in get caps
Olivier Crête [Tue, 3 Jan 2023 23:52:05 +0000 (18:52 -0500)]
audioenc/dec: Preserve downstream caps preference in get caps

This should fix pipelines such as this one to work as expected
  ... ! opusenc ! capsfilter caps='audio/x-opus,
  channels=1; audio/x-opus, channels=2' ! ...

The expectation is that the encoder will propose the first structure
before the second one to the source.

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

16 months agoges: gst_bin_add() is `transfer floating` so wrappers around it are too
Sebastian Dröge [Wed, 4 Jan 2023 10:21:22 +0000 (12:21 +0200)]
ges: gst_bin_add() is `transfer floating` so wrappers around it are too

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

16 months agosrt: Avoid crash on unknown option
Olivier Crête [Tue, 3 Jan 2023 20:01:37 +0000 (15:01 -0500)]
srt: Avoid crash on unknown option

Use the correct field that is null instead of the struct value which
never is.

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

16 months agotypefindfunctions: Check for the SVG namespace URL in addition to `<svg` and the...
Sebastian Dröge [Fri, 23 Dec 2022 14:15:49 +0000 (16:15 +0200)]
typefindfunctions: Check for the SVG namespace URL in addition to `<svg` and the doctype

Finding the SVG namespace URL gives a clear indication that this is
actually an SVG file while the `<svg>` tag only gives a likely
indication as it's rather short.

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

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

16 months agoqroverlay: Add qrcode-case-sensitive property
Xavier Claessens [Fri, 30 Dec 2022 15:30:38 +0000 (10:30 -0500)]
qroverlay: Add qrcode-case-sensitive property

This allows to encode case sensitive strings, like wifi SSID/password.

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

16 months agoavvidenc: Set timebase in the ffmpeg context to nanoseconds and set framerate
Sebastian Dröge [Fri, 23 Dec 2022 16:01:03 +0000 (18:01 +0200)]
avvidenc: Set timebase in the ffmpeg context to nanoseconds and set framerate

As we now actually use the timestamps from ffmpeg for timestamping the
output we would lose a lot of accuracy if the framerate is used.

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

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

16 months agotypefindfunctions: Make XML typefinder more strict
Sebastian Dröge [Fri, 23 Dec 2022 15:25:06 +0000 (17:25 +0200)]
typefindfunctions: Make XML typefinder more strict

If a XMLDec is found, check also for its end. Similarly, check for the
end of the XML tag we're looking for and make sure that the following
characters are valid.

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

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

16 months agoh265decoder: Fix a memory leak because of slice header.
He Junyan [Tue, 3 Jan 2023 09:28:18 +0000 (17:28 +0800)]
h265decoder: Fix a memory leak because of slice header.

The gst_h265_slice_hdr_free() should free the slice header just
parsed, not the priv->current_slice. Or, the memory leak will
happen because we do not free the slices in priv->nalu list.

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

16 months agosubprojects: libffi: pin to meson-3.2.9999.4 tag
Tim-Philipp Müller [Sat, 31 Dec 2022 13:47:34 +0000 (13:47 +0000)]
subprojects: libffi: pin to meson-3.2.9999.4 tag

In case we want to change the 'meson' branch over
to the re-done meson port based on upstream libffi
in future.

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

16 months agomeson: Accept latest version of opencv 4.x
مهدي شينون (Mehdi Chinoune) [Fri, 30 Dec 2022 17:10:12 +0000 (17:10 +0000)]
meson: Accept latest version of opencv 4.x

We've been bumping along the maximum opencv 4.x version for years,
just accept all opencv versions till someone reports breakage.

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

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

16 months agourisourcebin: Fix parsebin handling
Edward Hervey [Fri, 30 Dec 2022 07:44:35 +0000 (08:44 +0100)]
urisourcebin: Fix parsebin handling

The goal of !3601 was to make sure we don't end up with non-streams-aware
adaptive demuxers. Since we know that parsebin is streams-aware, just remember
that and handle them that way.

Fixes issues with some scenarios where parsebin might add pads *before* the
collection is posted on the bus

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

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

16 months agouridecodebin3: Fix handling of "expected" pads
Edward Hervey [Thu, 29 Dec 2022 15:02:38 +0000 (16:02 +0100)]
uridecodebin3: Fix handling of "expected" pads

The number of expected pads was:
* Defaulting to 1
* Or being overriden by GST_MESSAGE_STREAMS_SELECTED

This fails if upstream isn't a selectable source and has multiple streams, and
would therefore cause failures with multi-stream gapless playback

Fixes #1672

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

16 months agouridecodebin3: Avoid repeatedly calling the blocking probe
Edward Hervey [Thu, 29 Dec 2022 15:01:07 +0000 (16:01 +0100)]
uridecodebin3: Avoid repeatedly calling the blocking probe

When skipping an event, we want to unref it and say we handled it. This avoids
being repeatedly called for the same (sticky) events.

The events will be properly propagated once the pad is linked.

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

16 months agouridecodebin3: Handle multiple pending pad block probes
Edward Hervey [Thu, 29 Dec 2022 14:58:24 +0000 (15:58 +0100)]
uridecodebin3: Handle multiple pending pad block probes

It is quite possible to have the blocking probe called from different streaming
threads when all expected pads are present.

* Notify all waiters by using g_cond_broadcast instead of g_cond_signal
* Properly remove the probe after waiting

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

16 months agoevent: Fix gst_event_parse_stream_collection annotation
Philippe Normand [Thu, 29 Dec 2022 18:16:31 +0000 (18:16 +0000)]
event: Fix gst_event_parse_stream_collection annotation

The output parameter ownership is passed to the caller.

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

16 months agomeson: Add an option to select the method for finding Qt
Nirbheek Chauhan [Thu, 22 Dec 2022 15:53:39 +0000 (21:23 +0530)]
meson: Add an option to select the method for finding Qt

This is needed by Cerbero, since we want to force the use of qmake to
find Qt on non-Linux platforms.

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

16 months agogl: Mark `gst_gl_context_new_wrapped()` return value as `nullable`
Sebastian Dröge [Thu, 29 Dec 2022 09:02:10 +0000 (11:02 +0200)]
gl: Mark `gst_gl_context_new_wrapped()` return value as `nullable`

If a GL context is requested for which no API support is compiled in
then `NULL` is returned.

Also remove a useless `NULL` check: `g_object_new()` can't possibly
return `NULL`, ever.

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

16 months agoplugins-base/tests/check/meson.build: add omitted Wayland dependence
F. Duncanh [Sun, 25 Dec 2022 04:41:52 +0000 (23:41 -0500)]
plugins-base/tests/check/meson.build: add omitted Wayland dependence

SUSE places Wayland include files in /usr/include/wayland, and needs
a Cflag added to wayland_client_deps by pkg-config, which is added to
gl_winsys_deps: add this as a dependency in gstgl_dep to fix issue.

Fixes #1607

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

16 months agomeson: Add gstreamer-gl-1.0 pkgconfig vars to internal dependency
Nirbheek Chauhan [Wed, 28 Dec 2022 22:22:42 +0000 (03:52 +0530)]
meson: Add gstreamer-gl-1.0 pkgconfig vars to internal dependency

So we can fetch gl_winsys, gl_platforms, etc directly using
gst_gl_dep.get_variable() when building gstreamer as a subproject, or
when building gst-plugins-rs's gtk4 plugin.

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

16 months agotests: gstelement: Fix test_add_pad_while_paused flakiness
Philippe Normand [Wed, 28 Dec 2022 17:42:31 +0000 (17:42 +0000)]
tests: gstelement: Fix test_add_pad_while_paused flakiness

`gst_element_remove_pad()` doesn't automatically deactivate the pad, it has to
be done explicitly beforehand, otherwise the pad task might be left dangling,
exposed to undefined behaviour.

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

16 months agovalidate: Place regex flags at the start of the regex
Jan Schmidt [Mon, 26 Dec 2022 13:24:36 +0000 (00:24 +1100)]
validate: Place regex flags at the start of the regex

In Python 3.11 it is an error to have regex flags in the middle
of an expression, so make sure they appear at the start.

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

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

16 months agogtkbasesink: Fix widget leak
Seungha Yang [Mon, 26 Dec 2022 14:00:18 +0000 (23:00 +0900)]
gtkbasesink: Fix widget leak

gst_gtk_base_sink_get_widget() will increase refcount and it should
be released after use

Fixing regression introduced by the commit
941c0e81ddf5c0ad6a9fac59b1d6bf7723025434

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

16 months agogstelement: fix deadlock in gst_element_add_pad() when >=PAUSED
Alicia Boya García [Sat, 4 May 2019 01:54:44 +0000 (03:54 +0200)]
gstelement: fix deadlock in gst_element_add_pad() when >=PAUSED

gst_element_add_pad() is supposed to activate the pad if the element
state is >= PAUSED and the pad is not already active.

Unfortunately, before this patch, the activation was performed while the
element lock was still taken, which ended causing a deadlock in
gst_pad_start_task() as it attempted to post `stream-status` message in
the element, which also requires the element lock.

Elements could work around this bug by activating the pad manually
before adding it to the element.

This patch fixes the problem by performing pad activation only after the
element lock has been released.

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

16 months agortspsrc: Fix string leak
Seungha Yang [Tue, 27 Dec 2022 14:33:31 +0000 (23:33 +0900)]
rtspsrc: Fix string leak

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

16 months agortptimerqueue: Fix memory leak
Seungha Yang [Tue, 27 Dec 2022 14:26:48 +0000 (23:26 +0900)]
rtptimerqueue: Fix memory leak

Should chain up to parent's finalize

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

16 months agovajpegdec: Set maybe-leaked flag on template caps
Seungha Yang [Mon, 26 Dec 2022 11:53:53 +0000 (20:53 +0900)]
vajpegdec: Set maybe-leaked flag on template caps

The fixup function could return new caps object

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

16 months agovalidate-launcher: update testsuites checks for fixed bug
Tim-Philipp Müller [Tue, 27 Dec 2022 16:14:06 +0000 (17:14 +0100)]
validate-launcher: update testsuites checks for fixed bug

Should make CI functional again.

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

17 months agomultiqueue: Fix potential deadlock with parallel release_pad calls
Mart Raudsepp [Wed, 14 Dec 2022 21:30:54 +0000 (23:30 +0200)]
multiqueue: Fix potential deadlock with parallel release_pad calls

Commit d3a66f9851ea introduced a potential deadlock with two parallel release_pad
calls, where one could release the main multiqueue lock (qlock) while still
holding the reconf_lock and then calling other routines which in some conditions
may try to acquire qlock again. The second release_pad could already acquire the
qlock and then start waiting on reconf_lock, which may never be possible because
because the first one isn't releasing it until it can acquire qlock.

Fix it by holding reconf_lock for the whole durationg of qlock, making this
particular deadlock impossible.

Fixes #1642

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

17 months agowebrtcbin: Support for setting kind attribute on RTCRtpStreamStats
Philippe Normand [Thu, 22 Dec 2022 21:29:39 +0000 (21:29 +0000)]
webrtcbin: Support for setting kind attribute on RTCRtpStreamStats

The attribute maps the `kind` property of the associated transceiver.

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

17 months agoci: mark valgrind ges job as allowed to fail
Tim-Philipp Müller [Thu, 22 Dec 2022 15:51:46 +0000 (15:51 +0000)]
ci: mark valgrind ges job as allowed to fail

It's extremely flaky, especially with idle runners, and
it's not limited to just a single test.

Mark as allowed to fail until someone starts caring about it.

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

17 months agoREADME: Several updates to sync with status quo
Nirbheek Chauhan [Sun, 18 Dec 2022 16:39:50 +0000 (22:09 +0530)]
README: Several updates to sync with status quo

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

17 months agod3d11memory: Fix typo in vfunc name
Seungha Yang [Thu, 22 Dec 2022 16:00:57 +0000 (01:00 +0900)]
d3d11memory: Fix typo in vfunc name

s/set_actvie/set_active/g

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

17 months agonvcudaenc: Don't use default CUDA stream
Seungha Yang [Mon, 19 Dec 2022 10:53:28 +0000 (19:53 +0900)]
nvcudaenc: Don't use default CUDA stream

Set non-default CUDA stream via NvEncSetIOCudaStreams() if possible,
so that NVENC's internal kernel function can run on the given CUDA
stream instead of default CUDA stream

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

17 months agoqtmux: Fix buffer leak in fragment_buffers
Patricia Muscalu [Thu, 22 Dec 2022 10:16:26 +0000 (11:16 +0100)]
qtmux: Fix buffer leak in fragment_buffers

When pushing buffers from one of the sink pads fail,
make sure that all buffers added to fragment_buffers on other pads
are freed as well.

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

17 months agoqtmux: For video with N/1001 framerates use N as timescale instead of centiframes
Mathieu Duponchelle [Mon, 19 Sep 2022 19:11:39 +0000 (21:11 +0200)]
qtmux: For video with N/1001 framerates use N as timescale instead of centiframes

This is recommended by various specifications for such framerates, while
for integer framerates we continue using centiframes to allow for some
more accuracy.

Using N means that no rounding error accumulates, eventually leading to
outputting a packet with a different duration.

Some tools such as MediaInfo determine that a stream is variable
framerate if any packet has a different duration than the others, and
there is no reason I can see for not using the full 4 bytes of
resolution that the mp4 timescale offers.

Example problematic pipeline:

```
videotestsrc num-buffers=5001 ! video/x-raw,framerate=60000/1001,width=320,height=240 ! \
videoconvert ! x264enc bitrate=80000 speed-preset=1 tune=zerolatency ! h264parse ! \
video/x-h264,profile=high-10 ! mp4mux ! filesink location="result2.mp4"
```

This results in a media file that MediaInfo detects as variable
framerate because the 5000th packet has duration 99 instead of 100.

With this patch, the timescale is 60000 and all packets have duration
1001.

Related issue for context: https://bugzilla.gnome.org/show_bug.cgi?id=769041

Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3049>

17 months agoamfcodec: add support of AMF AV1 encoder
Evgeny Pavlov [Wed, 14 Dec 2022 09:35:53 +0000 (10:35 +0100)]
amfcodec: add support of AMF AV1 encoder

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

17 months agocudabasetransform: Update CUDA stream on context update
Seungha Yang [Wed, 21 Dec 2022 15:22:46 +0000 (00:22 +0900)]
cudabasetransform: Update CUDA stream on context update

CUDA stream must be associated with updated CUDA context

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

17 months agova: Delay the VAProcPipelineCaps query after context created.
He Junyan [Wed, 21 Dec 2022 06:36:31 +0000 (14:36 +0800)]
va: Delay the VAProcPipelineCaps query after context created.

The VAAPI vaQueryVideoProcPipelineCaps() requires the context as the
parameter. So far, we always pass VA_INVALID_ID and it can succeed.
But the API does not say that and in theory, a valid context is required.
Now the new platform really needs a valid context and so we have to
delay that query until the context is created.

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

17 months agoqmlglsrc: Handle HiDPI scaling
Jan Schmidt [Tue, 20 Dec 2022 15:37:58 +0000 (02:37 +1100)]
qmlglsrc: Handle HiDPI scaling

When calculating the capture framebuffer size, include
any device scaling applied to the rendered framebuffer

Fixes only capturing part of the window when there is
a global scale factor.

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

17 months agoqmlglsrc: Unmap buffer before adding sync meta
Jan Schmidt [Tue, 20 Dec 2022 15:32:41 +0000 (02:32 +1100)]
qmlglsrc: Unmap buffer before adding sync meta

Adding a sync meta to a GstBuffer requires that it
be writable. Mapping the buffer with the video frame API
holds an extra ref on the buffer, so unmap before
trying to modify it.

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

17 months agoqmlglsrc: Stop when basesrc calls unlock()
Jan Schmidt [Tue, 20 Dec 2022 15:31:05 +0000 (02:31 +1100)]
qmlglsrc: Stop when basesrc calls unlock()

Instead of stopping capture when the state changes,
handle other cases of basesrc stopping capture by - such
as handling an EOS event - by implementing an unlock()
method

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

17 months agofdsrc,fdsink: Set binary mode on FD
Hiero32 [Mon, 19 Dec 2022 18:54:46 +0000 (03:54 +0900)]
fdsrc,fdsink: Set binary mode on FD

Default mode of STD handles on Windows is text mode, and OS will
insert CRLF sequence by default.

Co-authored-by: Seungha Yang <seungha@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3070>

17 months agocoreelements: Use G_OS_WIN32 macro
Hiero32 [Mon, 19 Dec 2022 18:51:45 +0000 (03:51 +0900)]
coreelements: Use G_OS_WIN32 macro

* HAVE_WIN32 is not defined elsewhere
* Enables fdsrc/fdsink for MinGW build as well

Co-authored-by: Seungha Yang <seungha@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3070>

17 months agonvdecoder: Use own CUDA stream in GL output path
Seungha Yang [Tue, 20 Dec 2022 15:20:17 +0000 (00:20 +0900)]
nvdecoder: Use own CUDA stream in GL output path

Use the same CUDA stream passed to CuvidMapVideoFrame()

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

17 months agoFix API visibility macros
Xavier Claessens [Tue, 13 Dec 2022 13:58:43 +0000 (08:58 -0500)]
Fix API visibility macros

This copies the logic from GLib discussed there:
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2936

Beside being simpler, it also fix all public symbols being annotated
with dllexport when doing a static build, as discovered there:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3540#note_1678335

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

17 months agoavviddec: Disable AV1 decoder
Sebastian Dröge [Tue, 20 Dec 2022 12:10:01 +0000 (14:10 +0200)]
avviddec: Disable AV1 decoder

We have various elements for AV1 decoding, the ffmpeg one only works if
hardware support is available and seems to require special signalling.

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

17 months agoexamples: webrtc: Add handling of the LATENCY messages to the Rust examples
Sebastian Dröge [Tue, 20 Dec 2022 11:10:27 +0000 (13:10 +0200)]
examples: webrtc: Add handling of the LATENCY messages to the Rust examples

Without this the configured latency on the pipeline will be wrong.

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