Commit graph

5536 commits

Author SHA1 Message Date
Thibault Saunier
71aa451870 ges: discoverer-manager: Allow recursing discovery
When using deeply nested timelines with the `ges:` protocol the
formatters ends up trying to do discovery from the same thread current
discovery happens, leading to infinite freeze as GstDiscoverer can't run
several discoveries at the same time.

By ensuring that when calling `gst_discoverer_discover_uri_async` no
`GstDiscoverer` is set as "thread discoverer" we know that another
discoverer will be created if discovery recurses, effectively removing
the freeze.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5608>
2023-11-06 14:23:45 +00:00
Vivia Nikolaidou
78bc3d53dd ccutils: Keep upstream padding payload
A payload of 0x80 0x80 means that it's padding. It's not a good idea to
throw this away though, because of the cc_valid field.

According to CEA 10-B section 25.2.1, if cc_valid is zero, the run-in
clock and start bit should not be generated. In practice, this means
that any closed captions will be erased and the end-user TV will show
that captions are not available for this stream. This might have
undesired consequences, e.g. we were just showing a long line of
captions and we disable it before the user has had time to read it, or
you can't enable closed captions during silence/music intervals.

We cannot reliably detect whether there's a currently-silent closed
caption stream or just nothing, but we have this information coming from
upstream, so we can at least not discard it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5508>
2023-11-06 13:44:36 +00:00
Philippe Normand
ca18e48882 decodebin3: Tidy-up dispose function
Protect code with mutexes

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5607>
2023-11-06 13:07:54 +00:00
Philippe Normand
f0e1b4f415 parsebin: Fix a potential stream collection leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5607>
2023-11-06 13:07:54 +00:00
Seungha Yang
b12d43bd89 wasapi2device: Ignore activation failed device
Enumerates all devices even if activation error is detected

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3090
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5599>
2023-11-06 12:28:50 +00:00
Fabian Orccon
b3245aff28 gst-inspect: Remove current caps print
At GST_STATE_NULL, all pads are deactivated and have no caps.
It can be observed with `gst-inspect-1.0 -a` that no element
is reaching this removed code.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5604>
2023-11-06 07:21:18 +00:00
Marek Vasut
5d2d602e4a v4l2codecs: Avoid QBUF/DQBUF struct timeval .tv_usec wrap-around at frame 1000000
When decoding stream using hardware V4L2 decoder element, in any of the
currently supported formats, the decoding will fail once frame number
1000000 is reached. The reported error clearly indicates a wrap-around
occured, instead of receiving decoded frame 1000000, frame 0 is received
from the hardware V4L2 decoder driver.

The problem is actually not in the driver itself, but rather in gstreamer,
which uses `struct v4l2_buffer` member `.timestamp` in a special way. The
timestamp of buffers with encoded data added to the SINK (input) queue of
the driver is copied by the driver into matching buffers with decoded data
added to the SOURCE (output) queue of the driver. In fact, the timestamp
is not a timestamp at all, but rather in this special case, only part of
it is used as an incrementing frame counter.

The `.timestamp` is of type `struct timeval`, which is defined in
`sys/time.h` [1]. Only the `tv_usec` member of this structure is used
for the incrementing frame counter. However, suseconds_t tv_usec [2]
may be limited to range [-1, 1000000]:
"
[XSI] The type suseconds_t shall be a signed integer type capable of
      storing values at least in the range [-1, 1000000].
"
Therefore, once frame 1000000 is reached, a rollover occurs and decoding
fails.

Fix this by using both `struct timeval` members, `.tv_sec` and `.tv_usec`
with matching modular arithmetic, this way the failure would occur again
just short of 2^84 frames, which should be plenty.

[1] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_time.h.html
[2] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html

A test case using stateless hardware h264 decoder, the WARN/ERROR output
in gstreamer log indicates a failure occurred. With this change, that
error no longer occurs and the WARN/ERROR are not present:
```
pc$ gst-launch-1.0 videotestsrc num-buffers=1001001 pattern=6 ! \
                   video/x-raw,width=16,height=16,format=I420 ! \
                   x264enc ! filesink location=/tmp/test.h264

dut$ GST_DEBUG="*:3" gst-launch-1.0 filesrc location=/tmp/test.h264 ! \
                                    h264parse ! v4l2slh264dec ! fakesink
...
0:03:51.393677606 12111     0x370df400 WARN      \
  v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
  Requested frame 1000000, but driver returned frame 0.
0:03:51.394140597 12111     0x370df400 WARN      \
  v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
  Requested frame 1000001, but driver returned frame 1.
0:03:51.394425216 12111     0x370df400 WARN      \
  v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
  Requested frame 1000002, but driver returned frame 2.
0:03:51.394665211 12111     0x370df400 WARN      \
  v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
  Requested frame 1000003, but driver returned frame 3.
0:03:51.394785833 12111     0x370df400 WARN      \
  v4l2codecs-h264dec gstv4l2codech264dec.c:1059:gst_v4l2_codec_h264_dec_output_picture:<v4l2slh264dec0> \
  error: Failed to decode frame 1000000
ERROR: from element /GstPipeline:pipeline0/v4l2slh264dec:v4l2slh264dec0: Failed to decode frame 1000000
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5598>
2023-11-04 15:51:45 +01:00
Philippe Normand
677b6f7148 decodebin3: Dispose decoder in case linking failed
Otherwise it will be leaked and remain forever in the bin when trying the next
decoder candidate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5551>
2023-11-04 11:02:20 +00:00
Johan Adam Nilsson
808c27b4cc wavparse: fix buffer leak with adtl tag
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3020
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5595>
2023-11-03 19:38:38 +00:00
Xavier Claessens
47c56e3865 unixfd: Add support for abstract socket
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5328>
2023-11-03 18:22:01 +00:00
Xavier Claessens
d44aa71f24 unixfd: Use DMABuf allocator when needed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5328>
2023-11-03 18:22:01 +00:00
Xavier Claessens
1f928c6c1a unixfd: Update gst_plugins_cache.json
Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5328>
2023-11-03 18:22:01 +00:00
Xavier Claessens
f1a1901b8b unixfd: New plugin with unixfdsink and unixfdsrc elements
This pair of elements, inspired from shmsink/shmsrc, send unix file
descriptors (e.g. memfd, dmabuf) from one sink to multiple source
elements in other processes.

The unixfdsink proposes a memfd/shm allocator, which causes for example
videotestsrc to write directly into memories that can be transfered to
other processes without copying.

Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5328>
2023-11-03 18:22:00 +00:00
Xavier Claessens
19832bd3b3 GstShmAllocator: Add documentation
Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5328>
2023-11-03 18:22:00 +00:00
Xavier Claessens
5b4d37d6f2 GstShmAllocator: Respect allocation params
Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5328>
2023-11-03 18:22:00 +00:00
Xavier Claessens
f57dabe65c GstShmAllocator: Seal memfd for future write
The GstMemory we created is kept mapped RW, but any future mapping that
uses the fd should be RO.

Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5328>
2023-11-03 18:22:00 +00:00
Xavier Claessens
c0ce677dfc GstShmAllocator: Use shm_open() instead of temporary file
There is no guarantee that g_get_user_runtime_dir() is in a tmpfs. Using
an explicit shared memory API seems safer for all POSIX platforms.

Note that Android does not have shm_open() and only added memfd_create()
since API level 30 (Android 11).

Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5328>
2023-11-03 18:22:00 +00:00
Xavier Claessens
d59ea1caf0 GstShmAllocator: Use GST_ALLOCATOR_FLAG_NO_COPY flag
Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5328>
2023-11-03 18:22:00 +00:00
Xavier Claessens
7df22b338b GstShmAllocator: New shared memory allocator
This makes Wayland's allocator public. It is generally useful to have a
shared memory allocator that can create memfd on Linux.

Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5328>
2023-11-03 18:22:00 +00:00
Xavier Claessens
24c34cadec GstAllocator: Add GST_ALLOCATOR_FLAG_NO_COPY flag
Detail a bit the intention behind GST_ALLOCATOR_FLAG_CUSTOM_ALLOC, even
if implementation does not currently fully follow that usage. Introduce
a new flag specifically for copying memories using the default system
allocator.

Sponsored-by: Netflix Inc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5328>
2023-11-03 18:22:00 +00:00
robert
e3e8147a74 ximagesrc: fix xnavigation linking issue
Fixes #3083

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5589>
2023-11-03 17:36:58 +00:00
Gwyn Ciesla
2be13c82aa gst-python: Fix API call for Python 3.13
_PyUnicode_AsString() is deprecated and PyUnicode_AsUTF8() should be used
instead. The new function was introduced in Python 3.3 and returns const
since Python 3.7, which is now required.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5587>
2023-11-03 21:02:48 +05:30
Seungha Yang
34d221dad5 wasapi2: Fix build with GST_DISABLE_GST_DEBUG
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>
2023-11-03 13:31:03 +00:00
Seungha Yang
8009f5275a mediafoundation: Fix build with GST_DISABLE_GST_DEBUG
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>
2023-11-03 13:31:03 +00:00
Seungha Yang
c3cef6e923 d3d12: Fix build with GST_DISABLE_GST_DEBUG
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>
2023-11-03 13:31:03 +00:00
Seungha Yang
bf05cfea45 d3d11: Fix build with GST_DISABLE_GST_DEBUG
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>
2023-11-03 13:31:03 +00:00
Seungha Yang
5e147ed3b8 meson: Fix MSVC build with GST_DISABLE_GST_DEBUG
MSVC does not understand Wno-unused

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>
2023-11-03 13:31:03 +00:00
He Junyan
e7479a8c94 libde265dec: Only decode the main profile
The src caps of the libde265 is now fixed to I420, and so if the
stream is other format, such as 4:4:4 or 10 bits format, the pipeline
will crash because the dowstream element accesses the video buffer as
I420 format.
We now restrain the input caps to "main" profile, which only contains
4:2:0 8 bits stream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5573>
2023-11-03 12:41:59 +00:00
Philippe Normand
8f18fde21a ges-uri-asset: Fix GESDiscovererManager leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5552>
2023-11-02 18:29:27 +00:00
Sebastian Dröge
2dd65d8715 mpg123audiodec: Update rank from MARGINAL to PRIMARY
This is our primary MP3 decoder after mad got removed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5590>
2023-11-02 14:17:06 +00:00
Sebastian Dröge
ffa30637c4 ptp: Use SO_BINDTOIFINDEX / SO_BINDTODEVICE on Linux
This makes sure we really really really only get packets from the
desired interface as passing a device to IP_ADD_MEMBERSHIP apparently
does not have this effect alone.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5584>
2023-11-02 11:42:44 +00:00
Fabian Orccon
f6ffe34ad5 gst-inspect: Do not check for element clock
Clock is only set at GST_PLAYING state, not the case for gst-inspect

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5570>
2023-11-02 10:12:31 +00:00
Sebastian Dröge
d6adaccf6d ptp: Check once a second for timeouts
While the minimum timeout duration is 5s, checking only every 5s means
that we would notice this 4.9s too late in the worst case.

Checking once a second reduces this considerably while keeping the
number of wakeups still low.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5520>
2023-11-02 09:11:09 +00:00
Sebastian Dröge
9ba8107ec6 ptp: Only warn if the clock id and interface of a timed out matches the current one
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5520>
2023-11-02 09:11:09 +00:00
Sebastian Dröge
bd985ea608 ptp: Only time out SYNCs if we're actually waiting for a FOLLOW_UP
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5520>
2023-11-02 09:11:09 +00:00
Sebastian Dröge
c7421c0f16 ptp: Downgrade clocks that don't send FOLLOW_UPs / DELAY_RESPs
This allows to select a different clock if there is one that is
for the same grandmaster clock and has fewer timeouts.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5520>
2023-11-02 09:11:09 +00:00
Sebastian Dröge
ea7861a757 ptp: Don't switch domain's master clock if it is equivalent to the previous one
Otherwise it can happen that we regularly switch back and forth between
clocks under certain circumstances for no good reason.

Also remove redundant comparison when comparing the steps removed between two
clocks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5520>
2023-11-02 09:11:09 +00:00
Kalev Lember
cfa1d036a1 openh264: Fail gracefully if openh264 encoder/decoder creation fails
This can happen with the dummy "noopenh264" library that the freedesktop
flatpak runtime ships, and Fedora is planning on shipping as well. In
both cases the dummy implementation gets replaced with the actual
openh264 library that's downloaded directly from Cisco, but just to be
on safe side, this patch makes it careful to check the return values to
avoid crashing if the underlying library hasn't been swapped out yet.

The patch is taken from freedesktop-sdk and was originally written by
Valentin David <valentin.david@codethink.co.uk>.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5581>
2023-11-01 16:31:11 +00:00
Seungha Yang
033f98ad86 d3d11: Set MaxAnisotropy value for the best quality
... and use anisotropic filter without comparison, which is actually
intended one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5580>
2023-11-01 15:41:08 +00:00
Seungha Yang
0e9fdabb1b d3d11converter: Simplify private struct ctor
Initialize transform matrix using memcpy

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5580>
2023-11-01 15:41:08 +00:00
Seungha Yang
e134cd8e09 d3d11device: Store device formats in hash map
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5580>
2023-11-01 15:41:08 +00:00
Seungha Yang
ac265bc4f9 d3d11overlaycompositor: Avoid heap allocation per upload
Don't allocate list per upload

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5580>
2023-11-01 15:41:08 +00:00
robert
737c32b9b6 ximagesrc: fix compile-time warning and XInitThreads()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5493>
2023-11-01 09:17:24 +00:00
Slava Andrejev
3dd9411b36 glcolorconvert: add reordering for plain GBR color format
Fixes #2991

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5582>
2023-11-01 06:02:20 +00:00
Piotr Brzeziński
1db67b933a examples: Fix SSL not working in iOS tutorials
This was broken in two ways:
1) the OpenSSL module was not being loaded due to the guarding define not actually existing
2) ca-certificates were severely outdated

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5473>
2023-11-01 03:46:25 +00:00
Piotr Brzeziński
edfd44d088 examples: iOS tutorial improvements
- Fixes a crash in tutorial 5, which happened when going back from video playback to the 'library' view, due to
ui_delegate already being destroyed at that point.

- Updates layouts to avoid navigation bar overlapping play/pause buttons. Colours are now correctly updated
based on light/dark mode being enabled, overall look and feel is improved with bigger buttons and paddings.
New button types are used, so target version is now iOS 15.0.

- Disables debug log coloring, as the default terminal in XCode does not render that anyway, so logs are now
more readable there.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5473>
2023-11-01 03:46:25 +00:00
Detlev Casanova
78e40a018f dev-tools: Add glib valgrind suppressions
The local glib subproject doesn't exist so the glib/glib.supp file
cannot be included.

As it is needed for the do_lookup_by_name() function call, let's add the
system wide suppression file so that its version matches the installed glib
version.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5434>
2023-10-31 12:06:30 -04:00
Nicolas Dufresne
72947f109c valgrind: Use frame-level widlcard for getaddrinfo leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5565>
2023-10-30 21:01:58 +00:00
Jeff Wilson
5c8fff0807 examples: webrtc: Actually create the custom ICE agent
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5568>
2023-10-30 19:58:59 +00:00
robert
2f115847c2 gstdtlsenc: fix stream_id and missing group_id
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5425>
2023-10-30 18:12:37 +00:00
Seungha Yang
107edc0c07 d3d11videosink: Add redraw-on-update property
If users update geometry related properties very frequently
for a stream to be animated, redrawing on every update
can make rendering choppy or can be a performance bottleneck.
To address the issue, adding a property to control the behavior
of redrawing scene when geometry related properties are updated.

Also, do not resize swapchain on such property update, since
re-allocating backbuffer and multi-sampled render target is
unnecessary in that case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5575>
2023-10-30 11:15:35 +00:00
Seungha Yang
443f205c38 d3d11converter: Don't update vertex buffer on transform matrix change
Transform matrix change requires only constant buffer update

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5575>
2023-10-30 11:15:35 +00:00
Seungha Yang
795e1bac34 d3d11videosink: Fix window switching in case of fullscreen mode
Other Windows applications allow window switching even when
an application window is in fullscreen mode. Also fixing
regression introduced in 15248d8b84
which makes restored window is always located at topmost
since we do not call SetWindowPos() anymore when restoring

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5574>
2023-10-29 22:45:17 +09:00
Seungha Yang
f32bb06e32 d3d11converter: Fallback to linear sampler if filter is not supported
Use linear sampler if requested filter is not supported

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572>
2023-10-29 01:07:45 +09:00
Seungha Yang
e7069984df d3d11videosink: Add sampling-method property
Identical to "method" property in d3d11convert element

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572>
2023-10-28 23:12:30 +09:00
Seungha Yang
b16665dc75 d3d11convert: Add support for sampling with anisotropic filter
Anisotropic filtering might produce better quality than linear filtering

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572>
2023-10-28 22:56:28 +09:00
Seungha Yang
af31b46992 d3d11convert: Add support for transform
Adding 3D rotation and scale transform support to d3d11convert element

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572>
2023-10-28 22:12:17 +09:00
Seungha Yang
1813b4e3d9 d3d11: Move transform matrix related method to utils
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572>
2023-10-28 22:12:17 +09:00
Seungha Yang
3a2a31d18b d3d11overlaycompositor: Set rasterizer state
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572>
2023-10-28 22:12:17 +09:00
Seungha Yang
4dfdb6ec68 d3d11screencapturesrc: Set rasterizer state
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572>
2023-10-28 22:12:17 +09:00
Seungha Yang
5389cc2cc3 d3d11compositor: Set rasterizer state
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572>
2023-10-28 22:12:17 +09:00
Seungha Yang
1a82c9b9ab d3d11testsrc: Set rasterizer state
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572>
2023-10-28 22:12:17 +09:00
Seungha Yang
5f44390b3e d3d11converter: Reuse rasterizer state object
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572>
2023-10-28 22:12:17 +09:00
Seungha Yang
e13612162b d3d11screencapturesrc: Use DirectXMath struct and C++ mutex
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5572>
2023-10-28 22:11:53 +09:00
Seungha Yang
63bb0b8de7 d3d11videosink: Add support for transform and MSAA
Adding properties for 3D rotation with arbitrary angle
and scaling. And adding Multi Sampling Anti-Aliasing rendering
support to smooth borders if arbitrary angle is applied

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5532>
2023-10-28 09:58:16 +00:00
Seungha Yang
524aa2badc subprojects: Add DirectXMath wrap
Will be used by d3d11 plugin

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5532>
2023-10-28 09:58:16 +00:00
Seungha Yang
0b45548f18 d3d11videosink: Fix typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5532>
2023-10-28 09:58:16 +00:00
Seungha Yang
b7c49f8e9f d3d11converter: Add support for MSAA render target
Create multi-sample render target view if sample count > 1
and MSAA enabled rasterizer for multi-sample render target

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5532>
2023-10-28 09:58:16 +00:00
Seungha Yang
eac65d248a d3d11converter: Add support for custom transform matrix
Adding gst_d3d11_converter_set_transform_matrix() method so that
user specified transform matrix can be applied when "video-direction=custom"

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5532>
2023-10-28 09:58:16 +00:00
Seungha Yang
769c6a62a4 d3d11converter: Use transform matrix for rotation/flip
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5532>
2023-10-28 09:58:16 +00:00
Seungha Yang
745a73eece wasapi2: Don't use global volume control object
ISimpleAudioVolume controls volume of corresponding audio session
and there would be only single input/output audio session
in case of share-mode, which means that it controls audio volume of the
process. Instead, use IAudioStreamVolume interface which controls
volume of the stream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5549>
2023-10-27 18:11:51 +00:00
Seungha Yang
bdc0f177f0 d3d11screencapturesrc: Fix mouse cursor blending
Ignore alpha component of source (mouse cursor texture)
when blending alpha channel, otherwise the background area of source
(which has zeros) will be written to render target. Then it will result
in black rectangle if output texture is converted to premultiplied alpha
texture

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5566>
2023-10-27 16:33:04 +00:00
Colin Kinloch
6f62b24788 debug-viewer: Use GtkFileChooserNative to open logs
This provides flatpak document portal support

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5390>
2023-10-27 15:34:31 +00:00
Colin Kinloch
babc18c36e debug-viewer: Fix crash from unpacking NoneType objects
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5389>
2023-10-27 14:26:47 +00:00
Sebastian Dröge
e6ff644bac aja: Move clang-format configuration from the top-level to the plugin subdirectory
This shouldn't have been left at the top-level but was forgotten to be
moved when merging the repository histories.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5558>
2023-10-27 11:44:36 +00:00
Tim-Philipp Müller
67d7df247b fpsdisplaysink: fix copy'n'paste-o in license header
It's LGPL licensed, remove confusing GPL reference.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5557>
2023-10-27 10:54:44 +00:00
Lieven Paulissen
9cc7e8c035 audioconvert: Fix fallback to identity mixing matrix when setting an empty mix-matrix
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5530>
2023-10-27 10:07:40 +00:00
Matthew Waters
d20d94cc48 vkformat: also use the correct srgb vs unorm when using older
gst_video_info_from_video_info()

Fixes sRGB colorspace chosen by GstVulkanSwapper and therefore used for
display.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5316>
2023-10-27 09:13:18 +00:00
Tim-Philipp Müller
3438b7a880 kate: remove plugin
Bitrotten and not really used in the wild.

The actual render library (libtiger) is not just unmaintained
but the upstream location has disappeared, and it's also not
even packaged by e.g. debian/ubuntu.

Closes #3071

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5408>
2023-10-27 07:34:39 +00:00
Tim-Philipp Müller
f6c40bb15c pngenc: mark output frames as I-frames
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5546>
2023-10-27 05:47:37 +00:00
Tim-Philipp Müller
d69885e0f7 pngenc: output one frame only in snapshot mode
In snapshot mode pngenc should output exactly one frame
and then return FLOW_EOS to upstream. If upstream sends
more input frames before shutting down, it should keep
returning FLOW_EOS but not output any more encoded frames.

After a flushing seek it should output frames again though.

Fixes #3069.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5546>
2023-10-27 05:47:37 +00:00
Philippe Normand
7fd7917c78 wpesrcbin: Fix audio metadata
The meta expects the number of samples in the buffer, not the total size.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5531>
2023-10-27 04:55:20 +00:00
Jordan Petridis
7d64943b9d docs: Remove obselete appendix about parsing cli argumnets
It's a bad idea trying to mix the Options from GStramer and
GTK, in addition with cli argument being a bit wonky thing for
GUI applications in general. In the rare, now, occasion
that an application wants to parse arguments, its preferable
to parse them manually and use library apis afterwards
rather than trying to combine the option groups and hope it
works.

In addition, applications should be opening files using
`g_application_open` instead of parsing random arguments.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4788>
2023-10-27 04:46:17 +00:00
Tim-Philipp Müller
62ed87dec4 gstreamer: misc: relicense network-clock scheme files to LGPL v2.1+
Permission to relicense granted by author by e-mail:

Message-Id: <155C6D51-7F74-4C40-814A-2ADDED7707FD@pobox.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5559>
2023-10-27 02:48:58 +00:00
Nicolas Dufresne
6b0124744e valgrind: Add getaddrinfo leak suppression
With Fedora 34 in our CI, we start seeing a sometime leak in getaddrinfo. At
first sight it looks like some TLS context being leaked. Could be a thread
teardown leak, just suppress it for now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5562>
2023-10-26 22:57:39 +00:00
Víctor Manuel Jáquez Leal
ce91004c3b build: opencv: disable opencv deps if it's not installed
When hotdoc documentation is enabled and opencv plugin is set as
auto-detected, but the library isn't installed, meson configuration fails
with this message:

  ../subprojects/gst-plugins-bad/docs/meson.build:139:21: ERROR: Unknown variable "gstopencv_dep".

This patch fixes this case defined gstopencv_dep as disabler() when
dependencies aren't found.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5560>
2023-10-26 20:43:14 +00:00
Mengkejiergeli Ba
38e8896887 vaallocator: Do not try derive image for d3d backend
Current codes try derive image in _update_image_info first, if
derive returns no error, the va_allocator->info is the one from derived
image, but in va_map_unlocked, we disable derive manner for d3d backend
because it doesn't seem to work, this will cause issue for d3d path,
i.e. possibly using derived info in va_get_image to do mapping...
This patch disables derive image for d3d backend in _update_image_info,
to ensure we only use info from va_create_image for d3d path.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5495>
2023-10-26 16:08:10 +00:00
Philippe Normand
03717697d9 debugutils: Ensure we always expose a bin_to_dot_data implementation
Fixes a linking issue when building with `-Dgst_debug=false`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5550>
2023-10-26 08:24:40 +00:00
Víctor Manuel Jáquez Leal
250aa8daea vulkandownload: use GstVulkanOperation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079>
2023-10-26 07:26:23 +00:00
Víctor Manuel Jáquez Leal
11c8c002a5 vulkanupload: use GstVulkanOperation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079>
2023-10-26 07:26:23 +00:00
Víctor Manuel Jáquez Leal
a2f875251f vkimagebufferpool: use GstVulkanOperation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079>
2023-10-26 07:26:23 +00:00
Víctor Manuel Jáquez Leal
265f1274dc vkoperation: synchronization helper object
An operation is an arbitrary amount of work to be executed on the host, a
device, or an external entity such as a presentation engine.

The purpose of this object is to help on the operation's synchronization
through declaring explicit execution dependencies, and memory dependencies
between two sets of operations defined by the command’s two synchronization
scopes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079>
2023-10-26 07:26:22 +00:00
Víctor Manuel Jáquez Leal
c83c508c5e vulkan: add a timeline semaphore per image
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079>
2023-10-26 07:26:22 +00:00
Víctor Manuel Jáquez Leal
964aec54b4 vkbarrier: Use guint64 for VkFlags and VkFlags2
While VkPipelineStageFlags is an enum (arguably backed as uint32 in 32bit
platforms), VkPipelineStageFlags2 is a redefinition of guint64; likewise for
VkAccessFlags and VkAccessFlags2.

This patch types both members in GstVulkanBarrierMemoryInfo as guint64 for
compatibility, so it could be used with or without synchronization2 vulkan
extension.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079>
2023-10-26 07:26:22 +00:00
Víctor Manuel Jáquez Leal
8809ce5648 vkmemory: unref queue in barriers
Queue might be assigned for queue transfers, so we need to unref it if the
memory has been assigned to a specific queue.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079>
2023-10-26 07:26:22 +00:00
Víctor Manuel Jáquez Leal
5acd6c23b8 vkdevice: use macro VK_KHR_synchronization2 as guard
Instead of (defined(VK_VERSION_1_3) || (defined(VK_VERSION_1_2) && VK_HEADER_VERSION >= 170))

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5079>
2023-10-26 07:26:22 +00:00
Sebastian Dröge
1b117e666b aja: Add basic documentation
Also remove the `gst-inspect-1.0` output from the README.md. This is
listed in the actual documentation and more up to date there.
2023-10-26 09:36:10 +03:00
Sebastian Dröge
59f4146bdc aja: Integrate AJA plugin into the build system
Co-Authored-By: Nirbheek Chauhan <nirbheek@centricular.com>
2023-10-26 09:36:09 +03:00
Sebastian Dröge
d2d947380e Merge AJA audio/video source/sink plugin
Original location is https://github.com/centricular/gst-aja
2023-10-26 09:35:52 +03:00
Sebastian Dröge
f1a1dadbf3 Prepare for merging into GStreamer 2023-10-26 09:27:46 +03:00