Seungha Yang [Thu, 10 Jun 2021 14:35:38 +0000 (23:35 +0900)]
d3d11decoder: Don't print error log when no DPB texture is available
... but we are flushing. The condition is quite expected situation
when pipeline is in the middle of seeking operation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2320>
Yinhang Liu [Sun, 23 May 2021 10:17:38 +0000 (18:17 +0800)]
msdkenc: add extbrc support in ext-coding-props property
The SDK can support external bitrate control [1], so add extbrc
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/2139>
Yinhang Liu [Sun, 23 May 2021 10:13:25 +0000 (18:13 +0800)]
msdkenc: add ext-coding-props for external coding options
This property supports passing multiple parameters using GstStructure.
Example usage:
ext-coding-props="props,key0=value0,key1=value1,..."
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2139>
He Junyan [Sat, 5 Jun 2021 13:59:50 +0000 (21:59 +0800)]
codecs: Fix the H265 poc out of order warning.
We always get a warning such as:
h265decoder gsth265decoder.c:1432:gst_h265_decoder_do_output_picture: \
<vah265dec0> Outputting out of order 255 -> 0, likely a broken stream
in H265 decoder.
The problem is caused because we fail to reset the last_output_poc when
we get IDR and BLA. The incoming IDR and BLA frame already bump all the
frames in the DPB, but we forget to reset the last_output_poc, which
make the POC out of order and generate the warning all the time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2294>
Seungha Yang [Wed, 9 Jun 2021 16:09:44 +0000 (01:09 +0900)]
wasapi2sink: Fix ringbuffer object leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2315>
Seungha Yang [Wed, 9 Jun 2021 15:24:24 +0000 (00:24 +0900)]
wasapi2ringbuffer: Implement GstAudioRingBuffer::pause()
WASAPI doesn't support PAUSE so it's not different from Stop().
When pipeline is in paused state, we don't need to waste CPU resource
for feeding silent buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2315>
Seungha Yang [Sun, 6 Jun 2021 16:49:26 +0000 (01:49 +0900)]
d3d11memory: Implement GstAllocator::mem_copy method
There are a few places which require deep copy
(basesink on drain for example). Also this implementation can be
useful for future use case.
One probable future use case is that copying DPB texture to
another texture for in-place transform since our DPB texture is never
writable, and therefore copying is unavoidable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2308>
Seungha Yang [Tue, 8 Jun 2021 12:35:20 +0000 (21:35 +0900)]
wasapi2src: Add support for loopback recording
... and add various device error handling.
This loopback implementation is functionally identical to that of wasapisrc.
When it's enabled, wasapi2src will read data from render device instead of
capture device.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2311>
Seungha Yang [Mon, 10 May 2021 11:45:28 +0000 (20:45 +0900)]
wasapi2: Rewrite plugin and implement audioringbuffer subclass
... based on MediaFoundation work queue API.
By this commit, wasapi2 plugin will make use of pull mode scheduling
with audioringbuffer subclass.
There are several drawbacks of audiosrc/audiosink subclassing
(not audiobasesrc/audiobasesink) for WASAPI API, which are:
* audiosrc/audiosink classes try to set high priority to
read/write thread via MMCSS (Multimedia Class Scheduler Service)
but it's not allowed in case of UWP application.
In order to use MMCSS in UWP, application should use MediaFoundation
work queue indirectly.
Since audiosrc/audiosink scheduling model is not compatible with
MediaFoundation's work queue model, audioringbuffer subclassing
is required.
* WASAPI capture device might report larger packet size than expected
(i.e., larger frames we can read than expected frame size per period).
Meanwhile, in any case, application should drain all packets at that moment.
In order to handle the case, wasapi/wasapi2 plugins were making use of
GstAdapter which is obviously sub-optimal because it requires additional
memory allocation and copy.
By implementing audioringbuffer subclassing, we can avoid such inefficiency.
In this commit, all the device read/write operations will be moved
to newly implemented wasapi2ringbuffer class and
existing wasapi2client class will take care of device enumeration
and activation parts only.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2306>
Seungha Yang [Sun, 6 Jun 2021 08:32:59 +0000 (17:32 +0900)]
wasapi2: Use AUDCLNT_STREAMFLAGS_NOPERSIST flag
... so that we can disable persistence of our mute/volume status
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2306>
Seungha Yang [Sun, 6 Jun 2021 08:28:56 +0000 (17:28 +0900)]
wasapi2src: Fix doc typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2306>
Thibault Saunier [Wed, 26 May 2021 04:12:59 +0000 (00:12 -0400)]
wpe: Rename `undeserializable_type` to `not_deserializable_type`
Making it more readable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
Thibault Saunier [Wed, 26 May 2021 03:58:27 +0000 (23:58 -0400)]
wpe: Make forwarded messages layout more like GstBinForwaded messages
Making it look more like how we do this kind of things in other places.
See: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252#note_927653
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
Thibault Saunier [Fri, 21 May 2021 14:52:01 +0000 (10:52 -0400)]
wpe: Make wpesrc!video pad an always pad
There should always be a `video` pad no matter what.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
Thibault Saunier [Fri, 21 May 2021 14:31:53 +0000 (10:31 -0400)]
wpe: Remove unused env var
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
Thibault Saunier [Fri, 21 May 2021 14:31:37 +0000 (10:31 -0400)]
wpe: Fix atomic usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
Thibault Saunier [Fri, 21 May 2021 14:29:11 +0000 (10:29 -0400)]
wpe: Add a note able requiring tracing subsystem for message forwarding
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
Thibault Saunier [Fri, 21 May 2021 14:18:21 +0000 (10:18 -0400)]
wpe: Fix check on whether MEMFD_CREATE is available
The ordering of the ifdef was wrong
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
Thibault Saunier [Fri, 21 May 2021 14:13:01 +0000 (10:13 -0400)]
wpe: Plug a leak
We were freeing after returning
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
Thibault Saunier [Fri, 21 May 2021 13:54:33 +0000 (09:54 -0400)]
Revert "wpe: Properly respect LIBGL_ALWAYS_SOFTWARE"
This causes issues I didn't see:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252#note_927633
Let's just tell people to use capsfilter to force software rendering in
`wpesrc` for now.
The intent was to allow forcing it easily in playbin2 for the CI, but
we will do it some other way and see when time comes.
This reverts commit
9415106b029e5469ca28d882dc46ecc38786d4c9.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2273>
Nicolas Dufresne [Fri, 28 May 2021 19:18:53 +0000 (15:18 -0400)]
debugutils: Introduce videocodectestsink
This is a video specific sink used to test video CODEC conformance. This is similar
to a combination of filesink and testsink, but will skip over any type of
padding that GStreamer Video library introduces. This is needed in order to obtain the
correct checksum or raw yuv data.
This element currently support writing back non-padded raw I420 through the
location property and will calculate an MD5 and post it as an element message
of type conformance/checksum. More output format or checksum type could be
added in the future as needed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2287>
Seungha Yang [Thu, 3 Jun 2021 16:44:47 +0000 (01:44 +0900)]
vkinstance: Don't abort in case that system has no available vulkan device
Specification doesn't have restriction that returned
pPhysicalDeviceCount value must be non-zero
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2304>
Edward Hervey [Thu, 3 Jun 2021 09:24:53 +0000 (11:24 +0200)]
tsdemux: Clear all streams when rewinding
This avoids sending out partial invalid data downstream which could cause
decoders (ex: `dvdlpmdec`) to error out.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2301>
Seungha Yang [Fri, 28 May 2021 16:48:15 +0000 (01:48 +0900)]
d3d11: Add support for YV12 and NV21 formats
Handle UV swapped 4:2:0 8bits formats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2290>
Seungha Yang [Thu, 3 Jun 2021 09:28:26 +0000 (18:28 +0900)]
d3d11window_win32: Ensure closing internal HWND from window thread
Window handle must be closed from its own message thread
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2302>
Nicolas Dufresne [Thu, 3 Jun 2021 14:31:39 +0000 (10:31 -0400)]
doc: Update cache after pixel format reorder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2303>
Yinhang Liu [Thu, 3 Jun 2021 02:03:19 +0000 (10:03 +0800)]
doc: add the msdk elements
Supported elements:
msdkav1dec, msdkh264dec, msdkh264enc, msdkh265dec, msdkh265enc,
msdkmjpegdec, msdkmjpegenc, msdkmpeg2dec, msdkmpeg2enc, msdkvc1dec,
msdkvp8dec, msdkvp9dec, msdkvp9enc, msdkvpp.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2296>
Nicolas Dufresne [Wed, 2 Jun 2021 18:17:13 +0000 (14:17 -0400)]
waylandsink: Fix for missing initial configure
We were doing our initial "empty" commit on the subsurface instead of the
toplevel surface. As an incidence, we should not have received a configure
event ever, not just on mutter. This fixes the following warning when using
mutter compositor (aka gnome-shell):
waylandsink wlwindow.c:304:gst_wl_window_new_toplevel: The compositor did not send configure event.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2299>
Nicolas Dufresne [Wed, 2 Jun 2021 15:26:41 +0000 (11:26 -0400)]
test: camerabin: Fix buffer size calculation
We were assunming that GStreamer size for RGB (24bit packed) data was width x
height x 3, but GStreamer defaults to specific alignment. Use GstVideoInfo API
in order to obtain the buffer size.
This fixes failure seen when trying to merge: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/998
which make us negoaite 1x1 instead of 16x16 in this test.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2297>
He Junyan [Mon, 31 May 2021 09:51:58 +0000 (17:51 +0800)]
codecs: Integrate H265 DPB full check into need_bump().
The current DPB check of H265 is not very correct. The current frame
is already in the DPB when we check whether the DPB is full.
For example, the DPB max size is 16 and we have 15 ref frames in the
DPB, so the gst_h265_dpb_delete_unused() cleans no one, and then plus
the current frame, the DPB is 16. This causes an error return, but in
fact, the stream is correct.
We now integrate the DPB full check into the need_bump() function.
We add the correct frame into to DPB and then check whether the picture
num is bigger than max_num_pics of DPB(which means there is no room for
the current picture). If true, we bump the DPB immediately.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2291>
Tim-Philipp Müller [Tue, 1 Jun 2021 14:28:57 +0000 (15:28 +0100)]
Back to development
Tim-Philipp Müller [Mon, 31 May 2021 23:14:22 +0000 (00:14 +0100)]
Release 1.19.1
Daniel Almeida [Thu, 8 Apr 2021 13:11:52 +0000 (10:11 -0300)]
v4l2codecs: gstv4l2codecsvp8dec: implement a render delay
The v4l2 backend support delayed output for performance reasons.
It is then possible to use render delays to queue multiple requests
simultaneously, thus increasing performance.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2150>
Daniel Almeida [Wed, 7 Apr 2021 21:24:27 +0000 (18:24 -0300)]
codecs: gstvp8decoder: add support for render delay
Some decoding APIs support delayed output for performance reasons.
One example would be to request decoding for multiple frames and
then query for the oldest frame in the output queue.
This also increases throughput for transcoding and improves seek
performance when supported by the underlying backend.
Introduce support in the vp8 base class, so that backends that
support render delays can actually implement it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2150>
Philippe Normand [Mon, 17 May 2021 09:49:41 +0000 (10:49 +0100)]
webrtcbin: Stop transceivers update after first SDP error
When invalid SDP is supplied, _update_transceiver_from_sdp_media() sets the
GError, so it is invalid to continue any further SDP processing, we have to exit
early when the first error is raised.
Fixes #1595
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2254>
Seungha Yang [Fri, 28 May 2021 14:21:19 +0000 (23:21 +0900)]
d3d11: Suppress some warning logs
We uses gst_d3d11_device_new() for enumerating device which can
fail for some reason. Don't print warning log for the case.
And decoding capability check is the same case as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2286>
Roman Sivriver [Fri, 28 May 2021 21:05:02 +0000 (17:05 -0400)]
hlssink2: Initialize debug category to prevent an assert with `fatal-warnings`
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2288>
Seungha Yang [Fri, 21 May 2021 11:02:53 +0000 (20:02 +0900)]
d3d11compositor: Reuse converter on alpha update
... instead of creating converter object
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2276>
Seungha Yang [Mon, 17 May 2021 16:24:29 +0000 (01:24 +0900)]
d3d11converter: Introduce config to be extensible
Add a config argument like that of GstVideoConverter so that
we can add more options without modifying existing methods
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2276>
Seungha Yang [Fri, 21 May 2021 12:30:42 +0000 (21:30 +0900)]
d3d11shader: Don't hold state object in GstD3D11Quad
We might want to update state object
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2276>
Nicolas Dufresne [Thu, 27 May 2021 20:22:42 +0000 (16:22 -0400)]
v4lcodecs: Validate src formats
This add src format validation, this avoid registering element for
drivers we don't support any of their src formats. This also special
case the AlphaDecodeBin wrapper, as we know that alphacombine element
only support I420 and NV12 for now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2272>
Daniel Almeida [Sat, 22 May 2021 19:29:09 +0000 (16:29 -0300)]
v4l2codecs: add wrappers for alpha decode
codecalpha is a new plugin introduced to support VP8/VP9 alpha as
defined in the WebM and Matroska specifications. It splits the stream
into two streams, one for the alpha and one for the actual content,
then it decodes them separately with vpxdec and finally combine the
results as A420 or AV12 (i.e. YUV + an extra alpha plane).
The workflow above is setup by means of a bin, gstcodecalphabin.
This patch simulates the same workflow into the v4l2codecs namespace,
thus using the new v4l2 stateless decoders for hardware acceleration.
This is so we can register the new alpha decode elements only if the
hardware produces formats we support, i.e. I420 or NV12 for now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2272>
Daniel Almeida [Wed, 19 May 2021 21:45:19 +0000 (18:45 -0300)]
codecalpha: alphacombine: add support for NV12/AV12
Alpha combine works by appending the GstMemory for the alpha channel
to the GstBuffer containing I420, thereby pushing A420 on its src pad.
Add support for the same workflow for NV12, thereby producing the
recently introduced AV12 format (NV12 + Alpha).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2277>
Seungha Yang [Tue, 25 May 2021 11:21:34 +0000 (20:21 +0900)]
interlace: Don't set field-order field for progressive caps
That would cause negotiation issue
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2282>
Seungha Yang [Tue, 25 May 2021 10:47:28 +0000 (19:47 +0900)]
interlace: Drop framerate from query caps of sinkpad
Query caps should return caps which represent the element can accept,
not resulting format.
Fixing negotiation error with
gst-launch-1.0 videotestsrc ! video/x-raw,framerate=25/1 ! interlace field-pattern=0 ! fakesink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2282>
Seungha Yang [Wed, 26 May 2021 07:37:06 +0000 (16:37 +0900)]
d3d11compositor: Fix caps update handling
New caps is applied only when previous buffer is consumed if any.
So, the lastest given caps might not be corresponding to the current buffer
to be handled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2284>
Víctor Manuel Jáquez Leal [Thu, 20 May 2021 11:47:11 +0000 (13:47 +0200)]
libs: va: display: Handle auto clean up macros.
Add G_DEFINE_AUTOPTR_CLEANUP_FUNC macro for display classes, so auto
pointers are possible to users.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2269>
He Junyan [Mon, 17 May 2021 11:06:34 +0000 (19:06 +0800)]
va: h265dec: Add current picture into reference list for SCC.
The current picture is not in the DPB, so we need to add it manually
to the reference list when SCC is enabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2255>
He Junyan [Fri, 21 May 2021 15:47:14 +0000 (23:47 +0800)]
va: h265dec: Set Screen Content extension (SCC) for picture parameters.
We already declare the support of HEVC screen content extension profiles
in the profile mapping list, but we fail to generate the correct VA picture
parameters buffers. This may cause the GPU hang.
We need to fill the buffer of VAPictureParameterBufferHEVCExtension correctly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2255>
He Junyan [Mon, 17 May 2021 09:47:07 +0000 (17:47 +0800)]
va: h265dec: Use get_profile_from_sps() to recognize the profile.
The function of gst_h265_get_profile_from_sps() is better than the
function gst_h265_profile_tier_level_get_profile() when we recognize
the profile of the stream, becaue it considers the compatibility.
It is also used by h265parse to recognize the profile. So it is
better to keep the same behaviour with the parse and other decoders.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2255>
He Junyan [Fri, 21 May 2021 15:21:12 +0000 (23:21 +0800)]
va: h265dec: Set range extension for picture and slice parameters.
We already declare the support of HEVC range extension profiles in
the profile mapping list, but we fail to generate the correct VA
picture and slice parameters buffers. This may cause the GPU hang.
We need to fill the buffer of VAPictureParameterBufferHEVCExtension
and VASliceParameterBufferHEVCExtension correctly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2255>
Víctor Manuel Jáquez Leal [Mon, 24 May 2021 16:18:52 +0000 (18:18 +0200)]
va: h265dec: Use picture and slide extension parameters.
This is transitional commit to later implement extended and screen
profiles.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2255>
Tim-Philipp Müller [Mon, 24 May 2021 17:34:25 +0000 (18:34 +0100)]
Use gst_buffer_new_memdup()
Update for function rename in core.
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/827
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2281>
Philippe Normand [Sat, 22 May 2021 17:05:18 +0000 (18:05 +0100)]
wpe: Bump wpebackend-fdo version requirement to 1.8
Debian bullseye has this version already, and this allows us to get rid of many
ifdefs. The mouse scroll handling is actually functional now as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2278>
Tim-Philipp Müller [Sun, 23 May 2021 15:10:53 +0000 (16:10 +0100)]
Use new gst_buffer_new_copy()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2279>
Daniel Almeida [Fri, 21 May 2021 18:18:21 +0000 (15:18 -0300)]
doc: update gst_plugins_cache.json
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1152>
Jakub Adam [Fri, 14 May 2021 18:22:26 +0000 (20:22 +0200)]
dxgiscreencapsrc: renegotiate caps on resolution change
When desktop gets resized, recreate the textures and renegotiate the
source caps with the updated video dimensions.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2249>
He Junyan [Tue, 18 May 2021 06:09:01 +0000 (14:09 +0800)]
va: h265dec: Set LastSliceOfPic for multi sliced frames.
VA-API HEVC decoding needs to known which is the last slice of a
picture, but slices are processed sequencially, so we know the
last slice until all the slices are already pushed into the
VABuffer array.
In order to mark the last slice, they are pushed into the
VABuffer array with a delay of one slice: the first slice is
hold, and when the second slice come, the first one is pushed
while holding the second, and so on. Finally, at end_picture(),
the last slice is marked and pushed into the array.
Co-author: Victor Jaquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2246>
Seungha Yang [Thu, 20 May 2021 08:03:15 +0000 (17:03 +0900)]
d3d11desktopdupsrc: Add support for desktop size/rotation mode change
Re-negotiates with updated size on desktop size
(i.e., resolution, scaling factor), and rotation mode change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2268>
Jan Alexander Steffens (heftig) [Thu, 20 May 2021 08:09:57 +0000 (10:09 +0200)]
mpegtsmux: Fixup program array indices after stream removal
Each stream stores the `program_array_index` of its position in its
program's `streams` array. When we remove a stream from this array, we
need to correct the `program_array_index` of all streams that were
backshifted by the removal.
Also extract the removal into a new function and add some more safety
checks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2266>
Seungha Yang [Thu, 20 May 2021 09:49:01 +0000 (18:49 +0900)]
d3d11memory: Protect map and unmap with device lock
We should lock memory object with gst_d3d11_device_lock() first
then GST_D3D11_MEMORY_LOCK() need to be used.
One observed deadlock case is that:
- Thread A takes d3d11 device lock
- At the same time, Thread B tries CPU map to d3d11memory which requires
d3d11 device lock as well, but it's already taken by Thread A.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2267>
Seungha Yang [Thu, 20 May 2021 09:38:17 +0000 (18:38 +0900)]
d3d11memory: Add trace log for debugging locking thread
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2267>
Seungha Yang [Thu, 20 May 2021 06:39:39 +0000 (15:39 +0900)]
audiolatency: Drop incoming downstream stick events
stream-start, caps, and segment events will be pushed by internal
audiotestsrc element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2265>
Seungha Yang [Thu, 20 May 2021 06:28:13 +0000 (15:28 +0900)]
audiolatency: Use live mode audiotestsrc
Expected use case of audiolatency element is that mimic audio capture
device which is most likely live source. So audiolatency element
should use live mode as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2265>
Thibault Saunier [Wed, 19 May 2021 22:48:29 +0000 (18:48 -0400)]
wpe: Bump WPE dependency to 2.28
The new audio feature depends on WPE 2.28 so we should just bump our
requirement to that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2264>
Seungha Yang [Wed, 19 May 2021 15:51:08 +0000 (00:51 +0900)]
d3d11compositor: Fix missing D3D11 prefix
Fix typo, no functional change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2262>
Thibault Saunier [Tue, 18 May 2021 21:49:23 +0000 (17:49 -0400)]
wpe: Update doc cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
Thibault Saunier [Thu, 22 Apr 2021 03:14:13 +0000 (23:14 -0400)]
wpe: Properly respect LIBGL_ALWAYS_SOFTWARE
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
Thibault Saunier [Sun, 2 May 2021 01:48:23 +0000 (21:48 -0400)]
wpe: Relay messages from WPE internal pipelines
It is based on a tracer as it allows us to very easily get
every message that are posted on any bus inside the process.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
Thibault Saunier [Tue, 20 Apr 2021 00:46:46 +0000 (20:46 -0400)]
wpe: Base wpe audio implementation on a web extension
This makes the implementation simpler and enable us to map
webviews and audio stream much more easily
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
Philippe Normand [Sun, 8 Dec 2019 13:16:38 +0000 (13:16 +0000)]
wpe: Enable WebAudio
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
Philippe Normand [Sun, 8 Dec 2019 11:49:20 +0000 (11:49 +0000)]
wpe: Implement audio support
The wpesrc bin now exposes "sometimes" audio src pads, one for every PCM audio
stream created by WPEWebKit.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
Thibault Saunier [Wed, 10 Mar 2021 20:27:52 +0000 (17:27 -0300)]
wpe: Move wpesrc to wpevideosrc and add a wrapper bin `wpesrc`
Currently the bin contains a single element but we are going
to implement audio support and expose extra pads for audio
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252>
Doug Nazar [Tue, 18 May 2021 04:43:23 +0000 (00:43 -0400)]
sctp: Ensure pad is still a child of element before removal
During pipeline shutdown there are several competing paths to remove
pads. Avoids tests failing due to:
Unexpected critical/warning: Padname '':sink_1 does not belong to element sctpenc1 when removing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2256>
Doug Nazar [Mon, 17 May 2021 13:13:28 +0000 (09:13 -0400)]
sctp: Fix race of pad removal during reset/stop
Both reset & stop remove existing pads. Can result in warning from
gst_element_remove_pad().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2256>
Doug Nazar [Mon, 17 May 2021 13:11:54 +0000 (09:11 -0400)]
webrtcbin: Fix race bringing up sctp data channel
Notifying before pads are linked can cause the stream to fail to start.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2256>
Matthew Waters [Thu, 13 May 2021 11:11:30 +0000 (21:11 +1000)]
webrtcbin: advertise harder the rtcp-mux-only requirement
And ignore rtcp ICE candidates
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2239>
Sid Sethupathi [Fri, 14 May 2021 15:47:05 +0000 (10:47 -0500)]
webrtcbin: update default jb latency docs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2242>
Doug Nazar [Tue, 18 May 2021 20:38:04 +0000 (16:38 -0400)]
dtls: Let sender know when we are flushing
Prevents endless loop during shutdown where we end up sending 0 bytes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2229>
Doug Nazar [Tue, 18 May 2021 20:31:47 +0000 (16:31 -0400)]
dtls: Add ability to set custom GstFlowReturn on callback error
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2229>
Olivier Crête [Wed, 19 May 2021 00:26:38 +0000 (20:26 -0400)]
webrtc: Remove reundundant context object in transportsendbin
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2260>
Olivier Crête [Wed, 19 May 2021 00:18:28 +0000 (20:18 -0400)]
webrtc: Wait until ICE is connected to start DTLS handshake process
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2260>
Olivier Crête [Tue, 18 May 2021 22:29:16 +0000 (18:29 -0400)]
webrtcbin: Remove pad probe on nicesink
This pad probe is no longer necessary, libnice now drops
all buffers before the stream is connected. This pad problem
also caused deadlocks in some situations.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2260>
Olivier Crête [Tue, 18 May 2021 00:59:19 +0000 (20:59 -0400)]
kate: Initialize debug categories
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2258>
Víctor Manuel Jáquez Leal [Thu, 13 May 2021 08:27:49 +0000 (10:27 +0200)]
libs: va: Documentation and annotations.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2196>
He Junyan [Fri, 7 May 2021 09:05:38 +0000 (17:05 +0800)]
examples: va: Update the VA examples because of the new va lib.
Because we introduce the new va lib, the va examples need to include
new header files and add more library linkage.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2196>
Víctor Manuel Jáquez Leal [Thu, 13 May 2021 16:46:21 +0000 (18:46 +0200)]
libs: va: display_wrapper: Use gpointer for VADisplay.
In order to be coherent along all the implementation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2196>
He Junyan [Thu, 6 May 2021 10:23:23 +0000 (18:23 +0800)]
libs: va: Move the VA common logic as a lib.
The VA acceleration now has more usages in linux-like platforms,
such as the MSDK. The different plugins based on the VA acceleration
need to share some common logic and types. We now move the display
related functions and types into a common va lib.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2196>
mkba [Mon, 17 May 2021 03:42:07 +0000 (11:42 +0800)]
msdk: add profile main-still-picture for hevc encoder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2253>
Seungha Yang [Fri, 14 May 2021 15:39:57 +0000 (00:39 +0900)]
interlace: Fix too small buffer size error
Even though input/output resolutions are identical there, default
buffer size of progressive and interleaved formats could be different
because we are rounding up height of all plane of interlaced frame
to be multiple of two.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2244>
Haihao Xiang [Mon, 1 Mar 2021 04:09:43 +0000 (12:09 +0800)]
msdk: use MFXJoinSession() to join the parent and child sessions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
Haihao Xiang [Thu, 4 Feb 2021 07:27:13 +0000 (15:27 +0800)]
msdk: use a new method to create mfx session when using oneVPL dispatcher
In oneVPL, MFXLoad() and MFXCreateSession() are required to create a
workable mfx session[1]
[1] https://spec.oneapi.com/versions/latest/elements/oneVPL/source/programming_guide/VPL_prg_session.html#onevpl-dispatcher
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
Haihao Xiang [Thu, 18 Feb 2021 05:38:25 +0000 (13:38 +0800)]
msdk: allow user build this plugin against MFX version 2.2+ (oneVPL)
Intel oneVPL SDK (oneVPL) is a successor to Intel Media SDK (MSDK)[1].
User may use -Dmfx_api=MSDK or -Dmfx_api=oneVPL to specify the required
SDK when building this plugin. If the SDK is not specified, meson will
try MSDK firstly, then oneVPL if MSDK is not available
Version 2.2+ is required in this patch because pkg-config file was not
provided officially before version 2.2
[1]https://spec.oneapi.com/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
Haihao Xiang [Fri, 14 May 2021 03:56:49 +0000 (11:56 +0800)]
msdkvp9dec: do not include mfxvp9.h
The VP9 related definitions in mfxvp9.h are available under the
condition of 'MFX_VERSION >= MFX_VERSION_NEXT', which implies that these
definitions are never used in a public release.
This is in preparation for oneVPL support because mfxvp9.h was
removed from oneVPL
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
Haihao Xiang [Tue, 4 Aug 2020 04:53:35 +0000 (12:53 +0800)]
msdk: don't load user plugins for MFX version 2.0+
MFX version 2.0+ no longer supports user plugins, please refer to the
links for details
https://spec.oneapi.com/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
https://github.com/oneapi-src/oneVPL
This is in preparation for oneVPL support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
Haihao Xiang [Tue, 4 Aug 2020 04:55:35 +0000 (12:55 +0800)]
msdk: exclude the audio code for MFX version 2.0+
MFX version 2.0+ no longer supports audio functions, please refer to the
links below for details
https://spec.oneapi.com/versions/latest/elements/oneVPL/source/appendix/VPL_intel_media_sdk.html#msdk-full-name-feature-removals
https://github.com/oneapi-src/oneVPL
This is in preparation for oneVPL support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1503>
Nicolas Dufresne [Fri, 14 May 2021 18:08:17 +0000 (14:08 -0400)]
alphacombine: Ignore all events coming from the alpha_pad
As per usage of this element, everything from this pad is a
duplicate. Instead of implemented needless aggregation, simply
drop all events from this pad and let the one from the main stream
passthrough. Also stop proxying some queries from the alpha pad_too.
This fixes racy test failure:
- validate.file.playback.scrub_forward_seeking.opus_vp9-alpha_webm
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2247>
Nicolas Dufresne [Fri, 14 May 2021 18:05:59 +0000 (14:05 -0400)]
codecalphademux: Do not set a GstFlowReturn from a boolean
This was a small overlook, gst_pad_send_event() returns a boolean,
so setting it into ret could confuse the flow combiner. Though,
it didn't bug, since both 0 and 1 are success (though 1 being
undefined).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2247>
Nicolas Dufresne [Fri, 14 May 2021 18:04:00 +0000 (14:04 -0400)]
codecalphademux: Remove eos flow return workaround
It turns out that downstream returning OK after EOS is a bug in
multiqueue. As we moved to queue, we no longer have this issue.
Let's keep the code clean and just assuming that downstream will
keep returning EOS and allow convergence of flow.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2247>
Olivier Crête [Thu, 13 May 2021 19:18:34 +0000 (15:18 -0400)]
openh264: Don't use GOnce for ABI check
It turns out the value used for g_once_* APIs can't be
zero. And this is a very cheap check, so let's just do it every time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2240>