Commit graph

119394 commits

Author SHA1 Message Date
Matthew Waters d556c02aa8 glcaopengllayer: NULL some fields when freed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6524>
2024-04-03 10:28:08 +01:00
Matthew Waters 6f0ad951c3 glwindow/cocoa: keep a window reference across an async callback
Esnures that the window is alive when the callback is fired.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6524>
2024-04-03 10:28:08 +01:00
Matthew Waters 651ccd0175 glimagesink: avoid a possible critical on shutdown
It is possible that the close callback can be called after glimagesink
is changing state to NULL.  Protect against that by taking the glimagesink
lock and some NULL checking.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6524>
2024-04-03 10:28:08 +01:00
Matthew Waters 0bf962dbdf glimagesink: unref the potential last ref outside of the glimagesink lock
Avoids a deadlock between the state change removing the last ref and
the destructer calling the window's on_close handler and trying to
take the glimagesink lock.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6524>
2024-04-03 10:28:08 +01:00
Matthew Waters e5b4f09172 glbufferpool: protect release_buffer from multiple concurrent access
If two different threads attempt to release buffers at the same time, then the
keep-alive-slightly-longer GQueue may become corrupted.  Guard against that with
some locking.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6524>
2024-04-03 10:28:08 +01:00
Matthew Waters 9cedabae5a gl/context/cocoa: ensure pixel format lives as long as the context
Under some circumstances, the CGLPixelFormatObj was being destroyed too
early which could lead to potential use-after-frees.

Fix by returning a reference when asked for the pixel format.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3154
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6524>
2024-04-03 10:28:08 +01:00
Xavier Claessens e47f9e8f87 videorate: Reset last_ts when a new segment is received
This fix all buffers being droped when a new segment is received and
average-period property is set.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6522>
2024-04-03 00:33:15 +01:00
He Junyan 3fe9a6dc8c va: av1enc: Avoid reopen encoder or renegotiate
If parameters remain similar enough to avoid either encoder reopening
or downstream renegotiation, avoid it.

This is going to be useful for dynamic parameters setting.

To check if the stream parameters changed, so the internal encoder has
to be closed and opened again, are required two steps:

1. If input caps, format, profile, chroma or rate control mode have changed.
2. If any of the calculated variables and element properties have changed.

Later on, only if the output caps also changed, the pipeline
is renegotiated.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6519>
2024-04-02 21:45:33 +00:00
L. E. Segovia a1c30bc6a6 gst: clock: Block futex_time64 usage on Android API level < 30
This syscall is seccomp blocked on all lower API levels:

ee7bc3002d

While at it, also fix all direct tests on __NR_futex_time64 and
__NR_futex so that they refer to the results available in
config.h.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6518>
2024-04-02 20:15:57 +00:00
Chao Guo 25dc99f81f glcolorconvert: Ensure glcolorconvert does not miss supported RGB formats
Add RGB16 and other RGB formats to rgb_formats to ensure glcolorconvert
does not miss the RGB formats it supports

Signed-off-by: Chao Guo <chao.guo@nxp.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6517>
2024-04-02 19:30:00 +01:00
Seungha Yang 11eb88178b meson: d3d11: Add support for MinGW DirectXMath package
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3428
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6503>
2024-04-02 12:55:24 +00:00
Seungha Yang 092c0eec66 subprojects: directxmath: Update to 3.1.9
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6503>
2024-04-02 12:55:24 +00:00
He Junyan ac23e04236 va: av1enc: Improve the LAST reference assignment
The last frame which has the smallest diff should be consider as
the first choice rather than the golden frame. Especially when only
one reference available, this way can improve the BD rate about 5
percentage.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6507>
2024-04-02 09:57:51 +01:00
He Junyan c4bb6d301e va: av1enc: Fix the reference number setting bug
The current way will let the total reference number surplus the
reference number set by the "ref-frames" property.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6507>
2024-04-02 09:57:51 +01:00
Alexander Slobodeniuk f1d28fdcf7 d3d11videosink: disconnect signals before releasing the window
It might happen that the key event arrives when the d3d11videosink
is stopping. In case of GstD3D11WindowWin32 it can raise a
navigation event even when the sink is already freed, because the
window object's refcount may reach 0 in the window thread. In
other words sometimes the GstD3D11WindowWin32 lives few ms more
then the GstD3D11VideoSink, because it's freed asynchronously.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6492>
2024-03-30 19:06:31 +00:00
Ruben Gonzalez ca97570da5 wpe: avoid crash with G_DEBUG=fatal_criticals and static build
No plugin filenames if static build.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6488>
2024-03-30 11:15:17 +00:00
Hou Qi 1dc3fe831c encodebin: Add the parser before timestamper to tosync list
Also need to sync the state of the parser before timestamper with
parent.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6486>
2024-03-29 19:45:23 +00:00
Ruben Gonzalez e6e3ed5679 ristsrc: Clean caps instead of unref
Fix issue unrefering null caps. Better solution than

```
  if (src->caps)
      gst_caps_unref (src->caps);
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6485>
2024-03-29 19:04:52 +00:00
Tim-Philipp Müller d2aeaeb73f tests: rtpred: fix out-of-bound writes
Don't write more data to the buffer than we allocated
space for.

Fixes #3312

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6478>
2024-03-29 00:22:16 +00:00
Haihua Hu bb43b96d2c v4l2src: need maintain the caps order in caps compare when fixate
if the calculated "distance" of caps A and B from the preference are
equal, need to keep the original order instead of swap them

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6473>
2024-03-28 20:05:27 +00:00
Seungha Yang 98ed7a8201 meson: d3d11: Disable library build if DirectXMath header was not found
DirectXMath header library is a hard dependency

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6472>
2024-03-28 19:06:57 +00:00
Nicolas Dufresne fa44d14d2b v4l2codecs: alphadecoder: Explicitly pass 64 bit integers as such through varargs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6469>
2024-03-28 11:16:28 +00:00
Sebastian Dröge c42d3fc6e3 alphadecodebin: Explicitly pass 64 bit integers as such through varargs
Maybe fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3422

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6469>
2024-03-28 11:16:28 +00:00
Taruntej Kanakamalla 5f499b7932 net/gstptpclock: fix double free of domain data during deinit
The attempt to free the domain data is happeing twice during the ptp deinit.
Once while iterating through the list domain_data and second while iterating
through the list domain_clocks, so this is crashing the application
trying to gst_ptp_deinit

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6457>
2024-03-28 00:06:45 +00:00
Sebastian Dröge 91ded3fa77 basesrc: Clear submitted buffer lists consistently with buffers
And handle the case of a NULL buffer being returned cleanly, which is
valid as long as a buffer list is returned instead. Previously this
would cause an assertion because of calling gst_buffer_unref() with
NULL.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6463>
2024-03-27 20:32:34 +00:00
Jan Schmidt 2980981618 rtpmp4adepay: Set duration on outgoing buffers
If we can calculate timestamps for buffers, then set the duration
on outgoing buffers based on the number of samples depayloaded.

This can fix the muxing to mp4, where otherwise the last packet
in a muxed file will have 0 duration in the mp4 file.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6456>
2024-03-27 19:48:43 +00:00
Arnaud Vrac 0d04d702bd inputselector: fix possible clock leak on shutdown
Avoid leaking a GstClock object on shutdown, bail out before taking the ref when
not playing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6455>
2024-03-27 17:31:15 +00:00
Piotr Brzeziński 4020144a65 vtdec: Fix caps criticals during negotiation
Calling gst_pad_peer_query_caps() without a filter can give us EMPTY caps, whereas all the code below
assumes that's not the case. Replacing query+intersect with a filtered query ensures we always get a subset
of the template caps back.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6454>
2024-03-27 16:24:07 +00:00
Víctor Manuel Jáquez Leal 6eab0524ca jpegparse: avi1 tag can be progressive
AVI1 tag in APP0 is trivalue: 0 not interleaved, 1 odd, 2 even.

So if avi1 is zero then the frame is progressive.

Also, this patch adds a couple log messages.

Fixes: #3414
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6453>
2024-03-27 14:59:38 +00:00
Tim-Philipp Müller d2f20d546d tests: add check to make sure -bad lib headers are C++ compiler clean
Only non-internal libs without external deps for now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6448>
2024-03-26 16:15:12 +00:00
Tim-Philipp Müller fe8b80704a ges: add check to make sure headers are C++ compiler clean
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3421

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6448>
2024-03-26 16:15:12 +00:00
Thibault Saunier 256d990aea ges: frame-composition-meta: Stop using keyword 'operator' for field in C++
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3421

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6448>
2024-03-26 16:15:12 +00:00
Wojciech Kapsa 7a8663d051 libnice: bump subproject wrap to v0.1.22
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6431>
2024-03-22 21:37:41 +00:00
Hou Qi c0d35575a8 v4l2: Also set max_width/max_height if enum framesize fail
Some driver doesn't implement enum_framesize. The maximum supported
size can be got by trying format with a very large size. Also need
to set max_width/max_height for this case, otherwise default encoded
buffer size 256kB is too small.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6430>
2024-03-22 17:27:58 +00:00
Tim-Philipp Müller 175d116f94 Back to development 2024-03-22 01:38:06 +01:00
Tim-Philipp Müller 0d0a1d9d16 Release 1.24.1 2024-03-21 21:47:53 +01:00
Thomas Goodwin 5a80a146f0 gst-inspect: fix --atleast-version to be implicitly applied to --exists
The --atleast-version implies --exists, but the implementation in
earlier commits had the version check applied any time the --exists was
checked, and the default value of the major and minor versions were set
to the GStreamer major and minor versions.  The resulting behavior would
have gst-inspect return '1' if the plugin's version didn't match
gstreamer's even when --atleast-version was not specified in the command
line args.  The change in this patch removes that behavior and adds
tests to verify that if --exists is specified WITHOUT --atleast-version
the version check will NOT be applied.  If both arguments are specified
and the version does not match the arg-supplied version number, a new
return code of '2' is used to uniquely identify the failure.

Fixes #3246

Signed-off-by: Thomas Goodwin <thomas.goodwin@laerdal.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6414>
2024-03-21 00:13:59 +01:00
Piotr Brzeziński 11c6432cca vtdec: Ignore output loop errors in drain() if we're flushing
In an early non-linked scenario, this was causing a ton of criticals about the queue array,
because the output callback would still fire for leftover frames that were still being processed by VT
at the time the output loop stopped. This makes sure they're flushed correctly as well.

Also renames gst_vtdec_loop to gst_vtdec_output_loop for consistency with related functions.

wip

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6411>
2024-03-20 14:21:24 +01:00
Piotr Brzeziński bf88fb152d vtdec: Fix a deadlock during ProRes playback
Sometimes a call to negotiate (and thus drain) can happen from the output loop
(via finish_frame()), which will tell VT to output all internal frames, but that won't succeed
if we happen to decide to wait for the queue to empty (because the loop is waiting for draining to finish and
will not make space in the queue!). This commit adds an override for the queue size limit if we're draining/flushing.

This bug could happen for any formats, but was especially obvious for ProRes, which has dpb_size of 0.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6411>
2024-03-20 14:21:24 +01:00
Edward Hervey db6803bd55 adaptivedemux2: Don't use g_str_equal on potentially NULL strings
It is only meant to be used as a callback. The fallback macro uses strcmp which
doesn't handle NULL strings gracefully. Instead use g_strcmp0

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6410>
2024-03-20 10:49:02 +01:00
Edward Hervey 77fa0ae0e7 hlsdemux2: Avoid NULL pointer usage
The pending/current variant are both NULL when the demuxer is resetted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6410>
2024-03-20 10:49:02 +01:00
Edward Hervey 9ce063f5f6 adaptivedemux2: Handle context going away
This issue can happen when the scheduler loop was stopped (and context went
away). We no longer want to push/pop main context threads.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6410>
2024-03-20 10:49:02 +01:00
Edward Hervey 257de579b3 hlsdemux2: Improve detection of playlist updates
In the case we are not updating an existing playlist, we only want to reset the
download error count if the URI we are downloading was not the previous one we
were trying to load

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6410>
2024-03-20 10:49:02 +01:00
Edward Hervey f8d8c6795d uridecodebin3: Don't hold lock when posting messages or signals
There's a very good chance that the receiver might react on those synchronously
and call back into uridecodebin3 (ex: for setting the next URI).

Make sure we release the lock if we need to do that.

Fixes #3400

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6403>
2024-03-19 12:02:27 +01:00
Ruijing Dong b547c8eebb va: enc : checking surface alignment attribute
Apply surface alignment attribute when availalbe,
also fix frame cropping issue for va h265 encoder.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6399>
2024-03-18 20:55:38 +01:00
Edward Hervey c8f42ab3af uridecodebin3: Handle potential double redirection errors
Some elements (like qtdemux) might post a redirection error message twice. We
only want to handle it once.

Fixes #3390

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6394>
2024-03-18 15:52:08 +01:00
Mark Nauwelaerts f8ae970db2 dvdspu: avoid null dereference
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6391>
2024-03-18 11:43:39 +01:00
Philippe Normand 559278420b play: Fix a critical warning in error callback
`on_error()` can be called with a NULL details structure, so in that situation
the `gst_structure_copy()` would raise a critical warning. Create an empty
structure instead of attempting to copy a NULL one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6387>
2024-03-17 21:43:44 +01:00
Tim-Philipp Müller 93255efece Revert "audiobasesink: Don't wait on gap events"
This reverts commit 8e923a8e2d.

This caused regressions, see #3303.

Without this commit, osxaudiosrc ! osxaudiosink won't work
right, but since that hasn't really been a huge problem
for years it's probably best to revert this until a proper
solution can be figured out.



(cherry picked from commit f04f86f3ee)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6384>
2024-03-17 03:18:54 +00:00
Seungha Yang 9061e464a8 d3d12: Fix SDK debug layer activation
Debug layer must be enabled before creating device. Otherwise
already opened devices before the activation will be removed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6383>
2024-03-16 15:58:13 +01:00