Haihao Xiang
55f3590317
msdkenc: support tune property in msdkh264enc and msdkh265enc
...
Introduce a new property for encoding mode selection, the default value
for this new property allows the SDK to decide what to do. In addition,
low-power is marked as deprecated since this fix
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1426 >
2020-07-11 13:57:52 +00:00
Haihao Xiang
3ecb2a82be
Revert "msdkh265enc: let MSDK select the encoding mode by default"
...
This reverts commit 9e977832c1
.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1426 >
2020-07-11 13:57:52 +00:00
Seungha Yang
ad8529caf7
d3d11: Disable D3D11Debug and DXGIDebug layer for UWP build
...
WACK (Windows App Certification Kit) doesn't seem to be happy with
the DXGIGetDebugInterface1 symbol.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1421 >
2020-07-08 21:11:31 +00:00
Haihao Xiang
9e977832c1
msdkh265enc: let MSDK select the encoding mode by default
...
MSDK may support lowpower and non-lowpower modes, some features are
available only under one of the two modes, which is hard to know for
user, so let MSDK select the mode by default.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1405 >
2020-07-06 14:43:31 +00:00
Matthew Waters
c94675f1d4
decklinkvideosink: write the cdp timecode data correctly
...
We were mixing up the tens part with the unit parts all over the place.
e.g. 12 seconds would be encoded as 0x21 instead of the correct 0x12
Aligns the code with the same change applied to ccconverter.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1400 >
2020-07-03 06:54:46 +00:00
Nicolas Dufresne
1bef43f9d4
v4l2decoder: Track pending request
...
With the asynchronous slice decoding, we only queue up to 2 slices
per frames. That side effect is that now we are dequeuing bitstream
buffers in both decoding and presentation order. This would lead to
a bitstream buffer from a previous frame being dequeued instead of
the expected last slice buffer and lead to us trying to queue an
already queued bitstream buffer.
We now fix this by tracking pending requests. As request are executed
in decoding order, we marking a request done, we can effectively
dequeue bitstream buffer from all previous request, as they have been
executed already.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1395 >
2020-07-02 12:21:51 -04:00
Nicolas Dufresne
a88e63dd2f
v4l2decoder: Improve debug tracing
...
Add some missing traces and move per-slice operation to TRACE level to
reduce the noise level.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1395 >
2020-07-02 12:21:51 -04:00
Nicolas Dufresne
d5a205cff4
v4l2decoder: Convert request pool to GstQueueArray
...
The decoder is not being access from multiple threads, instead it is
always protected by the streaming lock. For this reason, a
GstAtomicQueue for the request pool is overkill and may even introduce
unneeded overhead. Use a GstQueueArray in replacement, the
GstQueueArray is a good fit since the number of item is predictable and
unlikely to vary at run-time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1395 >
2020-07-02 12:21:51 -04:00
Nicolas Dufresne
a2eb1b57ff
v4l2slh264dec: Wait on previous pending request in slice mode
...
In slice mode, we'll do one request per slice. In order to recycle
bitstream buffer, and not run-out, wait for the last pending
request to complete and mark it done.
We only wait after having queued the current slice in order to reduce
that potential driver starvation and maintain performance (using dual
buffering).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1395 >
2020-07-02 12:21:51 -04:00
Nicolas Dufresne
b20c6fe6c4
v4l2slh264dec: Renew bitstream buffer after submitting slice
...
Submitting a slice actually clears the bitstream buffer. Ensure we
have a newly allocated bitstream buffer for the next slice.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1395 >
2020-07-02 12:21:51 -04:00
Nicolas Dufresne
bc1a0323a9
v4l2slh264dec: Factor out bitstream allocation
...
No functional changes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1395 >
2020-07-02 12:21:51 -04:00
Nicolas Dufresne
779f331bd4
v4l2slh264dec: Add a helper to ensure output buffer
...
In preparation of multi-slice decoding, we will decode multiple
slices into the same buffer. This will ensure we have a buffer to
decode to, queued into the driver.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1395 >
2020-07-02 12:21:51 -04:00
Nicolas Dufresne
d65f7de650
v4l2slh264dec: Factor out request wait
...
This will be reused to wait for previous slices to be complete
when dealing with following slices (in slice decoding mode).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1395 >
2020-07-02 12:21:51 -04:00
Nicolas Dufresne
176a860169
v4l2slh264dec: Remove double return in submit_bitstream()
...
This is code cleanup, no functional changes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1395 >
2020-07-02 12:21:51 -04:00
Nicolas Dufresne
1f48e60bde
v4l2slh264dec: Fix typo in debug trace
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1395 >
2020-07-02 12:21:51 -04:00
Mathieu Duponchelle
b33f10e7e2
docs: remove gst prefix from plugin titles
2020-07-02 18:10:21 +02:00
Seungha Yang
8d0dc4fdd2
plugins: Update for documentation of Windows plugins
...
* Add Since marks
* Make use of GST_PARAM_CONDITIONALLY_AVAILABLE flag
2020-07-02 17:21:29 +02:00
Seungha Yang
76793ffabc
nvcodec: Update for documentation
...
* Add Since marks
* Make use of GST_PARAM_CONDITIONALLY_AVAILABLE flag
* Add documentation template caps
2020-07-02 17:21:24 +02:00
Seungha Yang
73ddf27898
dxgiscreencapsrc: Add missing debug category init
...
This should've been addressed in the commit 9042062072
but I was missed it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1383 >
2020-06-30 02:51:14 +09:00
Víctor Manuel Jáquez Leal
79d11c2022
va: VA-API H.264 decoder and infrastructure
...
New plugin with an element for H.264 decoding with VA-API. This novel
approach, different from gstreamer-vaapi, uses gstcodecs library for
state handling.
The code is expected to looks cleaner because it uses VA-API without
further layers or wrappers.
* It uses the first supported DRM device as default VA display (other
displays will be supported through user's GstContext)
* Requires libva >= 1.6
* No multiview/stereo profiles neither interlaced streams because
gstcodecs doesn't handle them yet
* It is incompatible with gstreamer-vaapi
* Even if memory:VAMemory is exposed, it is not handled yet by any
other element
* Caps templates are generated dynamically querying VAAPI, but YV12
and I420 are added for system memory caps because they seem to be
supported for all the drivers when downloading frames onto main
memory, as they are used by xvimagesink and others, avoiding color
conversion.
* Surfaces aren't bounded to context, so they can grow beyond the DBP
size, allowing smooth reverse playback.
* There isn't yet error handling and recovery.
* 10-bit H.264 streams aren't supported by libva.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1379 >
2020-06-28 11:47:35 +02:00
Seungha Yang
117f593cff
d3d11h265dec: Fix possible invalid memory access
...
The number of element to copy should be num_tile_columns_minus1
and num_tile_rows_minus1.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1374 >
2020-06-25 13:58:57 +00:00
Seungha Yang
48ca7c7e93
nvh265sldec: Fix possible invalid memory access
...
Fix Coverity issues.
CID 1464959, 1464960, 1464961, 1464962
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1374 >
2020-06-25 13:58:57 +00:00
Seungha Yang
82189d6859
d3d11videosink: Disable d3d11videosink depending on supported feature level
...
Current shader code is not compatible with HLSL profile "ps_4_0_level_9_3"
or lower. So d3dcompiler cannot compile our shader code in that case.
Note that VirtualBox is one known driver which doesn't support currently
implemented shader code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1343 >
2020-06-25 07:55:47 +00:00
Kevin King
eebfed0726
avfvideosrc: wait for permissions request dialog callback
...
otherwise gstreamer gives up on transitioning the pipeline before the
user has accepted
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1370 >
2020-06-24 18:56:53 +00:00
Seungha Yang
133b902044
nvh264sldec: Remove useless double space
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1357 >
2020-06-24 16:25:58 +00:00
Seungha Yang
711e964572
nvcodec: Add H265 stateless codec implementation
...
Add a new GstCodecs based H265 decoder element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1357 >
2020-06-24 16:25:58 +00:00
Seungha Yang
1e544f741a
nvcodec: Move common methods to nvdecoder
...
... and remove all #ifdef from nvh264sldec implementation.
New helper methods will take care of OpenGL specific ones.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1357 >
2020-06-24 16:25:58 +00:00
Seungha Yang
1f452c0577
nvh264sldec: Declare OpenGL related objects unconditionally
...
GstGLDisplay and GstGLContext are subclass of GstObject so we can
remove #ifdef for such object. This is prework for nvh265sldec.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1357 >
2020-06-24 16:25:58 +00:00
Seungha Yang
82ddb0600b
nvh264sldec: Fix for possible wrong device selction
...
decoder should select assigned CUDA device id
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1357 >
2020-06-24 16:25:58 +00:00
Mathieu Duponchelle
ad49ae42f7
docs: mark more types as plugin API
2020-06-23 12:10:19 -04:00
Seungha Yang
863c663b1d
d3d11window_win32: Chain up mouse event to parent window
...
Unlike key event, mouse event will not be chained up to parent window
by DefWindowProc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1361 >
2020-06-22 15:09:22 +00:00
Seungha Yang
9042062072
dxgiscreencapsrc: Load HLSL compiler library using g_module_open
...
Depending on OS version, available d3dcompiler library name is different.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1355 >
2020-06-22 14:36:16 +00:00
Seungha Yang
96a5760751
dxgiscreencapsrc: Reorganize debug category usage
...
Use the same debug category in all dxgiscreencap related source code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1355 >
2020-06-22 14:36:16 +00:00
Seungha Yang
4aa7d3d589
winscreencap: Remove trailing whitespaces
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1355 >
2020-06-22 14:36:16 +00:00
Seungha Yang
3dd2b6f20b
d3d11device: Print supported DXGI format for debugging
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1355 >
2020-06-22 14:36:16 +00:00
Seungha Yang
8fe1aae96c
d3d11: Load HLSL compiler library using g_module_open
...
Depending on OS version, available d3dcompiler library name is different.
But for UWP, we can still use the current way
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1355 >
2020-06-22 14:36:16 +00:00
Seungha Yang
9b8eec39b6
d3d11shader: Add missing config.h include
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1355 >
2020-06-22 14:36:16 +00:00
Seungha Yang
4997cde699
mediafoundation: Add VP9 encoder element
...
Some Intel GPUs support hardware accelerated VP9 encoding and
Microsoft provides software VP9 encoding implementation as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1295 >
2020-06-22 07:58:03 +00:00
Seungha Yang
1a68da54b6
mfvideosrc: Add support for jpeg on Win32 application
...
Enable reading jpeg data from webcam if it's supported.
Note that this would be enabled only for Win32.
For UWP, we need to research more about how to support jpeg.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1342 >
2020-06-17 17:45:32 +09:00
Seungha Yang
f508c8b988
mfvideosrc: Fix wrong casting
...
Don't cast ISoftwareBitmap to IMFMediaBuffer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1342 >
2020-06-17 17:37:05 +09:00
Seungha Yang
86e3df9493
mfvideosrc: Add support YUY2 format for UWP
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1342 >
2020-06-17 17:37:05 +09:00
Seungha Yang
8d7f537782
mediafoundation: Drop IMFCaptureEngine implementation
...
It was introduced for later use of its enhanced feature over IMFSourceReader
such as taking photo with video preview, audio/video capturing at
the same time, etc. But currently it's not our use case, and it would
be maintenance burden.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1342 >
2020-06-17 17:37:05 +09:00
Seungha Yang
f899728dd4
d3d11: Don't assume response of context query has valid d3d11 device context
...
Peer elements should return FALSE if d3d11 device context is unavailable
but it might happen for some reason (e.g., wrong implementation or so)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1347 >
2020-06-16 11:23:34 +00:00
Seungha Yang
bc99ea1e30
d3d11decoder: Disable zero-copy for blacklisted device
...
Should enable it for verified devices. For now, Xbox is blacklisted
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1339 >
2020-06-16 10:49:02 +00:00
Seungha Yang
1144cdc63a
d3d11decoder: Adjust alignment constraint for Xbox device
...
XBox doesn't seem to support 128 bytes alignment for 4K HEVC
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1339 >
2020-06-16 10:49:02 +00:00
Seungha Yang
fe361ecc25
d3d11window: Do not configure video processor for Xbox device
...
Disable video processor for Xbox until it's verified
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1339 >
2020-06-16 10:49:02 +00:00
Seungha Yang
d12c0c4c7b
d3d11utils: Add a helper method for checking Xbox device
...
Required for some cases to work around device specific issue
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1339 >
2020-06-16 10:49:02 +00:00
Seungha Yang
b5c8889d4f
d3d11videosink: Use GPU memory copy if possible
...
Even if fallback buffer is required (e.g., shader resource view is unavailable),
use direct GPU memory copy if possible. It must be much faster than
system memory copy approach.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1339 >
2020-06-16 10:49:02 +00:00
Seungha Yang
73b39407a6
d3d11videosink: Ensure shader resource view of fallback buffer
...
SRV must be configured for color conversion
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1339 >
2020-06-16 10:49:02 +00:00
Seungha Yang
4471788e4a
d3d11window: Fix typo "configureed"
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1339 >
2020-06-16 10:49:02 +00:00