Yinhang Liu
35177b81b3
msdk: Fix segfault for OneVPL dispatcher + legacy MSDK runtime path
...
From the spec, the OneVPL dispatcher should be able to work with
legacy MSDK runtime:
https://www.intel.com/content/www/us/en/docs/onevpl/upgrade-from-msdk/2023-1/onevpl-hardware-support-details.html
Currently supported capabilities:
OneVPL dispatcher + OneVPL runtime: dynamic capability
MSDK dispatcher + MSDK runtime: static capability
MSDK dispatcher + OneVPL runtime: static capability
OneVPL dispatcher + legacy MSDK runtime: static capability
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2506
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4466 >
2023-04-25 08:09:29 +00:00
Yinhang Liu
e97b5ad355
msdk: Add NumFilters check for VPP description
...
When NumFilters is equal to 0, the function should return
immediately.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4466 >
2023-04-25 08:09:29 +00:00
Yinhang Liu
ca125bd304
msdk: Add return when creating caps fails for VPP
...
When creating caps fails, the function should return immediately
and should not continue to register the plugin.
This patch fixes the issue of "gst_mini_object_ref: assertion
'mini_object != NULL' failed" in
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2506
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4466 >
2023-04-25 08:09:29 +00:00
Nicolas Dufresne
e709e2d97c
meson: Add a wrap file for libgudev
...
And allow fallback to it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4447 >
2023-04-19 22:47:19 +00:00
Yinhang Liu
75af296b82
msdkvpp: Enable dynamic capability support
...
Enable dynamic capability support for msdkvpp. The gstmsdkvpp
element can create the sink caps and src caps dynamically for
different platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
b1ebe93eb2
msdkvpp: Add function to dynamically create sink caps and src caps
...
We need to create the sink caps and src caps dynamically for different
platforms. By default, the vpp init function create static pad template
and the compatibility and flexibility of the platform are too poor.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
bfbde5ce22
msdkdec: Enable dynamic capability support
...
Enable dynamic capability support for msdkav1dec, msdkh264dec,
msdkh265dec, msdkmjpegdec, msdkmpeg2dec, msdkvc1dec, msdkvp8dec,
msdkvp9dec.
The gstmsdkdec elements can create the sink caps and src caps
dynamically for different platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
aa59d9828f
msdkdec: Add function to dynamically create sink caps and src caps
...
We need to create the sink caps and src caps dynamically for different
platforms. By default, the dec init function create static pad template
and the compatibility and flexibility of the platform are too poor.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
a4fc1c5031
msdkenc: Add documented capabilities to expose "stable" caps
...
Although msdkenc supports dynamic caps, it still needs to expose
"stable" caps to users.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
da4b6f17cf
msdkenc: Support image formats in low power mode for sink caps
...
There are some special image formats in low power mode, these
image formats should be supported in sink caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
3cb9c34030
msdkenc: Remove static templates in format setting
...
The elements have supported dynamic capability query, and it is not
necessary to refer the static templates.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
30d3ce3a9e
msdkenc: Enable dynamic capability support
...
Enable dynamic capability support for msdkav1enc, msdkh264enc,
msdkh265enc, msdkmjpegenc, msdkvp9enc, msdkmpeg2enc.
The gstmsdkenc elements can create the sink caps and src caps
dynamically for different platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
7aa0b29da8
msdk: Add function to specify string array parameters
...
Sometimes it is necessary to manually specify string parameters
of multiple options, such as format, interlace-mode, etc.
Add function to support this requirment.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:06 +00:00
Yinhang Liu
1f8d939559
msdkenc: Add function to dynamically create sink caps and src caps
...
We need to create the sink caps and src caps dynamically for different
platforms. By default, the enc init function create static pad template
and the compatibility and flexibility of the platform are too poor.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
3f47cdaee8
msdk: add function to get the format list
...
This static format list will be used to check the formats
supported by the platform.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
97e081c9d6
msdk: Register elements based on the codecs supported by the platform
...
By default, msdk plugin will register all encoders and decoders
on any platform, even unsupported encoders and decoders will be
registered. Dynamically register encoders and decoders besed on
the supported codecs on different platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
f773752bd8
msdk: Add function to get the implementation description
...
Through the implementation description, we can dynamically obtain
the codec capabilities supported by the platform.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
34a812a0c0
msdk: Add functions to get data members from MsdkSession
...
When getting mfxImplDescription, these data members need to
be used.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
6242fca526
msdk: Create msdk context without job_type
...
The job_type is not necessary when creating a normal msdk
context. Make the APIs for creating context more flexible.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Yinhang Liu
dafb801a18
msdk: Move all _gst_caps_has_feature to gstmsdkcaps.c
...
_gst_caps_has_feature is used by all msdk elements, so
move it to gstmsdkcaps.c
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4177 >
2023-04-17 05:24:05 +00:00
Mengkejiergeli Ba
471f3b3b93
msdkcontext: Remove unused codes in msdkcontext
...
We don't maintain three list (i.e. avail, locked and used) surfaces
as the old way did to achieve memory management, so remove the
correcponding codes for old memory management.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4276 >
2023-04-11 06:59:33 +00:00
Mengkejiergeli Ba
ec2ef6e2d3
msdk: Remove unused gstmsdkbufferpool and memory
...
GstMsdkBufferPool, GstMsdkVideoMemory and GstMsdkSystemMemory are no
longer used in msdk plugins, instead we use va/d3d11 pool for memory
allocation. So, remove the codes of unused stuffs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4276 >
2023-04-11 06:59:33 +00:00
Mengkejiergeli Ba
ef1397cbe3
msdk: Remove the func gst_msdk_is_msdk_buffer
...
Since we use va/d3d11 pool to allocate memory, the old msdk bufferpool
stuffs are not used anymore, so we don't need to check if an input
buffer is msdk buffer using gst_msdk_is_msdk_buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4276 >
2023-04-11 06:59:33 +00:00
Tong Wu
ebc9780c5f
msdkdec: delete use_video_memory
...
Since msdkdec uses video pool as the output buffer pool at all time. The
use_video_memory variable is not useful anymore. Now delete it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
8105d2044d
msdkdec: expand retry times to 1s
...
One-frame sleep time is not enough to wait until there is a surface
unlocked from downstream. Now expand it to 1s and add a return when
fail.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
123c8d14c1
msdkallocator_d3d: add gst_msdk_frame_free callback function
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
abe4d0046a
msdkdec: acquire buffer from video pool on Windows
...
Video memory is available on Windows. This patch is to make the buffers
acquired from d3d11 video pool.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
d2902be9eb
msdkdec: add thiz->ds_has_known_allocator for d3d11
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
245df2778e
msdkallocator_d3d: add alloc callback function for d3d allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
b3e13df8c1
msdkdec: add d3d11 pool during negotiation
...
Enable use_video_memory for Windows and add d3d11 pool.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Tong Wu
2b9cda928b
msdkdec: add d3d11 caps for srcpad
...
Set decoder srcpad with D3D11Memory.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088 >
2023-03-22 05:07:19 +00:00
Mengkejiergeli Ba
9e3faf69f2
msdkvpp: Pass null formats when create va allocator for RGB565
...
Fix https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1780
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4136 >
2023-03-21 05:42:34 +00:00
Tim-Philipp Müller
81716a1097
gst-plugins-bad: re-indent with GNU indent 2.2.12
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4182 >
2023-03-17 03:18:54 +00:00
Teng, Jin Chung
83364c5729
msdkh264enc: Adding BGRx format DMABuf support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4167 >
2023-03-15 15:06:57 +00:00
Yinhang Liu
89a6ce105b
msdkenc: Fix scale ratio for frame duration
...
For the calculation of frame duration, the numerator
should be FrameRateExtD, and the denominator should be
FrameRateExtN.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4119 >
2023-03-06 13:57:01 +08:00
Yinhang Liu
5c47002d99
msdkvpp: correct the fixated caps for src pad
...
In src pad, fixate othercaps instead of the NULL result caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3999 >
2023-03-02 07:21:10 +00:00
Mengkejiergeli Ba
28e2eccf55
msdkenc: Set pts at handle_frame
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3998 >
2023-03-01 01:42:50 +00:00
Mengkejiergeli Ba
799c6ff860
msdkdec: Check available surfaces when all pre-allocated surfaces are in use
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
3062f1b6b0
msdkdec: Apply the modified memory allocation logic
...
We did several things to enable the new memory logic in msdkdec:
(1) We always use video memory for decoder in linux path;
(2) We give negotiated pool to alloc_pool stored in GstMsdkContext which
will be used in callback mfxFrameAllocator:Alloc to alloc surfaces as
MediaSDK needs, and this pool is also available for decoder itself;
(3) We modify decide_allocation process, that is we make pool negotiaion
before gst_msdk_init_decoder to ensure the pool is decided and ready for
use in mfxFrameAllocator:Alloc callback; then we will consider the case
when we need to do the gpu to cpu copy.
(4) In gst_msdkdec_finish_task, we modify the way for copy following the
logic in (3).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
75efb204e5
msdkdec: Add a function to create va pool
...
Add a pool creation function name as 2 for later use which will create
va pool for video memory in linux and keep system pool for windows.
This gst_msdkdec_create_buffer_pool2 will replace gst_msdkdec_create_buffer_pool
when all the memory allocation modifications are ready in the commits after.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
8459349963
msdkallocator_libva: Rewrite gst_msdk_frame_alloc
...
Rewrite gst_msdk_frame_alloc and name it as xxx_2 before applying it.
It uses negotiated bufferpool stored in GstMsdkContext to allocate buffers
in the callback MfxFrameAllocator:Alloc, then extract VASurface from buffer,
wrap it as mfxMemIDs and pass these IDs to MediaSDK/oneVPL.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
4124b8ffd4
msdkdec: Add a function to directly allocate output GstMsdkSurface
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
b2001c1ca5
msdk: Add a bufferpool in GstMsdkContext structure
...
This alloc_pool is the negotiated pool and will be used in
mfxFrameAllocator:Alloc to create surfaces.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
3b0d300759
msdkdec: Enable va caps at srcpad
...
Set caps with VA memory at src pad with a higher priority, then comes
dmabuf caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3439 >
2023-02-27 12:22:13 +00:00
Mengkejiergeli Ba
4e60e91a05
msdkdec: Fix some lock issue
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3947 >
2023-02-20 09:38:09 +08:00
Yinhang Liu
b5357cbcbc
msdkav1enc: fix the category for msdkav1enc debug
...
The msdkav1enc debug initialized with gst_msdkav1dec_debug,
fix this.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3985 >
2023-02-17 16:02:58 +08:00
Ma, Mingyang
99cdc3a965
msdkenc: Let runtime decide parameters
...
Some parameters can be determined by runtime instead of default values. So unset the default and let runtime choose the best parameters
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3660 >
2023-02-06 02:24:54 +00:00
Mengkejiergeli Ba
dfe16a5cf2
msdkallocator: Use const ptr of videoinfo in func param
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3621 >
2023-02-01 04:31:23 +00:00
Brad Hards
29dd254f7a
h264parser: typo fix in enum value
...
Old value is marked deprecated, new enum with same entry is added. Should be binary compatible.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1318 >
2022-12-12 21:43:14 +00:00
Ma, Mingyang
66087b6276
msdkdec: Update decoding pts
...
Update frame pts before calling gst_video_decoder_finish_frame, or frames may be lost when transcoding in specific stream
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3449 >
2022-11-25 01:42:58 +00:00