He Junyan
0c81d1a1e7
vabaseenc: delete the useless frame counter fields
...
They are used to calculate the PTS and DTS before, no usage now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6773 >
2024-04-30 07:51:13 +00:00
He Junyan
477fea97b4
vabaseenc: Do not set the min_pts
...
Because all the va encoders improved their PTS/DTS algorithm, now
it is impossible to generate minus DTS. So no underflow will happen
and we do not need to set a 1000 hour offset now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6773 >
2024-04-30 07:51:13 +00:00
Matthew Waters
184d94305c
glcolorconvert: add support for planar yuv->planar yuv conversions
...
Currently only supported by keeping the same colorimetry and is only
a repacking operation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6596 >
2024-04-30 05:58:55 +00:00
Matthew Waters
674e643428
glcolorconvert: use color matrices
...
Allows programatically supporting whatever new formats are added to
libgstvideo.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6596 >
2024-04-30 05:58:55 +00:00
Mengkejiergeli Ba
9480197377
msdk: Add Y212 format to hevc encoder static raw caps
...
Note that static caps is used for the old MSDK dispatch.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6750 >
2024-04-30 04:05:29 +00:00
Sebastian Dröge
e68eccff10
exiftag: Prevent integer overflows and out of bounds reads when handling undefined tags
...
Fixes ZDI-CAN-23896
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3483
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6766 >
2024-04-29 20:06:22 +00:00
Shengqi Yu
a92167ea6e
glmixer: Add GL_SYNC_META option to bufferpool
...
when pipline is
glvideomixerelement->glcolorconvertelement->gldownloadelement and
glcolorconvertelement is not passthrough, the gl bufferpool between
glvideomixerelement and glcolorconvertelement will not add gl sync meta
during allocating buffer. This will cause that glcolorconvert's inbuf
has no sync meta to wait for.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6756 >
2024-04-29 19:15:39 +00:00
François Laignel
59e17fa931
rtp: add value annotation for GST_RTP_VALID_VALUE
...
... otherwise its value is not available to bindings.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1425#note_2384464
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6762 >
2024-04-29 18:27:40 +00:00
Edward Hervey
9c10726ae1
gstvalue: Add a GstAllocationParams to String conversion
...
Avoids ending up with plenty of warnings when serializing GstStructure
containing GstAllocationParams
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6714 >
2024-04-29 16:01:33 +00:00
He Junyan
ae68d9dda5
vah265enc: Set the correct buffer flag for output
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6703 >
2024-04-29 13:25:09 +00:00
He Junyan
d06b12c6f1
vah264enc: Set the correct buffer flag for output
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6703 >
2024-04-29 13:25:09 +00:00
Seungha Yang
b66834787c
vabaseenc: Fix frame leak on error path
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6703 >
2024-04-29 13:25:09 +00:00
He Junyan
c013b03a19
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/6703 >
2024-04-29 13:25:08 +00:00
He Junyan
4d1a48c9e9
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/6703 >
2024-04-29 13:25:08 +00:00
Tim-Philipp Müller
eec64e372b
rtph264depay: fix FU-B handling
...
Skip extra 16-bit DON in FU-B header.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/806
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6607 >
2024-04-29 12:21:52 +00:00
Tim-Philipp Müller
b1a45b527a
rtph264depay: minor refactoring of FU handling code
...
Make code easier to follow, and prepare for next commit.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6607 >
2024-04-29 12:21:52 +00:00
Edward Hervey
777c8a9b15
structure: Add a serialization for GArray in GstStructure
...
Instead of constantly spurting out warnings in the log files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6691 >
2024-04-29 11:05:44 +00:00
William Wedler
9ad6a9b942
fix: qmlglsink: video content resizes to new item size
...
Mark geometry dirty when the item rectangle changes in the
QtGLVideoItem::updatePaintNode method. This allows changes in the bounding
rectangle to be applied to the scene graph geometry node.
Fixes #3493
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6711 >
2024-04-29 02:57:06 +00:00
William Wedler
c02af39026
fix: qml6glsink: video content resizes to new item size
...
Mark geometry dirty when the item rectangle changes in the
QtGLVideoItem::updatePaintNode method. This allows changes in the bounding
rectangle to be applied to the scene graph geometry node.
Fixes #3493
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6711 >
2024-04-29 02:57:06 +00:00
Seungha Yang
cb20a371c2
d3d12decoder: Fix d3d12 resource copy
...
It was copying to self resource
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6753 >
2024-04-28 15:31:19 +00:00
Seungha Yang
84f4068036
nvh265encoder: Fix crash with RGBx and BGRx
...
Both formats need to be handled in switch
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6752 >
2024-04-28 23:34:37 +09:00
Seungha Yang
46131f0cb0
d3d12ipcclient: Fix deadlock when copying texture
...
Fixing deadlock in below case
* GC lock is taken by background thread, and the background thread calls
gst_d3d12_ipc_client_release_imported_data() which takes ipc lock
* ipc lock is already taken in ipc thread and trying to pushing GC data
via gst_d3d12_command_queue_set_notify()
* gst_d3d12_command_queue_set_notify() is trying to take GC lock
but it's already taken by background thread
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
19932cf178
d3d12ipcsink: Handle external fence
...
Waits external fence before sending frame to peer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
b7844ef307
d3d12decoder: Remove CPU-side waiting
...
Sets decoder command queue's fence to memory instead of waiting
from decoder's output thread. CPU-side waiting will happen
only if download is required.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
a05961ab7b
d3d12screencapturesrc: Fix output to non-d3d12 element
...
Configures upload/download flags to memory after write
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
e29655e9ca
d3d12screencapturesrc: Release and flush d3d11 objects before d3d12
...
Fixing device-removed error when closing pipeline
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
3e08cdeebe
d3d12memory: Do not wait external fence on map()
...
Only wait for external fence if upload or download is required.
Waiting for external fence in case of d3d12 mapping is caller's
responsibility
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
2c203e0d40
d3d12encoder: Handle external fence explicitly
...
Waits for external fence if any
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
2a14793ee1
d3d12converter: Add support for GPU-side external fence waiting
...
Ideally, GPU waiting should be scheduled just before executing command list.
But handling the case outside of converter is a bit complicated.
Under an assumption that constructed command list will be executed
immediately, schedules GPU-side waiting inside of conversion method
to simplify the flow.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
c95725bb79
d3d12memory: Use explicit type for GST_MAP_D3D12 define
...
C++ compiler will complain about different type between int and GstMapFlags
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
87f43c25cc
d3d12frame: Extract external fence from memory and wait helper function
...
Adding gst_d3d12_frame_fence_{gpu,cpu}_wait() methods
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
478e49dd73
d3d12: Update copy_texture_region() method
...
Pass external fence value if any and allow passing fence
data so that dependent resources can be released
once copy is done
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
d8aa2eea83
d3d12commandqueue: Add execute_wait_and_command_lists() method
...
... so that GPU-side waiting and executing can be scheduled at once
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
ebb64dfd0d
d3d12memory: Add get_external_fence() method
...
Required for caller to wait external fence without map() method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
Seungha Yang
00924d4820
d3d12bufferpool: Sync all memory objects on acquire_buffer()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749 >
2024-04-28 12:49:07 +00:00
He Junyan
ae5361b7fa
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/6688 >
2024-04-28 07:49:02 +00:00
He Junyan
8d0a1a0c56
vavp9enc: Set the correct buffer flag for output
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6688 >
2024-04-28 07:49:02 +00:00
He Junyan
9bd73987f6
vaav1enc: Set the correct buffer flag for output
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6688 >
2024-04-28 07:49:02 +00:00
He Junyan
b8871c87a2
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/6688 >
2024-04-28 07:49:02 +00:00
He Junyan
f68bc7f49a
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/6688 >
2024-04-28 07:49:02 +00:00
Nirbheek Chauhan
d7eeb62f38
meson: Fix Python library searching on Windows
...
Neither LIBDIR nor LIBPL are set with the native windows Python
(unlike MSYS2), so we need to use `prefix` which takes us to the
rootdir of the Python installation.
The name is also different: it's python312.dll, not python3.12.dll.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6734 >
2024-04-27 01:30:21 +00:00
Nirbheek Chauhan
753aeccde7
meson: Fix Python library name fetching on Windows
...
`python.get_variable('FOO', [])` becomes `python.get_variable('FOO')`
due to how Meson treats empty arrays in arguments, which breaks the
fallback feature of get_variable().
So we need to actually check whether the variable exists before trying
to fetch it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6734 >
2024-04-27 01:30:21 +00:00
Tim-Philipp Müller
7074849c5c
exif: add debug category
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6741 >
2024-04-27 00:19:30 +00:00
Xavier Claessens
f0ef33d018
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/6532 >
2024-04-26 18:52:19 +00:00
Xavier Claessens
1f8accbc8d
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/6532 >
2024-04-26 18:52:19 +00:00
Xavier Claessens
7f47dba299
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/6532 >
2024-04-26 18:52:18 +00:00
Víctor Manuel Jáquez Leal
1f080391ed
vulkan: replace gst_vulkan_queue_create_decoder() with gst_vulkan_decoder_new_from_queue()
...
The purpose of this refactor is to hide decoding code from public API.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6723 >
2024-04-26 16:24:22 +00:00
Víctor Manuel Jáquez Leal
18c32272bd
vulkan: conceal unused decoder symbols
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6723 >
2024-04-26 16:24:22 +00:00
Víctor Manuel Jáquez Leal
668b395a38
vulkan: conceal decoder from public API
...
Since we don't want to expose video decoding API outside of GStreamer, the
header is removed from installation and both source files are renamed as
-private.
The header must remain in gst-libs because is referred by GstVulkanQueue,
which's the decoder factory.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6723 >
2024-04-26 16:24:22 +00:00
Víctor Manuel Jáquez Leal
547e2899d1
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/6729 >
2024-04-26 15:41:39 +00:00