Olivier Crête [Wed, 31 Mar 2021 15:33:21 +0000 (11:33 -0400)]
webrtcbin: Associate the stream with a new transceiver
Otherwise, this newly created transceiver has no stream and it
aborts later when it tries to connect the input pad.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Wed, 31 Mar 2021 15:30:16 +0000 (11:30 -0400)]
webrtcbin: Match unassociated transceiver by kind too
When a new m-line comes in that doesn't have a transceiver, only match
existing transceivers of the same kind.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Tue, 30 Mar 2021 22:01:56 +0000 (18:01 -0400)]
webrtcbin: Fix typoe in name of error GstStructure
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Tue, 30 Mar 2021 20:16:50 +0000 (16:16 -0400)]
webrtc test: Verify that forcing different kinds on peers fails
If the offer contains an audio kind and a video kind, forcing them both
at m-line zero will fail.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Tue, 30 Mar 2021 20:04:33 +0000 (16:04 -0400)]
webrtc tests: Verify that create-offer is rejected when needed
Verify that it gets rejected if a m-line at index 1 is requested but
there is no m-line 0.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Mon, 29 Mar 2021 23:47:21 +0000 (19:47 -0400)]
webrtcbin test: Add test for various cases where get_request_pad is meant to fail
This should ensure that the recently added code works.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Sat, 27 Mar 2021 01:09:04 +0000 (21:09 -0400)]
webrtcbin: Enforce direction on request sink pad with a specific name
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Sat, 27 Mar 2021 00:55:36 +0000 (20:55 -0400)]
webrtcbin: Try to match an existing transceiver on pad request
This should avoid creating extra transceivers that are duplicated.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Sat, 27 Mar 2021 00:02:13 +0000 (20:02 -0400)]
webrtcbin: Validate locked m-lines in set*Description
Verify that the remote description match the locked m-lines, otherwise
just reject the SDP.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Fri, 26 Mar 2021 23:38:57 +0000 (19:38 -0400)]
webrtcbin: Remove unused session_mid_map
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Fri, 26 Mar 2021 22:15:50 +0000 (18:15 -0400)]
webrtcbin: Enforce m-line restrictions when creating offer
First fail the offer creation if the mid of an existing offer doesn't
match a forced m-mline.
Then, for all newly added mlines, first look for a transceiver that
forces this m-line, then add a "floating" one, then the data channel.
And repeat this until we're out of transceivers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Fri, 26 Mar 2021 19:57:15 +0000 (15:57 -0400)]
webrtcbin: Remember if a transceiver had a forced m-line
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Fri, 26 Mar 2021 19:54:35 +0000 (15:54 -0400)]
webrtcbin: Enforce same-kind on request sink pad with a specific name
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Fri, 26 Mar 2021 19:23:34 +0000 (15:23 -0400)]
webrtcbin: Enforce compatible caps on pad request
If a pad is requested with certain caps and there is already a
transceiver, reject the pad request if the caps don't match.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Fri, 26 Mar 2021 19:19:09 +0000 (15:19 -0400)]
webrtcbin: Reject pad request for a specific m-line if it already exists
This way, the app developer is in control.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Fri, 26 Mar 2021 19:02:50 +0000 (15:02 -0400)]
webrtcbin: Make request-pad validation an early return
This reduces the indendation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Fri, 26 Mar 2021 18:48:58 +0000 (14:48 -0400)]
webrtcbin: Add document for webrtcbin itself to generated doc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Wed, 24 Mar 2021 00:18:24 +0000 (20:18 -0400)]
webrtcbin test: Test adding a stream to a stream+datachannel
This use-case was previously broken by the expectation of having
a 1-1 match between the pad id and the m-line index
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Tue, 23 Mar 2021 23:51:00 +0000 (19:51 -0400)]
webrtc: Reset received_caps when releasing pad
This is to work around a race where the pad is accessed in the
webrtc main thread while being released.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Tue, 23 Mar 2021 21:51:16 +0000 (17:51 -0400)]
webrtcbin: Split pad name from mline
The simple case where this breaks is if you add a
datachannel and want to add a new pad (a new media) after). Another
case where this is broken is if the order of the media is forced to
something different by the peer.
It's more simple to just split both things completely. In practice, the
pads will be named in the order in which they are allocated, so it
shouldn't change the current behaviour, just enable new ones.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Jan Schmidt [Wed, 24 Feb 2021 18:04:00 +0000 (05:04 +1100)]
switchbin: When collecting srcpad caps, don't intersect with path caps.
The path caps describe the input caps that will select each path, don't
intersect those with the srcpad caps, which could be completely
different. Instead, when querying allowed caps for the srcpad, just
construct the union of all possible output caps from all path srcpads.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2018>
Jan Schmidt [Tue, 16 Feb 2021 04:00:07 +0000 (15:00 +1100)]
switchbin: Don't report sink pad caps for src pad queries.
When handling a caps query on the src pad, don't return the union
of input caps. Even when not active, a path element can be queried
for srcpad template caps, or for dropping paths the allowed downstream
caps is anything - as data will be dropped anyway.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2018>
Stéphane Cerveau [Thu, 25 Feb 2021 14:22:15 +0000 (15:22 +0100)]
gst-plugins: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2110>
Helmut Januschka [Sat, 10 Apr 2021 18:34:26 +0000 (20:34 +0200)]
allow NetStream.Play.PublishNotify Message
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2154>
Stéphane Cerveau [Fri, 26 Mar 2021 10:00:50 +0000 (11:00 +0100)]
plugins-sys: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2116>
Seungha Yang [Thu, 8 Apr 2021 16:54:50 +0000 (01:54 +0900)]
codecs: vp9decoder: Update docs
* Remove "FIXME 1.20": All the bits are addressed already by using
vp9parse element
* Fix copy & paste errors: Some comments were copied from h264decoder
blindly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2151>
Seungha Yang [Fri, 9 Apr 2021 03:45:46 +0000 (12:45 +0900)]
codecs: vp9decoder: Make duplicate_picture() vfunc optional
The default implementation was required when superframe parsing
was handled by vp9decoder. For instance, if a superframe consists
of multiple frames with show_existing_frame header, it was vague
that which GstVp9Picture should consume GstVideoCodecFrame.
After 1.18 release, we introduced vp9parse element and
superframe should be handled by upstream vp9parse elemenet now.
So, we don't need to care about the superframe at vp9decoder class
level anymore. Simply, a frame corresponding to show_existing_frame
can be dropped if subclass doesn't implement duplicate_picture().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2151>
Philippe Normand [Tue, 30 Mar 2021 13:40:53 +0000 (14:40 +0100)]
debugutils: Add fakeaudiosink element
This element can be useful for CI purposes on machines not running any system
audio daemon. The element implements the GstStreamVolume interface.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2125>
Nicolas Dufresne [Thu, 8 Apr 2021 18:53:52 +0000 (14:53 -0400)]
v4l2codecs: allocator: Keep dmabuf mapped
DMABuf allocator already implements DMABuf Sync, meaning that doing
mmap/munmap (unless the mode have changed) is not required. In fact, on
systems with IOMMU it makes the kernel redo the mmu table which is visible
in the CPU usage.
This change reduces CPU usage when decoding
bbb_sunflower_2160p_60fps_normal.mp4 on RK3399 SoC from over 30% to
around 15%.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2152>
Víctor Manuel Jáquez Leal [Sat, 3 Apr 2021 12:16:22 +0000 (14:16 +0200)]
va: allocator: Implement mem_copy for VA memory.
Implementation of mem_copy() virtual method for GstVaAllocator.
It's a deep copy where a new VA memory is popped out from the pool or,
if pool is empty, a new memory is allocated. The original memory is
mapped to read, and if its VAImage is not derived and size to copy is
the whole surface, the mapped VAImage of the original memory is put in
the new memory. Otherwise a slow memcpy is done between both memories.
Fixes: #1568
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2136>
Zhao Zhili [Thu, 8 Apr 2021 12:29:29 +0000 (20:29 +0800)]
srtobject: fix optlen of srt_getsockflag
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2149>
Haihua Hu [Thu, 14 Jan 2021 06:24:06 +0000 (14:24 +0800)]
jpeg2000parse: fix critical log when play one gray colorspace video
Need guess color space based on number of components when cannot
got it from sink caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1955>
Olivier Crête [Fri, 11 Dec 2020 21:33:39 +0000 (16:33 -0500)]
ldacenc: Emit message on errors
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1875>
Olivier Crête [Fri, 11 Dec 2020 21:26:00 +0000 (16:26 -0500)]
sbc: Return hard error on allocation or mapping error
Also post a message on the bus in these cases.wpe: Emit load-progress messages
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1875>
Matthieu De Beule [Sun, 25 Oct 2020 16:39:48 +0000 (16:39 +0000)]
Tell programmers that set_volume uses linear scale (fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1439)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1722>
Olivier Crête [Fri, 11 Dec 2020 19:52:20 +0000 (14:52 -0500)]
sbc/ldac: Don't use GST_CAPS_NONE to mean NULL
The GST_CAPS_NONE macro actually returns a instance of
a empty caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1874>
Seungha Yang [Tue, 30 Mar 2021 08:24:38 +0000 (17:24 +0900)]
codecs: vp9decoder: Allow decoding start with intra-only frame
As per spec "7.2 Uncompressed header semantics" and
"8.2 Frame order constraints", decoding can start with intra-only
frame. This commit is for fixing vp90-2-16-intra-only.webm
bitstream test failure.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2112>
Seungha Yang [Sun, 28 Mar 2021 17:11:22 +0000 (02:11 +0900)]
codecs: vp9decoder: Pass GstVideoCodecFrame to duplicate_picture()
... and fix picture duplication logic for vavp9dec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2112>
Seungha Yang [Tue, 30 Mar 2021 02:49:43 +0000 (11:49 +0900)]
codecs: vp9decoder: Port to GstVp9StatefulParser
Use newly implemented VP9 parser. Since new GstVp9FrameHeader
struct holds all the information of the stream, baseclass will not
pass parser object to new_sequence() method anymore.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2112>
Seungha Yang [Sat, 27 Mar 2021 06:32:59 +0000 (15:32 +0900)]
codecparsers: Reimplement VP9 parser
Existing VP9 parser implementation doesn't provide information
required by other stateless decoding APIs (i.e., DXVA and NVDEC),
specifically loop filter and segmentation parameters might not exist
current frame. So parser needs to fill the information by using previously
parsed information.
We can update the gstvp9parser implementation so that it can provide
all information required by stateless decoding APIs with a huge API break,
or adding more ugly struct in it.
Instead doing as such, this commit introduce a new VP9 parser implementation.
What is different from existing one?
* All variables will follow the specification as much as possible:
VP9 Bitstream & Decoding Process Specification - v0.6 31st March 2016
* Parser will fill all the required information for decoding frame
to GstVp9FrameHeader struct. In case of old VP9 parser,
user needs to read additional data from parser's member variables.
* GstVp9StatefulParser object struct is completely completely opaque
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2112>
Seungha Yang [Sun, 28 Mar 2021 07:11:23 +0000 (16:11 +0900)]
codecs: vp9decoder: Don't check codec change with show_existing_frame
Show existing frame will zero frame_type value but it doesn't mean
it's keyframe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2112>
Nicolas Dufresne [Tue, 6 Apr 2021 20:24:39 +0000 (16:24 -0400)]
v4l2codecs: Fix holding of reference picture buffer
The picture buffer (V4L2 CAPTURE buffer) was being released immediatly
when the request was done. This was problematic since even after the
request is done, the picture buffer might still be used as a reference
and should not be reused for further decoding yet.
This change effectively bind the picture buffer lifetime to the request.
So that if the picture is never showned (decode only frame) or the request
queue is full before the buffer is displayed, the picture buffer will
remain alive.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2142>
Doug Nazar [Wed, 7 Apr 2021 11:48:57 +0000 (07:48 -0400)]
rtmp2: Use correct size of write macro for param2.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2146>
Víctor Manuel Jáquez Leal [Thu, 1 Apr 2021 05:59:45 +0000 (07:59 +0200)]
va: filter: remove unsupported formats because driver's bugs
Add a way to filter out video formats from caps because of unresolved
bugs in drivers. In this case for media-driver (iHD) where some RGB32
formats are not handled correctly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2129>
Víctor Manuel Jáquez Leal [Wed, 31 Mar 2021 07:59:21 +0000 (09:59 +0200)]
va: videoformats: Map more color formats.
Added Y212_LE, Y412_LE, P012_LE, Y444, RGB16, RGB and BGR10A2_LE in
the static map betwen VA and GStreamer color formats. This synchronize
the map used in gstremaer-vaapi and this plugin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2129>
Víctor Manuel Jáquez Leal [Wed, 31 Mar 2021 07:50:46 +0000 (09:50 +0200)]
va: videoformats: Fix RGB32 mapping between VA and GStreamer.
Different VA drives might have different definitions for RGB32 color
formats because different bit interpretation. Sadly the specification
doesn't clarify these interpretations. So VA users have to figure out
what's the correct mapping with it's rendering color format
definition.
This patch aims to fix the static map structure after the
VAImageFormats are queried. There is another static map with the
different interpretations of the RGB32 formats, and compare them with
the given VAImageFormat, then with the GStreamer color format, update
the mapping table.
Finally, some RGB32 color formats were added.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2129>
Doug Nazar [Wed, 7 Apr 2021 05:03:15 +0000 (01:03 -0400)]
avtp: Fix log format macros
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2145>
Daniel Almeida [Tue, 6 Apr 2021 16:07:52 +0000 (13:07 -0300)]
v4l2codecs: gstv4l2decoder.c: Add missing include
Add missing include for sys/ioctl.h so that these warnings dissapear
when compiling:
../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2decoder.c:179:9:
warning: implicit declaration of function ‘ioctl’
[-Wimplicit-function-declaration]
Signed-off-by: Daniel Almeida <daniel.almeida@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2140>
Sebastian Dröge [Tue, 6 Apr 2021 16:18:45 +0000 (19:18 +0300)]
curlsftpsink: Don't run GST_DEBUG_OBJECT() on a class struct
It's supposed to be a GObject.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2141>
Yinhang Liu [Mon, 29 Mar 2021 07:29:30 +0000 (15:29 +0800)]
msdkh265enc: add support for RGB 10bit format
The SDK can support A2RGB10 format [1], A2RGB10 format corresponds
to BGR10A2_LE format in gstreamer. A2RGB10 format only supports
low-power mode.
Example:
gst-launch-1.0 videotestsrc ! video/x-raw,format=BGR10A2_LE \
! msdkh265enc low-power=1 ! fakesink
[1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxframedata
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2126>
Wim Taymans [Wed, 31 Mar 2021 14:18:04 +0000 (16:18 +0200)]
vulkan: provide a custom VK_DEFINE_NON_DISPATCHABLE_HANDLE
If the application did not define one yet, define our own
VK_DEFINE_NON_DISPATCHABLE_HANDLE that is independent of the
architecture.
Vulkan, by default, provides a define that depends on the architecture,
which causes the symbol type to be different. This causes an
architecture dependent .gir file, which then causes multilib
installation problems because the .gir files can't be shared.
Make it possible to override the format specifier and provide
a default one that is compatible with the default non dispatchable
handle.
Return VK_NULL_HANDLE from functions that return a non-dispatchable
handle.
Fixes #1566
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2130>
Víctor Manuel Jáquez Leal [Fri, 26 Mar 2021 16:48:09 +0000 (17:48 +0100)]
va: postproc, filter: add disable-passthrough property
vapostproc tries to be in passthrough mode as much as possible. But
they might be situations where the user might force to process the
frames. For example, when upstream sets the crop meta and the user
wants VA do that cropping, rather than downstream.
For those situations this property will disable the passthrough mode,
if it's enabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2058>
Víctor Manuel Jáquez Leal [Tue, 23 Feb 2021 08:01:10 +0000 (09:01 +0100)]
va: postproc: enable cropping by crop meta
If incoming buffers have crop meta it's done by vapostproc, iif
vapostproc is not in passthrough mode and downstream doesn't handle
it.
This patch announces the crop meta API in proposed bufferpool, while
it stops filtering meta APIs, since it was only filter crop api.
Also if downstream supports crop and video metas, vapostporoc
announces both meta APIs in upstream bufferpool.
Finally, the meta is removed from the buffer if the crop is enabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2058>
Víctor Manuel Jáquez Leal [Thu, 4 Mar 2021 14:19:25 +0000 (15:19 +0100)]
va: filter: add gst_va_filter_enable_cropping ()
This will toggle the cropping operation in the filter
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2058>
Víctor Manuel Jáquez Leal [Sat, 23 Jan 2021 11:53:25 +0000 (12:53 +0100)]
va: filter, vpp: add and use GstVaSample struct
This new struct describes the input and output GstBuffers to
post-process, including VA flags. It also contains the VASurfaceID and
VARectangle, but those are private, completed inside GstVaFilter.
It is used for pass arguments to gst_va_filter_convert_surface() function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2058>
Víctor Manuel Jáquez Leal [Sun, 28 Feb 2021 07:38:36 +0000 (08:38 +0100)]
va: postproc: Use allocation caps when creating sink pool.
When an input buffer needs to be copied into a VA memory, it's
required to create a buffer pool. This patch uses the
propose_allocation() caps to instantiate the allocator and pool,
instead of the negotiated caps, which rather represents the resolution
to display.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2058>
Mathieu Duponchelle [Fri, 22 Jan 2021 22:54:50 +0000 (23:54 +0100)]
line21dec: relax caps requirements
Instead of requiring interlaced video, simply skip CC detection
when the input is progressive.
This allows placing line21decoder unconditionally in pipelines,
without having to worry about whether the input stream will be
interlaced, or even worse interlacing just in case!
+ update doc cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1885>
Mathieu Duponchelle [Wed, 16 Dec 2020 00:02:53 +0000 (01:02 +0100)]
line21dec: expose mode property
That new property can be used to control whether and how
detected CC meta should be inserted in the list of existing
CC meta on the input frame (if there was any).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1885>
Mathieu Duponchelle [Tue, 15 Dec 2020 21:01:33 +0000 (22:01 +0100)]
line21dec: expose ntsc-only property
When this is set, the element only tries to detect CC when the
height is 525 or 486 (NTSC resolutions). The height is already
checked.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1885>
Víctor Manuel Jáquez Leal [Wed, 31 Mar 2021 09:52:07 +0000 (11:52 +0200)]
va: allocator: Use derived images only if not mapped for reading.
Derived images are direct maps to surfaces bits, but in Intel Gen7 to
Gen9, that memory is not cachable, thus reading can be very slow (it
might produce timeout is tests such as fluster).
This patch tries first to define if derived images are possible, and
later use them only if mapping is not for reading.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2128>
Víctor Manuel Jáquez Leal [Wed, 31 Mar 2021 09:13:52 +0000 (11:13 +0200)]
va: caps: Add image formats in raw caps only for non-iHD.
This plugin, for decoders more concretely, assumes that a VA config
can do certain color conversions when mapping frames onto CPU's
memory.
This assumption was valid for i965 and Gallium drivers which generates
valid outputs in bitstreams testers (v.gr. fluster). Nonetheless, iHD,
even when it generates acceptable rendered frames, output's MD5 of
tests weren't valid.
This patch append the image formats, for color conversion when mapping
to memory, for non-iHD drivers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2128>
Seungha Yang [Thu, 1 Apr 2021 06:09:45 +0000 (15:09 +0900)]
d3d11: Fix for UYVY/VYUY format rendering
Don't assume that non-native DXGI formats support RTV and/or SRV.
We are mapping UYVY and VYUY formats to DXGI_FORMAT_R8G8_B8G8_UNORM
which doesn't support render target view
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2133>
Jan Schmidt [Wed, 24 Mar 2021 16:16:05 +0000 (03:16 +1100)]
mpegtsmux: Respect the start-time-selection property.
Use the start time provided by the aggregator base class for output
times.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2105>
Yinhang Liu [Mon, 29 Mar 2021 07:24:38 +0000 (15:24 +0800)]
msdkh265enc: add dblk-idc property
The SDK can support deblocking reference structure [1], so add a new
property to enable this feature.
[1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxextcodingoption2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2122>
Yinhang Liu [Mon, 29 Mar 2021 07:18:13 +0000 (15:18 +0800)]
msdkh264enc: add dblk-idc property
The SDK can support deblocking reference structure [1], so add a new
property to enable this feature.
[1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxextcodingoption2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2122>
Stéphane Cerveau [Tue, 30 Mar 2021 09:34:54 +0000 (11:34 +0200)]
flite: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2123>
Stéphane Cerveau [Tue, 30 Mar 2021 09:27:11 +0000 (11:27 +0200)]
dtls: hotfix: allow per feature registration
Use of GST_ELEMENT_REGISTER in plugin.c
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2123>
Stéphane Cerveau [Fri, 26 Mar 2021 18:47:06 +0000 (19:47 +0100)]
gs: remove clang formatting
remove clang formatting during
the build.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2115>
Stéphane Cerveau [Fri, 26 Mar 2021 10:41:50 +0000 (11:41 +0100)]
gs: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2115>
Sebastian Dröge [Mon, 29 Mar 2021 09:15:18 +0000 (12:15 +0300)]
avwait: Don't reset time tracking when receiving the same segment again
This causes avwait to go back into "dropping" mode until audio and video
are synced again, which is unnecessary when the segment didn't actually
change.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2121>
Seungha Yang [Wed, 17 Mar 2021 05:30:09 +0000 (14:30 +0900)]
nvcodec: nvsldec: Refactor graphics api resource handling
* Move GL context object to GstNVDecoder object, and remove
duplicated handling of each codec decoder element
* Don't create GL context too early. We can create it only if
we need to negotiate with downstream gl element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2089>
Haihao Xiang [Wed, 17 Mar 2021 06:38:40 +0000 (14:38 +0800)]
msdkenc{h264,h265}: add intra-refresh-type property
The SDK allows user to specify the intra refresh type which can improve
error resilience without significant impact on encoded bitstream size
caused by I frames [1]
[1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxextcodingoption2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2090>
Marijn Suijten [Sun, 28 Mar 2021 10:03:09 +0000 (12:03 +0200)]
Add @ prefix to enum-variant references in documentation
Found while working on GStreamer-rs documentation, some enums had this
bit of text pasted verbatim in the enum documentation rather than
attached to the enum-variant. Fortunately it seems these in WebRTC and
D3D11 are the only ones matching the non-@-prefixed pattern:
^ \* GST_\w+:\s*\w+
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2118>
Jan Alexander Steffens (heftig) [Fri, 26 Mar 2021 11:20:07 +0000 (12:20 +0100)]
rtmp2/connection: Separate inner from outer cancelling
The connection cancels itself when it is closed. To avoid the
cancellable passed to `gst_rtmp_connection_new` from being unexpectedly
cancelled, separate inner from outer cancellation by holding two
cancellables.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1558
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2111>
Seungha Yang [Sun, 28 Mar 2021 03:06:24 +0000 (12:06 +0900)]
d3d11vp9dec: Remove debug dump functions
Existing debug messages are not quite useful
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2117>
Seungha Yang [Sun, 28 Mar 2021 07:06:55 +0000 (16:06 +0900)]
d3d11decoder: Move zero-copy decision logic into decoder object
Get rid of all duplicated code for zero-copy decision and output buffer
allocation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2117>
Seungha Yang [Fri, 26 Mar 2021 13:40:34 +0000 (22:40 +0900)]
d3d11vp9dec: Ignore show_frame flag in output_picture()
baseclass will not call output_picture() if it shouldn't be ouputted.
Note that the show_frame flag can be zero when show_existing_frame is set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2114>
Seungha Yang [Fri, 26 Mar 2021 13:27:38 +0000 (22:27 +0900)]
codecs: vp9decoder: Fix to output frame when show_existing_frame flag is set
When show_existing_frame flag is set, show_frame flag is zero
but we should output previously decoded frame as specified in frame header.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2114>
Seungha Yang [Fri, 26 Mar 2021 12:06:59 +0000 (21:06 +0900)]
d3d11decoder: Do not hardcode the limit minimum resolution to 64
Decoder should be able to support lower resolution than 64x64
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2113>
Seungha Yang [Thu, 25 Mar 2021 12:17:07 +0000 (21:17 +0900)]
d3d11videosink: Remove DirectWrite related dead code
It's now not enabled since we moved core part to gst-libs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2108>
Seungha Yang [Wed, 24 Mar 2021 18:24:11 +0000 (03:24 +0900)]
mfvideoenc: Don't pass 0/1 framerate to MFT
Some MFT implementations do not accept 0/1 framerate and it will
result in encoder open failure. If framerate is unknown,
we will use arbitrary 25/1 framerate value.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2106>
Seungha Yang [Tue, 23 Mar 2021 04:48:09 +0000 (13:48 +0900)]
d3d11decoder: Resurrect zero-copy for fixed-size DPB pool
Enable zero-copy if downstream proposed pool and therefore decoder
can know the amount of buffer required by downstream.
Otherwise decoder will copy when our DPB pool has no sufficient
buffers for later decoding operation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2097>
Seungha Yang [Sat, 20 Mar 2021 10:52:16 +0000 (19:52 +0900)]
d3d11decoder: Implement array-of-texture DPB again
Re-implementation of array-of-texture based on d3d11 memory pool.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2097>
Seungha Yang [Thu, 18 Mar 2021 13:31:55 +0000 (22:31 +0900)]
d3d11: Implement memory pool
Major changes:
* GstD3D11Allocator: This allocator is now device-independent object
which can allocate GstD3D11Memory object for any GstD3D11Device.
User can get this object via gst_allocator_find(GST_D3D11_MEMORY_NAME)
* GstD3D11PoolAllocator: A new allocator implementation for texture pool.
From now on GstD3D11BufferPool will make use of this memory pool allocator
to avoid frequent texture reallocation. That usually happens because
of buffer copy (gst_buffer_make_writable for example)
In addition to that, GstD3D11BufferPool will provide GstBuffer with
GstVideoMeta, because CPU access to a GstD3D11Memory without GstVideoMeta
is almost impossible since GPU drivers needs padding for stride alignment.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2097>
Seungha Yang [Sat, 20 Mar 2021 13:11:49 +0000 (22:11 +0900)]
d3d11decoder: Temporarily remove zero-copy related code
We will re-implement it based on memory pool
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2097>
Víctor Manuel Jáquez Leal [Tue, 23 Mar 2021 08:33:49 +0000 (09:33 +0100)]
va: postproc: Set one buffer in pools as minimum.
Because some elements, such as videorate check that minimum are
different of maximum number of buffers in the proposed pool, since
they might hold one or more buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2102>
Sebastian Dröge [Tue, 23 Mar 2021 17:19:14 +0000 (19:19 +0200)]
h2645parser: Catch overflows in AVC/HEVC NAL unit length calculations
Offset and size are stored as 32 bit guint and might overflow when
adding the nal_length_size, so let's avoid that.
For the size this would happen if the AVC/HEVC NAL unit size happens to
be stored in 4 bytes and is
4294967292 or higher, which is likely
corrupted data anyway.
For the offset this is something for the caller of these functions to
take care of but is unlikely to happen as it would require parsing on a
>4GB buffer.
Allowing these overflows causes all kinds of follow-up bugs in the
h2645parse elements, ranging from infinite loops and memory leaks to
potential memory corruptions.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2103>
Stéphane Cerveau [Thu, 25 Feb 2021 08:59:50 +0000 (09:59 +0100)]
zxing: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Thu, 25 Feb 2021 08:57:00 +0000 (09:57 +0100)]
zbar: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Thu, 25 Feb 2021 08:51:52 +0000 (09:51 +0100)]
x265: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Thu, 25 Feb 2021 08:45:10 +0000 (09:45 +0100)]
wpe: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Thu, 25 Feb 2021 08:27:19 +0000 (09:27 +0100)]
wildmidi: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Thu, 25 Feb 2021 07:18:54 +0000 (08:18 +0100)]
webrtcdsp: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Thu, 25 Feb 2021 07:04:42 +0000 (08:04 +0100)]
webp: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Wed, 24 Feb 2021 17:56:55 +0000 (18:56 +0100)]
wayland: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Wed, 24 Feb 2021 17:45:15 +0000 (18:45 +0100)]
vulkan: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Wed, 24 Feb 2021 16:34:50 +0000 (17:34 +0100)]
voamrwbenc: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Wed, 24 Feb 2021 16:32:34 +0000 (17:32 +0100)]
voaacenc: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Wed, 24 Feb 2021 12:07:30 +0000 (13:07 +0100)]
ttml: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Stéphane Cerveau [Wed, 24 Feb 2021 11:52:08 +0000 (12:52 +0100)]
srtp: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>