Commit graph

3217 commits

Author SHA1 Message Date
Sebastian Dröge
f67559716e play: Initialize debug category and error quark in class_init
Doing it in gst_play_new() means that bindings that directly call
g_object_new() with the GType wouldn't end up initializing both.
This affects at least the Python and GJS bindings.

gst_init() is nonetheless only called from gst_play_new() once because
calling it from class_init would likely lead to problems as that's
called from somewhere in the middle of GObject.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6821>
2024-05-09 12:02:06 +01:00
Emil Pettersson
6f508684e7 vtdec: Fix deadlock when negotiating format change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6817>
2024-05-08 09:13:50 +01:00
Piotr Brzeziński
fabd09bd93 audiovisualizer: Add simple pipeline unit test
Creates pipelines with each of our visualizer elements and runs them with 20 buffers from audiotestsrc.
Added after a completely broken (segfaulting) synaescope went unnoticed for a while.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6814>
2024-05-07 18:52:00 +01:00
Matthew Waters
7bebb24880 webrtc: request-aux-sender, only sink floating refs
Don't add an extra ref if non-floating as that ref will never be
unreffed.

gst_bin_add() is transfer floating (alias to transfer none).

Fixes a leak when a non-floating ref was provided as a return value in
the request-aux-sender signal.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6809>
2024-05-06 16:12:59 +01:00
Seungha Yang
5e4a76fdf1 d3dshader: Fix gamma and primaries conversion pixel shader
Fixing regression introduced by the commit of f52ecb9607

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6803>
2024-05-05 18:20:03 +09:00
Seungha Yang
e2679face1 qsvh264dec,qsvh265dec: Fix nalu leaks
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3514
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6790>
2024-05-01 13:43:29 +00:00
Piotr Brzeziński
3d39c3ce00 vtdec: Fix PAUSED->READY deadlock when output loop is running
Makes sure the GST_PAD_STREAM_LOCK is not taken when pad is being deactivated.
The lack of this was causing deadlocks when stopping the pipeline right after producing first buffers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6788>
2024-05-01 12:54:23 +00:00
Stéphane Cerveau
9db0b83aa1 vkh26xdec: Fix stop memory leak
The h26xdecoder 'stop' method was not called
as the vulkan h26x class rewires the video decoder
'stop' base method to its own one.

It was causing some memory leaks such as dangling parser
and dpb in h26xdecoder base class.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6787>
2024-05-01 11:24:25 +01:00
Tim-Philipp Müller
204ba57e81 Back to development after 1.24.3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6772>
2024-04-30 00:36:59 +01:00
Tim-Philipp Müller
da69285863 Release 1.24.3 2024-04-30 00:15:23 +01:00
Tim-Philipp Müller
02c3bb124e unixfd: disable flaky test_unixfd_segment for now
It's a problem with the test, and a proper fix might
require new API, so just disable it for now.
2024-04-30 00:15:12 +01:00
He Junyan
ca49577cbb vah265enc: Set the correct buffer flag for output
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6764>
2024-04-29 17:27:41 +00:00
He Junyan
bda1aa3559 vah264enc: Set the correct buffer flag for output
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6764>
2024-04-29 17:27:41 +00:00
Seungha Yang
dc8d09d6d2 vabaseenc: Fix frame leak on error path
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6764>
2024-04-29 17:27:41 +00:00
He Junyan
8a76079e17 vah265enc: Do not touch the PTS of output frame
1. The PTS of all frames should not be changed.
2. Just update the DTS based on the PTS. For the frame which is not
   reordered, the DTS is equal to PTS. For frame which is reordered,
   the DTS is equal to previous DTS. For example:
   Input: F0[D0, P0] -- F1[D1, P1] -- F2[D2, P2] -- F3[D3, P3]
   Output: F0[I, D0, P0] -- F3[P, D0, P3] -- F1[B, D1, P1] -- F2[B, D2, P2]

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6764>
2024-04-29 17:27:41 +00:00
He Junyan
a9551fec9a vah264enc: Do not touch the PTS of output frame
1. The PTS of all frames should not be changed.
2. Just update the DTS based on the PTS. For the frame which is not
   reordered, the DTS is equal to PTS. For frame which is reordered,
   the DTS is equal to previous DTS. For example:
   Input: F0[D0, P0] -- F1[D1, P1] -- F2[D2, P2] -- F3[D3, P3]
   Output: F0[I, D0, P0] -- F3[P, D0, P3] -- F1[B, D1, P1] -- F2[B, D2, P2]

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6764>
2024-04-29 17:27:41 +00:00
Seungha Yang
4a7f3d0b75 d3d12decoder: Fix d3d12 resource copy
It was copying to self resource

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6755>
2024-04-29 17:44:56 +09:00
He Junyan
17ede2149b vabaseenc: No need to call _finish_subframe()
After vaav1enc is aligned to TU, there is no case that generates
multi output for one input.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6751>
2024-04-28 11:25:54 +01:00
He Junyan
c63bcb1c2a vaav1enc: Set the correct buffer flag for output
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6751>
2024-04-28 11:25:24 +01:00
He Junyan
8c4aa7067d vaav1enc: Do not change the PTS/DTS of output frames
The AV1 encoder does not reorder the frames, so there is no need
to change the timestamp related meta data of output frames, just
inheriting it from the input frames.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6751>
2024-04-28 11:25:13 +01:00
He Junyan
7ec4a7cc01 vaav1enc: Change the alignment of output to "tu"
The current output alignment is "frame", which may cause some issues
for PTS and DTS calculation. We now change the alignment to "tu",
and this is also the alignment mode for av1enc and svtav1enc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6751>
2024-04-28 11:25:05 +01:00
Xavier Claessens
839f9bbd18 unixfd: Close file descriptors on error
After calling g_unix_fd_list_steal_fds() and before calling
gst_fd_allocator_alloc(), we are responsible for closing those fds.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6747>
2024-04-27 10:41:46 +01:00
Xavier Claessens
e62adb4d12 unixfdsink: Take segment into account when converting timestamps
Also rename `calculate_timestamp()` to `to_monotonic()` and
`from_monotonic()` which better describe what it does.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6747>
2024-04-27 10:41:46 +01:00
Xavier Claessens
5593a3c698 unixfd: Allow sending buffers with no memories
There is no reason to not allow it, and it is useful for simple unit
test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6747>
2024-04-27 10:41:46 +01:00
Víctor Manuel Jáquez Leal
b370afab76 vaallocator: disable derived all together for Mesa <23.3
First it derived mapping was disabled for P010 formats, but also there's an
issue with interlaced frames.

It would be possible to disable derived mapping only for interlaced (H.264
decoder and vadeinterlace) but it would spread the hacks along the code. It's
simpler and contained to disable derived completely for Mesa <23.3

Fixes: #3450
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6746>
2024-04-26 17:35:17 +00:00
Víctor Manuel Jáquez Leal
3dd291b99c va: videoformat: use video library to get DRM fourcc
Instead of duplicating the GStreamer format to DRM fourcc mapping, this patch
uses the GstVideo library helpers. This duplicates the big O of looking for,
since the two lists are traversed, but it's less error prone.

Partially reverts commit 547f3e8622.

Fixes: #3354
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6744>
2024-04-26 17:20:31 +01:00
Hou Qi
fcd0c76e12 wlwindow: free staged buffer when do gst_wl_window_finalize
If waylandsink received buffer rate is high which causes frame
drop, the cached staged buffer will be replaced when next buffer
needs to be rendered and be freed after redraw. But there is
chance to get memory leak if ended without redraw. So need to
free staged buffer when do gst_wl_window_finalize().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6735>
2024-04-26 01:58:09 +01:00
Haihua Hu
420e79e00b wlwindow: clear configure mutex and cond when finalize
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6724>
2024-04-23 18:57:19 +01:00
Edward Hervey
8db552f404 mpegtsbase: Fix Program equality check
There was an issue with this equality check, which was to figure out what to do
with PCR pids (whether they were part of the streams present or not) and whether
we ignore PCR or not.

Turns out ... we already took care of that further up in the function.

The length check can be simplified by just checking whether the length of
the *original* PMT and the new PMT are identical. Since we don't store "magic"
PCR streams in those, we can just use them as-is.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6719>
2024-04-23 12:49:39 +00:00
Seungha Yang
06e955f94e d3d12decoder: Lock DPB while building command
Since DPB resource can be modified in output thread, protect
it when building command list.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6717>
2024-04-23 12:26:07 +01:00
Seungha Yang
d22fe06234 d3d12decoder: Hold reference pictures in fence data
Keep reference pictures alive during executing decoding commands

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6717>
2024-04-23 12:26:07 +01:00
Seungha Yang
e102560883 d3d12vp9dec: Disallow resolution change to larger size on non-keyframe
Intel GPU seems to be crashing if the case happens.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6717>
2024-04-23 12:26:06 +01:00
Seungha Yang
9daa541816 d3d12decoder: Fix potential use after free
A DPB buffer held by codec picture object may not be writable
at the moment, then gst_buffer_make_writable() will unref passed buffer.

Specifically, the use after free or double free can happen if:
* Crop meta of buffer copy is required because of non-zero
  top-left crop position
* zero-copy is possible with crop meta
* A picture was duplicated, interlaced h264 stream for example

Interlaced h264 stream with non-zero top-left crop position
is not very common but it's possible configuration in theory.

Thus gst_buffer_make_writable() should be called with
GstVideoCodecFrame.output_buffer directly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6710>
2024-04-22 15:14:13 +01:00
Seungha Yang
72ffee6355 d3d11decoder: Fix potential use after free
A DPB buffer held by codec picture object may not be writable
at the moment, then gst_buffer_make_writable() will unref passed buffer.

Specifically, the use after free or double free can happen if:
* Crop meta of buffer copy is required because of non-zero
  top-left crop position
* zero-copy is possible with crop meta
* A picture was duplicated, interlaced h264 stream for example

Interlaced h264 stream with non-zero top-left crop position
is not very common but it's possible configuration in theory.

Thus gst_buffer_make_writable() should be called with
GstVideoCodecFrame.output_buffer directly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6710>
2024-04-22 15:14:13 +01:00
Edward Hervey
228c75a336 tsdemux: Disable smart program update
The goal of this code was, for programs which were updates (i.e. adding/removing
streams but not completely changing) to allow dynamic addition/removal of
streams without completely removing everything.

But this wasn't 100% tested and there are a bunch of issues which make it fail
in plenty of ways.

For now disable that feature and force the legacy "add all pads again and then
remove old ones" behaviour to make it switch.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6708>
2024-04-22 13:45:17 +01:00
Seungha Yang
210a225ad2 mediafoundation: Fix infinite loop in device provider
Initialize source state with GST_MF_DEVICE_NOT_FOUND to terminate
loop immediately if no available capture device is available

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3492
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6707>
2024-04-21 16:56:39 +01:00
Seungha Yang
180cf124a7 d3d12videosink: Disconnect window's signal on dispose
Same as the commit of 7b69d1758f
but for d3d12videosink.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6700>
2024-04-20 23:47:14 +00:00
Seungha Yang
e0143754ad d3d12videosink: Handle external HWND's mouse/keyboard events
OS will not propagate the event to child HWND if it's handled by
the parent. Thus, navigation event should be handled by parent HWND's
event handler.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6700>
2024-04-20 23:47:14 +00:00
Alexander Slobodeniuk
0cb12db96c d3d11device: protect device_lock vs device_new
It seems that when D3D11CreateDevice collides in time
with other D3D11 calls, in particular the proccess of
creating a shader, it can corrupt the memory in the driver.
D3D11 spec doesn't seem to require any thread safety from
D3D11CreateDevice. Following MSDN, it is supposed to be called
in the beginning of the proccess, while GStreamer calls it with each
new pipeline.
Such crashes in the driver were frequently reproducing on the
Intel UHD 630 machine.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6702>
2024-04-20 20:49:34 +00:00
Alexander Slobodeniuk
203f6b00d4 tests/d3d11: add concurrency test for gstd3d11device
We suspect that it's not thread safe to just create and
destroy the device from any thread, particularly because
of D3D11CreateDevice, that is not documented as thread-safe.
While D3D11CreateDevice is usually protected from outside
by the gst_d3d11_ensure_element_data, it still can cross
with the Release() method of another device.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6702>
2024-04-20 20:49:34 +00:00
Elliot Chen
57b1db4a02 gstplay: query duration again if previous query failed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6701>
2024-04-20 19:29:10 +01:00
Hou Qi
21d6f6d783 waylandsink: config buffer pool with query size when propose_allocation
If propose_allocation comes before set_caps, self->video_info
has not been extracted from caps and self->video_info.size is 0.
It causes buffer pool fail to set config . So need to use info
size got from query instead when propose_allocation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6687>
2024-04-19 00:46:53 +01:00
Nicolas Dufresne
3efcfef4b5 v4l2codecs: Don't unref allocation query caps
The caps obtained from parsing the allocation query is borrowed and
should not be unreffed. This fixes criticals assertion introduced in
1.24.1.

(gst-launch-1.0:242): GStreamer-CRITICAL **: 19:48:02.667:
    gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed

Fixes: 5189e8b956 ("v4l2codecs: decoders: Add DMA_DRM caps support")
Closes #3462

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6682>
2024-04-18 09:56:52 +01:00
Jan Schmidt
1c4baa4bd2 dvbsubenc: fixed some memory leaks and a crash
Fix leaks of internal GstBuffers, and a crash if subtitle segments end
up empty.

Based on a patch by Jurijs Satcs <jurijs.satcs@veset.tv>

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6672>
2024-04-17 14:23:13 +01:00
Seungha Yang
ebd27cb2d2 mediafoundation: Fix device enumeration
Do not stop device enumerate even if a device could not be opened.
Otherwise the other devices listed after the failed device will not be
reported by device provider

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3460
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6647>
2024-04-16 06:57:06 +00:00
Seungha Yang
4313083584 d3d12encoder: Fix buffer pool leak
Add missing buffer pool release

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6637>
2024-04-16 03:41:28 +00:00
Seungha Yang
6ddadcb830 d3d11videosink: Fix rendering on keyed mutex enabled handle
As of the commit 69b2e1565c,
keyed mutex will be handled by the memory object.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3468
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6635>
2024-04-16 02:07:06 +00:00
Tim-Philipp Müller
738a7c3e2b tests: fix possible libscpp build failure in gst-plugins-bad
../subprojects/gst-plugins-bad/tests/check/libs/gstlibscpp.cc:41:
fatal error: gst/mpegts/gstmpegts-enumtypes.h: No such file or directory

Could only pass the needed deps to the libscpp test, but gets
messier to maintain, so let's at it for consistency.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6644>
2024-04-15 13:45:58 +01:00
Tim-Philipp Müller
934af761fd Back to development after 1.24.2 2024-04-10 00:15:42 +01:00
Tim-Philipp Müller
2d82731515 Release 1.24.2 2024-04-09 21:48:55 +01:00
Seungha Yang
380511f14d ccconverter: Fix caps leak and remove unnecessary code
The removed code does the exactly same thing as the below code
except for leaking caps

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6587>
2024-04-09 20:24:42 +01:00
Seungha Yang
10ffbdbb1f qsvdecoder: Release too old frames
Release too old frames manually.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3163
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6586>
2024-04-09 18:56:08 +01:00
Seungha Yang
f5500906ce dwrite: Fix crash on device update
Selected blend mode should not be cleared on device update

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6521>
2024-04-08 11:38:43 +00:00
Daniel Morin
9289fb5ce4 h264parser: maintain API changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6562>
2024-04-07 17:40:51 +00:00
Daniel Morin
59230efdd9 Revert "h264parse: test - AU align with SEI between frame slices"
This reverts commit 533f814fd9.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6562>
2024-04-07 17:40:51 +00:00
Daniel Morin
83038c3daf Revert "h264parse: Improved AU boundary detection"
This reverts commit 49f200cb54.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6562>
2024-04-07 17:40:51 +00:00
Daniel Morin
115b4792b5 Revert "h264parse: Remove dead code"
This reverts commit 141cd38715.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6562>
2024-04-07 17:40:51 +00:00
Daniel Morin
9bbf246cc4 Revert "h264parse: Fix AU collection"
This reverts commit 495390f63a.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6562>
2024-04-07 17:40:51 +00:00
Daniel Morin
5453976f03 Revert "h264parse: Remove un-needed check on SPS state"
This reverts commit 73dedf9a51.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6562>
2024-04-07 17:40:51 +00:00
Daniel Morin
ee7026925f Revert "h264parse: use AUD to detect first VCL NAL"
This reverts commit 90a3b63eed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6562>
2024-04-07 17:40:51 +00:00
Daniel Morin
c259674ed5 Revert "h264parse: correct NAL mode backlog processing"
This reverts commit b2098849dc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6562>
2024-04-07 17:40:51 +00:00
Edward Hervey
4ea7d5ae64 videoparsers: Demote CC warning message
Another warning message which isn't fatal and therefore should just be a DEBUG
line.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6555>
2024-04-06 19:08:33 +00:00
Elizabeth Figura
e1b82701df atdec: Handle channel counts greater than 2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6546>
2024-04-05 10:14:59 +00:00
Elizabeth Figura
b7a4b9e1ab atdec: Use gst_audio_decoder_set_output_caps() directly
The code currently sets the same caps in two different ways, and neither of them correctly handle the channel mask.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6546>
2024-04-05 10:14:59 +00:00
Robert Mader
81a800ab9e jpegparse: turn some bus warnings into object ones
For some cameras `gst_jpeg_parse_app0()` fails on a invalid segment.
While this is likely a driver or firmware bug that should be addressed
accordingly, it's not fatal and likely does not deserve a bus message on
every frame, flooding journals.

Turn down the volume of the warnings by turning them into object
warnings. If we conclude that in some cases we'd still want bus
warnings, they can be done more fine-grained in the
`gst_jpeg_parse_appX()` functions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6539>
2024-04-04 15:14:06 +01:00
Chris Spencer
f85d1efafb vkbufferpool: correct usage flags type
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6528>
2024-04-03 19:20:23 +00:00
Víctor Manuel Jáquez Leal
d2aa3829b8 vkh265dec: add missing VPS parameter
and fix coded size

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6534>
2024-04-03 18:26:05 +00:00
Víctor Manuel Jáquez Leal
56ac5e9041 vkh26xdec: implement close() vmethod
Since a validation layer error is signaled at EOS because it's required to wait
for the last frame to be processed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6534>
2024-04-03 18:26:05 +00:00
Víctor Manuel Jáquez Leal
9301f64d72 vkh26xdec: remove unused variables
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6534>
2024-04-03 18:26:05 +00:00
Víctor Manuel Jáquez Leal
85a78f56dc vkh265dec: fix resource info structure when layered DPB
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6534>
2024-04-03 18:26:05 +00:00
Víctor Manuel Jáquez Leal
6f7d62eb73 msdk: sink context reference
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6527>
2024-04-03 16:34:26 +00:00
Víctor Manuel Jáquez Leal
db387f1b13 gtk: sink reference of internal wayland pool
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6527>
2024-04-03 16:34:26 +00:00
Víctor Manuel Jáquez Leal
124ceabafe wayland: sink reference to internal pool
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6527>
2024-04-03 16:34:26 +00:00
Víctor Manuel Jáquez Leal
e1fa26e16f dash: sink references of all MDP objects
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6527>
2024-04-03 16:34:26 +00:00
Víctor Manuel Jáquez Leal
1d7b7b04d1 va: sink reference at instantiation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6527>
2024-04-03 16:34:26 +00:00
Víctor Manuel Jáquez Leal
4a51579cb2 vulkan: sink references at instantiation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6527>
2024-04-03 16:34:26 +00:00
eri
648a1cb03a play: Update video_snapshot to support playbin3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6526>
2024-04-03 13:48:13 +00:00
Guillaume Desmottes
5fcc15514f examples: set perfect-timestamp=true on opusenc
Fix audio streaming on Chrome, see https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1524

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6523>
2024-04-03 11:35:08 +00: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
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
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
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
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
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
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
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
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
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
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
Robert Mader
aef872944e v4l2codecs: decoders: Add DMA_DRM caps support
In order to simplify caps negotiations for clients and, notably, be more
compatible with va* decoders.
Crucially this allows clients to know ahead of time whether buffers will
actually be DMABufs.

Similar to GstVaBaseDec we only announce system memory caps if the peer
has ANY caps. Further more, and again like va decoders, we fail in
`decide_allocation()` if DMA_DRM caps are used without VideoMeta.
Apart from buggy peers this can happen e.g. when a peer with ANY caps
is used in combination with caps filters.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6376>
2024-03-14 23:32:00 +00:00