Thibault Saunier
4dcea207d9
auto: Reuse subbins instead of recreating them over and over
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:24 +00:00
Thibault Saunier
79612de803
autoconvert: Force raw memory when using videoconvertscale
...
videoconvertscale advertises `ANY` feature, but it supports it only
in passthrough. Our goal with autoconvert is to ensure that conversion
is possible with the elements that are being plugged so we avoid
plugging `videoconvertscale` if the memory type is not system memory.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:24 +00:00
Thibault Saunier
9821c0ae96
autovideoconvert: Use cudaconvert for formats not allowed by glcolorconverts
...
There are some pixel formats supported by `cudaconvert` but not `glcolorconvert`
so prefer using `cudaconvert` for those cases rather than using
`videoconvertscale` and system memory
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:24 +00:00
Thibault Saunier
9908d11dab
auto: Add an 'autovideoflip' element
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:24 +00:00
Thibault Saunier
aa7c49ded8
autoconvert: Accept new caps when they are exactly equal to previous ones
...
That basically was overlooked as the code was clearly intending to do that
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:24 +00:00
Thibault Saunier
e41e31f2ae
auto: Add a gstautodeinterlace element
...
Which can do colorspace conversion if necessary.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:24 +00:00
Thibault Saunier
b0fdbcec64
autovideoconvert: Handle passing bin description instead of factories
...
This way we can build our own well know bins for conversion keeping the
code simple.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:24 +00:00
Thibault Saunier
292d8453d3
autoconvert: Factor out a new GstBaseAutoConvert class
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:23 +00:00
Thibault Saunier
f817afb865
auto: Expose colorspace and scaler elements for well know elements
...
And require Scaler in the class of elements to be plugged by
autovideoconvert
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:23 +00:00
Thibault Saunier
e153c558c7
autoconvert: Handle reconfiguring on the srcpad
...
Only upstream renegotiation was properly handled, we needed to answer
that when downstream forces a renegotiation we take into account the
new downstream restrictions.
And add tests for it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:23 +00:00
Thibault Saunier
69db5b77d1
autoconvert: Remove unused elements from the bin
...
Instead of letting all the elements that were added into the bin,
add them only when strictly needed and removed them when we stop using
them.
With previous refactoring we are keeping them in our own hashmap in
amy case so we can keep reusing the same elements as before.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:23 +00:00
Thibault Saunier
8266f534a7
autovideoconvert: Ignore elements with rank == NONE
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:23 +00:00
Thibault Saunier
a0a9e9e3cf
autoconvert: Fix the way we compare element types
...
We used to conside elements that were subclassses of another
element type as being the same (for example with videoconvertscale,
bother videoconvert and videoscale are subclasses of videoconvertscale
and that code was lost)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:23 +00:00
Thibault Saunier
17029974e0
autoconvert: Stop using qdata and unsafe weak refs
...
We are still using internal pads that are not added to the bin
but we now have a subclass and avoid qdata and weak refs as
they are not MT safe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:23 +00:00
Thibault Saunier
4cfe898f9b
autovideoconvert: Make it a subclass of GstAutoConvert
...
Instead of a wrapper, making it much simpler.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:23 +00:00
Thibault Saunier
8be2ae303a
autoconvert: Add a 'factory-names' property
...
Making the element more gst-launch friendly.
This also stop trying to handle usage of ->factories atomic and instead
use the object lock to handle them.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:23 +00:00
Thibault Saunier
1409826232
autoconvert: Remove not thread safe use of ->current_subelement
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:22 +00:00
Thibault Saunier
7fae06604e
autoconvert: Stop using generic element name
...
It makes it harder to debug for no real benefice in the case
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/899 >
2024-01-31 11:00:21 +00:00
Mengkejiergeli Ba
bf7f4eef20
msdk: Use gst_video_info_dma_drm_to_video_info to extract video info
...
Note that we need mappings for all drm_fourcc, otherwise we will get
GST_VIDEO_FORMAT_UNKNOWN for some formats...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5991 >
2024-01-31 06:24:13 +00:00
He Junyan
637d253e9f
va: baseenc: Fix the wrong parameter order to call va_map_buffer()
...
The current gst_va_base_enc_copy_output_data() uses wrong parameter
order to call va_map_buffer().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6020 >
2024-01-30 15:50:23 +00:00
Seungha Yang
51162acc31
cuda: Report device open error
...
Call gst_cuda_result() with CUDA_ERROR_NO_DEVICE error code if
we could not open device, so that application can catch the error
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6006 >
2024-01-30 14:30:41 +00:00
Seungha Yang
cd6d62ddf0
cuda: Use cuStreamDestroy_v2 API
...
Sync up with CUDA 11.x/12.0 header
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6006 >
2024-01-30 14:30:41 +00:00
Seungha Yang
07ba225183
cudaipc: Add support for custom meta forwarding
...
Forward custom meta to peer ipcsrc elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6006 >
2024-01-30 14:30:41 +00:00
Víctor Manuel Jáquez Leal
c760c72f7a
vkformat: fetch correctly feature flags2
...
Feature flags2 are fetch through VkFormatProperties3KHR and needs more guards
checking.
Moved out all the feature flags fetching to another function for clarity.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6014 >
2024-01-30 12:57:41 +00:00
Víctor Manuel Jáquez Leal
c24b47ecee
vkformat: use VK_KHR_get_physical_device_properties2 to guard
...
and VK_KHR_format_feature_flags2 rather than a meaningless version handling.
Also the patch brings back the usage of features2 for video extensions, use KHR
version to support the guarded symbols.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6014 >
2024-01-30 12:57:41 +00:00
Víctor Manuel Jáquez Leal
394aaa6a59
vulkan: early return if gst_buffer_pool_set_config() fails
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6013 >
2024-01-30 11:58:04 +00:00
He Junyan
b4eb97101f
va: Implement the vaav1enc plugin
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:26 +00:00
He Junyan
f4779f1fab
va: baseenc: Extend the create_output_buffer() to accept prefix data
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:25 +00:00
He Junyan
726cc895d8
va: encoder: Add copy_output_data() helper function
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:25 +00:00
He Junyan
39144f612e
va: encoder: extend prepare_output() virtual function
...
The output of VP9 and AV1 encoder is a little different from the H264
and H265 encoder, it may contain repeat frames and so the output frame
number may be more than the input. We need to call finish_subframe()
when some frame will be repeated later. So we need to extend the
current prepare_output() virtual function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:25 +00:00
He Junyan
a278137f7e
tests: Add the av1 bit code writer test case
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:25 +00:00
He Junyan
040042113e
codecparsers: Implement the AV1 bit code writer
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:25 +00:00
He Junyan
e1d96d0669
codecparsers: av1: add ref_global_motion_params in frame header
...
In order to ease the AV1 bit writer to write the global_motion_params
when primary_ref_frame is enabled, we need to add this field to set
the global_motion_params of the reference frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:25 +00:00
He Junyan
14a5d936f8
codecparsers: av1: add expected_frame_id in frame header
...
We need it to ease the bit code writing of AV1 frame header.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3015 >
2024-01-30 08:24:25 +00:00
Daniel Morin
73dedf9a51
h264parse: Remove un-needed check on SPS state
...
Fixes #3254
- Having SEI before SPS is not an issue anymore with AU boundary detection
based on backlog.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6004 >
2024-01-30 01:22:32 +00:00
Robert Mader
9ee58825cc
vaallocator: Allow non-linear modifiers for dummy mem_maps
...
A client may map dmabufs without the intention to either read or write
to the memory. One example is clients wanting to use the
`gst_video_frame_map()` helper function.
Thus, in order to make buffers from `GstVaDmabufAllocator` conveniently
usable, ignore the modifier check if the client specified neither
`GST_MAP_READ` nor `GST_MAP_WRITE`.
Also skip the `va_sync_surface()` call in that case, as it's likely only
needed for CPU reads/writes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5965 >
2024-01-29 17:10:50 +00:00
Nicolas Dufresne
0b38cb2320
vulkan: Fix clang compiler warning
...
clang does not like the array index assignment without the `=` sign in
it. This is a gnu extension I believe, and adding the sign is proper.
This fixes the following two warnings:
```
../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideo-private.c:32:40:
warning: use of GNU 'missing =' extension in designator [-Wgnu-designator]
[GST_VK_VIDEO_EXTENSION_DECODE_H264] {
^
=
../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideo-private.c:36:40:
warning: use of GNU 'missing =' extension in designator [-Wgnu-designator]
[GST_VK_VIDEO_EXTENSION_DECODE_H265] {
^
=
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5996 >
2024-01-26 16:42:30 +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
Jan Schmidt
ef71c1319a
webrtcbin: Improve SDP intersection for Opus
...
Remove optional sprop-stereo and sprop-maxcapture fields from Opus
remote offer caps before intersecting with local codec preferences.
According to https://datatracker.ietf.org/doc/html/rfc7587#section-7.1
those fields are sender-only informative, and don't affect
interoperability.
Fixes cases where the webrtc media will end up receive-only if the
local side wants to send stereo but the remote is sending mono, or
vice versa.
There may be other fields in other codecs, so the implementation
anticipates needing to add further fields and codecs in the future.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5993 >
2024-01-25 13:37:21 +00:00
Seungha Yang
3855646f1d
d3d12: Add MPEG-2 decoder
...
Most of code additions are just gluing already implemented
GstDxva and GstD3D12Decoder interfaces
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5979 >
2024-01-25 11:45:23 +00:00
Jan Schmidt
5e4e57ddb3
timecodestamper: Improve error handling and don't crash
...
Post a bus message explaining that input buffers must
have timestamps and return GST_FLOW_ERROR, instead of
a confusing NOT-NEGOTIATED
Also remove an errant buffer unref in the error handling
that would lead to crashes after.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5935 >
2024-01-25 01:38:08 +00:00
Jan Schmidt
e3fe89aba8
timecodestamper: Don't do finalizing in dispose
...
Add a finalize method and release locks and things in there, instead
of in the dispose method. Dispose may be called multiple times,
at any time, and should just safely release references to other
memory that might reference it back.
In this case, timecodestamper would later crash in the element
dispose method trying to take the freed mutex from
gst_timecodestamper_release_pad().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5935 >
2024-01-25 01:38:08 +00:00
Ruben Gonzalez
5e3fafd025
SA: Remove extra check since libva min version is 1.12
...
The libva version was updated to 1.12 in PR 4781 [1]
[1] https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4781
NOTE: I also sort va_sources
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5978 >
2024-01-25 00:45:55 +00:00
Philippe Normand
9a5ca61f87
vp9parse: Fix critical warning during caps negotiation
...
`gst_pad_get_allowed_caps()` returns a non-writable caps, so we need to make it
writable, otherwise the `gst_caps_remove_structure()` call below might trigger a
critical warning.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5975 >
2024-01-25 00:01:14 +00:00
Seungha Yang
3991801d4a
d3d12av1dec: Fix object type name on multi-gpu system
...
Fixing typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5964 >
2024-01-24 22:35:17 +00:00
Stéphane Cerveau
dd6fca1d02
vulkan video: add GST_VK_VIDEO_EXTENSIONS enum
...
To avoid using mysterious value, use an enum to
show the valid value in _vk_codec_extensions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5922 >
2024-01-24 17:00:47 +00:00
Matthew Waters
f50b43c83b
vulkan/format: also get features in the fallback case
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5576 >
2024-01-24 13:54:41 +00:00
Matthew Waters
634fc913a6
vulkan/format: don't assign an uneeded boolean
...
We don't actually need the basics_primary/secondary boolean. The
returned format is decided by the requested usage with fallbacks as
necessary.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5576 >
2024-01-24 13:54:41 +00:00
Matthew Waters
420548a6c6
vulkan/format: there is no current need to use the 64-bit feature flags
...
All of our feature flags are currently covered by the first
VkFormatFeatureFlag enum so far.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5576 >
2024-01-24 13:54:41 +00:00
Matthew Waters
080b25cbfe
vulkan/format: correct fallback features in from_video_info_2
...
The features were not actually used and were written into a boolean
value.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5576 >
2024-01-24 13:54:41 +00:00