Víctor Manuel Jáquez Leal
091fe0c1e7
vkencoder-private: enhance capabilities logging
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007 >
2024-12-04 02:17:44 +00:00
Víctor Manuel Jáquez Leal
1df99ec0d4
vulkan: store in GstVulkanVideoCapabilities encoder and decoder caps
...
The structure already stored the generic video capabilities and the specific
codec capabilities both for encoding an decoding. The generic decoder
capabilities weren't stored because it was only used internally in the decoder
helper object. Nonetheless, for the encoder, the elements will need the generic
encoder capabilities to configure the encoding. That's why it's required to
expose it as part of GstVulkanVideoCapabilities. And the generic decoder is
included for the sake of symmetry.
While updating the API vkvideoencodeh265 test got some code-style fixes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007 >
2024-12-04 02:17:44 +00:00
Víctor Manuel Jáquez Leal
cf9cc5ec1b
vkencoder-private: rename GstVulkanEncoderPicture
...
GstVulkanEncodePicture breaks the namespace. This commit fixes it by renaming it
to GstVulkanEncoderPicture, also new() and free() signature functions.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007 >
2024-12-04 02:17:44 +00:00
Víctor Manuel Jáquez Leal
1cc0a7d2bb
vkencoder-private: keep only one DPB view for layered DPB
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993 >
2024-11-29 06:36:52 +00:00
Víctor Manuel Jáquez Leal
133011c9ba
vkencoder-private: increase reference slots array
...
H264 has the maximum number of refs (36) of any supported codec.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993 >
2024-11-29 06:36:52 +00:00
Víctor Manuel Jáquez Leal
479defdcf9
vkencoder_private: move view creation to picture init
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993 >
2024-11-29 06:36:52 +00:00
Víctor Manuel Jáquez Leal
15a3ebf01e
vkencoder-private: shuffle up operation and query creation
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993 >
2024-11-29 06:36:52 +00:00
Víctor Manuel Jáquez Leal
83cd24a30d
vkencoder-private: shuffle up get format to bail out better
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993 >
2024-11-29 06:36:52 +00:00
Víctor Manuel Jáquez Leal
98d30cc30a
vkencoder-private: define encoded feedback flags by removing override bit
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993 >
2024-11-29 06:36:52 +00:00
Víctor Manuel Jáquez Leal
984956a6fe
vkencoder-private: fix parameters overrides
...
First remove validations since they will fail if there isn't a write operation.
It's valid to pass data without write operations.
Finally, it should check for hasOverride in feedback info. Nonetheless, there's
a NVIDIA bug returning always FALSE for hasOverride, that's why we currently
force it to TRUE.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993 >
2024-11-29 06:36:52 +00:00
Víctor Manuel Jáquez Leal
603e7c3e5f
vulkan: add gst_vulkan_video_image_create_view()
...
This function is moved from gstvkdecoder-private so it could be used by
gstvkencoder-private too, removing there what it should be duplicated code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7984 >
2024-11-28 07:05:40 +01:00
Víctor Manuel Jáquez Leal
3389347467
vkencoder-private: fix documentation
...
The function doesn't take the reference from caller, it keeps it's own
reference, so transfer is none.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Víctor Manuel Jáquez Leal
b88f15406f
vkencoder-private: fix code style and use gpointer
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Víctor Manuel Jáquez Leal
20a0a46676
vkencoder-private: fix and complete public functions prechecks
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Víctor Manuel Jáquez Leal
e9ef5e0c36
vkencoder-private: check for layered buffer when new picture
...
And balance `if` curly brackets.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Víctor Manuel Jáquez Leal
066144f78c
vkencoder-private: early return if dpb pool or dpb buffer already exist
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Víctor Manuel Jáquez Leal
52bd1931b8
vkencoder-private: usage structure is provided by caller
...
As all the profile structure, it's not intended to be filled in
gst_vulkan_encoder_start() function, but by the caller.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Víctor Manuel Jáquez Leal
a12daaca28
vkencoder-private: fix how to get bitstream buffer size
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Víctor Manuel Jáquez Leal
7a9bd2c9d4
vkencoder-private: doc: fix function name
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Víctor Manuel Jáquez Leal
e79ff5a4f1
vkencoder-private: use gst_clear_object()
...
Instead of g_clear_object() for sake of coherence.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Víctor Manuel Jáquez Leal
5e78ffe87a
vkencoder-private: fix return value to gst_vulkan_encoder_encode()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Víctor Manuel Jáquez Leal
751d628160
vkencoder-private: doc: remove (in) annotation
...
because it's the default one
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Víctor Manuel Jáquez Leal
af0e15e9be
vkencoder-private: move out indent macros
...
Outside of the structures whenever is possible, given indent limitations. In this way
the code has a better readability.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974 >
2024-11-27 20:13:12 +00:00
Stéphane Cerveau
7dfed55929
vkoperation: update doc to skip barriers array methods
...
Some methods are using arrays of element which type can
vary at compile time. These methods should not
be introspectable as it's not possible to determine
the final type.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7880 >
2024-11-25 15:24:17 +00:00
Matthew Waters
605cff0642
vulkan/videoutils: silence some maybe-unitialized warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875 >
2024-11-18 12:10:57 +11:00
Stéphane Cerveau
0dd706a420
vkutils: add gst_vulkan_ensure_element_device
...
In order to keep the same device across
the elements in the pipeline, use either the device id
to create the device or get the device from the context
set by the peer elements.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7843 >
2024-11-15 20:32:24 +00:00
Stéphane Cerveau
9a771b6909
vkinstance: add gst_vulkan_instance_create_device_with_index
...
This method will allow to create a device with its device_index
preparing the support of multiple device.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7843 >
2024-11-15 20:32:24 +00:00
Edward Hervey
38c07a2d01
all: Fix closure annotations
...
This was misused almost everywhere.
See
https://gi.readthedocs.io/en/latest/annotations/giannotations.html#support-for-gobject-closures
and: https://www.bassi.io/articles/2023/02/20/bindable-api-2023/
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7725 >
2024-10-25 08:58:29 +00:00
Sebastian Dröge
b7b24573ce
common: Use more efficient versions of GstCapsFeatures API where possible
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:26:18 +03:00
Nirbheek Chauhan
e402ed86df
vulkan: Fix some doc strings and also some g-i warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7481 >
2024-09-10 14:59:36 +00:00
Víctor Manuel Jáquez Leal
2b52b07a2f
vkencoder-private: remove duplicated structure definition
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354 >
2024-08-15 10:32:26 +00:00
Víctor Manuel Jáquez Leal
591eb2b527
vkencoder-private: don't override error on get_format() call
...
If gst_vulkan_video_encoder_get_format() fails it fills the error structure, so
it shouldn't be filled again.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354 >
2024-08-15 10:32:26 +00:00
Víctor Manuel Jáquez Leal
57eb2c700b
vkencoder-private: There's no need to store the aligned offset of 0
...
Since it's 0 too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354 >
2024-08-15 10:32:26 +00:00
Víctor Manuel Jáquez Leal
bc3317414b
vkencoder-private: use g_clear_pointer to unref packed headers
...
And use g_ptr_arra_unref() Instead of using the unrecommended g_ptr_array_free().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354 >
2024-08-15 10:32:26 +00:00
Víctor Manuel Jáquez Leal
e5f40b65f2
vkencoder-private: don't check twice for encoder parameter
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354 >
2024-08-15 10:32:26 +00:00
Víctor Manuel Jáquez Leal
d81186cbfc
vkencoder-private: fix code style
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354 >
2024-08-15 10:32:26 +00:00
Marijn Suijten
006ac293bc
vulkan: Replace open-coded precondition checks with g_return_val_if_fail
...
While analyzing gst_vulkan_get_or_create_image_view_with_info() it
seems obvious that this function returns NULL, and that this should be
covered in the return annotations. However, closer inspection indicates
that this is only a precondition check when the incoming arguments are
incompatible with each other, and should not be considered as a function
that optionally returns a pointer.
Signify this by using precondition checks instead of an opencoded
if-return-NULL.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5736 >
2024-08-12 19:23:08 +00:00
Marijn Suijten
10464f352f
vulkan: Annotate queue getter as nullable
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5736 >
2024-08-12 19:23:08 +00:00
Marijn Suijten
848256a7f5
vulkan: Mark some pointers to Vulkan info structures as const
...
These pointers are only used as read-only arguments, and should not be
treated as mutable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5736 >
2024-08-12 19:23:08 +00:00
Marijn Suijten
adf031a222
vulkan: Add missing out
annotation to decoder_out_format()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5736 >
2024-08-12 19:23:08 +00:00
Marijn Suijten
e5b627857a
vulkan: Fix context get/set annotations
...
Most notably the out annotations for gst_context_get_* were missing,
causing us to generate the wrong bindings for Rust.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5736 >
2024-08-12 19:23:08 +00:00
Víctor Manuel Jáquez Leal
28e16f897e
vkimagebufferpool: fix documentation grammar
...
Original-patch-by: Matthew Waters <matthew@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7288 >
2024-08-01 10:09:34 +00:00
Víctor Manuel Jáquez Leal
baac191d13
vkimagebufferpool: expose config_get_allocation_params()
...
Also enhanced the documentation and added a config parameter check for
gst_vulkan_image_buffer_pool_config_set_allocation_params()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7219 >
2024-07-31 12:15:43 +00:00
Edward Hervey
a38e244794
vulkan: Add missing since markers
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7277 >
2024-07-30 13:46:42 +00:00
Víctor Manuel Jáquez Leal
fad06c9b6f
vkimagebufferpool: refactor how image usage is set
...
Now that driver version is expected to be equal or superior to 1.3.275 the bug
in NVIDIA and RADV regarding usage is solved, we can revert commit b7ded81f7b
.
Also this patch sets the internal usage variable after all the validation are
run, thus the state don't keep an invalid usage.
Finally, the now unused supported_usage variable is dropped.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7247 >
2024-07-29 17:10:15 +02:00
Víctor Manuel Jáquez Leal
bb9eb6f477
vkimagebufferpool: add encoding usage as video usage
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7247 >
2024-07-29 17:10:15 +02:00
Víctor Manuel Jáquez Leal
541e2e93ca
vkimagebufferpool: reset the number of profiles at set_config()
...
Virtual method set_config() can be called several times, and if the number of
profiles counter isn't reset the pool will reach an error state.
The purpose of number of profiles is to check the number of valid vulkan video
profiles (two in the case of transcoding use-case, for example) so it's local to
set_config() virtual method.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7247 >
2024-07-29 17:10:14 +02:00
Víctor Manuel Jáquez Leal
d8e384085a
vulkan: encoder and decoder runtime check for driver version 1.3.275
...
Which is the one checked in meson. See commit 21ee264d65
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7247 >
2024-07-29 17:10:14 +02:00
Víctor Manuel Jáquez Leal
2387c3c4aa
vkimagebufferpool: no aliased images for video decoding
...
This fix regression in validation layer introduced by commit 3a2e8d2d19
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7211 >
2024-07-22 16:46:53 +00:00
Víctor Manuel Jáquez Leal
423f0d5384
vkdecoder: handle barrier internally for coincide references
...
This is to avoid a regression in validation layer (introduced by commit
916c4e70cd) when using vulkandownload
VUID-VkImageMemoryBarrier2-srcAccessMask-03914 .. vkCmdPipelineBarrier2():
pDependencyInfo->pImageMemoryBarriers[1].srcAccessMask (VK_ACCESS_TRANSFER_READ_BIT)
is not supported by stage mask (VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR)
since vulkandownload set DPB memories' access mask to
VK_ACCESS_TRANSFER_READ_BIT, while they are retain by the DPB queue, so when
they are used as DPB after been shown, this validation error is raised.
Must of the barrier values are set ignoring the previous state of the vulkan
images.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7211 >
2024-07-22 16:46:53 +00:00