Seungha Yang
95e007ac49
d3d11videosink: Fix crash caused by missing null termination
...
gst_caps_features_new() must be null terminated.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1524 >
2020-08-24 20:03:05 +00:00
Seungha Yang
185d2f56a3
d3d11: Handle newly added GST_VIDEO_TRANSFER_BT601
...
Use the value for mapping between DXGI_COLOR_SPACE_TYPE and GstVideoColorimetry.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1410 >
2020-08-12 15:18:56 +00:00
Seungha Yang
205ad89802
d3d11: Store more device information in context structure
...
It would be more informative for debugging
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1507 >
2020-08-12 14:04:55 +00:00
Seungha Yang
ff9157eef4
d3d11: Selected adapter index should be unsigned integer
...
If d3d11device was created successfully, the index of adapter
must not be negative value
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1507 >
2020-08-12 14:04:55 +00:00
Seungha Yang
9b72b04dad
d3d11download: Allow linking with downstream d3d11 elements
...
It will make pipeline configuration easier since d3d11download
element can be placed unconditionally. This behavior is similar
to that of gldownload element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1485 >
2020-08-03 13:10:07 +00:00
Seungha Yang
d03e959f54
d3d11window: Remove timeout and wait a task if possible
...
If the run_async() method is expected to be called from streaming
thread and not from application thread, use INFINITE as timeout value
so that d3d11window can wait UI dispatcher thread in any case.
There is no way to get a robust timeout value from library side.
So the fixed timeout value might not be optimal and therefore
we should avoid it as much as possible.
Rule whether a timeout value can be INFINITE or not is,
* If the waiting can be cancelled by GstBaseSink:unlock(), use INFINITE.
GstD3D11Window:on_resize() is one case for example.
* Otherwise, use timeout value
Some details are, GstBaseSink:start() and GstBaseSink:stop() will be called
when NULL to READY or READY to NULL state change, so there will be no
chance for GstBaseSink:unlock() and GstBaseSink:unlock_stop()
to be called around them. So there is no other way then timeout way.
GstD3D11Window:consturcted() and GstD3D11Window:unprepare() are the case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1461 >
2020-07-24 04:53:44 +00:00
Seungha Yang
6ede4a99a7
d3d11window: Increase timeout to 10 sec for WinRT window implementations
...
No strong reason for this number, but we can follow other well known
UWP implementation ANGLE.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1461 >
2020-07-24 04:53:44 +00:00
Seungha Yang
deaa29bd96
codecs: vp8decoder: Sync up with h264decoder implementation
...
Pass GstVideoCodecFrame with GstVp8Picture to new_picture() and
output_picture() methods for subclass to be able to reference
it directly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1458 >
2020-07-23 15:48:05 -04:00
Seungha Yang
e754d5a5b2
codecs: vp9decoder: Sync up with h264decoder implementation
...
* Pass GstVideoCodecFrame to new_picture() and output_picture()
* Pass the last reference of GstVp9Picture to subclass if possible
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1455 >
2020-07-23 15:41:39 +00:00
Seungha Yang
128e533a6e
d3d11decoder: Disable array-of-texture
...
Some 4K VP9 + super frame enabled streams would be broken with
array-of-texture configuration (i.e., allowing runtime texture registration
for DPB).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1456 >
2020-07-22 16:06:47 +00:00
Seungha Yang
2a0de96015
d3d11window: Disable d3d11 video processor for HDR10 stream.
...
d3d11 video processor is showing buggy behaviors in various cases.
And this HDR10 is one case of them.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1454 >
2020-07-21 15:41:20 +00:00
Seungha Yang
e921a07715
codecs: h264decoder: Pass GstVideoCodecFrame to output_picture()
...
All subclasses are retrieving list to get target output frame, which
can be done by baseclass. And pass the ownership of the GstH264Picture
to subclass so that subclass can clear implementation dependent resources
before finishing the frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1449 >
2020-07-21 17:18:42 +09:00
Seungha Yang
7a024a740f
codecs: h264decoder: Don't attach extra ref of GstH264Picture to GstVideoCodecFrame
...
The lifecycle of GstH264Picture is being managed by our DPB
implementation. If it's still required, subclass can do that
by itself in the new_picture() method.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1449 >
2020-07-21 17:18:42 +09:00
Seungha Yang
c1093e3481
plugins: Use g_win32_error_message for HRESULT to string conversion
...
We don't need to duplicate a method for HRESULT error code to string
conversion. This patch is intended to
* Remove duplicated code
* Ensure FormatMessageW (Unicode version) and avoid FormatMessageA
(ANSI version), as the ANSI format is not portable at all.
Note that if "UNICODE" is not defined, FormatMessageA will be aliased
as FormatMessage by default.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1442 >
2020-07-18 11:05:52 +09:00
Seungha Yang
495ed45d05
d3d11decoder: Disable zero-copy for Qualcomm devices
...
Qualcomm driver looks buggy in zero-copy scenario. Even if we disable
zero-copy, device-to-device memory copy will be used with d3d11videosink
which should be fast enough.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1432 >
2020-07-12 01:40:45 +09: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
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
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
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
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
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
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
Seungha Yang
a38ac7a865
d3d11overlaycompositor: Fix wrong Y position calculation
...
The Y coordinate of vertex and screen/image are opposite
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1319 >
2020-06-05 13:47:49 +00:00
Seungha Yang
116d7453cb
d3d11videosink: Assign primary rank
...
d3d11videosink has an advantage over d3dvideosink, such as
* Zero-copy playback with d3d11 decoders
* HDR rendering with 10-bit format/swapchain support
* UWP support
* Any system memory alignment/padding can be supported
* User can select target GPU device
And old d3dvideosink's functionality (e.g., navigation event, overlaycomposition)
can be covered by d3d11videosink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1311 >
2020-06-03 17:57:41 +09:00
Seungha Yang
bd8a415747
d3d11window_win32: Create internal window on parent window's thread
...
If parent and child windows are running on different thread,
there is always a chance to cause deadlock as DefWindowProc() call
from child window thread might be blocked until the message
is handled by parent's window procedure.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1299 >
2020-05-27 05:08:48 +09:00
Seungha Yang
afe941249e
d3d11window: Add unprepare method to clear internal resource
...
GObject::dispose method can be called multiple times. As win32 d3d11window
has an internal thread and because GObject::dispose method could be called from the
thread, it might cause problems such as trying to join self-thread
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1299 >
2020-05-27 04:59:50 +09:00
Seungha Yang
24f30b2e6e
d3d11convert: Fix fallback texture setup when resolution is not even number
...
When texture format is semi-planar, resolution should be even number,
and add missing P016 format handling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1275 >
2020-05-19 17:25:05 +00:00
Seungha Yang
a966cc20bc
d3d11convert: Fix fallback texture copy
...
Fix texture copy when input texture has non-zero subresource index
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1275 >
2020-05-19 17:25:05 +00:00
Seungha Yang
a24d4e654d
d3d11: Add support for video rescale and rename element to d3d11convert
...
GstD3D11ColorConverter implementation is able to rescale video as well.
By doing colorspace conversion and rescale at once, we can save
one cycle of shader pipeline which will can save GPU resource.
Since this element can support color space conversion and rescale,
it's renamed as d3d11convert
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1275 >
2020-05-19 17:25:05 +00:00
Seungha Yang
0e842c74b6
d3d11: Move scoring util method for colorspace conversion to colorconvert element
...
It's used only by colorconvert element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1275 >
2020-05-19 17:25:05 +00:00
Víctor Manuel Jáquez Leal
d2aae6bb96
codecs: h264decoder: ref pic lists as decode_slice parameters
...
Pass reference picture lists to decode_slice() vmethods
Change gstv4l2codech264dec and gstnvh264dec accordingly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238 >
2020-05-19 16:57:09 +00:00
Seungha Yang
d9c552802e
d3d11vp8dec: Remove useless assign operation
...
It's already been done in the line just above.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1246 >
2020-05-05 16:37:14 +00:00
Seungha Yang
a4fbb49ef3
d3d11window: Fix processor output view resource leak
...
Because this object holds reference to native d3d11 device handle internally,
related native d3d11 objects would be leaked as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1243 >
2020-05-05 20:49:32 +09:00
Seungha Yang
ed147a3b48
d3d11h264dec: Rearrange the order of supported profiles in caps
...
constrained-baseline profile is much preferred than baseline.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1229 >
2020-04-29 18:13:42 +00:00
Seungha Yang
7db29fc382
d3d11h264dec: Add constrained-baseline and baseline profile
...
Both profiles are expected to be supported profile by DXVA hardware
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1212 >
2020-04-29 14:24:02 +00:00
Seungha Yang
3804dfb28d
d3d11device: Add fallback for device creation
...
D3D11_CREATE_DEVICE_DEBUG flag will be used while creating d3d11 device
to activate debug layer. However, if system doesn't support the
debug layer for some reason, we should try to create d3d11 device
without the flag. Debug layer should be optional for device creation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1217 >
2020-04-28 17:33:56 +00:00
Nicolas Dufresne
ed6236f551
d3d11vp8dec: Remove unused parameters
...
Minor cleanup removing unused picture parameters in two internal functions.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1221 >
2020-04-28 06:21:53 +00:00
Seungha Yang
2fe473fa50
d3d11decoder: Fix wrong return type from output_picture vfunc
...
Return type should be GstFlowReturn, not gboolean
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1213 >
2020-04-23 22:06:24 +00:00
Seungha Yang
15365aba70
d3d11decoder: Add VP8 decoder element
...
New d3d11 VP8 decoder implementation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1079 >
2020-04-22 23:20:44 +00:00
Seungha Yang
5965b6ef85
d3d11decoder: Add helper methods for negotiation and decide_allocation
...
The implementation for all codecs is almost the same.
No need to duplicate code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1079 >
2020-04-22 23:20:44 +00:00