platform/upstream/gstreamer.git
2 years agova: baseenc: include the "vacompat.h" for old version glib.
He Junyan [Sun, 22 May 2022 07:03:54 +0000 (15:03 +0800)]
va: baseenc: include the "vacompat.h" for old version glib.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2463>

2 years agova: vpp: enable compositor
U. Artie Eoff [Tue, 26 Apr 2022 16:07:26 +0000 (12:07 -0400)]
va: vpp: enable compositor

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2332>

2 years agova: vpp: add compositor
U. Artie Eoff [Tue, 26 Apr 2022 16:06:17 +0000 (12:06 -0400)]
va: vpp: add compositor

New implementation of a VA-API compositor with blend feature.

Various chunks of code was taken from vavpp.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2332>

2 years agova: Apply the va base encoder to the vah264enc.
He Junyan [Fri, 25 Mar 2022 13:51:47 +0000 (21:51 +0800)]
va: Apply the va base encoder to the vah264enc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2330>

2 years agova: Add the GstVaBaseEnc common object for all va encoders.
He Junyan [Fri, 25 Mar 2022 13:48:05 +0000 (21:48 +0800)]
va: Add the GstVaBaseEnc common object for all va encoders.

Just like the GstVaBaseDec and GstVaBaseTransform, this base encoder
will handle all common logic for all va encoders.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2330>

2 years agod3d11device: Enhance format enumeration and debugging
Seungha Yang [Sat, 14 May 2022 15:56:59 +0000 (00:56 +0900)]
d3d11device: Enhance format enumeration and debugging

* Enhance debug log to print human readable D3D11_FORMAT_SUPPORT flags
  value, instead of packed numeric flagset value.
* Only device supported format will be added to format table.
  Depending on device feature level (i.e., D3D9 feature devices),
  16bits formats will not be supported. Although there might be formats
  we deinfed but not supported, it will not be a major issue in practice
  since our D3D11 implementation does not support legacy devices already
  (known limitation) and also old d3dvideosink will be promoted in that case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2441>

2 years agoci: run gst-inspect after the build
Jordan Petridis [Sat, 7 May 2022 01:45:09 +0000 (04:45 +0300)]
ci: run gst-inspect after the build

useful to quick inspect the elements built, later on we can
start verifying the list of elements against a known good list.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2458>

2 years agoci: run ninja install post build
Jordan Petridis [Thu, 19 May 2022 13:18:52 +0000 (16:18 +0300)]
ci: run ninja install post build

Make sure no weird regressions creep in.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2458>

2 years agopbutils: Add GST_PBUTILS_CAPS_DESCRIPTION_FLAG_METADATA and ONVIF XML Timed MetaData
Sebastian Dröge [Thu, 19 May 2022 09:17:59 +0000 (12:17 +0300)]
pbutils: Add GST_PBUTILS_CAPS_DESCRIPTION_FLAG_METADATA and ONVIF XML Timed MetaData

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2453>

2 years agoqtdemux: Add support for ONVIF XML Timed MetaData
Sebastian Dröge [Thu, 19 May 2022 08:47:57 +0000 (11:47 +0300)]
qtdemux: Add support for ONVIF XML Timed MetaData

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2453>

2 years agoqtdemux: Add parsing/dumping of nmhd / metx boxes
Sebastian Dröge [Thu, 19 May 2022 08:30:20 +0000 (11:30 +0300)]
qtdemux: Add parsing/dumping of nmhd / metx boxes

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2453>

2 years agoqtdemux: Parse styp box for informational purposes
Sebastian Dröge [Thu, 19 May 2022 08:06:31 +0000 (11:06 +0300)]
qtdemux: Parse styp box for informational purposes

And include some more details in the debug logs for the ftyp box too.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2453>

2 years agov4l2: set default resolution if caps has no such information
Hou Qi [Tue, 10 May 2022 08:20:46 +0000 (16:20 +0800)]
v4l2: set default resolution if caps has no such information

Output may attemp to set the width and height to zero values if
caps has no such information, which will cause capture get invalid
dimensions. Then decoder reports negotiation failure.

So need to set default resolution if caps has no such information.
Real values can be set again until source change event is signaled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2400>

2 years agojpegparse: Rewrite element.
Víctor Manuel Jáquez Leal [Wed, 22 Dec 2021 18:23:37 +0000 (19:23 +0100)]
jpegparse: Rewrite element.

Now it uses the JPEG parser in libgstcodecparsers, while the whole
code is simplified by relying more in baseparser class for tag
handling.

The element now signals chroma-format and default framerate is 0/1,
which is for still-images.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1473>

2 years agotests: jpegparse: Mark data as static.
Víctor Manuel Jáquez Leal [Sat, 25 Dec 2021 12:00:17 +0000 (13:00 +0100)]
tests: jpegparse: Mark data as static.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1473>

2 years agojpegformat: Use codecparsers' for JPEG markers.
Víctor Manuel Jáquez Leal [Wed, 22 Dec 2021 17:13:17 +0000 (18:13 +0100)]
jpegformat: Use codecparsers' for JPEG markers.

Instead of repeating JPEG markers definition, this patch uses those
defined in gstcodecparsers library.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1473>

2 years agojpegparse: Headers cleanup
Víctor Manuel Jáquez Leal [Wed, 22 Dec 2021 16:35:23 +0000 (17:35 +0100)]
jpegparse: Headers cleanup

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1473>

2 years agortsp-media: Correct logic on GstRTSPStreamBlocking message reception
Patricia Muscalu [Mon, 16 May 2022 16:06:16 +0000 (18:06 +0200)]
rtsp-media: Correct logic on GstRTSPStreamBlocking message reception

We must take into account the receiving streams as well when calculating
the expected number of the received GstRTSPStreamBlocking messages.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2429>

2 years agodatachannel: Notify low buffered amount according to spec
Philippe Normand [Wed, 18 May 2022 15:54:53 +0000 (16:54 +0100)]
datachannel: Notify low buffered amount according to spec

Quoting
https://www.w3.org/TR/webrtc/#dom-rtcdatachannel-bufferedamountlowthreshold

The bufferedAmountLowThreshold attribute sets the threshold at which the
bufferedAmount is considered to be low. When the bufferedAmount decreases from
above this threshold to **equal** or below it, the bufferedamountlow event fires.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2448>

2 years agogstreamer/gst/gstconfig.h.in: Add support for LoongArch
WANG Xuerui [Wed, 18 May 2022 02:04:08 +0000 (10:04 +0800)]
gstreamer/gst/gstconfig.h.in: Add support for LoongArch

While current and future LoongArch machines that are supposed to run
GStreamer all support unaligned accesses, there might be future
lower-end cores (e.g. the embedded product line) without such support,
and we may not want to penalize these use cases.

So, mark LoongArch as not supporting unaligned accesses for now, and
hope the compilers do a good job optimizing them. We can always flip
switch later.

Suggested-by: CHEN Tao <redeast_cn@outlook.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2443>

2 years agortcpbuffer: Allow padding on first reduced size packets
Thibault Saunier [Sun, 15 May 2022 16:53:12 +0000 (16:53 +0000)]
rtcpbuffer: Allow padding on first reduced size packets

It is valid to have the padding set to 1 on the first packet and it
happens very often from TWCC packets coming from libwebrtc. This means
that we were totally ignoring many TWCC packets.

Fix test that checked that a first packet with padding was not valid and
instead test a single twcc packet with padding to check precisely what
this patch was about.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2422>

2 years agotsmux: Make sure to set srcpad caps under all conditions before outputting the first...
Sebastian Dröge [Tue, 17 May 2022 11:15:40 +0000 (14:15 +0300)]
tsmux: Make sure to set srcpad caps under all conditions before outputting the first buffer

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1218

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2438>

2 years agoci: use the correct vs toolcahin version for cerbero
Jordan Petridis [Mon, 16 May 2022 10:57:57 +0000 (13:57 +0300)]
ci: use the correct vs toolcahin version for cerbero

This seems to be a leftover from when we upgraded from vs15
to vs16.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2395>

2 years agoci: use LONGPATH for the windows container
Jordan Petridis [Fri, 13 May 2022 08:23:59 +0000 (11:23 +0300)]
ci: use LONGPATH for the windows container

Sometimes the CI might create paths that are bigger than the 260
character limit.

ex:
```
error: unable to create file subprojects/gst-integration-testsuites/testsuites/validate/h264/parse.trickmode_predicted.seek_trickmode_predicted/flow-expectations/log-parse-src-expected: Filename too long
```

https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2395>

2 years agoci: remove windows-rust jobs
Jordan Petridis [Fri, 13 May 2022 08:23:45 +0000 (11:23 +0300)]
ci: remove windows-rust jobs

These are moved now into gstreamer-rs repository.

https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/701

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2395>

2 years agoci: re-enable artifacts upload for the windows jobs
Jordan Petridis [Mon, 9 May 2022 05:29:16 +0000 (08:29 +0300)]
ci: re-enable artifacts upload for the windows jobs

Hopefully the timeout issues won't affect the new runner

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2395>

2 years agoci: Install Media Foundations on the windows container
Jordan Petridis [Tue, 22 Mar 2022 10:17:33 +0000 (12:17 +0200)]
ci: Install Media Foundations on the windows container

In order to do this, we need to switch to the Server container
image, instead of the ServerCore we were using till now.

This image also only has Server2022 base variants.

This is a continuation of:

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1783

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2395>

2 years agoges/videourisource: handle non-1/1 PAR source videos
Matthew Waters [Fri, 13 May 2022 00:23:54 +0000 (10:23 +1000)]
ges/videourisource: handle non-1/1 PAR source videos

The automatic scaling done by framepositioner does not account for the
par of the video source.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2423>

2 years agod3d11device: Don't print ERROR log on open failure
Seungha Yang [Mon, 16 May 2022 19:27:00 +0000 (04:27 +0900)]
d3d11device: Don't print ERROR log on open failure

Device open can be failed in various reasons, but it's unlikely
our problem

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2433>

2 years agosdpdemux: Release request pads from rtpbin when freeing a stream
Sebastian Dröge [Tue, 17 May 2022 11:02:28 +0000 (14:02 +0300)]
sdpdemux: Release request pads from rtpbin when freeing a stream

Otherwise the pads of the rtpbin stay around forever and are leaked.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2437>

2 years agosplitmuxsrc: Re-queue sticky events after probing.
Jan Schmidt [Mon, 16 May 2022 19:21:19 +0000 (05:21 +1000)]
splitmuxsrc: Re-queue sticky events after probing.

When processing the first event after probing the
file and being activated, requeue sticky events
as there's no requirement that demuxers send tag
and other events again after a seek - that's
why they're sticky.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2432>

2 years agodeinterlace: Clean up error handling in chain and _push_history
Jan Alexander Steffens (heftig) [Mon, 16 May 2022 12:14:46 +0000 (14:14 +0200)]
deinterlace: Clean up error handling in chain and _push_history

- Consistently unref the chained buffer at the end of the chain
  function, if we're not handing it off to `gst_pad_push`. This avoids a
  few buffer leaks in the error paths in `_chain` and `_push_history`.
- When mapping the video frame fails, return a flow error instead of
  crashing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2428>

2 years agosplitmuxsink: When flushing, exit handle_mq_input quickly
Jan Alexander Steffens (heftig) [Mon, 16 May 2022 12:40:41 +0000 (14:40 +0200)]
splitmuxsink: When flushing, exit handle_mq_input quickly

If we just break the loop, we might run into the `gop != NULL` assert
that follows it. Rather, exit immediately with flushing flow.

Also use this flushing mechanism when we release a pad. This avoids
having an extra flag.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1030>

2 years agosplitmuxsink: Avoid deadlock on release, harder
Jan Alexander Steffens (heftig) [Tue, 26 Jan 2021 15:33:25 +0000 (16:33 +0100)]
splitmuxsink: Avoid deadlock on release, harder

Unlock after broadcasting and wait for the pad to be free before
relocking the muxer, giving the input probe a chance to react to our
broadcast.

Improves the fix from
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/838.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1030>

2 years agoappsink: Fix race condition on caps handling
Alicia Boya García [Fri, 13 May 2022 11:31:55 +0000 (13:31 +0200)]
appsink: Fix race condition on caps handling

Background:

Whenever a caps event is received by appsink, the caps are stored in the
same internal queue as buffers. Only when enough buffers have been
popped from the queue to reach the caps, `priv->sample` gets its caps
updated to match, so that they are correct for the following buffers.

Note that as far as upstream elements are concerned, the caps of appsink
are updated immediately when the CAPS event is sent. Samples pulled from
appsink retain the old caps until a later buffer -- one that was sent by
upstream elements after the new caps -- is pulled.

The race condition:

When a flush is received, appsink clears the entire internal queue. The
caps of `priv->sample` are not updated as part of this process, and
instead remain as those of the sample that was last pulled by the user.

This leaves open a race condition where:
1. Upstream sends a new caps event, and possibly some buffers for the
   new caps.
2. Upstream sends a flush (possibly from a different thread).
3. Upstream sends a new buffer for the new caps. Since as far as
   upstream is concerned, appsink caps are the new caps already, no new
   CAPS event is sent.
4. The appsink user pulls a sample, having not pulled before enough
   samples to reach the buffers sent in step 1.

Bug: the pulled sample has the old caps instead of the new caps.

Fixing the race condition:

To avoid this problem, when a buffer is received after a flush,
`priv->sample`'s caps should be updated with the current caps before the
buffer is added to the internal queue.

Interestingly, before this patch, appsink already had code for this, in
gst_app_sink_render_common():

    /* queue holding caps event might have been FLUSHed,
     * but caps state still present in pad caps */
    if (G_UNLIKELY (!priv->last_caps &&
            gst_pad_has_current_caps (GST_BASE_SINK_PAD (psink)))) {
      priv->last_caps = gst_pad_get_current_caps (GST_BASE_SINK_PAD (psink));
      gst_sample_set_caps (priv->sample, priv->last_caps);
      GST_DEBUG_OBJECT (appsink, "activating pad caps %" GST_PTR_FORMAT,
          priv->last_caps);
    }

This code assumes `priv->last_caps` is reset when a flush is received,
which makes sense, but unfortunately, there was no code in the flush
code path resetting it.

This patch adds such code, therefore fixing the race condition. A unit
test demonstrating the bug and testing its behavior with the fix has
also been added.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2413>

2 years agovideoaggregator: unref temporary caps
U. Artie Eoff [Mon, 16 May 2022 16:34:36 +0000 (12:34 -0400)]
videoaggregator: unref temporary caps

The "possible_caps" needs unref after finished using to
avoid memory leak.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2430>

2 years agoqsv: Disable non-MSVC build on Windows
Seungha Yang [Mon, 16 May 2022 18:32:10 +0000 (03:32 +0900)]
qsv: Disable non-MSVC build on Windows

... and remove pointless UWP consideration that will never work.

Cross-compiled binary has an issue which causes deadlock.
Although cerbero will not build this plugin for non-MSVC build,
people can still build this plugin and may complain its brokenness.

See also
https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/854

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2431>

2 years agowavparse: fix typo in debug message
Shingo Kitagawa [Mon, 16 May 2022 10:31:18 +0000 (19:31 +0900)]
wavparse: fix typo in debug message

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2425>

2 years agoci: set the code page of powershell to utf-8
Jordan Petridis [Wed, 11 May 2022 06:40:15 +0000 (09:40 +0300)]
ci: set the code page of powershell to utf-8

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2397>

2 years agoci: add gst-env.py to the changes rules
Jordan Petridis [Wed, 11 May 2022 06:15:46 +0000 (09:15 +0300)]
ci: add gst-env.py to the changes rules

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2397>

2 years agogst-env: spawn a shell to execute commands on windows
Jordan Petridis [Mon, 9 May 2022 09:46:19 +0000 (12:46 +0300)]
gst-env: spawn a shell to execute commands on windows

On windows, if you are not using built-in commands you need
to pass the full path of your executable into the subprocess.call/
Popen syscall. ex `c:/foo/bar/baz.exe`. This get's long and is
not ergonomic when you want to run trivial task like:

`gst-env.py ninja` or `gst-inspect0.0` or `gst-validate-launcher`

Instead, on windows, always launch a shell to be able to resolve
the executable from the PATH.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2397>

2 years agoci: remove unused files
Jordan Petridis [Wed, 11 May 2022 11:10:28 +0000 (14:10 +0300)]
ci: remove unused files

These are leftovers of the gst-ci repo, before the mono repo
merge and can be removed now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2403>

2 years agogst-examples: continue if webrtc deps are not satisfied
Stéphane Cerveau [Thu, 21 Apr 2022 10:17:27 +0000 (12:17 +0200)]
gst-examples: continue if webrtc deps are not satisfied

The WebRTC examples are disabled if one dependency is
not satisfied, especially libsoup.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2261>

2 years agogst-examples: change include for gtk in gtk-play
Stéphane Cerveau [Thu, 21 Apr 2022 09:43:55 +0000 (11:43 +0200)]
gst-examples: change include for gtk in gtk-play

The gdk.h is not necessary but the gtk.h yes for
the GTK_CHECK_VERSION macro.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2261>

2 years agotools: gst-play: Print position even if duration is unknown
Seungha Yang [Wed, 4 May 2022 17:54:37 +0000 (02:54 +0900)]
tools: gst-play: Print position even if duration is unknown

Gives better visual feedback regarding position information
although duration is unknown, live streams for example.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2365>

2 years agoavfvideosrc: fix wrong framerate selected for caps
Diogo Goncalves [Thu, 28 Apr 2022 15:02:26 +0000 (16:02 +0100)]
avfvideosrc: fix wrong framerate selected for caps

This fix solves an issue where a format that doesn't support the
requested framerate would be selected. It ensures that we use the first
format and framerate pair that supports the requested caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2331>

2 years agoges-video-transition: add a new "fade-in" transition type
George Kiagiadakis [Fri, 6 May 2022 09:17:14 +0000 (12:17 +0300)]
ges-video-transition: add a new "fade-in" transition type

This transition is meant to be very similar to crossfade, but
instead of fading out the background video at the same time as the
foreground fades in, the background video stays at 100% opacity
during the whole transition.

This essentially "restores" the old crossfade behaviour that was changed in:
https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/commit/eb48faf34234811faec1699692a2c096daaceefd
but using a new type enum, so that both behaviours are available,
letting applications choose.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2385>

2 years agortpbin: Avoid holding lock GST_RTP_BIN_LOCK when emitting pad-added
Thibault Saunier [Fri, 13 May 2022 01:42:21 +0000 (01:42 +0000)]
rtpbin: Avoid holding lock GST_RTP_BIN_LOCK  when emitting pad-added

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2411>

2 years agoqtdemux: Don't use tfdt for parsing subsequent trun boxes
Sebastian Dröge [Thu, 12 May 2022 14:11:38 +0000 (17:11 +0300)]
qtdemux: Don't use tfdt for parsing subsequent trun boxes

The timestamp in the tfdt refers to the first trun box and if there are
multiple trun boxes then the distance between the first timestamps will
grow.

At some point this distance reaches a threshold and triggers the
resetting of the first sample's timestamp of this trun box to be reset
to the tfdt.

This threshold is implemented for files where there is a jump in the
timeline between fragments and where this can be detected via a jump
between the end timestamp of the previous fragment and the tfdt of the
next. This behaviour is preserved.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2409>

2 years agod3d11decoder: Add hardcoded minimum resolution values to caps for NVIDIA
Seungha Yang [Wed, 11 May 2022 20:13:08 +0000 (05:13 +0900)]
d3d11decoder: Add hardcoded minimum resolution values to caps for NVIDIA

NVIDIA GPUs have undocumented limitation regarding minimum resolution
and it can be queried via a NVDEC API. However, since we don't want to
bring CUDA/NVDEC API into D3D11, use hardcoded values for now
until we find a nice way for capability check.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2406>

2 years agoelement: Add sanity check with a critical warning if a pad is requested for a pad...
Sebastian Dröge [Thu, 12 May 2022 17:15:44 +0000 (20:15 +0300)]
element: Add sanity check with a critical warning if a pad is requested for a pad template that is not installed on the element class

Various elements are assuming that the pointer matches a pad template
they know about, and also randomly created pad templates might be
missing some important information that is necessary to create a valid
pad.

For example, creating a new pad template for audiomixer's sinkpad
without providing the correct GType would cause audiomixer to create a
GstAggregatorPad. That will then later fail spectacularly because it
assumes that it got a GstAudioAggregatorPad.

Passing a pad template that does not belong to the element class in here
will easily lead to undefined behaviour.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2410>

2 years agovpxenc: enforce strictly increasing pts
Guillaume Desmottes [Wed, 11 May 2022 14:20:42 +0000 (16:20 +0200)]
vpxenc: enforce strictly increasing pts

From vpx_codec_encode() documentation:
  "The presentation time stamp (PTS) MUST be strictly increasing."

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2405>

2 years agovpxenc: conver input pts to running time
Guillaume Desmottes [Wed, 11 May 2022 13:37:44 +0000 (15:37 +0200)]
vpxenc: conver input pts to running time

The input pts needs to be strictly increasing, see vpx_codec_encode() doc, so convert it to
running time as we don't want to reset the encoder for each segment.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2405>

2 years agovpxenc: fix crash if encoder produces unmatching ts
Guillaume Desmottes [Wed, 11 May 2022 13:18:42 +0000 (15:18 +0200)]
vpxenc: fix crash if encoder produces unmatching ts

If for some reason the encoder produces frames with a pts higher than
the input one, we were dropping all the video encoder frames and ended
up crashing when trying to access the pts of a NULL pointer returned by
gst_video_encoder_get_oldest_frame().

I hit this scenario by feeding a decreasing timestamp to vp8enc which
seem to confuse the encoder.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2405>

2 years agomxfdemux: Handle files produced by legacy FFmpeg
Edward Hervey [Thu, 12 May 2022 05:23:29 +0000 (07:23 +0200)]
mxfdemux: Handle files produced by legacy FFmpeg

Until March 2022, the FFmpeg MXF muxer would write the various index table
segments with the same instance ID, which should only be used if it is a
duplicate/repeated table.

In order to cope with those, we first compare the other index table segment
properties (body/index SID, start position) before comparing the instance
ID. This will ensure that we don't consider them as duplicate, but can still
detect "real" duplicates (which would have the same other properties).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2407>

2 years agogl/context: disable timer queries for ARM Mali-G52
Matthew Waters [Mon, 9 May 2022 06:21:55 +0000 (16:21 +1000)]
gl/context: disable timer queries for ARM Mali-G52

Performing a timer query with a default framebuffer that is incomplete
(from using a surfaceless context) will produce GL errors.  Disable the
timer query on this platform to avoid the errors.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2396>

2 years agova: basedec: Always select first available format.
Víctor Manuel Jáquez Leal [Tue, 3 May 2022 14:23:09 +0000 (16:23 +0200)]
va: basedec: Always select first available format.

If the stream chroma doesn't match with any video format in the source
caps template (generated from va config surface formats) instead of
return unknown, return the first available format in the template,
assuming that the driver would be capable to do color conversions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2404>

2 years agotests: test fixed caps
Stéphane Cerveau [Mon, 25 Apr 2022 09:03:35 +0000 (11:03 +0200)]
tests: test fixed caps

Add a test entry to check wether a caps is fixed
or not.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2290>

2 years agocaps: warn with wrong mediatype in gst_caps_new_empty_simple
Stéphane Cerveau [Mon, 25 Apr 2022 08:59:21 +0000 (10:59 +0200)]
caps: warn with wrong mediatype in gst_caps_new_empty_simple

If passing ANY/EMPTY to gst_caps_new_empty_simple
as a mediatype, a warning will be displayed to alert
on this misuse of the API.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2290>

2 years agoh265decoder: Improve robustness against malformed NAL packets
Seungha Yang [Fri, 6 May 2022 18:15:44 +0000 (03:15 +0900)]
h265decoder: Improve robustness against malformed NAL packets

Use newly added gst_h265_parser_identify_and_split_nalu_hevc()
method to handle broken streams where packetized NAL unit
contain start code prefix in it.

It's obviously wrong stream but we know how to work around it
and even need to support such broken streams since
stateless decoder implementations are being a primary
decoder element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2394>

2 years agoh265parser: Add a new NAL parsing API to handle malformed packets
Seungha Yang [Mon, 9 May 2022 18:32:42 +0000 (03:32 +0900)]
h265parser: Add a new NAL parsing API to handle malformed packets

Add gst_h265_parser_identify_and_split_nalu_hevc() method to
handle a case where packetized stream contains start-code prefix.
This new method behaves similar to exisiting gst_h265_parser_identify_nalu_hevc()
but it will scan start-code prefix to split given data into
NAL units.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2394>

2 years agova: basedec: Select format from template or negotiated caps.
Víctor Manuel Jáquez Leal [Wed, 30 Mar 2022 15:19:54 +0000 (17:19 +0200)]
va: basedec: Select format from template or negotiated caps.

Instead of using a hard-coded list of preferred formats according the
chroma type, now if now caps are pre-negotiated, from template caps
will choose the first format with the same chroma type. If
pre-negotiated, then it will choose the first format, with same chroma
type, from the first caps structure.

Also all the decoders will check if GST_VIDEO_FORMAT_UNKNOWN is
returned, failing the negotiation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2351>

2 years agov4l2videoenc: Setup crop rectangle if needed
Nicolas Dufresne [Thu, 28 Apr 2022 13:19:57 +0000 (09:19 -0400)]
v4l2videoenc: Setup crop rectangle if needed

Hantro H1 and Rockchip VEPU2 drivers will pad the width/height to a
multiple of 16. In order to obtain the right JPEG size, the image needs
to be cropped using the S_SELECTION API. This support is added as best
effort since older drivers may emulate this by looking at the capture
queue width/height.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2329>

2 years agolibs: va: Add O_CLOEXEC flag at opening drm device.
Víctor Manuel Jáquez Leal [Fri, 6 May 2022 15:53:51 +0000 (17:53 +0200)]
libs: va: Add O_CLOEXEC flag at opening drm device.

So any other potential subprocess won't have access to it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2386>

2 years agopcapparse: Set timestamp in DTS, not PTS
Olivier Crête [Fri, 6 May 2022 22:21:00 +0000 (18:21 -0400)]
pcapparse: Set timestamp in DTS, not PTS

This matches the behaviour of basesrc, in particular, it matches the
behaviour of udpsrc, so it's easier to use to as a replacement to test
rtpjitterbuffer and other similar elements.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2388>

2 years agotools: device-monitor: Print string property as-is without serialize
Seungha Yang [Fri, 6 May 2022 19:43:49 +0000 (04:43 +0900)]
tools: device-monitor: Print string property as-is without serialize

gst_value_serialize() does more than what's needed to printf-ing
especially when given GValue is already string. Just print string
value as-is without gst_value_serialize() to avoid unreadable
string print, especially for multi-bytes character encoding cases.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2387>

2 years agov4l2codecs: h264: Set frame type flags
Dmitry Osipenko [Sun, 16 Jan 2022 12:51:32 +0000 (15:51 +0300)]
v4l2codecs: h264: Set frame type flags

V4L spec now requires decode_params flags to be set in accordance to the
frame's type. In particular this is required by H.264 decoder of NVIDIA
Tegra SoC to operate properly. Set the flags based on type of parsed
slices.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1757>

2 years agotests: Skip test if srtp element not built
Mengkejiergeli Ba [Fri, 6 May 2022 02:50:59 +0000 (10:50 +0800)]
tests: Skip test if srtp element not built

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2383>

2 years agoplaybin3: Cleanup and refactor combiner sourcecombine
Edward Hervey [Fri, 6 May 2022 07:10:09 +0000 (09:10 +0200)]
playbin3: Cleanup and refactor combiner sourcecombine

* Remove fields no longer used, or that can be replaced by smaller code
* Rename "channels" to a more meaningful "input pads"
* Directly handle/use combiner pads in the combiners instead of on the playbin3
  main structure

Remove the corresponding combiner sinkpad whenever a uridecodebin3 source pad
goes away
* If used, store the corresponding combiner sink pad in the SourcePad helper
  structure

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2384>

2 years agoci: update/rebuild windows image
Jordan Petridis [Tue, 26 Apr 2022 15:33:47 +0000 (18:33 +0300)]
ci: update/rebuild windows image

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2302>

2 years agoci: fix the windows-rust image builds
Jordan Petridis [Tue, 26 Apr 2022 17:00:16 +0000 (20:00 +0300)]
ci: fix the windows-rust image builds

There was a rule gated on the project name which wasn't removed
once we moved to the monorepo and this job was silently broken
since.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2302>

2 years agod3d11memory: Protect against concurrent access from GPU and CPU to staging texture
Seungha Yang [Thu, 5 May 2022 16:46:36 +0000 (01:46 +0900)]
d3d11memory: Protect against concurrent access from GPU and CPU to staging texture

Staging texture does not allow GPU access while it's CPU mapped.
But because we cannot block concurrent READ access by GstMemory design,
additional staging texture is still required.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1182
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2375>

2 years agod3d11screencapturesrc: Fix crash when d3d11 device is different from owned one
Seungha Yang [Wed, 4 May 2022 17:16:54 +0000 (02:16 +0900)]
d3d11screencapturesrc: Fix crash when d3d11 device is different from owned one

GstD3D11ScreenCapture object is pipeline-independent global object
and the object can be shared by multiple src elements,
in order to overcome a limitation of DXGI Desktop Duplication API.
Note that the API allows only single capture session in a process for
a monitor.

Therefore GstD3D11ScreenCapture object must be able to handle a case
where a src element holds different GstD3D11Device object. Which can
happen when GstD3D11Device context is not shared by pipelines.

What's changed:
* Allocates capture texture with D3D11_RESOURCE_MISC_SHARED for the
  texture to be able to copied into other device's texture
* Holds additional shader objects per src element and use it when drawing
  mouse

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1197
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2366>

2 years agoaggregator: Don't send multiple caps events with the same caps
Sebastian Dröge [Thu, 5 May 2022 17:39:52 +0000 (20:39 +0300)]
aggregator: Don't send multiple caps events with the same caps

Every time aggregator is reconfiguring it will try to negotiate new
caps. If these resulting caps are the same as the previously negotiated
caps then don't send a new caps event with the same caps again.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2372>

2 years agomp4mux: Disable aggregator's default negotiation
Sebastian Dröge [Thu, 5 May 2022 17:36:04 +0000 (20:36 +0300)]
mp4mux: Disable aggregator's default negotiation

mp4mux can't negotiate caps with upstream/downstream and always outputs
specific caps based on the input streams. This will always happen before
it produces the first buffers.

By having the default aggregator negotiation enabled the same caps
would be pushed twice in the beginning, and again every time a
reconfigure event is received.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2372>

2 years agomxfmux: Disable aggregator's default negotiation
Sebastian Dröge [Thu, 5 May 2022 17:35:57 +0000 (20:35 +0300)]
mxfmux: Disable aggregator's default negotiation

mxfmux can't negotiate caps with upstream/downstream and always outputs
specific caps based on the input streams. This will always happen before
it produces the first buffers.

By having the default aggregator negotiation enabled the same caps
would be pushed twice in the beginning, and again every time a
reconfigure event is received.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2372>

2 years agompegtsmux: Disable aggregator's default negotiation
Sebastian Dröge [Thu, 5 May 2022 17:35:49 +0000 (20:35 +0300)]
mpegtsmux: Disable aggregator's default negotiation

mpegtsmux can't negotiate caps with upstream/downstream and always outputs
specific caps based on the input streams. This will always happen before
it produces the first buffers.

By having the default aggregator negotiation enabled the same caps
would be pushed twice in the beginning, and again every time a
reconfigure event is received.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2372>

2 years agoflvmux: Disable aggregator's default negotiation
Sebastian Dröge [Thu, 5 May 2022 17:24:57 +0000 (20:24 +0300)]
flvmux: Disable aggregator's default negotiation

flvmux can't negotiate caps with upstream/downstream and always outputs
specific caps based on the input streams. This will always happen before
it produces the first buffers.

By having the default aggregator negotiation enabled the same caps
would be pushed twice in the beginning, and again every time a
reconfigure event is received.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2372>

2 years agoaggregator: Only send events up to CAPS event from gst_aggregator_set_src_caps()
Sebastian Dröge [Thu, 5 May 2022 12:05:43 +0000 (15:05 +0300)]
aggregator: Only send events up to CAPS event from gst_aggregator_set_src_caps()

Otherwise setting the srcpad caps based on the sinkpad caps event will
already push a segment event downstream before the upstream segment is
known.

If the upstream segments are just forwarded when the upstream segment
event arrives this would result in two segment events being sent
downstream, of which the first one will usually be simply wrong.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2372>

2 years agoh264decoder: Fix for unhandled low-delay decoding case
Seungha Yang [Wed, 4 May 2022 15:24:26 +0000 (00:24 +0900)]
h264decoder: Fix for unhandled low-delay decoding case

Baseclass calls get_preferred_output_delay() in a chain of
sequence header parsing and then new_sequence() is called
with required DPB size (includes render-delay) information.
Thus latency query should happen before the sequence header
parsing for subclass to report required render-delay accordingly
via get_preferred_output_delay() method.
(e.g., zero delay in case of live pipeline)

This commit is to fix wrong liveness signalling in case of
upstream packetized format.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2363>

2 years agoh265decoder: Fix for unhandled low-delay decoding case
Seungha Yang [Wed, 4 May 2022 15:49:27 +0000 (00:49 +0900)]
h265decoder: Fix for unhandled low-delay decoding case

Baseclass calls get_preferred_output_delay() in a chain of
sequence header parsing and then new_sequence() is called
with required DPB size (includes render-delay) information.
Thus latency query should happen before the sequence header
parsing for subclass to report required render-delay accordingly
via get_preferred_output_delay() method.
(e.g., zero delay in case of live pipeline)

This commit is to fix wrong liveness signalling in case of
upstream packetized format.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2364>

2 years agonvh264dec,nvh265dec: Don't realloc bitstream buffer per slice
Seungha Yang [Wed, 4 May 2022 14:36:30 +0000 (23:36 +0900)]
nvh264dec,nvh265dec: Don't realloc bitstream buffer per slice

Allocated memory size has not been updated which results in
realloc per slice. Fixing it and also release bitstream buffer
on ::close(), not finalize.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2361>

2 years agomultiqueue: Increase initial interleave growth rate
Edward Hervey [Thu, 5 May 2022 07:00:17 +0000 (09:00 +0200)]
multiqueue: Increase initial interleave growth rate

In the case where not all streams have received any data, growing the interleave
by only 100ms is too restrictive and would cause some (valid) mpeg-ts streams to
hang.

Bump up the interleave growth rate for those use-cases to 500ms per input (still
up to the limit of 5s).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2370>

2 years agod3d11screencapture: Set viewport when drawing mouse cursor
Jakub Adam [Fri, 29 Apr 2022 18:28:53 +0000 (20:28 +0200)]
d3d11screencapture: Set viewport when drawing mouse cursor

If there weren't any moved/dirty regions in the captured frame, the
viewport of the ID3D11DeviceContext would be left at whatever previous
value it had, which could lead to the cursor being drawn in a wrong
position and/or in an incorrect size.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2362>

2 years agowavparse: ensure that any pending segment is sent before an EOS event is sent
Matthew Waters [Tue, 3 May 2022 07:27:32 +0000 (17:27 +1000)]
wavparse: ensure that any pending segment is sent before an EOS event is sent

Specifically fixes seqnum handling when an aggregator-based element
(audiomixer et al) is downstream and a seek is performed that
immediately causes an EOS from wavparse.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2356>

2 years agoparsebin: Don't modify inexistant GstStream
Edward Hervey [Tue, 3 May 2022 14:25:19 +0000 (16:25 +0200)]
parsebin: Don't modify inexistant GstStream

When handling exposing un-handled streams, we can only replace the GstStream for
those we are creating ourselves (i.e. the fallback collection).

Fixes assertions when the demuxer creates those streams

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2353>

2 years agoplaybin3: Don't use unknown types for default selection
Edward Hervey [Tue, 3 May 2022 14:08:39 +0000 (16:08 +0200)]
playbin3: Don't use unknown types for default selection

When creating a fallback default selection from a collection, don't attempt to
use unknown stream types

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2353>

2 years agosubprojects: Update libnice to 0.1.19
Olivier Crête [Tue, 3 May 2022 22:49:36 +0000 (18:49 -0400)]
subprojects: Update libnice to 0.1.19

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2354>

2 years agonvcodec: Add AV1 decoder
Seungha Yang [Mon, 2 May 2022 13:59:59 +0000 (22:59 +0900)]
nvcodec: Add AV1 decoder

Adding GstCodecs based AV1 decoder element

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1453>

2 years agoav1decoder: Add support for render delay
Seungha Yang [Tue, 3 May 2022 14:56:12 +0000 (23:56 +0900)]
av1decoder: Add support for render delay

Sync up with other decoder baseclass implementations

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1453>

2 years agoav1decoder: Hold OBU temporal and spatial id in picture struct
Seungha Yang [Wed, 27 Apr 2022 18:14:54 +0000 (03:14 +0900)]
av1decoder: Hold OBU temporal and spatial id in picture struct

NVDEC API requires the information

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1453>

2 years agomeson: nvcodec: Remove unnecessary override option and fix build with non-MSVC
Seungha Yang [Tue, 3 May 2022 16:03:37 +0000 (01:03 +0900)]
meson: nvcodec: Remove unnecessary override option and fix build with non-MSVC

cpp_std=c++11 was hack for macOS build but we don't build this plugin
for Apple device anymore. And add "-Wno-deprecated-declarations"
compile option for gcc/clang

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1453>

2 years agonvcodec: Bump SDK header version to 11.1
Seungha Yang [Fri, 17 Dec 2021 08:22:22 +0000 (17:22 +0900)]
nvcodec: Bump SDK header version to 11.1

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1453>

2 years agonvdecoder: Handle DPB size margin in a single place
Seungha Yang [Mon, 2 May 2022 13:46:06 +0000 (22:46 +0900)]
nvdecoder: Handle DPB size margin in a single place

... instead of each subclass

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2343>

2 years agod3d11decoder: Handle DPB size margin in a single place
Seungha Yang [Mon, 2 May 2022 13:41:53 +0000 (22:41 +0900)]
d3d11decoder: Handle DPB size margin in a single place

... instead of each subclass

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2343>

2 years agocodecs: Signal required DPB size for AV1,MPEG2,VP8, and VP9 via new_sequence()
Seungha Yang [Wed, 27 Apr 2022 19:25:05 +0000 (04:25 +0900)]
codecs: Signal required DPB size for AV1,MPEG2,VP8, and VP9 via new_sequence()

Make all codecs consistent so that subclass can know additional DPB
size requirement depending on render-delay configuration regardless
of codec. Note that render-delay feature is not implemented for AV1
yet but it's planned.

Also, consider new_sequence() is mandatory requirement, not optional

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2343>

2 years agoaudioconvert: If no channel-mask can be fixated then use a NONE channel layout
Sebastian Dröge [Tue, 3 May 2022 10:37:31 +0000 (13:37 +0300)]
audioconvert: If no channel-mask can be fixated then use a NONE channel layout

Otherwise this is generating caps without a channel-mask, which is
invalid for >1 channels and will always fail negotiation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2350>

2 years agodoc: Update cache for NV12_4L4 and NV12_16LE32 gl support
Nicolas Dufresne [Mon, 2 May 2022 18:36:03 +0000 (14:36 -0400)]
doc: Update cache for NV12_4L4 and NV12_16LE32 gl support

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2190>

2 years agoopengl: Add NV12_4L4 conversion support
Nicolas Dufresne [Thu, 14 Apr 2022 19:02:11 +0000 (15:02 -0400)]
opengl: Add NV12_4L4 conversion support

This format is produced notably by Hantro G1/G2 HW. Using a shader instead of
the Hantro embedded converter helps reduce drastrictly the memory usage at a
relatively small GPU overhead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2190>

2 years agoopengl: Add NV12_16L32S conversion support
Nicolas Dufresne [Tue, 12 Apr 2022 18:18:59 +0000 (14:18 -0400)]
opengl: Add NV12_16L32S conversion support

This adds a first detiling shader with initial support for
NV12_16L32S as produced by Mediatek decoders.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2190>