Seungha Yang
76fd732d42
qsv: Check d3d shared resource tier using D3D11 API
...
We can check the tier using d3d11 API. Thus, don't need to
create d3d12 device
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7099 >
2024-06-26 16:25:06 +00:00
Seungha Yang
e6b9a45bfe
qsvh264dec,qsvh265dec: Fix nalu leaks
...
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3514
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6781 >
2024-05-01 10:38:05 +00:00
Seungha Yang
0cc206e939
qsvdecoder: Release too old frames
...
Release too old frames manually.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3163
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6583 >
2024-04-09 16:49:47 +00:00
Seungha Yang
b9ebe979ee
qsvencoder: Handle d3d12 context
...
GstD3D12Device objetct's internal resources are singletons per adapter
already though, the object itself is not a singleton.
Due to the singleton design (unlike other APIs such as d3d11),
d3d12 device context sharing is not a strict requirement
for zero-copy, but handles context ones to make things less noisy.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6513 >
2024-04-03 02:05:25 +00:00
Seungha Yang
707ac69f5f
qsv: Add support for d3d12 interop in encoder
...
Since QSV API does not support D3D12, try to import d3d12 resource
into d3d11 texture. Note that resource sharing requires
D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 for NV12 texure sharing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6501 >
2024-04-02 11:54:39 +00:00
Tim-Philipp Müller
9b84d6398a
qsv: use new plugin status message API
...
Minimal example.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3832 >
2024-02-21 00:58:19 +00:00
Seungha Yang
1a7c85a261
qsvh264enc: Always specify field order
...
qsv runtime will report error when encoding interlaced stream
if session was initialized with unknown field order
but tff/bff is specified in per frame encoding parameter.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5835 >
2024-01-25 14:25:16 +00:00
Víctor Manuel Jáquez Leal
4a22cc8fb3
va: no need to provide a buffer size for VA pool
...
VA drivers allocate surfaces given their properties, so there's no need to
provide a buffer size to the VA pool.
Though, the buffer size is provided by the driver, or the canonical size
is used for single planed surfaces.
This patch removes the need to provide a size for the function
gst_va_pool_new_with_config() and adds a helper method to retrieve the surface
size, gst_va_pool_get_buffer_size(). Also change the callers accordingly.
Changes for custom VA pool creation will be addressed in the following commits.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5805 >
2023-12-14 12:50:32 +00:00
Seungha Yang
adfa4d459e
qsv: Update plugin doc cache
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5706 >
2023-11-30 21:55:24 +09:00
Seungha Yang
865d7a1351
qsvh265dec: Add support for GBR decoding
...
Use GBR equivalent output formats if RGB colorspace is detected
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5706 >
2023-11-30 21:50:26 +09:00
Seungha Yang
e4729e5784
qsvh265dec: Add support for HEVC RExt profiles
...
Adding 4:2:0 high bitdepth and 4:2:2/4:4:4 decoding support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5706 >
2023-11-30 21:38:04 +09:00
Seungha Yang
0178cc188b
qsv: Add util methods for video format mapping
...
Remove duplicated format mapping code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5706 >
2023-11-30 21:38:04 +09:00
Seungha Yang
845f5d4856
d3d11: Rework memory allocation params signalling
...
Hide GstD3D11AllocationParams detail from public header and
set setter methods.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5717 >
2023-11-27 15:14:09 +00:00
Seungha Yang
0004a52866
qsvdecoder: Fix stream format detection
...
Fixing typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5700 >
2023-11-21 21:22:47 +09:00
Seungha Yang
fdb3cdf1fd
qsv: Remove x86_64 constraint on Linux
...
Updated oneVPL SDK supports 32bit and ARM build
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5032 >
2023-07-14 13:12:29 +00:00
Seungha Yang
25d10acaa2
qsv: Re-apply MinGW build workaround
...
Apply the changes of the commits
c80132e4a3
and
23261bccbb
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5032 >
2023-07-14 13:12:29 +00:00
Seungha Yang
1bc5dc778c
qsv: Update oneVPL SDK version to v2023.3.0
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5032 >
2023-07-14 13:12:29 +00:00
Seungha Yang
b5fb709be7
qsvh265dec: Use gst_h265_parser_parse_decoder_config_record()
...
Stop duplicating code and use newly added parsing method instead
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2759 >
2023-03-06 12:50:41 +00:00
Seungha Yang
2ffc594d96
qsvenc: Simplify property update helpers
...
Takes lock outside of helper methods, and protect property getter too
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4005 >
2023-02-20 21:52:43 +00:00
Seungha Yang
77b3e461db
qsvh264enc: Add more encoding options
...
Adding trellis quantization, frame size, slice size and number of
slices related encoding options
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4005 >
2023-02-20 21:52:43 +00:00
Seungha Yang
e48869e269
qsv: Use std::once_flag
...
GLib's once implementation will take mutex every time
in case of non-GCC build
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4005 >
2023-02-20 21:52:43 +00:00
Seungha Yang
5eb4253547
qsvh264enc: Optimization for byte-stream to packetized format conversion
...
Allocate single memory instead of per NAL
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4005 >
2023-02-20 21:52:43 +00:00
Seungha Yang
13ae9d2067
qsvav1enc: Set stream-format on caps
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3946 >
2023-02-12 23:18:04 +09:00
Seungha Yang
f6327e25a7
qsv: Promote encoder rank to PRIMARY on Windows
...
QSV is very well integrated with GstD3D11 infrastructure on Windows,
and this is the recommended H/W encoder element over the MediaFoundation
plugins on Intel GPU system.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3393 >
2022-11-19 00:43:10 +00:00
Seungha Yang
e1e9ee5506
qsv: Fix encoding error when input memory belongs to other GPU
...
Copy frame if VA display of input buffer is different from that
of encoder, like we've been doing on Windows
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3335 >
2022-11-05 13:59:45 +00:00
Seungha Yang
f7cc753274
qsvjpegenc: Add support for YUY2 format
...
Now GstD3D11 defines YUY2 format
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3316 >
2022-11-03 06:40:10 +09:00
Seungha Yang
1853dd56a4
qsv: Add JPEG decoder
...
Because DXVA does not define JPEG decoding, we need this
vendor specific API for Windows
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3316 >
2022-11-03 06:40:10 +09:00
Seungha Yang
be1771126d
qsv: Check 16K resolution support
...
... and remove duplicated code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3310 >
2022-11-01 17:23:52 +00:00
Seungha Yang
5e66dde1b2
qsv: Add VP9 decoder
...
Recent Intel GPU supports 12bits VP9 decoding but only VP9
profile2 with 10bits is defined by DXVA spec.
Thus, we need this vendor specific decoder element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3290 >
2022-10-31 19:30:47 +00:00
Seungha Yang
4038a486a0
qsv: Use GST_PARAM_DOC_SHOW_DEFAULT flag
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3250 >
2022-10-24 12:42:51 +00:00
Seungha Yang
23261bccbb
qsv: Enable MinGW toolchain support
...
Use PCRE regex method to work around (likely) GCC std::regex bug,
and enable building for non-MSVC
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3239 >
2022-10-24 10:53:40 +00:00
Seungha Yang
dcd3f210a0
qsv: Add plugin doc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2738 >
2022-10-21 21:29:25 +09:00
Seungha Yang
2b3f690355
qsv: Update SDK version to v2022.2.4
...
See release note
https://github.com/oneapi-src/oneVPL/releases/tag/v2022.2.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2738 >
2022-10-21 21:29:25 +09:00
Thibault Saunier
339e5916c6
Build documentation for rust plugins
...
- Update the docker image we use, starting using the standard one adding
`gtk4-doc` as required by rust plugins
- Update the plugins_doc_caches as required, some more plugins are built
with the new image
- Install ninja from pip as the version from F31 is too old
- Avoid buildings all GSreamer plugins when building the doc as it takes
time and resources for no good reason
- Stop linking to `GInstanceInitFunc` as it is not present in latest GLib
documentation, leading to warnings in hotdoc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2954 >
2022-09-15 20:11:47 +00:00
Thibault Saunier
6a4425e46a
meson: Call pkgconfig.generate in the loop where we declare plugins dependencies
...
Removing some copy pasted code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970 >
2022-09-01 21:17:35 +00:00
Seungha Yang
66d504ee58
d3d11: Don't find global default allocator
...
We were using global default allocator already. Pass null
allocator object to *_alloc() methods then the method will
use default allocator.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2843 >
2022-08-06 23:55:18 +09:00
Nirbheek Chauhan
b2d22c0f00
meson: Don't pass -Werror to vendored code
...
Do it the correct way with libusrsctp -- override the option so that
it's done in a compiler-agnostic and future-proof way.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2494 >
2022-07-30 11:27:12 +00:00
Seungha Yang
cf94045dbf
qsvencoder: Add support for D3D11 shared texture
...
Although input texture belongs to the other d3d11 device,
we can do GPU copy when its physical device is identical.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2790 >
2022-07-23 16:53:14 +00:00
Seungha Yang
02c2485468
qsvencoder: Fix for latency report when B-frame is enabled
...
QSV runtime will introduce additional delay when B-frame is enabled
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2730 >
2022-07-08 13:24:12 +00:00
Seungha Yang
4f90e9b561
qsvencoder: Do not query again if previous call succeeded
...
Don't need to query multiple times
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2730 >
2022-07-08 13:24:12 +00:00
Seungha Yang
aca71fd692
d3d11: Update gst_d3d11_allocation_params_new() interface
...
Define GST_D3D11_ALLOCATION_FLAG_DEFAULT (0) value instead of
casting enum type everywhere. And pass D3D11_RESOURCE_MISC_FLAG value
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2646 >
2022-06-27 19:33:57 +00:00
Seungha Yang
170271b86f
d3d11: Revert staging buffer pool implementation
...
The staging buffer pool implementation was added to improve
throughput performance since we can avoid per-frame
CPU copy operation via staging texture but it turned out that
we can not make it thread safe. See
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1182
Reverting the staging texture implementation as it does not show
any visible value.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2651 >
2022-06-23 22:03:52 +09:00
Seungha Yang
abd60b6b1e
qsvdecoder: Fix system memory alignment
...
Do right padding, not left
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2651 >
2022-06-23 21:43:25 +09:00
Seungha Yang
8e5a4246b9
qsvh264dec: Use newly added avcC data parsing API
...
Use gst_h264_parser_parse_decoder_config_record() method to parse
codec_data.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2449 >
2022-06-15 19:58:59 +00:00
Seungha Yang
44768b233a
qsvencoder: Do not copy if input is D3D11 texture
...
In case that input is D3D11 texture, QSV seems to work regardless
of the alignment. Actually the alignment requirement seems to make
only sense for system memory.
Other Intel GPU dependent implementations (new VA encoder, and MediaFoundation)
do not require such alignment nor other vendor specific ones (NVENC and AMF)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2540 >
2022-06-09 20:28:10 +00:00
Seungha Yang
7c8902c983
qsvencoder: Bind internal texture to render target
...
... so that memory allocator can initialize texture with black color
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2502 >
2022-05-27 14:03:49 +00:00
Seungha Yang
4c384f8356
qsv: Add AV1 encoder element
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2467 >
2022-05-23 13:28:11 +00:00
Seungha Yang
8e665fa435
qsvencoder: Move common property to baseclass
...
adapter-luid and device-path are common for all codecs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2467 >
2022-05-23 13:28:11 +00:00
Seungha Yang
909154a989
qsv: Disable non-MSVC build on Windows
...
... and remove pointless UWP consideration that will never work.
Cross-compiled binary has an issue which causes deadlock.
Although cerbero will not build this plugin for non-MSVC build,
people can still build this plugin and may complain its brokenness.
See also
https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/854
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2431 >
2022-05-17 03:32:10 +09:00
Seungha Yang
81ee2a9f2a
qsvencoder: Workaround for invalid DTS with VP9
...
SDK runtime seems to report zero DTS for all frames in case of VP9 but
we don't need to use DTS for the codec.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2291 >
2022-04-26 04:51:54 +09:00