Commit graph

112906 commits

Author SHA1 Message Date
Seungha Yang
8132958b3b d3d11desktopdupsrc: Add support for desktop size/rotation mode change
Re-negotiates with updated size on desktop size
(i.e., resolution, scaling factor), and rotation mode change

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2268>
2021-05-20 17:05:24 +00:00
Thibault Saunier
34a88d95c6 validate:flow: Sort fields in serialized structures
Otherwise change in element implementations could lead to meaningless
breakages
2021-05-20 11:19:32 -04:00
Daniel Almeida
195981767c gl: add support for A420 conversion
A420 is a four planar format similar to I420 but with an extra buffer
for alpha values.

A common use of the gl stack is for GPU format conversions using
shaders, in which case one can use glupload, glcolorconvert and
gldownload elements to upload their buffer to the GPU context, perform
the conversion on the GPU itself and then retrieve the data to CPU
context.

A420 was not supported. This patch adds said support mainly by adding
the corresponding shader to perform the conversion and updating the
supported caps.

Both A420->RGBA and RGBA->A420 conversions are supported.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1153>
2021-05-20 15:06:26 +00:00
Jan Alexander Steffens (heftig)
0312887452 mpegtsmux: Fixup program array indices after stream removal
Each stream stores the `program_array_index` of its position in its
program's `streams` array. When we remove a stream from this array, we
need to correct the `program_array_index` of all streams that were
backshifted by the removal.

Also extract the removal into a new function and add some more safety
checks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2266>
2021-05-20 13:35:06 +00:00
Enrique Ocaña González
34ef2b2759 glcolorbalance: Error out on unsupported texture target types
The issue can be reproduced on a computer with a Radeon graphics card
when trying to force GStreamer Editing Services to use GL for video
mixing in GESSmartMixer, instead of the GstCompositor that smart mixer
would normally use. This change causes the resulting video stream to
have "video/x-raw(memory:GLMemory) ... texture-target: 2D" caps (instead
of "video/x-raw ..." caps). At the PlaySink stage of the pipeline, a
GstGLImageSinkBin is plugged, with a GstGLColorBalance on it. For some
reason that is still to be debugged (and out of the scope of this
patch), gst_gl_filter_set_caps() is never called on that color balance
element, leaving filter->in_texture_target set to its default
GST_GL_TEXTURE_TARGET_NONE value. The incomplete _create_shader() logic
does the rest and silently generates a shader code that doesn't build.

This is the command I use to reproduce the issue (I'm not sure if I
would be able to isolate the issue in a simple pipeline, though):

 GST_PLUGIN_FEATURE_RANK=vaapih265enc:NONE,vaapih264enc:NONE,vaapisink:NONE,vaapidecodebin:NONE,vaapipostproc:NONE,vaapih265dec:NONE,vaapivc1dec:NONE,vaapih264dec:NONE,vaapimpeg2dec:NONE,vaapijpegdec:NONE,glvideomixer:260
 ges-launch-1.0 +clip /tmp/video.mp4

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1159>
2021-05-20 13:22:24 +00:00
Stéphane Cerveau
918d882021 matroskademux: fix decoder glitches with H264 content
To avoid decoder starvation causing glitches on screen,
the demuxer shall clip only when the buffer is a key frame
and the lace time is greater than the stop time.

Fixes gst-editing-services#128

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/973>
2021-05-20 15:07:07 +02:00
Seungha Yang
360a195158 d3d11memory: Protect map and unmap with device lock
We should lock memory object with gst_d3d11_device_lock() first
then GST_D3D11_MEMORY_LOCK() need to be used.

One observed deadlock case is that:
- Thread A takes d3d11 device lock
- At the same time, Thread B tries CPU map to d3d11memory which requires
  d3d11 device lock as well, but it's already taken by Thread A.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2267>
2021-05-20 11:19:44 +00:00
Seungha Yang
7a0bc2a91d d3d11memory: Add trace log for debugging locking thread
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2267>
2021-05-20 11:19:44 +00:00
Víctor Manuel Jáquez Leal
b3d9c5bf80 plugins: Demote rank of vaapipostproc and vaapioverlay.
Since almost all video filters have rank NONE, these both elements
should be NONE too.

This is useful for autovideoconvert and other bins, and users might
force to use these by setting the environment variable
GST_PLUGIN_FEATURE_RANK.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/429>
2021-05-20 10:35:32 +02:00
Seungha Yang
1f743c8d84 audiolatency: Drop incoming downstream stick events
stream-start, caps, and segment events will be pushed by internal
audiotestsrc element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2265>
2021-05-20 15:50:55 +09:00
Seungha Yang
3bd600741c audiolatency: Use live mode audiotestsrc
Expected use case of audiolatency element is that mimic audio capture
device which is most likely live source. So audiolatency element
should use live mode as well.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2265>
2021-05-20 15:41:50 +09:00
Thibault Saunier
818db8f0b3 wpe: Bump WPE dependency to 2.28
The new audio feature depends on WPE 2.28 so we should just bump our
requirement to that.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2264>
2021-05-19 18:50:29 -04:00
Nicolas Dufresne
f39985f88a compositor: Fix NV12 blend operation
The full src_height/width was being used instead of the remaining
width/height for the current band. As a side effect, that value would
get erroneously reset and would cause overrun.

Fixes #887

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1160>
2021-05-19 16:39:22 -04:00
Seungha Yang
4872b41448 d3d11compositor: Fix missing D3D11 prefix
Fix typo, no functional change

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2262>
2021-05-20 00:51:08 +09:00
Nicolas Dufresne
3897b24f69 video: Pass component index not plane index
While so far it worked, we are about to introduce a format that break this
assuming. We have a format which consist of NV12 with alpha, and this format
does not have a direct mapping of the component against their plane indexes.

Fix this by using gst_video_format_info_component() introduced in 1.18 for
this purpose.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1151>
2021-05-19 15:17:56 +00:00
Thibault Saunier
c98fe5b7f9 wpe: Update doc cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:16 +00:00
Thibault Saunier
9415106b02 wpe: Properly respect LIBGL_ALWAYS_SOFTWARE
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Thibault Saunier
4dbfae0105 wpe: Relay messages from WPE internal pipelines
It is based on a tracer as it allows us to very easily get
every message that are posted on any bus inside the process.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Thibault Saunier
a92d4373ad wpe: Base wpe audio implementation on a web extension
This makes the implementation simpler and enable us to map
webviews and audio stream much more easily

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Philippe Normand
81ced7932f wpe: Enable WebAudio
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Philippe Normand
f4bc5c6c65 wpe: Implement audio support
The wpesrc bin now exposes "sometimes" audio src pads, one for every PCM audio
stream created by WPEWebKit.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Thibault Saunier
cb4f6c877e wpe: Move wpesrc to wpevideosrc and add a wrapper bin wpesrc
Currently the bin contains a single element but we are going
to implement audio support and expose extra pads for audio

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
2021-05-19 13:41:15 +00:00
Matthew Waters
42512c92de gl/context: move egl creation lower in priority on _new()
e.g. if running a dual wgl/egl built library, then egl will always
succeed in creating the GstGLContext because almost anything could
support egl, as long as eglGetDisplay() works.

wgl, however has a check for the correct display type so should move
earlier in the tried list.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1154>
2021-05-19 10:15:56 +00:00
Matthew Waters
f0eca69a14 gl/display: provide a gst_gl_display_new_with_type()
Allows more fine-grained control over the exact display type that is
created.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1154>
2021-05-19 10:15:56 +00:00
Seungha Yang
87327110c2 videoaggregator: Don't try to return void
warning C4098: 'gst_video_aggregator_parallel_convert_pad_finalize':
'void' function returning a value

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1155>
2021-05-19 16:23:43 +09:00
Doug Nazar
be1c154f33 sctp: Ensure pad is still a child of element before removal
During pipeline shutdown there are several competing paths to remove
pads. Avoids tests failing due to:

Unexpected critical/warning: Padname '':sink_1 does not belong to element sctpenc1 when removing

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2256>
2021-05-19 05:49:48 +00:00
Doug Nazar
5663db236f sctp: Fix race of pad removal during reset/stop
Both reset & stop remove existing pads. Can result in warning from
gst_element_remove_pad().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2256>
2021-05-19 05:49:48 +00:00
Doug Nazar
4fcfd5b7f9 webrtcbin: Fix race bringing up sctp data channel
Notifying before pads are linked can cause the stream to fail to start.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2256>
2021-05-19 05:49:48 +00:00
Matthew Waters
a836bd4766 webrtcbin: advertise harder the rtcp-mux-only requirement
And ignore rtcp ICE candidates

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2239>
2021-05-19 04:42:56 +00:00
Sid Sethupathi
abe7e724ed webrtcbin: update default jb latency docs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2242>
2021-05-19 03:53:55 +00:00
Doug Nazar
20ca07d174 dtls: Let sender know when we are flushing
Prevents endless loop during shutdown where we end up sending 0 bytes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2229>
2021-05-19 03:21:58 +00:00
Doug Nazar
8b8428aec2 dtls: Add ability to set custom GstFlowReturn on callback error
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2229>
2021-05-19 03:21:58 +00:00
Thibault Saunier
a5a590ba17 structure-interface: Convert fields type as much as possible
Since 60922c0288 we force string in the
command line parser which broke setting layers on clips for example

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/253>
2021-05-18 22:16:47 -04:00
Thibault Saunier
c761711a7a validate: Add support to check properties of object properties
And recursively

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/253>
2021-05-18 22:07:36 -04:00
Olivier Crête
3bdf1e691e webrtc: Remove reundundant context object in transportsendbin
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2260>
2021-05-18 20:26:38 -04:00
Olivier Crête
51821644ba webrtc: Wait until ICE is connected to start DTLS handshake process
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2260>
2021-05-18 20:18:28 -04:00
Olivier Crête
b6965e9906 webrtcbin: Remove pad probe on nicesink
This pad probe is no longer necessary, libnice now drops
all buffers before the stream is connected. This pad problem
also caused deadlocks in some situations.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2260>
2021-05-18 19:08:48 -04:00
Olivier Crête
28bd479ea2 kate: Initialize debug categories
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2258>
2021-05-18 13:22:49 +00:00
Stéphane Cerveau
23f4266bbd gstreamer-full: fix empty -Dgst-full-plugins=
When this option was given empty, when for example we don't
want any plugin in gstreamer full, the
build process was failing because an empty
plugin was created in gstinitstaticplugins.c.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/244>
2021-05-18 14:41:41 +02:00
Víctor Manuel Jáquez Leal
d09aae68a5 libs: va: Documentation and annotations.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2196>
2021-05-18 12:15:36 +02:00
He Junyan
c335f00d62 examples: va: Update the VA examples because of the new va lib.
Because we introduce the new va lib, the va examples need to include
new header files and add more library linkage.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2196>
2021-05-18 12:15:36 +02:00
Víctor Manuel Jáquez Leal
031b77ce97 libs: va: display_wrapper: Use gpointer for VADisplay.
In order to be coherent along all the implementation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2196>
2021-05-18 12:15:36 +02:00
He Junyan
e0915ce982 libs: va: Move the VA common logic as a lib.
The VA acceleration now has more usages in linux-like platforms,
such as the MSDK. The different plugins based on the VA acceleration
need to share some common logic and types. We now move the display
related functions and types into a common va lib.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2196>
2021-05-18 12:15:30 +02:00
mkba
19b8d79e7d msdk: add profile main-still-picture for hevc encoder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2253>
2021-05-18 01:29:55 +00:00
Tim-Philipp Müller
48c0a6dd1e Revert video HDR10+ support
This reverts commit f76b731cbf.
This reverts commit 631489de23.
This reverts commit a1ed7a8f49.
This reverts commit 7d6f72e956.

Back this out again for now for the release. Needs more discussion.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/865

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1148>
2021-05-17 15:54:15 +00:00
Tim-Philipp Müller
57578529a0 meson: fix up wrong escaping of variables in gl and plugins-base .pc file
Workaround for pkg.generate() escaping spaces in pc variables
that shouldn't be escaped. Perhaps going back to configure_file()
would be a better option though. Really needs a fix in Meson.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/884

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1150>
2021-05-17 14:49:38 +00:00
Tim-Philipp Müller
5bc1a632e4 meson: add custom pkg-config variables also to uninstalled .pc files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1150>
2021-05-17 14:49:38 +00:00
Tim-Philipp Müller
61efb1306b contribute: update merge request section a little
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-docs/-/merge_requests/154>
2021-05-17 11:57:59 +01:00
Guillaume Desmottes
0b39eca7d0 basetextoverlay: add debug category
All logs were using 'default' category which is not handy for debugging.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1149>
2021-05-17 10:20:05 +00:00
Matthew Waters
f0205645b3 compositor: perform conversions in parallel
Improves throughput of the total convert and blend process and allows
for higher performance across slightly more threads.

Also make use of video aggregator's task pool for blending as well in
order to reduce the number of threads.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1129>
2021-05-17 19:20:57 +10:00