Doug Nazar [Wed, 21 Apr 2021 03:51:49 +0000 (23:51 -0400)]
tests/netsim: Set src caps before creating buffers
GstHarness requires the source pad caps to be set before
buffer allocations.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2179>
Seungha Yang [Mon, 19 Apr 2021 17:00:18 +0000 (02:00 +0900)]
d3d11: Add support for BGRx and RGBx formats
For such formats, we can re-use existing BGRA/RGBA implementations
but ignoring alpha channel
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2174>
Seungha Yang [Tue, 20 Apr 2021 09:37:15 +0000 (18:37 +0900)]
wasapi2: Implement default audio channel mask
Some capture devices might not provide channel mask value which will
result in capturing failure because of unknown channel mask in case
that device generates more than 2 channels. Although it might not
be correct, we can assume channel mask with the given number of channels.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2177>
Seungha Yang [Tue, 20 Apr 2021 09:40:40 +0000 (18:40 +0900)]
wasapi2clinet: Simplify set caps
Don't need to iterate all structure to set identical values
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2177>
Seungha Yang [Tue, 20 Apr 2021 09:48:18 +0000 (18:48 +0900)]
wasapi2client: Run gst-indent
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2177>
Olivier Crête [Tue, 13 Apr 2021 21:35:58 +0000 (17:35 -0400)]
webrtcbin test: Don't fail if data channel is created
In tests that voluntarily create a data channel.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2168>
Olivier Crête [Mon, 19 Apr 2021 23:06:50 +0000 (19:06 -0400)]
webrtcbin: Filter caps isn't fixed
Fix an assertion because the filter paramter passed to
gst_caps_is_equal_fixed() wasn't fixed. So use the regular
gst_caps_is_equal() instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2175>
Seungha Yang [Mon, 19 Apr 2021 17:04:03 +0000 (02:04 +0900)]
d3d11: Update plugin doc cache
Updating for removed d3d11videosink wrapper bin and the change of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2113
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2169>
Seungha Yang [Sat, 17 Apr 2021 11:37:13 +0000 (20:37 +0900)]
d3d11: Remove d3d11videosink wrapper bin
Drop d3d11videosink wrapper bin and handle texture upload
in d3d11videosink.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2169>
Philippe Normand [Sun, 18 Apr 2021 12:49:59 +0000 (13:49 +0100)]
webrtcdsp: Propagate VAD to audio level meta
Whenever the voice activity changed on the stream, update or create an
AudioLevelMeta and associate it to the corresponding buffer.
Fixes #1073
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2170>
Sebastian Dröge [Mon, 19 Apr 2021 10:06:23 +0000 (13:06 +0300)]
cccombiner: Use correct enum when registering the max-scheduled property
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2171>
Thibault Saunier [Thu, 15 Apr 2021 18:06:59 +0000 (14:06 -0400)]
wpe: Remove code targeting WebKit < 2.24
We already depend on wk >= 2.24
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2165>
Thibault Saunier [Thu, 15 Apr 2021 17:28:42 +0000 (13:28 -0400)]
wpe: Make threaded view singleton creation thread safe
It was leading to interesting failures.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2165>
Seungha Yang [Wed, 14 Apr 2021 15:02:55 +0000 (00:02 +0900)]
d3d11: pluginutils: Fix wrong gst_memory_unmap() on _map() failure
It was obvious typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2164>
Doug Nazar [Tue, 13 Apr 2021 21:15:22 +0000 (17:15 -0400)]
tests/avtp: increase timeout of test_depayloader_fragmented_big
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2160>
Doug Nazar [Wed, 14 Apr 2021 05:59:23 +0000 (01:59 -0400)]
check: fix dash_mpdparser_check_mpd_client_set_methods test.
Setting guint64 valist properties without type specifier fails
on 32bit archs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2161>
Doug Nazar [Tue, 13 Apr 2021 20:34:15 +0000 (16:34 -0400)]
line21enc: fix remove-caption-meta property test
It's possible for the same address to be allocated to the decoded
metadata. Switch test to actual detect if it was removed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2159>
Doug Nazar [Tue, 13 Apr 2021 10:40:43 +0000 (06:40 -0400)]
tests: fix shm test deadlock
Stopping the consumer first would occasionally allow the producer
to fill the shm segment causing it to block in send() and unable
to be stopped.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2158>
Doug Nazar [Tue, 13 Apr 2021 09:54:37 +0000 (05:54 -0400)]
check: Fix test dash_mpdparser_xlink_period
Test used http://404/ERROR/XML.period as an invalid url. Curl now
interprets that as an 32bit int and tries an actual connect which
timesout. Use .invalid as an IANA reserved domain for invalid DNS.
curl -v http://404/ERROR/XML.period
* Trying 0.0.1.148:80...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2157>
He Junyan [Tue, 13 Apr 2021 07:42:09 +0000 (15:42 +0800)]
va: allocator: Fix an unmap typo in _va_copy.
No need to unmap the the src memory when failing to allocate the
dst mem. It has not been mapped yet.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2156>
Haihao Xiang [Tue, 6 Apr 2021 04:03:32 +0000 (12:03 +0800)]
msdk: don't fall back to the default device
Ohterwise when user set a wrong device, the warning message doesn't get
printed if user doesn't set a right debug level in the environment, this
behavior might mislead user that the wrong device is being used.
This fixed https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1567
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2138>
Olivier Crête [Mon, 12 Apr 2021 21:54:31 +0000 (17:54 -0400)]
webrtcbin: Simplify answer_caps intersection code a little
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Mon, 12 Apr 2021 19:35:41 +0000 (15:35 -0400)]
webrtcbin test: Wait for set-local-desc & set-remote-desc to continue
To avoid racing betwen the SDPs being set and the next step of the
test, let's wait for setting the SDP both locally and remotely to succeed.
of the test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Thu, 1 Apr 2021 18:51:30 +0000 (14:51 -0400)]
webrtcbin: Move GstPromise reply to operation framework
This makes it possible to reply to all promises in a consistent way
without having to do a unlock/relock that is always risky.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Thu, 1 Apr 2021 18:41:11 +0000 (14:41 -0400)]
webrtcbin: Make sure PC_LOCK is release when replying to promise
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Wed, 31 Mar 2021 15:56:10 +0000 (11:56 -0400)]
webrtcbin: Take PC lock around all entry points
All of those action signals change the internal state, so
protect it by using the PC_LOCK
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Wed, 31 Mar 2021 15:49:36 +0000 (11:49 -0400)]
webrtcbin: Take PC_LOCK when requesting new pad
This is needed to avoid having the state change under us.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Wed, 31 Mar 2021 15:41:45 +0000 (11:41 -0400)]
webrtcbin test: Add for the case where a second m-line is renegotiated
This is for the case where there answerer forces a specific media type
for a m-line, but he origin offer only has the other media type. In this
case, we will create a second transceiver on receiving the offer and add
the desired media type using renegotiation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
Olivier Crête [Wed, 31 Mar 2021 15:40:28 +0000 (11:40 -0400)]
webrtcbin: Ensure that query caps method returns valid caps
This means rejecting any caps that aren't fixed. Also, use a filter
that will create unfixed caps if the other side just returns ANY.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2104>
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>