Commit graph

3657 commits

Author SHA1 Message Date
Vivia Nikolaidou
d6e3a5da3c inputselector: Avoid deadlock when shutting down
Transition from PLAYING to PAUSED unschedules any pending clock wait,
but there was no guard that prevented another input buffer then waiting
again while in PAUSED before dataflow stops. Use a new `playing` flag to
avoid this, and exit the chain function if instead of playing we're now
flushing. Basically the same as the clocksync element.

Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1772

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4099>
2023-03-02 15:42:15 +00:00
Thibault Saunier
e66d636fd1 validate: Protect init function with a recursive mutex
In tests in the rust bindings we end up with 2 thread initializing
concurrently, and it should not be a problem, -validate should be MT
safe.

Using a recursive mutex as we might recursively init for some reason
and we are not on the hot path here in any case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4097>
2023-03-02 10:57:45 +00:00
Thibault Saunier
85d363f4e2 validate:scenario: sink refs when building
Scenarios are no owned by anyone, even if they are GstObjects

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4097>
2023-03-02 10:57:45 +00:00
Jan Schmidt
5df656cee3 avfvideosrc: Fix description and trailing whitespace
Minor fix to mention that the element is also useful on MacOS,
and remove some trailing whitespace

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4096>
2023-03-01 22:52:01 +00:00
Jan Schmidt
633cbbaddb avfvideosrc: Don't wait on main thread for permissions request
Recursively invoking the NSMainLoop can cause crashes in
applications that don't expect it. Instead of waiting for
permission to be granted, move the wait later - until we
actually need device permissions when starting the capture
session. That moves the wait into the streaming thread
instead of the application thread that's setting the pipeline
state to READY.

Instead of a manual state change implementation to open
and close the device, use the basesrc start/stop methods that
are intended for the purpose.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4096>
2023-03-01 22:52:01 +00:00
Frank Dana
bc6eaa6fe2 python: Use arch-specific install dir
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4093>
2023-03-01 15:53:32 +00:00
Carlos Falgueras García
181b545713 gldisplay: Remove unused code
The code related with environment variable `GST_GL_PLATFORM` is unused
since commit 33c60bdbf9.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4091>
2023-03-01 09:23:35 +00:00
Piotr Brzeziński
9a2462391b vtenc: Fix checking for certain CPU variants when running in VMs
These checks were introduced to prevent exposing ARGB64/RGBA64 in the caps
when running on M1 Pro/Max with macOS <13 because of a bug in VideoToolbox.
Unfortunately, the initial buffer size of 15 is too short when running
in a VM - the CPU brand string there looks like "Apple M1 Pro (Virtual)",
which due to its length causes sysctlbyname to return -1, resulting in
broken formats still showing up in the caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4082>
2023-02-28 17:31:54 +00:00
Sebastian Dröge
f1bc3e6d88 ffmpeg: avauddec/avviddec: Free packet side data after usage
As we don't use proper refcounting with AVPacket we have to manage this
ourselves.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4078>
2023-02-28 12:45:59 +00:00
Seungha Yang
591515da1e tools: Make sure UTF-8 encoded command line arguments on Windows
On Windows, arguments passed in main() are system codepage
encoded and might not be valid UTF-8 string.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4072>
2023-02-26 12:30:52 +00:00
Seungha Yang
359e5fd327 nvencoder: Fix b-frame encoding on Linux
On Windows, Win32 event handle is used to wait for encoded output,
but it's not available on Linux. We should delay bitstream locking
if encoder returns "need-more-input"

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4008>
2023-02-25 16:33:53 +00:00
Jordan Petridis
7cf2505acb meson: Switch dav1d wrap to a tarball
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4069>
2023-02-25 16:10:35 +00:00
Seungha Yang
e76c481750 h265parse: Always set profile on src caps
h265parse should provide profile for autoplugging

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4068>
2023-02-25 13:22:41 +00:00
James Hilliard
37c405cec8 buffer: fix copy meta reference debug log formatting
Fixes the following valgrind error:
==616== Conditional jump or move depends on uninitialised value(s)
==616==    at 0x4900E34: gst_debug_print_object (gstinfo.c:1143)
==616==    by 0x49010B6: gst_info_printf_pointer_extension_func (gstinfo.c:1215)
==616==    by 0x4959FDB: __gst_printf_pointer_extension_serialize (printf-extension.c:47)
==616==    by 0x495A487: printf_postprocess_args (vasnprintf.c:258)
==616==    by 0x495A52C: __gst_vasnprintf (vasnprintf.c:290)
==616==    by 0x4959F8F: __gst_vasprintf (printf.c:154)
==616==    by 0x4901C1F: gst_debug_message_get (gstinfo.c:791)
==616==    by 0x4901C75: _gst_debug_log_preamble (gstinfo.c:1431)
==616==    by 0x4903208: gst_debug_log_default (gstinfo.c:1575)
==616==    by 0x49020BA: gst_debug_log_full_valist (gstinfo.c:624)
==616==    by 0x490211D: gst_debug_log_valist (gstinfo.c:656)
==616==    by 0x49021AD: gst_debug_log (gstinfo.c:533)
==616==    by 0x48DDC11: gst_buffer_copy_into (gstbuffer.c:693)
==616==    by 0x48DF5F1: gst_buffer_copy_with_flags (gstbuffer.c:727)
==616==    by 0x48DF640: gst_buffer_copy_deep (gstbuffer.c:756)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4038>
2023-02-25 11:46:14 +00:00
He Junyan
4c762b7717 jpegdecoder: fail early if no input caps have been provided
The jpegdecoder class does not implement the ->parse() virtual function,
and we always need to add the jpegparse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1829
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4066>
2023-02-25 10:54:49 +00:00
He Junyan
f188e06d54 av1decoder: fail early if no input caps have been provided
The av1decoder class does not implement the ->parse() virtual function,
and we always need to add the av1parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4066>
2023-02-25 10:54:49 +00:00
He Junyan
db70f58faa vp9decoder: fail early if no input caps have been provided
The vp9decoder class does not implement the ->parse() virtual function,
and we always need to add the vp9parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4066>
2023-02-25 10:54:49 +00:00
He Junyan
8ba485e49d vp8decoder: fail early if no input caps have been provided
The vp8decoder class does not implement the ->parse() virtual function,
it can only accepts frame aligned data. If some element such as filesrc
feed it with unaligned data, the behaviour is undecided. So we should
set_needs_format of the decoder to TRUE, then it can fail with a
"not-negotiated" error early, rather than go on and generate unexpected
error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4066>
2023-02-25 10:54:49 +00:00
He Junyan
5d4257a4c4 mpeg2decoder: fail early if no input caps have been provided
The mpeg2decoder class does not implement the ->parse() virtual function,
and we always need to add the mpegvideoparse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4066>
2023-02-25 10:54:49 +00:00
He Junyan
a0c392fc19 h264decoder: fail early if no input caps have been provided
The h264decoder class does not implement the ->parse() virtual function,
and we always need to add the h264parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4066>
2023-02-25 10:54:49 +00:00
He Junyan
42c145d2ad h265decoder: fail early if no input caps have been provided
The h265decoder class does not implement the ->parse() virtual function,
and we always need to add the h265parse element before it. So we should
set_needs_format of the decoder to TRUE, then if no parse before it, it
can fail with a "not-negotiated" error early, rather than go on and
generate unexpected error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4066>
2023-02-25 10:54:49 +00:00
Robert Rosengren
087ebe74ad curlhttpsrc: Add curl anyauth option
Add curl anyauth option to support http request to endpoints not using
only basic authentication (as default in curl). Also aligning with
curlhttpsink that already uses this option.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4065>
2023-02-25 10:03:22 +00:00
Patricia Muscalu
4024e6b775 rtspconnection: Annotate RTSP message parameters correctly
These parameters are not actually `out` parameters but must
be allocated and zero-initialized by the calling function.
Marking them as `out caller-allocates` will cause memory
corruptions when calling these APIs from e.g., Python code.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4061>
2023-02-24 01:04:23 +00:00
Sebastian Dröge
3ce43c8014 rtspsrc: Use the correct vfunc for the push-backchannel-sample action signal
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/446

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4056>
2023-02-23 12:54:28 +00:00
Seungha Yang
0e01e55778 qtmux: Fix assertion on caps update
GstQTMuxPad.configured_caps should be protected since it's
updated from streaming thread and accessed in aggregate thread

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4055>
2023-02-23 12:06:57 +00:00
Tristan van Berkom
13714d507d gstglwindow_x11.c: Fix colormap leak
This fixes an X server side memory leak, this is normally not severe
but in some circumstances where the glwindow is recreated frequently
it can result in a very bad memory leak.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4054>
2023-02-23 11:21:20 +00:00
Célestin Marot
c34ac2a3e8 d3d11overlaycompositor: fix texture width and height
The dimension of the overlay texture directly corresponds to the size of the overlay **buffer** which is given by its video meta.
The dimension at which the overlay should be displayed directly correspond to the overlay `render_width`and `render_height`.

This match the behavior of glimagesink

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4053>
2023-02-23 10:25:15 +00:00
Tim-Philipp Müller
5cf989fc06 gst-plugins-bad: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4041>
2023-02-22 13:19:58 +00:00
Tim-Philipp Müller
38dc21a641 gst-plugins-good: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4041>
2023-02-22 13:19:58 +00:00
Tim-Philipp Müller
c30dc0ade3 gst-plugins-base: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4041>
2023-02-22 13:19:58 +00:00
Tim-Philipp Müller
abbc60a71a gstreamer: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4041>
2023-02-22 13:19:58 +00:00
Mengkejiergeli Ba
5a69676166 vaallocator: Check return value from va_sync_surface
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4007>
2023-02-22 00:19:45 +00:00
Mengkejiergeli Ba
fbab40bd5e va: Fix some code defects
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4007>
2023-02-22 00:19:45 +00:00
Tim-Philipp Müller
0c693363fb gst-play: update translated string
Make it more consistent with the other option descriptions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4033>
2023-02-21 23:07:00 +00:00
Sebastian Dröge
1ccc256948 qtmux: Implement writing of av1C version 1 box
Version 0 is ancient and not specified in any documents. Take it
directly from the `codec_data` if presents or otherwise try to construct
a reasonably looking `av1C` box.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4027>
2023-02-21 17:45:34 +00:00
Sebastian Dröge
6d2bc8b8cd qtdemux: Drop av1C version 0 parsing and implement version 1 parsing
The av1C box is optional so dropping parsing does not break anything
fundamentally, and there seems to be no historical record how version 0
even looks like while the comments and the parsing disagreed with each
other.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4027>
2023-02-21 17:45:34 +00:00
Philippe Normand
5bd14e4a20 wpe: Logging fixes for the WebExtension
Using logging macros without a `GST_CAT_DEFAULT` in scope leads to critical
warnings.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4022>
2023-02-21 15:17:08 +00:00
Sebastian Dröge
ceceefd141 appsrc: Don't chain up BaseSrc::negotiate()
If we have caps then we can only set exactly those caps, if we have no
caps yet then negotiating anything is not very meaningful because the
caps are defined by the application and not downstream.

Avoids, among other things, an unnecessary allocation query and spurious
useless caps being set before the first buffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4020>
2023-02-21 13:57:06 +00:00
Edward Hervey
90508b7387 gst-play: Don't force accurate seeking
This crept in several years ago sadly :(

The usage of accurate seeking should be reserved to use-cases where it is
essential that we seek to that position. This should not be the default.

There is a new option `--acurate-seeks/-a` to be able to force that.

Furthermore, if accurate seeks aren't required, a player should be using the
GST_SEEK_FLAG_KEY_UNIT flag to seek to the closest keyframe and provide the most
reactive experience.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4017>
2023-02-21 12:54:10 +00:00
Thibault Saunier
286020bd23 uridecodebin: Set source element to READY before querying it
Generating the source element is done when uridecodebin is doing the
READY to PAUSED state change, so it is reasonable to set the new source
element to that state.

This also allows detecting early failures with backing libraries or
hardware (checks done in NULL->READY).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4016>
2023-02-21 12:07:57 +00:00
Matthew Waters
1ca3203bb6 ccconverter: don't debug a potentially freed filter caps
Fixes a use-after-free

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4013>
2023-02-21 10:09:46 +00:00
Seungha Yang
8ddf39f560 d3d11videosink: Fix rendering on external handle
Partial revert of the commit 068a5c1053.
That introduced size mismatch between internal and external HWND

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4010>
2023-02-21 00:36:31 +00:00
Víctor Manuel Jáquez Leal
b3af05c193 vah265enc: Use helper to update properties.
This is a continuation of the original patch by
 Mengkejiergeli Ba <mengkejiergeli.ba@intel.com>

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4009>
2023-02-20 23:41:44 +00:00
Mengkejiergeli Ba
1a73dcba8b av1parser, h265parser: Fix some code defects
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4003>
2023-02-20 11:28:14 +00:00
Jan Schmidt
b8db0f330f webrtc: Calculate the jitter for remote-inbound-rtp stats
Populate the clock-rate in the internal stats structure, so
it can be used by the _get_stats_from_remote_rtp_source_stats()
method to calculate remote receivers' jitter.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3994>
2023-02-19 10:43:33 +00:00
Jan Schmidt
6200b5be84 webrtcbin: Report full codec-stats for source pads
Use the current caps for webrtcbin srcpads, as received_caps
are only stored for sink pads based on incoming caps events.

Makes it so that webrtcbin stats reports contain fuller
codec information.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3994>
2023-02-19 10:43:33 +00:00
Yinhang Liu
e30b0e906a msdkav1enc: fix the category for msdkav1enc debug
The msdkav1enc debug initialized with gst_msdkav1dec_debug,
fix this.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3991>
2023-02-18 11:48:08 +00:00
Enrique Ocaña González
be4dc2d05f qtdemux: Don't emit GstSegment correcting start time when in MSE mode
When using qtdemux in a pipeline that should only work as a pure demuxer (not
for actual playback), qtdemux shouldn't emit new GstSegments to correct
the start time (jump to the future) to ensure that the user experiences no
playback delay. By doing so, it's generating the wrong segments when an append
of data from the past happens. When that happens, downstream elements such as
parsers (eg: aacparse) may clip those buffers laying before the GstSegment and
create problems on the GStreamer client app (eg: WebKit).

Getting buffers clipped out because of the wrong GstSegments started becoming
a problen when this commit was introduced:

ab6e49e9cc audioparsers: add back segment clipping to parsers that have lost it

This clipping makes test DASH shaka 35 from MVT tests[1] to fail in
WebKitGTK/WPE (at least) and can potentially cause a number of other problems
in the WebKit Media Source Extensions (MSE) code.

Note that this new behaviour of not emitting new GstSegments only makes sense
when qtdemux is being used as a pure demuxer and not as part of a regular
pipeline. This is why the variant field has been added. When equal to
VARIANT_MSE_BYTESTREAM, it will make qtdemux behave differently in push mode,
taking decisions that meet the expectations for an MSE-like processing mode.
This kind of tweaks have been done in the past for MSS streams, for instance.
That code has been refactored to use VARIANT_MSS_FRAGMENTED now, instead of
its own dedicated boolean flag.

Co-authored by: Alicia Boya García <ntrrgc@gmail.com>

...who suggested to use "variant: mse-bytestream" in the caps to identify that
mode, as proposed in her unmerged patch:

https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/467

[1] https://github.com/rdkcentral/mvt

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3990>
2023-02-18 10:38:30 +00:00
Thibault Saunier
dd49b8a43e tests: Move srtp test known issue def to the 'check' testuite
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3986>
2023-02-17 12:29:32 +00:00
Thibault Saunier
f463ef6be3 validate:launcher: try to bne more explicit about where to add known failure
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3986>
2023-02-17 12:29:32 +00:00
Thibault Saunier
399ce86998 validate:launcher: Handle known return code issue in none validate based tests
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3986>
2023-02-17 12:29:32 +00:00
Seungha Yang
362a97836f codectimestamper: Fix timestamping on sequence update
... and enhance debug logging.

Keep internal timestamp offsets on drain, no reason to reset them

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3987>
2023-02-17 10:42:57 +00:00
Mengkejiergeli Ba
6dbb2c14ec codecparsers: {h264,h265}bitwriter: Remove redundant condition checks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3978>
2023-02-16 00:34:01 +00:00
Tim-Philipp Müller
119622cda1 validate: add elements_srtp.test_play_key_error to flaky test list
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1777

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3970>
2023-02-15 12:55:36 +00:00
Tim-Philipp Müller
306e175424 tests: mark elements_srtp.test_play test as flaky
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1777

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3970>
2023-02-15 12:55:36 +00:00
Seungha Yang
bf4f2a3325 amfav1enc: Set stream-format on caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3961>
2023-02-15 11:14:12 +00:00
Seungha Yang
11ef5ce745 qsvav1enc: Set stream-format on caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3961>
2023-02-15 11:14:12 +00:00
U. Artie Eoff
cde31d23c0 avviddec: change AV_CODEC_CAP_AUTO_THREADS->AV_CODEC_CAP_OTHER_THREADS
This fixes a compile error with recent upstream FFmpeg.

The AV_CODEC_CAP_AUTO_THREADS was deprecated and renamed to
AV_CODEC_CAP_OTHER_THREADS in FFmpeg upstream commit
7d09579190de (lavc 58.132.100).

The AV_CODEC_CAP_AUTO_THREADS was finally removed in FFmpeg upstream
commit 10c9a0874cb3 (lavc 59.63.100).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3964>
2023-02-15 03:53:36 +00:00
Thibault Saunier
b46360896c glvideomixer: Keep a reference to the underlying pad
There was cases where we were accessing the pad while it was already
destroyed. Ensure it can't happen by owning a ref on it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3963>
2023-02-15 03:11:03 +00:00
Piotr Brzeziński
ae213c1c59 vtenc/vtdec: Fix typo in RGBA64_LE availability define
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3962>
2023-02-15 01:15:01 +00:00
Piotr Brzeziński
62e385ad35 vtenc: Disable ARGB/RGBA64 caps on M1 Pro/Max with macOS <13
Fixes #1358.
Passing ARGB64/RGBA64 to vtenc caused the encoding to fail
when running on M1 Pro/Max variants with macOS 12.x, so let's
remove these formats from caps when such scenario is detected.
This issue appears to have been fixed OS-side in macOS 13.0.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3962>
2023-02-15 01:15:01 +00:00
Yang, Xuchen
b2bdadd05b audio: channel-mix: Fix channel count limit to be able to equal 64
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3958>
2023-02-14 11:51:25 +00:00
Vivia Nikolaidou
625f9aab09 qtdemux: Handle moov atom length=0 case by reading until the end
Previously it would fail to demux the file by trying to read G_MAXUINT64
bytes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3938>
2023-02-11 13:31:26 +00:00
Vivia Nikolaidou
cab020b4cb qtdemux: Fix guint vs gsize type confusion
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3938>
2023-02-11 13:31:26 +00:00
Piotr Brzeziński
8fd9c82360 vtdec: Fix not waiting for async frames when flushing
This was causing incorrect output when seeking, especially
when used with a multithreaded source like `videotestsrc n-threads=2`.
It should now correctly wait for frames still being processed by VT
while vtdec is flushing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3937>
2023-02-10 20:29:15 +00:00
Alessandro Bono
b87371d0ce win32ipcutils: Add missing include
We are using std::isspace() with one parameter. That function is defined
in the cctype header.

```
win32ipcutils.cpp(34): error C2672: 'std::isspace': no matching overloaded function found
win32ipcutils.cpp(34): error C2780: 'bool std::isspace(_Elem,const std::locale &)': expects 2 arguments - 1 provided
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3936>
2023-02-10 19:34:35 +00:00
Jan Alexander Steffens (heftig)
cbcd2a44ff pad: Don't leak user_data in gst_pad_start_task
When the task already exists, we forgot to free the passed `user_data`.
This wasn't an issue for most C code, which doesn't pass a
`GDestroyNotify`, but bindings such as gstreamer-rs do!

That said, allocating a trampoline in gstreamer-rs just for it to get
thrown away again is awkward. Maybe we need a `gst_pad_resume_task`?

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3925>
2023-02-10 01:40:35 +00:00
Sebastian Dröge
06428afbad av1parser: Don't consider unknown metadata OBUs a bitstream error
Just don't parse them.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3924>
2023-02-10 00:01:20 +00:00
Edward Hervey
208955307f subparse: Properly forward segment seqnum
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3917>
2023-02-09 00:13:40 +00:00
Edward Hervey
aa0d027220 closedcaption: Don't leak caps event
All events that we handle should be unreffed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3906>
2023-02-08 22:10:20 +00:00
Nirbheek Chauhan
0cb751b626 meson: Allow sysdeps to be forced as fallback subprojects
The original code was too complicated; likely created before the
provide section existed for wraps:

https://mesonbuild.com/Wrap-dependency-system-manual.html#provide-section

Now you can do --force-fallback-for=pygobject and it'll actually work.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3905>
2023-02-08 13:42:59 +00:00
Tim-Philipp Müller
d9196b83aa 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>
2023-02-08 11:20:39 +00:00
medithe
a183495faf 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>
2023-02-07 17:54:30 +00:00
Nirbheek Chauhan
f6e672f27f 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>
2023-02-04 16:01:08 +01:00
Seungha Yang
04910ac6c1 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>
2023-02-04 12:13:58 +01:00
Jan Schmidt
f7fc9fd76e 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>
2023-02-02 18:20:42 +00:00
He Junyan
1e34b35044 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>
2023-02-02 16:21:34 +00:00
James Hilliard
30c2036acb 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>
2023-02-02 14:32:49 +00:00
Piotr Brzeziński
26978734fe 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>
2023-02-02 11:29:29 +00:00
Sebastian Dröge
85fcde0f98 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>
2023-02-02 10:13:30 +00:00
Seungha Yang
ba91964a70 nvvp9dec: Fix return value
It should return GstFlowReturn value, not boolean

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3874>
2023-02-02 02:07:04 +00:00
Sebastian Dröge
6ce76c43cb 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>
2023-02-02 00:26:03 +00:00
Guillaume Desmottes
707156653f rtpptdemux: set different stream-id on each src pad
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3866>
2023-02-01 17:46:29 +00:00
Guillaume Desmottes
707ebf3789 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>
2023-02-01 17:46:29 +00:00
Mathieu Duponchelle
9b4b4b51a3 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>
2023-01-28 19:20:29 +00:00
Thibault Saunier
e583baf6b2 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>
2023-01-28 18:22:44 +00:00
Sebastian Dröge
0474720c8b 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>
2023-01-28 17:32:54 +00:00
Thibault Saunier
cba521bc18 uritranscodebin: Fix unref of NULL
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3837>
2023-01-28 16:54:30 +00:00
Seungha Yang
0064fc7764 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>
2023-01-28 15:20:44 +00:00
Mathieu Duponchelle
e0659683e3 BaseSrc, PushSrc: add nullable annotations to virtual methods
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3833>
2023-01-28 12:57:45 +00:00
Nirbheek Chauhan
26ee3d83fb webrtc_sendrecv.py: Fix PEP8 warnings in CI lint
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3816>
2023-01-28 03:05:20 +00:00
Nirbheek Chauhan
dff9f5151b webrtc_sendrecv.py: Handle LATENCY messages
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3816>
2023-01-28 03:05:20 +00:00
Nirbheek Chauhan
361f0f406b webrtc_sendrecv.py: Add bus message handling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3816>
2023-01-28 03:05:20 +00:00
Nirbheek Chauhan
78c928eefe 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>
2023-01-28 03:05:20 +00:00
Nirbheek Chauhan
6179d5ef61 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>
2023-01-28 03:05:19 +00:00
Seungha Yang
e62800f20c 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>
2023-01-27 03:23:05 +00:00
Jan Alexander Steffens (heftig)
a562ab7c6f 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>
2023-01-27 02:40:04 +00:00
Jan Alexander Steffens (heftig)
1a41344345 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>
2023-01-27 02:40:04 +00:00
Bart Van Severen
db2b357791 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>
2023-01-27 01:58:48 +00:00
Bart Van Severen
0b08687633 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>
2023-01-27 01:58:48 +00:00
Bart Van Severen
f04878c216 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>
2023-01-27 01:58:48 +00:00
Sebastian Dröge
4a433f170e 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>
2023-01-27 00:54:10 +00:00
Sebastian Dröge
a5bbc16ca5 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>
2023-01-27 00:54:10 +00:00
Pawel Stawicki
67df248270 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>
2023-01-27 00:11:06 +00:00
Víctor Manuel Jáquez Leal
791e4c6a85 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>
2023-01-26 23:29:06 +00:00
Nirbheek Chauhan
1eae03486e 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>
2023-01-26 19:40:27 +00:00
Nirbheek Chauhan
5ab15e1738 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>
2023-01-26 19:40:27 +00:00
Mathieu Duponchelle
3e83399103 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>
2023-01-26 18:34:09 +00:00
Edward Hervey
30f7a55a25 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>
2023-01-26 16:52:17 +00:00
Sebastian Dröge
379c6505eb 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>
2023-01-26 15:47:55 +00:00
Sebastian Dröge
1769c5e177 Revert "avvidenc: Set timebase in the ffmpeg context to nanoseconds and set framerate"
This reverts commit 50db59449e.

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>
2023-01-26 15:47:55 +00:00
Jan Alexander Steffens (heftig)
bfe16f29a7 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>
2023-01-26 11:16:31 +00:00
David Svensson Fors
304352ac17 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>
2023-01-26 01:40:43 +00:00
Tim-Philipp Müller
e87857a210 Back to development 2023-01-25 16:46:42 +00:00
Tim-Philipp Müller
f13c65d977 Release 1.22.0 2023-01-23 19:41:07 +00:00
Tim-Philipp Müller
6671a24e36 gst-plugins-ugly: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3773>
2023-01-23 16:31:20 +00:00
Tim-Philipp Müller
2fe212bdbe gst-plugins-bad: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3773>
2023-01-23 16:31:20 +00:00
Tim-Philipp Müller
060712f68f gst-plugins-good: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3773>
2023-01-23 16:31:20 +00:00
Tim-Philipp Müller
8227b04429 gst-plugins-base: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3773>
2023-01-23 16:31:20 +00:00
Tim-Philipp Müller
478c6159eb gstreamer: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3773>
2023-01-23 16:31:20 +00:00
Seungha Yang
467a2408a1 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>
2023-01-23 23:34:04 +09:00
Ruben Gonzalez
2cdfccc3b5 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>
2023-01-22 00:52:56 +01:00
Edward Hervey
4c1d01ff57 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>
2023-01-21 12:28:21 +00:00
Sebastian Dröge
4e86c77270 examples: webrtc: rust: Update dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3758>
2023-01-20 11:36:57 +00:00
Sebastian Dröge
f45136827b examples: webrtc: multiparty-sendrecv: rust: Remove unnecessary macro recursion limit annotation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3758>
2023-01-20 11:36:57 +00:00
Sebastian Dröge
bf4a3c89cd 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>
2023-01-20 11:36:57 +00:00
Sebastian Dröge
638465908e 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>
2023-01-20 11:36:57 +00:00
Sebastian Dröge
541c637910 examples: webrtc: sendrecv: rust: Implement TWCC support in both directions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3758>
2023-01-20 11:36:57 +00:00
Sebastian Dröge
6541dccaea 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>
2023-01-20 11:36:57 +00:00
Sebastian Dröge
083b9f2a6e 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>
2023-01-20 11:36:57 +00:00
Jonas Danielsson
8eeaeab6af 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>
2023-01-20 10:58:31 +00:00
Edward Hervey
e2773304a2 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>
2023-01-20 08:54:00 +00:00
Edward Hervey
34ea792881 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>
2023-01-20 08:54:00 +00:00
Edward Hervey
1a30ed8113 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>
2023-01-20 08:54:00 +00:00
Seungha Yang
f983ec50b5 win32ipcvideosrc: Fix leak in fallback copy path
Clear shared memory after use

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3751>
2023-01-19 17:40:59 +00:00
Edward Hervey
b01ed725be va: Fix path leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3755>
2023-01-19 16:41:44 +01:00
Sebastian Dröge
6a210b53e3 gst: Mark caps parameters in ALLOCATION query API as nullable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3752>
2023-01-19 16:01:21 +02:00
Guillaume Desmottes
2930fed373 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>
2023-01-19 11:41:20 +00:00
Sebastian Dröge
067b5d92b4 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>
2023-01-19 12:10:40 +02:00
Sebastian Dröge
4c8141a0c3 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>
2023-01-19 12:10:40 +02:00
Sebastian Dröge
ac1d10f80c gst-examples: Update Rust dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3750>
2023-01-19 10:40:32 +02:00
Nicolas Dufresne
8a6d9748b6 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>
2023-01-18 22:47:42 +00:00
Jan Alexander Steffens (heftig)
b0e55caf0d 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>
2023-01-18 16:21:12 +00:00
Michiel Konstapel
81b726344e 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>
2023-01-18 14:05:37 +00:00
Tim-Philipp Müller
59f4ebe321 gst-docs: include dmabuf and gapless playback design docs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3744>
2023-01-18 13:48:14 +00:00
Tim-Philipp Müller
64c4bfdf7e 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>
2023-01-18 11:43:31 +00:00
Jan Alexander Steffens (heftig)
211191564e 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>
2023-01-18 10:01:30 +00:00
Nirbheek Chauhan
ed1bdf9b1a 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>
2023-01-17 21:56:41 +00:00
Thibault Saunier
18f313d317 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>
2023-01-17 20:10:19 +00:00
Thibault Saunier
3065608730 ges: Fix issues avoiding to use operator when unavailable on mixer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3738>
2023-01-17 20:10:19 +00:00
Sebastian Dröge
086c8da446 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>
2023-01-17 22:35:29 +05:30
Tim-Philipp Müller
a9ec35b1ca Release 1.21.90 2023-01-13 19:08:48 +00:00
Sebastian Dröge
79e8d2c03e 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>
2023-01-13 17:18:38 +00:00
Edward Hervey
13ad8c8e4e 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>
2023-01-13 16:41:53 +01:00
Edward Hervey
1546ab0d0f urisourcebin: Unset locked state
Some elements still had it in failure cases

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3720>
2023-01-13 16:41:53 +01:00
Edward Hervey
f444e62672 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>
2023-01-13 16:41:53 +01:00
Olivier Crête
c593930055 rtopuspay: Use GstStaticCaps to cache parsed caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3674>
2023-01-12 18:48:35 -05:00
Olivier Crête
46a6f72f03 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>
2023-01-12 18:48:35 -05:00
Olivier Crête
f1cf457811 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>
2023-01-12 18:48:35 -05:00
Olivier Crête
c52c66b575 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>
2023-01-12 18:48:35 -05:00
Olivier Crête
c51ae6112d 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>
2023-01-12 18:48:35 -05:00
Sebastian Dröge
085e6c036a 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>
2023-01-12 20:11:14 +00:00
Seungha Yang
434337c3e1 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>
2023-01-12 19:26:41 +00:00
Seungha Yang
fdc3ee97ae d3d11memory: Remove GstD3D11PoolAllocator::dispose
Clear GstD3D11Device object in finalize method as well

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3715>
2023-01-12 19:26:41 +00:00
Thibault Saunier
d8ba721d82 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>
2023-01-12 14:41:24 -03:00
Edward Hervey
1fe99ebae1 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>
2023-01-11 23:29:05 +00:00
Tim-Philipp Müller
4f0abc32e7 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>
2023-01-11 19:20:17 +00:00
Tim-Philipp Müller
a55bda139a gst-plugins-bad: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711>
2023-01-11 19:20:17 +00:00
Tim-Philipp Müller
146575fa61 gst-plugins-good: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711>
2023-01-11 19:20:17 +00:00
Tim-Philipp Müller
d803bf852f gst-plugins-base: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711>
2023-01-11 19:20:17 +00:00
Tim-Philipp Müller
14e619158f gstreamer: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711>
2023-01-11 19:20:17 +00:00
Tim-Philipp Müller
a1672ec004 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>
2023-01-11 19:20:17 +00:00
Guillaume Desmottes
22917b140f 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>
2023-01-11 18:37:05 +00:00
Guillaume Desmottes
cad0768191 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>
2023-01-11 16:44:21 +00:00
Guillaume Desmottes
da696477c6 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>
2023-01-11 15:06:37 +00:00
Sebastian Dröge
c28bc4492e 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>
2023-01-11 13:36:55 +00:00
Nirbheek Chauhan
41ac00c373 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>
2023-01-10 20:20:19 +00:00
Seungha Yang
9a6b9e274a 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>
2023-01-11 03:23:57 +09:00
Tim-Philipp Müller
d2ef7819d3 tests: interactive: test-effect-switch: use autovideosink
Also works on Windows.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3703>
2023-01-10 13:28:30 +00:00
Sebastian Dröge
bd91768692 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>
2023-01-10 11:10:10 +00:00
Marek Vasut
d43ee08f13 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>
2023-01-10 00:32:38 +00:00
Guillaume Desmottes
f7e1505a5e 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>
2023-01-09 13:25:05 +01:00
Tim-Philipp Müller
1b7c95ec01 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>
2023-01-09 01:24:57 +00:00
Philippe Normand
f532ea6627 av1enc: Add property for controlling max distance between 2 keyframes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2743>
2023-01-08 18:51:55 +00:00
Yatin Mann
59529ae918 aom: av1enc: Expose more properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2743>
2023-01-08 18:51:54 +00:00
yatinmaan
5cb04de96a aom: av1enc: Remove redundant enum variants from header
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2743>
2023-01-08 18:51:54 +00:00
Yatin Mann
cbc7334d93 aom: av1enc: Ensure that input pts is strictly increasing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2743>
2023-01-08 18:51:54 +00:00
Yatin Mann
cfcd2aac67 aom: av1enc: Fix pts unit
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2743>
2023-01-08 18:51:54 +00:00
ekwange
beccaf31ef dfbvideosink: Fix compile error
Fix some compile errors

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3670>
2023-01-08 03:49:03 +00:00
Olivier Crête
af315967da webrtc nice: Let libnice handle STUN/TURN DNS resolution
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3676>
2023-01-07 16:03:23 +00:00
Olivier Crête
069eeeb5c3 webrtc: Change requirement to libnice 0.1.20
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3676>
2023-01-07 16:03:23 +00:00
Sebastian Dröge
5f2989d5a1 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>
2023-01-07 00:40:44 +00:00
Sebastian Dröge
ce50e13e28 rtspclientsink: Fix docs for various properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3581>
2023-01-07 00:40:44 +00:00
Mathieu Duponchelle
2f020013e6 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>
2023-01-06 22:50:57 +00:00
Sebastian Dröge
fa2b98f957 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>
2023-01-06 18:10:20 +02:00
Sebastian Dröge
54ff9b2b5f 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>
2023-01-06 14:37:31 +02:00
Sebastian Dröge
37f219bd57 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>
2023-01-05 17:59:41 +02:00
Sebastian Dröge
516fe4ca58 Revert "opusenc: Reverse channel order in template caps"
This reverts commit cdf411e82d. 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>
2023-01-05 17:57:19 +02:00
Rodrigo Bernardes
28f7a0ed2e 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>
2023-01-05 12:51:28 +00:00
Jan Schmidt
023c67e166 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>
2023-01-05 07:08:16 +00:00
Olivier Crête
b7c0e8bc84 webrtc examples: Force regular non-MULTIOPUS
Using MULTIOPUS breaks with most browsers

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3675>
2023-01-04 12:02:25 +00:00
Olivier Crête
c7bc6bc064 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>
2023-01-04 12:02:25 +00:00
Olivier Crête
f97ff39358 audioenc/dec: Avoid adding temporary structure
As a minor optimisation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3673>
2023-01-04 11:09:31 +00:00
Olivier Crête
e03a10a0f2 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>
2023-01-04 11:09:31 +00:00
Sebastian Dröge
bd534af999 ges: gst_bin_add() is transfer floating so wrappers around it are too
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3678>
2023-01-04 10:22:45 +00:00
Olivier Crête
f45cfe0d53 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>
2023-01-04 02:45:51 +00:00
Sebastian Dröge
401ea9f683 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>
2023-01-04 00:49:47 +00:00
Xavier Claessens
5ff5f9fd5b 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>
2023-01-03 19:40:20 +00:00
Sebastian Dröge
50db59449e 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>
2023-01-03 16:46:14 +00:00
Sebastian Dröge
11520403a5 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>
2023-01-03 12:07:43 +00:00
He Junyan
1eeea942de 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>
2023-01-03 17:28:18 +08:00
Tim-Philipp Müller
4d335eb667 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>
2022-12-31 13:49:17 +00:00
مهدي شينون (Mehdi Chinoune)
8d5ac30955 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>
2022-12-30 17:10:12 +00:00
Edward Hervey
6beca9f055 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>
2022-12-30 08:46:14 +01:00
Edward Hervey
66b96baf23 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>
2022-12-30 08:46:14 +01:00
Edward Hervey
80e7c31514 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>
2022-12-30 08:46:13 +01:00
Edward Hervey
a0655d5131 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>
2022-12-30 08:46:13 +01:00
Philippe Normand
8ec82f9363 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>
2022-12-29 18:16:31 +00:00
Nirbheek Chauhan
92b9c604c4 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>
2022-12-29 09:53:17 +00:00
Sebastian Dröge
19603248c2 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>
2022-12-29 09:03:53 +00:00
F. Duncanh
b713c141e0 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>
2022-12-28 20:04:49 -05:00
Nirbheek Chauhan
36a619ba60 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>
2022-12-29 03:52:42 +05:30
Philippe Normand
3f3bd70687 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>
2022-12-28 17:42:31 +00:00
Jan Schmidt
794ffe6ec6 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>
2022-12-28 10:04:41 +00:00
Seungha Yang
ce2c294117 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
941c0e81dd

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3644>
2022-12-28 09:14:59 +00:00
Alicia Boya García
15caeb4ac9 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>
2022-12-27 20:31:10 +00:00
Seungha Yang
6540c4e89c rtspsrc: Fix string leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3645>
2022-12-28 04:39:18 +09:00
Seungha Yang
9b305df1cc rtptimerqueue: Fix memory leak
Should chain up to parent's finalize

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3645>
2022-12-27 19:31:16 +00:00
Seungha Yang
aba7f7c7eb 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>
2022-12-27 17:15:20 +00:00
Tim-Philipp Müller
6c621bba02 validate-launcher: update testsuites checks for fixed bug
Should make CI functional again.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3646>
2022-12-27 17:14:06 +01:00
Mart Raudsepp
3fa4ff0562 multiqueue: Fix potential deadlock with parallel release_pad calls
Commit d3a66f9851 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>
2022-12-23 13:08:54 +00:00
Philippe Normand
72884f141c 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>
2022-12-22 21:35:51 +00:00
Seungha Yang
af3311c1d6 d3d11memory: Fix typo in vfunc name
s/set_actvie/set_active/g

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3627>
2022-12-23 01:03:41 +09:00
Seungha Yang
040473f295 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>
2022-12-22 15:01:52 +00:00
Patricia Muscalu
d752bf1b46 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>
2022-12-22 14:11:10 +00:00
Mathieu Duponchelle
194dcd91e0 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>
2022-12-22 12:31:06 +02:00
Evgeny Pavlov
9598ec6d95 amfcodec: add support of AMF AV1 encoder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3569>
2022-12-21 19:23:24 +00:00
Seungha Yang
15b2cd6565 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>
2022-12-21 16:18:36 +00:00
He Junyan
ad0ba3ab7d 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>
2022-12-21 14:31:23 +00:00
Jan Schmidt
e2cd5b1660 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>
2022-12-21 12:21:32 +00:00
Jan Schmidt
d3c85b4d19 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>
2022-12-21 12:21:32 +00:00
Jan Schmidt
2b09f7a006 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>
2022-12-21 12:21:32 +00:00
Hiero32
7050b00c10 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>
2022-12-21 06:34:15 +00:00
Hiero32
a29a1b21c3 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>
2022-12-21 06:34:15 +00:00
Seungha Yang
14062c06a6 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>
2022-12-20 17:14:10 +00:00
Xavier Claessens
cd78cbac86 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>
2022-12-20 14:03:35 +00:00
Sebastian Dröge
1cbb145c50 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>
2022-12-20 14:10:01 +02:00
Sebastian Dröge
c739fcbe41 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>
2022-12-20 13:10:27 +02:00
Sebastian Dröge
284d22437e examples: webrtc: Update dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3609>
2022-12-20 13:06:43 +02:00
Sebastian Dröge
ec6290d63f examples: webrtc: Remove the bus watch at the end
Otherwise a file descriptor will be leaked.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3609>
2022-12-20 13:03:44 +02:00