Sebastian Dröge [Sun, 12 Jan 2020 14:25:01 +0000 (16:25 +0200)]
webrtc/dtlstransport: Proxy DTLS connection state from the DTLS elements to the transport
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/758
Sebastian Dröge [Sun, 12 Jan 2020 14:18:09 +0000 (16:18 +0200)]
dtls: Keep track of the connection state and signal it through all the layers
This allows the application to keep track of the underlying DTLS
connection state and act accordingly.
Sebastian Dröge [Sun, 12 Jan 2020 11:56:00 +0000 (13:56 +0200)]
dtls: Handle errors/close_notify at all steps and propagate through the layers properly
Previously we simply logged errors but never reported them to elements
or even to the user. Fatal errors are now properly reported.
Additionally proper connection closing is implemented based on EOS:
- dtlsenc: EOS will cause close_notify to be sent to the peer and only
if the peer also sent back close_notify we will forward the
EOS event.
- dtlsdec: EOS will be forwarded normally, this only means that the
unterlying transport was closed. On receiving a DTLS packet
containing close_notify, return EOS and send EOS downstream.
Sebastian Dröge [Sun, 12 Jan 2020 10:48:55 +0000 (12:48 +0200)]
dtls: Propagate write errors backwards through dtlsenc/dtlsconnection
Sebastian Dröge [Sun, 12 Jan 2020 09:24:15 +0000 (11:24 +0200)]
dtls: Use a plain function pointer instead of a GClosure for the send callback
There's not point in using GClosure and going through all the
GValue/libffi infrastructure for each DTLS packet.
Sebastian Dröge [Thu, 9 Jan 2020 10:32:24 +0000 (12:32 +0200)]
webrtcbin: Don't consider transceivers without mid as inactive during ICE gathering state updates
We don't have any mid before parsing the SDP, which happens after we
handled the SDP answer and that usually happens long after ICE candidate
gathering is finished.
Without this all transceivers are considered inactive and as such ICE
gathering is for active transceiver was considered complete from the
very beginning.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1126
Sebastian Dröge [Thu, 9 Jan 2020 10:27:31 +0000 (12:27 +0200)]
webrtcbin: Don't consider RTP receivers stopped
We don't support stopping RTP receivers currently so let's not consider
them all stopped all the time. This fixes some of the ICE/DTLS state
change handling and specifically fixes the ICE gathering state.
Previously the ICE gathering state was immediately going from NEW to
COMPLETE because it considered all transceivers stopped and as such all
activate transceivers were finished gathering ICE candidates.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1126
Sebastian Dröge [Thu, 9 Jan 2020 10:26:41 +0000 (12:26 +0200)]
webrtcbin: Improve logging related to ICE/DTLS state changes
Jan Schmidt [Mon, 30 Dec 2019 15:41:40 +0000 (02:41 +1100)]
yadif: Re-renable MMX asm on x86_64 with meson
The meson build doesn't automatically set HAVE_CPU_* defines
like autotools did, so the yadif plugin was being built without
the MMX assembler support
Jan Schmidt [Sun, 19 Jan 2020 03:50:12 +0000 (14:50 +1100)]
yadif: Only build inline Asm with gcc/clang
Josep Torra [Wed, 6 Nov 2019 12:45:09 +0000 (04:45 -0800)]
msdkdec: align frame list using decoded timestamp
Before this change decoder used the oldest frame in the list to pair it
with the decoded surface. This only works when there's a perfect stream
like HEADERS,SYNCPOINT,DELTA...
When playing RTSP streams we can get imperfect streams like HEADERS,
DELTA,SYNCPOINT,DELTA... In this case decoder drops the frames
between HEADERS and SYNCPOINT which leads into using wrong PTS on
the output frames.
With this change we inject the input PTS into the bitstream and use it
to align the internal frame list with the actually decoded position.
Fixes playback with:
```
gst-launch-1.0 rtspsrc location=... latency=0 drop-on-latency=1 ! ...
```
Seungha Yang [Thu, 28 Nov 2019 12:30:18 +0000 (21:30 +0900)]
nvenc: Query supported minimum resolution
Hard-coded 16x16 resolution is likely to differ from the device's support
in most cases. If we can use NV_ENC_CAPS_WIDTH_MIN and NV_ENC_CAPS_HEIGHT_MIN,
update pad template with returned value.
Seungha Yang [Thu, 28 Nov 2019 11:47:34 +0000 (20:47 +0900)]
nvcodec: Bump SDK header to version 9.1
Update header to query minimum resolution of encoder and to control
the number of reference frame if it's supported
Tim-Philipp Müller [Wed, 18 Dec 2019 18:01:30 +0000 (18:01 +0000)]
mxfdemux: add support for Apple ProRes
Haihao Xiang [Wed, 27 Nov 2019 04:23:58 +0000 (12:23 +0800)]
examples: add test-roi for gst-msdk
Copied and pasted from gstreamer-vaapi and did a few changes for gst-msdk.
Haihao Xiang [Wed, 27 Nov 2019 07:16:17 +0000 (15:16 +0800)]
msdkdec: support transform_meta virtual method
Allow the base class to copy GstVideoRegionOfInterestMeta data to the
output buffer when calling gst_video_decoder_finish_frame
Haihao Xiang [Wed, 27 Nov 2019 08:00:59 +0000 (16:00 +0800)]
msdkenc: set ROI region for msdk{h264, h265}enc
A reconfig is needed when ROI is changed, otherwise the ROI parameters won't
take effect
Haihao Xiang [Tue, 3 Dec 2019 02:48:21 +0000 (10:48 +0800)]
msdkenc: add set_extra_params virtual method
set_extra_params is added to allow sub class to add extra mfx parameters
for changed input frame or meta data
Haihao Xiang [Thu, 28 Nov 2019 06:54:30 +0000 (14:54 +0800)]
msdkenc: add need_reconfig virtual method
need_reconfig is added to allow sub class requires a reconfig when
the input frame or the MetaData (e.g. GstVideoRegionOfInterestMeta)
attached to the input frame is changed.
Seungha Yang [Mon, 13 Jan 2020 08:20:14 +0000 (17:20 +0900)]
d3d11h265dec: Fix wrong NoRaslOutputFlag setting
... and handle EOS and EOB nals.
Only the first CRA picture should be associated with NoRaslOutputFlag
as the comment in code.
Nirbheek Chauhan [Sun, 12 Jan 2020 02:37:23 +0000 (08:07 +0530)]
pkgconfig: Remove unused substitution in uninstalled.pc.in
`@videolibdir@` isn't used anymore.
Nirbheek Chauhan [Sun, 12 Jan 2020 02:19:47 +0000 (07:49 +0530)]
tests: Fix minor bugs in usage of config.h
Nirbheek Chauhan [Sun, 12 Jan 2020 02:11:34 +0000 (07:41 +0530)]
ipcpipeline: Minimal fixes that allow building with MSVC
Nirbheek Chauhan [Sat, 11 Jan 2020 09:17:13 +0000 (14:47 +0530)]
ipcpipeline: Rework compiler checks
`pipe()` isn't used since
15927b6511bc8304ae144a45c9fbfca88e5dd641,
and `socketpair()` from `#include <sys/socket.h>` is used only in the
examples. In practice, you can use probably also use anything that
allows you to create fd pairs, such as named pipes or anonymous pipes.
We use the cross-platform GstPollFD API in the plugin.
Sebastian Dröge [Mon, 13 Jan 2020 15:10:39 +0000 (17:10 +0200)]
timecodestamper: Add property to set the extra latency to introduce for waiting for LTC timecodes
Default to 150ms instead of 8 frames, which seems to work in the
majority of cases.
Sebastian Dröge [Mon, 13 Jan 2020 10:54:35 +0000 (12:54 +0200)]
timecodestamper: Add some more debug output
Seungha Yang [Sat, 11 Jan 2020 09:24:02 +0000 (18:24 +0900)]
d3d11memory: Always use native DXGI format if device support it
Use consistent memory layout between dxva and other shader use case.
For example, use DXGI_FORMAT_NV12 texture format instead of
two textures with DXGI_FORMAT_R8_UNORM and DXGI_FORMAT_R8G8_UNORM.
Seungha Yang [Fri, 10 Jan 2020 11:44:19 +0000 (20:44 +0900)]
Revert "d3d11: Add support for D3D11_USAGE_DYNAMIC"
This reverts commit
ddd13fc7c061a9873b181d0de32aaf9546e7d0af
Dynamic usage can reduce the number of copy per frame but make
things complicated and the benefit seems to not significant.
Also since we don't provide _map() method for the dynamic usage,
application cannot read buffers which make "last-sample" property
unusable in case of d3d11videosink.
Jan Schmidt [Sun, 12 Jan 2020 15:30:07 +0000 (02:30 +1100)]
WebRTC: Support non-trickle ICE candidates in the SDP
Add any ICE candidates from the SDP before adding pending
trickle ICE candidates to support non-trickle peers
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/678
Seungha Yang [Fri, 10 Jan 2020 15:01:55 +0000 (00:01 +0900)]
d3d11: Don't register decoders if unavailable
DXVA requires a hardware interface but may not be available,
such as in the case of VMs or when the GPU vendor does not provide a decoder interface.
Seungha Yang [Fri, 10 Jan 2020 14:57:15 +0000 (23:57 +0900)]
d3d11decoder: Don't return not initialized object from _new() method
... and change some debug levels since initialization failure might not be fatal.
Shinya Saito [Thu, 22 Aug 2019 07:04:37 +0000 (16:04 +0900)]
waylandsink: Fix xdg_shell fullscreen mode
xdg_shell fullscreen mode doesn't work for committing
xdg_surface without configure acknowledgement.
In addition, we can't set different surface setting from
acknowledged config in this mode.
Josep Torra [Mon, 11 Nov 2019 20:40:07 +0000 (12:40 -0800)]
h264parse: do not push wrong PTS with some raw files
Some raw h264 encoded files trigger the assignment of wrong PTS to buffers
when some SEI data is provided. This change prevents it to happen.
Also ensure this behavior is being tested.
Sebastian Dröge [Fri, 10 Jan 2020 11:08:38 +0000 (13:08 +0200)]
timecodestamper: Skip over invalid LTC timecodes immediately
Sebastian Dröge [Fri, 10 Jan 2020 09:40:54 +0000 (11:40 +0200)]
timecodestamper: Clean up old LTC timecodes on LTC discontinuity
We might have some old timecodes that are in the future now and have to
drop those to make sure that our queue is correctly ordered and we don't
have multiple timecodes for the same running time.
Sebastian Dröge [Fri, 10 Jan 2020 09:33:28 +0000 (11:33 +0200)]
timecodestamper: Fix waiting for the first video frame in case of live video input
Sebastian Dröge [Thu, 9 Jan 2020 15:41:55 +0000 (17:41 +0200)]
timecodestamper: Fix up handling/queueing of LTC timecodes
Directly read them out of the decoder as soon as we passed audio and
then store them in a queue that we handle internally together with their
timestamps. This cleans up memory management and gives us proper control
over the queue instead of guessing how the queue inside the LTC decoder
actually works and when it overflows.
Sebastian Dröge [Thu, 9 Jan 2020 13:27:28 +0000 (15:27 +0200)]
timecodestamper: Only allow requesting LTC audio pad in NULL/READY states
And don't introduce any latency at all if not LTC audio pad was
requested.
Sebastian Dröge [Thu, 9 Jan 2020 13:23:20 +0000 (15:23 +0200)]
timecodestamper: In live mode wait correctly for the latency to pass
And also introduce 6 instead of 2 frames of latency compared to the LTC
audio input as that seems to be an upper bound for how much the LTC
library is lagging behind.
Sebastian Dröge [Thu, 9 Jan 2020 13:16:02 +0000 (15:16 +0200)]
timecodestamper: Use the internal LTC timecode tracker instead of the last one we retrieved
Otherwise we don't interpolate between LTC timecodes but only ever put
an LTC timecode on buffers once we actually received one.
Nicolas Dufresne [Thu, 9 Jan 2020 19:23:08 +0000 (14:23 -0500)]
decklink: Silence no driver / no SO messages
This g_once() is called everywhere, even in provider. This cause
spurious error when device monitor is used. Just silence or remove
the spurious logs.
Seungha Yang [Fri, 10 Jan 2020 07:03:48 +0000 (16:03 +0900)]
hls: Check nettle version to ensure AES128 support
AES128 support was added since nettle version 3.0
../subprojects/gst-plugins-bad/ext/hls/gsthlsdemux.h:110:10: error: field ‘ctx’ has incomplete type
struct CBC_CTX (struct aes128_ctx, AES_BLOCK_SIZE) aes_ctx;
Haihao Xiang [Mon, 6 Jan 2020 04:59:36 +0000 (12:59 +0800)]
Revert "msdkdec: make sure to use video memory on Linux"
Commit a1584b6 caused big performance drop if the downstream element
is not a msdk element because it is very slow to read data from video
memory directly.
This reverts commit
a1584b6f99caaf61812ac6a9654ec0e6da8240da.
Seungha Yang [Thu, 9 Jan 2020 12:00:47 +0000 (21:00 +0900)]
tests: d3d11colorconvert: Add test cases for visual validation
By default new test cases are disabled since it might be timed out
or test environment might not have render device.
Seungha Yang [Thu, 9 Jan 2020 10:39:59 +0000 (19:39 +0900)]
d3d11colorconverter: Handle P016_LE format
P016 format is no different than P010. Not much things to add code.
Seungha Yang [Thu, 9 Jan 2020 10:32:38 +0000 (19:32 +0900)]
d3d11colorconverter: Add support for YUV to YUV conversion
Seungha Yang [Wed, 8 Jan 2020 14:09:51 +0000 (23:09 +0900)]
d3d11colorconverter: Add support for RGB to YUV conversion
... and remove code for RGBx since it's not supported format
by our d3d11 implementation for now.
Seungha Yang [Thu, 9 Jan 2020 02:14:47 +0000 (11:14 +0900)]
d3d11format: Remove invalid format from supported format list
Sebastian Dröge [Wed, 8 Jan 2020 05:42:21 +0000 (07:42 +0200)]
decklinkvideosink: Always configure 10 bit YUV for VANC frames
If 8 bit are required by the device/mode then it will be converted internally
by the SDK, but the SDK won't automatically convert from 8 to 10 bit. As
such, always use 10 bit VANC.
Some devices require configuring also a 10 bit video format when using
10 bit VANC is required but those would fail regardless and the
application would have to configure the correct video format.
With newer versions of the SDK this information can be retrieved via the
BMDDeckLinkVANCRequires10BitYUVVideoFrames flag but we don't use a new
enough SDK version yet to extract this information.
Sebastian Dröge [Tue, 7 Jan 2020 18:17:12 +0000 (20:17 +0200)]
webrtc: Unmap all non-binary buffers received via the datachannel
Previously they were only unmapped in case of binary data, causing all
of them to be leaked.
Stéphane Cerveau [Tue, 7 Jan 2020 09:05:33 +0000 (10:05 +0100)]
zbar: remove useless conditional on passthrough
seen that passthrough is never set for this element, no need
to allow to remove the 'transform' call
Stéphane Cerveau [Fri, 27 Sep 2019 21:02:38 +0000 (23:02 +0200)]
zxing: initial plugin revision
Status:
- scan QR code with low resolution
- Scan barcode with high resolution
Stéphane Cerveau [Fri, 3 Jan 2020 17:14:48 +0000 (18:14 +0100)]
tests: add h26xparse HDR SEI test
Detect caps according to MDCV + CLLI SEI message
Stéphane Cerveau [Wed, 18 Dec 2019 09:05:05 +0000 (10:05 +0100)]
test: add h265parse test
Stéphane Cerveau [Tue, 17 Dec 2019 11:08:34 +0000 (12:08 +0100)]
h26xparse: Handle state change on IDR first slice
As the H265/H264 bitstream can support multiple slices,
mastering_display_info_state and content_light_level_state
should be changed only on first slice segment.
Fix #1152
Stéphane Cerveau [Thu, 5 Dec 2019 15:48:05 +0000 (16:48 +0100)]
h265parse: use same algo for MDCV and CLL SEI management
Stéphane Cerveau [Thu, 28 Nov 2019 11:59:46 +0000 (12:59 +0100)]
h264parser: add MDCV and CLL SEI message parsing
Allow to parse SEI message for:
- mastering display colour volume
- Light level infomation
Set to caps if necessary.
Fix #958
Seungha Yang [Mon, 6 Jan 2020 16:40:57 +0000 (01:40 +0900)]
dash: Remove spurious condition check and remove unused debug category
Note that uppercase debug category names are used for
core modules and should be redefined in lowercase for plugins if necessary.
Thibault Saunier [Mon, 6 Jan 2020 19:30:36 +0000 (16:30 -0300)]
fakevideosink: Use our pad template to create pad
Seungha Yang [Mon, 30 Dec 2019 09:58:59 +0000 (18:58 +0900)]
d3d11: Add support for Universal Windows Platform
Initial UWP support via new window (CoreWindow and SwapChainPanel) implementation.
Seungha Yang [Tue, 31 Dec 2019 04:36:59 +0000 (13:36 +0900)]
d3d11decoder: Fix build on non-desktop target
Although the target platform of D3D11 decoding API are both desktop and UWP app,
DXVA header is blocked by "WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)"
which is meaning that that's only for desktop app.
To workaround this inconsistent annoyingness, we need to define WINAPI_PARTITION_DESKTOP
regardless of target WinAPI partition.
Haihao Xiang [Wed, 25 Dec 2019 05:21:11 +0000 (13:21 +0800)]
msdkvp9enc: fix 10bit encoding
The codec profile should be consistent with the frame fourcc code, this
fixes pipeline below:
gst-launch-1.0 videotestsrc ! \
video/x-raw,width=320,height=240,format=P010_10LE ! msdkvp9enc ! \
fakesink
Haihao Xiang [Wed, 25 Dec 2019 02:51:36 +0000 (10:51 +0800)]
msdkvp9enc: fix width and height
The frame width and height is rounded up to 128 and 32 since commit
8daac1c, so the width, height for initialization should be rounded up to
128 and 32 too because the MSDK VP9 encoder will do some check on width
and height.
Sample pipeline:
gst-launch-1.0 videotestsrc ! \
video/x-raw,width=320,height=240,format=NV12 ! msdkvp9enc ! fakesink
Haihao Xiang [Fri, 3 Jan 2020 07:27:30 +0000 (15:27 +0800)]
msdk: make sure the found response meets the request
Otherwise the re-used msdk response doesn't have enough frames so it is
possible the pipeline will be broken
Julien Isorce [Thu, 26 Dec 2019 21:31:50 +0000 (13:31 -0800)]
msdkenc: renegotiate when video info changes
Renegotiation was implemented for bitrate change. We can re-use
the same sequence when video info changes except that this can be
executed right away when receiving the new input format. I.e. no
need to wait for the next call to handle_frame.
Philippe Normand [Sun, 5 Jan 2020 16:20:18 +0000 (16:20 +0000)]
decklink: Fix crash when probing without driver
If there is no decklink hardware/driver, the devices list is empty (NULL), so
this needs to be checked before iterating over the list.
Stéphane Cerveau [Thu, 16 May 2019 17:42:37 +0000 (19:42 +0200)]
dashsink: Add new sink to produce DASH content
Add static or dynamic mpd with:
- baseURL
- period
- adaptation_set
- representaton
- SegmentList
- SegmentURL
- SegmentTemplate
Support multiple audio and video streams.
Pass conformance test with DashIF.org
Stéphane Cerveau [Mon, 9 Dec 2019 14:10:00 +0000 (15:10 +0100)]
gstxmlhelper: fix xmlOutputBufferFlush ignored ret
fix CID #1456553
Stéphane Cerveau [Mon, 2 Sep 2019 12:52:53 +0000 (14:52 +0200)]
dash: add set/get property for nodes
Add a way to set/get properties for given nodes:
- root
- baseurl
- representation
Stéphane Cerveau [Wed, 4 Dec 2019 16:25:24 +0000 (17:25 +0100)]
dash: Generate an XML content from object.
Add mpd node base class to provide
xml generation facilities for child
objects.
Julien Isorce [Thu, 26 Dec 2019 19:24:37 +0000 (11:24 -0800)]
msdkdec: trigger renegotiation if video info changes
Useful when framerate changes. Previously it was only checking
for resolution change but renego should happen if any video
info changes.
Seungha Yang [Mon, 23 Dec 2019 06:17:07 +0000 (15:17 +0900)]
vulkansink: Fix null pointer exception
context query might happen before creating swapper.
Julien Isorce [Wed, 18 Dec 2019 00:10:53 +0000 (16:10 -0800)]
msdkdec: make sure to use video memory on Linux
The block that sets use_video_memory flag is after the
the condition `if gst_msdk_context_prepare` but it
always returns false when there is no other msdk elements.
So the decoder ends up with use_video_memory as FALSE.
Note that msdkvpp always set use_video_memory as TRUE.
When use_video_memory is FALSE then the msdkdec allocates
the output frames with posix_memalign (see gstmsdksystemmemory.c).
The result is then copied back to the GstVideoPool's buffers
(or to the downstream pool's buffers if any).
When use_video_memory is TRUE then the msdkdec uses vaCreateSurfaces
to create vaapi surfaces for the hw decoder to decode into
(see gstmsdkvideomemory.c). The result is then copied to either
the internal GstVideoPool and to the downstream pool if any.
(vaDeriveImage/vaMapBuffer is used in order to read the surfaces)
Seungha Yang [Thu, 2 Jan 2020 03:22:07 +0000 (12:22 +0900)]
msdkdec: Correct return value of GstVideoDecoder::flush()
Use boolean instead of GstFlowReturn as declared.
Note that since base class does not check return value of GstVideoDecoder::flush(),
this would not cause any change of behavior.
Haihao Xiang [Mon, 23 Dec 2019 06:09:25 +0000 (14:09 +0800)]
msdkdec: free unlocked msdk surface before output buffer allocation
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/924
is trying to use video memory for decoding on Linux, which reveals a
hidden bug in msdkdec.
For video memory, it is possible that a locked mfx surface is not used
indeed and it will be un-locked later in MSDK, so we have to check the
associated MSDK surface to find out and free un-used surfaces, otherwise
it is easy to exhaust all pre-allocated mfx surfaces and get errors below:
0:00:00.
777324879 27290 0x564b65a510a0 ERROR default
gstmsdkvideomemory.c:77:gst_msdk_video_allocator_get_surface: failed to
get surface available
0:00:00.
777429079 27290 0x564b65a510a0 ERROR msdkbufferpool
gstmsdkbufferpool.c:260:gst_msdk_buffer_pool_alloc_buffer:<msdkbufferpool0>
failed to create new MSDK memory
Note the sample code in MSDK does similar thing in
CBuffering::SyncFrameSurfaces()
Sebastian Dröge [Thu, 12 Dec 2019 17:02:25 +0000 (19:02 +0200)]
hlssink2: Add signals for allowing custom playlist/fragment handling
Instead of always going through the file system API we allow the
application to modify the behaviour. For the playlist itself and
fragments, the application can provide a GOutputStream. In addition the
sink notifies the application whenever a fragment can be deleted.
Sebastian Dröge [Tue, 31 Dec 2019 10:41:25 +0000 (12:41 +0200)]
webrtc: Actually make use of promise created one line before
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1042
Mark Nauwelaerts [Mon, 30 Dec 2019 18:50:29 +0000 (19:50 +0100)]
mpegtsdemux: resurrect actual and efficient seeking of all kinds
... by seeking to target offset determined by new seek segment,
rather than that of the previous segment. The latter would typically
seek back to start for a non-accurate seek, and lead to a lot
of skipping in case of an accurate seek.
Seungha Yang [Thu, 26 Dec 2019 05:28:03 +0000 (14:28 +0900)]
d3d11: Add h265 decoder element
Some DPB management implementation is taken from gstreamer-vaapi
Seungha Yang [Fri, 20 Dec 2019 14:05:52 +0000 (23:05 +0900)]
d3d11: Add vp9 decoder element
Based on gstreamer-vaapi and Chromium implemetation.
Seungha Yang [Thu, 26 Dec 2019 05:24:46 +0000 (14:24 +0900)]
d3d11: Add h264 decoder element
New decoder implementation based on dxva2 on d3d11 APIs. The DPB
management implementation is taken from Chromium.
Seungha Yang [Fri, 20 Dec 2019 13:50:55 +0000 (22:50 +0900)]
d3d11: Add support for Array typed texture memory
A ID3D11Texture2D memory can consist of multiple planes with array.
For array typed memory, GstD3D11Allocator will allocate new GstD3D11Memory
with increased reference count to the ID3D11Texture2D but different array index.
Stéphane Cerveau [Wed, 18 Dec 2019 14:37:03 +0000 (15:37 +0100)]
bad: use of g_value_dup_string
Use helper method to get string from GValue.
Sebastian Dröge [Mon, 30 Dec 2019 10:52:20 +0000 (12:52 +0200)]
dtlsenc: Don't warn on GST_FLOW_FLUSHING or GST_FLOW_EOS
Only warn if pushing a buffer returns an actual error to not pollute
logs with confusing warnings.
Sebastian Dröge [Fri, 27 Dec 2019 14:56:32 +0000 (16:56 +0200)]
timecodestamper: Refactor LTC audio waiting and properly handle live inputs
If one of the inputs is live, add a latency of 2 frames to the video
stream and wait on the clock for that much time to pass to allow for the
LTC audio to be ahead.
In case of live LTC, don't do any waiting but only ensure that we don't
overflow the LTC queue.
Also in non-live LTC audio mode, flush too old items from the LTC queue
if the video is actually ahead instead of potentially waiting forever.
This could've happened if there was a bigger gap in the video stream.
Seungha Yang [Thu, 26 Dec 2019 11:10:55 +0000 (20:10 +0900)]
tests: Add simple d3d11colorconvert unit test
Seungha Yang [Thu, 26 Dec 2019 10:55:40 +0000 (19:55 +0900)]
d3d11: Aggregate d3d11 memory usage query for dynamic-usage type decision
Even if one of downstream d3d11 elements can support dynamic-usage memory,
another one might not support it. Also, to support dynamic-usage,
both upstream and downstream d3d11device must be the same object.
Seungha Yang [Thu, 26 Dec 2019 08:00:52 +0000 (17:00 +0900)]
d3d11colorconvert: Remove device type dependent behavior
If d3d11colorconvert element is configured, do color space conversion
regardless of the device type whether it's S/W emulation or real H/W.
Since d3d11colorconvert is no more a child of d3d11videosinkbin,
we don't need this behavior. Note that previous code was added to
avoid color space conversion from d3d11videosink if no hardware
device is available (S/W emulation of d3d11 is too slow).
Seungha Yang [Thu, 26 Dec 2019 07:43:35 +0000 (16:43 +0900)]
d3d11colorconverter: Fix unmatched lock/unlock pair
Seungha Yang [Thu, 26 Dec 2019 07:03:31 +0000 (16:03 +0900)]
d3d11upload: Don't hard overwrite caps features to support d3d11 memory passthrough
d3d11upload should be able to support upstream d3d11 memory, not only system memory.
Fix for following pipeline
d3d11upload ! "video/x-raw(memory:D3D11Memory)" ! d3d11videosink
Nicola Murino [Thu, 26 Dec 2019 21:43:35 +0000 (22:43 +0100)]
opencv: allow compilation against 4.2.x
Seungha Yang [Tue, 24 Dec 2019 05:00:15 +0000 (14:00 +0900)]
d3d11window: Make use of partial presentation with IDXGISwapChain1::Present1
Since we might draw on partial area of backbuffer in case of force-aspect-ratio,
presenting only updated area is more efficient way.
See also https://docs.microsoft.com/ko-kr/windows/win32/direct3ddxgi/dxgi-1-2-presentation-improvements
Seungha Yang [Tue, 24 Dec 2019 06:54:57 +0000 (15:54 +0900)]
d3d11videosink: Add support for overlay composition
Add d3d11overlaycompositor object to draw overlay image
on render target using Blend method.
Seungha Yang [Fri, 20 Dec 2019 09:56:08 +0000 (18:56 +0900)]
d3d11: Enable dxgi debug layer and always try to pop d3d11/dxgi debug message if possible
Note that dxgi and d3d11 sdk debug will be enabled on debug build
Seungha Yang [Thu, 28 Nov 2019 09:54:31 +0000 (18:54 +0900)]
nvcodec: Refactor plugin initialization
Create CUDA context per device, instead of per codec and encoder/decoder.
Allocating CUDA context is heavy operation so we should reuse it
as much as possible.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1130
Seungha Yang [Fri, 20 Dec 2019 03:37:51 +0000 (12:37 +0900)]
vulkan/window/win32: Don't post any WinProc message to parent window
Posting any message to parent seems to be pointless. That might break
parent window.
Regardless of the posting, parent window can catch mouse event
and also any keyboard events will be handled by parent window by default.
Aaron Boxer [Mon, 11 Nov 2019 14:47:00 +0000 (09:47 -0500)]
openjpegenc: add support for sub-frame encoding
Following the standard for low latency JPEG 2000 encoding
https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-H.222.0-200701-S!Amd1!PDF-E&type=items
we divide the image into stripes of a specified height, and encode
each stripe as a self-contained JPEG 2000 image. This MR is based on
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/merge_requests/429
Yeongjin Jeong [Sat, 23 Mar 2019 12:01:51 +0000 (21:01 +0900)]
svthevcenc: Add new SVT-HEVC encoder element
The SVT-HEVC (Scalable Video Technology[0] for HEVC) Encoder is an
open source video coding technology[1] that is highly optimized for
Intel Xeon Scalable processors and Intel Xeon D processors.
[0] https://01.org/svt
[1] https://github.com/OpenVisualCloud/SVT-HEVC
Yeongjin Jeong [Mon, 30 Sep 2019 07:29:50 +0000 (16:29 +0900)]
h265parser: Add simple GstH265Profile/string public utilites
It makes more simplifies the conversion between GstH265Profile and string.
Seungha Yang [Thu, 19 Dec 2019 15:01:26 +0000 (00:01 +0900)]
d3d11videosink: Use dynamic texture for fallback buffer
Upload CPU memory to texture directly by using dynamic usage texture.
This will reduce at least one step of staging copy per frame.