Commit graph

2334 commits

Author SHA1 Message Date
Seungha Yang
8a4642cad7 win32ipc: Use gst_util_get_timestamp()
Instead of duplicating the same code

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4794>
2023-06-08 01:02:45 +00:00
Seungha Yang
3c5684e085 d3d11: Use gst_util_get_timestamp()
instead of duplicating the same code

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4794>
2023-06-08 01:02:45 +00:00
Vivia Nikolaidou
0e62bb2ba6 basetsmux: Fix language crash when ts_pad->stream is NULL
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4785>
2023-06-07 16:58:38 +00:00
Vivia Nikolaidou
0a331402d6 tsdemux: Detect language from ac3 descriptor
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4709>
2023-06-07 13:04:03 +00:00
Seungha Yang
4d6a2dea89 d3d11ipcsrc: Stop asynchronously in case of io-mode=import
In case of import mode, d3d11ipcsrc does not know when outputted
memories will be released.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4774>
2023-06-06 17:54:44 +00:00
Seungha Yang
ef1853aa8d d3d11ipc: Use unnamed shareable handle
Exchanging HANDLE would have smaller overhead than string

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4774>
2023-06-06 17:54:44 +00:00
Seungha Yang
1e5343f0c6 d3d11memory: Add support for resource sharing via NT handle
Adding gst_d3d11_memory_get_nt_handle() method so that GstD3D11Memory
can hold shareable NT handle and for easy reuse of it

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4774>
2023-06-06 17:54:44 +00:00
Seungha Yang
aada49c6a6 d3d11ipcsink: Don't clear prepared sample on render
render() can be called multiple times for the same prepared sample

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4774>
2023-06-06 17:54:44 +00:00
Sebastian Dröge
f1e7ac13cd decklink: Implement Windows string conversion with common API between MinGW and MSVC
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738>
2023-06-06 06:21:46 +00:00
Sebastian Dröge
ab582a3b7d decklink: Add some newlines in long defines
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738>
2023-06-06 06:21:46 +00:00
Maksym Khomenko
72e7ae724f decklink: Calculate string size before malloc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738>
2023-06-06 06:21:46 +00:00
Sebastian Dröge
ab946cd41e decklink: Use the macOS version of the SDK on macOS and not the Linux one
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738>
2023-06-06 06:21:46 +00:00
Sebastian Dröge
a2850bcb88 decklink: Free SDK strings after usage on Linux
While they're const char* they still need to be freed like on Windows
and macOS and would be leaked otherwise.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738>
2023-06-06 06:21:46 +00:00
Sebastian Dröge
59ca9ef342 decklink: Correctly handle SDK strings on macOS
They're CFStringRef* and not plain NUL-terminated char* C strings.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4738>
2023-06-06 06:21:46 +00:00
Aaron Boxer
e624e7c695 onnxobjectdetector: gracefully handle Ort exceptions rather than dumping core
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4765>
2023-06-05 17:47:58 +00:00
Víctor Manuel Jáquez Leal
e074cb55f7 va: remove unused parameters in internal function
gst_va_buffer_surface_new() don't use neither format, width nor height.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4768>
2023-06-04 19:16:53 +02:00
Matthew Waters
c3af29db1e build/android: remove all references to gnustl
Not needed anymore with NDK R25.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4747>
2023-06-03 23:21:34 +00:00
Seungha Yang
e4c43db5d5 d3d11basefilter: Forward video related metas if needed
The same as in GstVideoFilter

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4751>
2023-06-02 00:33:52 +00:00
Michael Grzeschik
ea2764aa69 uvcsink: add probe handling for live pipelines
Currently the uvcsink is only capable to run in an application
that is handling the state transitions of the pipeline properly
by checking on streaming event from the uvcsink.

This code is improving the element by adding an fakesink to
consume possible videostream flow in case the pipeline state
is not changing on hosts streamoff.

This is helpfull when using local gst-launch pipelines where
the streaming event is not monitored to change the pipelines
state.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304>
2023-06-01 19:19:05 +00:00
Michael Grzeschik
5d82deb2c5 uvcsink: add new bin element around v4l2sink
This patch adds an element to stream video data to an uvc video gadget.
The element handles the uvc events STREAMON, STREAMOFF, SETUP and DATA.
to start, stop and configure the video buffer flow by the use of pad
probes. It works with linux kernels of versions higher than v6.1.

The element makes use of the v4l2sink proxy property v4l2sink::device
to locate the corresponding device to parse the configfs for additional
data.

The code in uvc.c is basically derived from /lib/uvc.c in
https://git.ideasonboard.org/uvc-gadget.git.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304>
2023-06-01 19:19:05 +00:00
Michael Grzeschik
6ef14df09b uvcsink: configfs.{c,h}: add helper function to parse by videodev
- add helper function video_find_config_name
- add helper function configfs_parse_uvc_videodev

With these helper functions it is possible to parse the
configfs entry corresponding to the used videodev.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304>
2023-06-01 19:19:05 +00:00
Michael Grzeschik
079fc8216c uvcsink: configfs.c: use G_N_ELEMENTS instead of ARRAY_SIZE
We don't have ARRAY_SIZE in glib.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304>
2023-06-01 19:19:05 +00:00
Michael Grzeschik
fd3a6ce642 uvcsink: configfs.c: fix globing in uvc_video_device
The gadget in the sysfs can be postfixed with an index.
Fix the globbing by adding a wildcard after /gadget*/.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304>
2023-06-01 19:19:05 +00:00
Michael Grzeschik
38aa1fc414 uvcsink: configfs.c: refactor location of GUID formats
- move GUID handling to beginning

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304>
2023-06-01 19:19:05 +00:00
Michael Grzeschik
da61d8f96d uvcsink: configfs.{c,h}: add parsing of more fields from format
- add parsing of dwMaxVideoFrameBufferSize

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304>
2023-06-01 19:19:05 +00:00
Michael Grzeschik
e50dcac517 uvcsink: configfs.c: fix code for local usage
- use local header file and remove unused reference to tools.h

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304>
2023-06-01 19:19:05 +00:00
Michael Grzeschik
42c53f971c uvcsink: add configfs.{c,h} from https://git.ideasonboard.org/uvc-gadget.git
- imported both files and run gst-indent on them

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1304>
2023-06-01 19:19:04 +00:00
Vivia Nikolaidou
395e0c3925 tsmux: Resend PMT whenever the language changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4711>
2023-06-01 17:05:11 +00:00
Víctor Manuel Jáquez Leal
06d793033d vulkan/format: use basic features (v1) as fallback
if vkGetPhysicalDeviceFormatProperties2 isn't available.

This approach assumes that, for basic features flags symbols,
VkFormatFeatureFlagBits and VkFormatFeatureFlagBits2 are binary equivalent.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4746>
2023-06-01 13:58:47 +00:00
Matthew Waters
0a74a967e3 vulkan/format: don't rely on vulkan header version for function availability
e.g. android will have update vulkan.h headers but old platforms will
not contain the function and will result in a link error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4746>
2023-06-01 13:58:47 +00:00
Arun Raghavan
d5755744c3 webrtcdsp: Update code for webrtc-audio-processing-1
Updated API usage appropriately, and now we have a versioned package to
track breaking vs. non-breaking updates.

Deprecates a number of properties (and we have to plug in our own values
for related enums which are now gone):

  * echo-suprression-level
  * experimental-agc
  * extended-filter
  * delay-agnostic
  * voice-detection-frame-size-ms
  * voice-detection-likelihood

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2943>
2023-06-01 09:34:37 +00:00
Mathieu Duponchelle
211928ca41 webrtc/nice: put usage of OPTION_CONSENT_FRESHNESS behind check
See https://gitlab.freedesktop.org/libnice/libnice/-/merge_requests/257

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4750>
2023-06-01 00:42:28 +00:00
Thibault Saunier
4a4d7821a5 cudabasetransform: Handle video related meta as appropriate
This implements the same logic as GstVideoFilter

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4731>
2023-05-31 20:09:42 +00:00
Thibault Saunier
8d3f90eb8d cuda: memory: Enhance debug when CU_GL_DEVICE_LIST_ALL fails
Ensuring error from cuda is logged

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4731>
2023-05-31 20:09:42 +00:00
Colin Kinloch
82c449ce00 waylandsink: Emit "map" signal boarder surface is ready
This allows gtkwaylandsink to queue a draw of its gtk widget at the
correct time, avoiding a race.

Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4722>
2023-05-31 18:57:56 +00:00
Stéphane Cerveau
5873747a59 tools: add bad/ges/omx tools to gst_tools
In static mode, these tools must be built
after the gstreamer-full library to use
the symbol gst_init_static_plugins.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4128>
2023-05-31 15:17:11 +00:00
Stéphane Cerveau
dd17beb681 gstreamer-full: add full static support
Allow a project to use gstreamer-full as a static library
and link to create a binary without dependencies.

Introduce the option 'gst-full-target-type' to
select the build type, dynamic(default) or static.

In gstreamer-full/static build configuration gstreamer (gst.c)
needs the symbol gst_init_static_plugins which is defined
in gstreamer-full.
All the tests and examples are linking with gstreamer but the
symbol gst_init_static_plugins is only defined in the gstreamer-full
library. gstreamer-full can not be built first as it needs to know what plugins
will be built.

One option would be to build all the examples and tests after
gstreamer-full as the tools.

Disable tools build in subprojects too as it will be built at the end of
build process.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4128>
2023-05-31 15:17:11 +00:00
Jan Alexander Steffens (heftig)
4008b872bb fdkaacdec: Support up to 5 rear channels
The `switch (n_rear)` supports up to 5 rear channels, but our channel
set only had space for 3. Size the set properly to fix this.

This didn't actually cause any memory unsafety as `PUSH_CHAN` would stop
incrementing `n_rear` if the channel set is already full.

Thanks to @alatiera for noticing this.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4712>
2023-05-30 14:18:08 +02:00
Mengkejiergeli Ba
a15a16c99b msdkenc: Add a property to insert pic timing SEI for avc and hevc
User can decide whether to insert pic timing sei with pic_struct
syntax via oneVPL API mfxExtCodingOption.PicTimingSEI.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4673>
2023-05-29 02:11:20 +00:00
Jordan Petridis
6032f51162 openjpegenc: do not set bpp field on opj_image_cmptparm_t
It's deprecated in favor of the .prec field which we already set.

https://github.com/uclouvain/openjpeg/pull/1383/

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4715>
2023-05-26 20:24:27 +00:00
Víctor Manuel Jáquez Leal
8b75e5fb57 vkvideoutils: fix code-style
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4716>
2023-05-26 10:08:27 +02:00
Víctor Manuel Jáquez Leal
b982fae9c7 tests: check if vulkan h264 decoding is supported
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4716>
2023-05-26 10:08:27 +02:00
Víctor Manuel Jáquez Leal
365454790a vkphysicaldevice: fetch queue family query result support
And merged in a single structure the queue family operations report.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4716>
2023-05-26 10:08:27 +02:00
Víctor Manuel Jáquez Leal
e2a40c58bf vkimagebufferpool: chain the correct structure
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4716>
2023-05-26 09:45:07 +02:00
Víctor Manuel Jáquez Leal
e9414b9582 vkvideoutils: fix bug for chroma string comparison
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4716>
2023-05-26 09:45:07 +02:00
Seungha Yang
8e1677bd6a d3d11videosink: Fix error on pause and play
The show_frame() can be called without prepare() call on paused to
playing state change. Thus the prepared buffer should not be cleared
on show_frame()

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4700>
2023-05-25 13:24:43 +00:00
Vivia Nikolaidou
1781b26ad2 tsmux.h: Remove TSMUX_MAX_ES_INFO_LENGTH dead code
Also TsMux.es_info_buf which was also not used anywhere

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4681>
2023-05-23 14:00:11 +00:00
Vivia Nikolaidou
9e84b737cb tsmux: Separate DVB and ATSC AC3 descriptors
The previous code was ATSC-specific. Separated it into gstatscmux.c and
added the DVB-specific one from ETSI EN 300 468 V1.11.1 (2010-04)

https://www.etsi.org/deliver/etsi_en/300400_300499/300468/01.11.01_60/en_300468v011101p.pdf

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4681>
2023-05-23 14:00:11 +00:00
Vivia Nikolaidou
866d5d87c4 tsmux: Refactor AC3 descriptor to use GstByteWriter
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4681>
2023-05-23 14:00:11 +00:00
Vivia Nikolaidou
637e263504 tsmux: Parse bitrate from tags into the stream
Instead of parsing a hardcoded zero and always writing the highest
limit.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4681>
2023-05-23 14:00:11 +00:00
Vivia Nikolaidou
7a98a4214b tsmux: Fix 0x81 descriptor for AC3 streams
According to ATSCA/52:2018

https://prdatsc.wpenginepowered.com/wp-content/uploads/2021/04/A52-2018.pdf

Used wireshark as ground truth for detection/parsing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4681>
2023-05-23 14:00:11 +00:00
Ruben Gonzalez
059965fe53 doc: Fix newline char between authors
Found running `gst-inspect-1.0 -a |& grep -v ":" | grep @`

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4682>
2023-05-20 05:48:23 +00:00
Seungha Yang
f435d192e1 d3d11videosink: Don't use CS_OWNDC style
It's completely unnecessary since we never use
the device context (e.g., BeginPaint() or GetDC() never called).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4684>
2023-05-20 03:16:47 +00:00
Shengqi Yu
b092c3f580 h264parse: adjust some logs printing level in h264parse
adjust log level from GST_ERROR to GST_WARNING when h264 caps have
codec_data but no avc format or have no codec data or stream-format.
Because theses are not real errors, it is easy to mislead if print error
logs.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4675>
2023-05-20 02:07:36 +00:00
Thibault Saunier
6dff93acf6 testsrcbin: Remove spurious caps unref
Caps are cleared at the end of the function

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2575

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4668>
2023-05-19 22:00:39 +00:00
Ma, Mingyang
a2e83a019a msdkdec: Fix decoding cases with resolution change (VP9)
The resolution of VP9 video can be changed without keyframe.
The change detected by MSDK/VPL should be negotiated with downstream.
Only the situation can be fixed here if the changed resolution is less than or equal to the initial surface resolution.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4450>
2023-05-19 05:51:36 +00:00
Víctor Manuel Jáquez Leal
8670a023f1 vkimagebufferpool: prepare new allocated buffers
This means change initial memory undefined layout and access to the ones
required for their usage.

This is only used if VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME is available.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:30 +00:00
Víctor Manuel Jáquez Leal
7c9d88d586 vkdownload: input memories may not match output memories
Split the iterations, one for images and another for buffers, while first
barrier on images, and later in buffers after copy.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:30 +00:00
Víctor Manuel Jáquez Leal
e177080bec vulkan: number of memories in buffer rather than number of planes
New vulkan formats don't match the number of planes with the number of memories
attached to the buffer. This patch changes the pattern of using planes for
traverse the memories with the number of attached memories.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
565fe3291e vkutils: add gst_vulkan_get_or_create_image_view_with_info()
It's a generalization of the original gst_vulkan_get_or_create_image_view().

The reason for passing the whole VkImageViewCreateInfo structure rather than
just the missing fields, is because VkImageSubresourceRange and
VkComponentMapping can be different and those are most of VkImageViewCreateInfo.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
bb29b4dfec vkdevice: enable device optional extensions
Enable before-hand what the user might use.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
00189bf8f3 tests: vkimagebufferpool and format mapping
This test will create a pool for VkImageMemory for decoding and others usages.

And a test for the new Vulkan format mapping.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
d7bbcffe14 vkformat: add VK_FORMAT_G8_B8R8_2PLANE_420_UNORM
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
b1321f78d3 vkswapper: use gst_vulkan_format_to_video_format()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
d84926b60f vkformat: add gst_vulkan_format_to_video_format()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
ce7256e0d3 vulkan: use gst_vulkan_format_get_aspect()
In order to use it, without depending in a previous calling of
_create_info_from_args(), VkFormat as input parameter to
gst_vulkan_image_memory_init() was added.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
b8e908131d vkformat: add gst_vulkan_format_get_aspect()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
26d00ba0cc vkimagebufferpool: fail if image cannot be allocated
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
d91c17264c vkimagebufferpool: gst_vulkan_image_buffer_pool_config_set_decode_caps()
This is going to be used when the pool is used by a video decoder for
VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, since the frame allocation needs the
VkVideoProfileInfoKHR, and for that here GstCaps is used to wire it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
07271fc648 vkvideoutils: add gst_vulkan_video_profile_{to/from}_caps()
Add this new source file with utils for video profile mapping with GstCaps.
These method is used to pass this information along GStreamer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
c7c5dedd7f vkimagebufferpool: use gst_vulkan_image_memory_alloc_with_image_info()
As the pool will be only used for images with usage
VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR only one layer has to be allocated.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
83e73a2f59 vulkan: find memory type index with requirements
The specification says:

VUID-vkAllocateMemory-pAllocateInfo-01713

must pAllocateInfo->allocationSize be less than or equal to
VkPhysicalDeviceMemoryProperties::memoryHeaps[memindex].size where memindex =
VkPhysicalDeviceMemoryProperties::memoryTypes[pAllocateInfo->memoryTypeIndex].heapIndex
as returned by vkGetPhysicalDeviceMemoryProperties for the VkPhysicalDevice that
device was created from.

Though this can be catch by the validation layer, the requested frame size
depends on the use case so it's better to check this restriction by our code.

This patch also makes use of this new function to find memory type index,
 and removes the unused function to find memory type index, which, as GstVulkan is
considered unstable, we can do it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
4dd0fd6797 vkimagebufferpool: use gst_vulkan_format_from_video_info_2()
To get the number of images and its Vulkan formats for the GStreamer format.
Also it gets the basic image usage by default if it's not defined. It fails if the
video format is not supported.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
35dbd9f92c vkformat: add gst_vulkan_format_from_video_info_2()
The purpose of this function is to get more info about the mapped Vulkan format
from the GStreamer format, since they can be multiple Vulkan formats for one
GStreamer format.

Also a Vulkan format may have certain usage and aspects that must be verified.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
14dd6aac16 vkformat: move gst_vulkan_format_from_video_info()
Moved gst_vulkan_format_from_video_info() from gstvkimagememory to gstvkformat
in order to centralize the video format operations in a single source file.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
b1c166b53c vkimagebufferpool: pass usage and memory properties
Pass, in config structure, usage and memory properties, assigning proper
defaults if they aren't set. This parameters are used in image memory
allocation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
7b62c26139 vkdevice: add gst_vulkan_device_queue_family_indices()
This method will return a GArray with all the queue family indices created by
the device when it's opened. This array will be used by VkImageCreateInfo to
allocate a new Vulkan image.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
ea2bd1882f vkdevice: add programming parameters verification
To `gst_vulkan_device_foreach_queue()`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
1e2ff519c6 vkbuffermemory: add gst_vulkan_buffer_memory_alloc_with_buffer_info()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
64ba7fb2eb vkimagememory: gst_vulkan_image_memory_alloc_with_image_info()
This new method instead of passing a bunch of variables which will fill
`VkImageCreateInfo`, the method accepts this whole structure, so the caller can
customize it as much as they want.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
5f5249cf73 vkimagememory: look up for Vulkan format using a static table
Replace the switch structure with explicit and extendable static table.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
1458c31031 vkdevice: enable multiple queues per device
Originally the opened device only created one queue of one family queue, to say
graphics one. This approach felt short when other queue family is required not
shared with the graphics queue family, for example video decoding.

This new approach proposes to create those queues with supported families. For
now, only video decoding and encoder are created, if they are available.

In order to hold multiple queues opened, an array of VkDeviceQueueCreateInfo is
held along the live the device object, because it's used to traverse or get the
opened queues.

The algorithm to choose which queues create (or open) is to look for the queue
with more family bits, which also supports the one we are requesting, thus
minimizing the number of global queues of a certain family to create.
Nonetheless, the number of queues to open per family is set to be all of them,
widening the possibility of parallelism.

Also, this commit do a cosmetic refactor the assigning the physical device
nearer where it's used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
25140499fc vkdevice: enable features from physical device
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:29 +00:00
Víctor Manuel Jáquez Leal
9e807b58a0 vkphysicaldevice: add gst_vulkan_physical_device_get_features()
gst_vulkan_physical_device_get_features() is a private function to access to the
available features in the device.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:28 +00:00
Víctor Manuel Jáquez Leal
83160fb47c vkphysicaldevice: fetch queue family video codec operations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:28 +00:00
Víctor Manuel Jáquez Leal
dde60fab37 vkdebug: add video queue flags strings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:28 +00:00
Víctor Manuel Jáquez Leal
d03df074f7 vulkan: detect vulkan video extensions
Also adds a meson option to enable them.

The symbol GST_VULKAN_HAVE_VIDEO_EXTENSIONS is an alias of
defined(VK_VERSION_1_4) || (defined(VK_VERSION_1_3) && VK_HEADER_VERSION >= 238
if the option is allowed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4351>
2023-05-19 04:26:28 +00:00
Yinhang Liu
3273135a60 docs: msdkenc: update supported image formats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4000>
2023-05-19 00:02:09 +00:00
Yinhang Liu
76fe73806b msdkenc: Remove unsupported image formats for MSDK path
For unsupported encoding formats, please use msdkvpp plugin
to do conversion first.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4000>
2023-05-19 00:02:09 +00:00
Yinhang Liu
f292b6061c msdkenc: Remove internal vpp function
The internal vpp function and msdkvpp plugin are duplicated,
so remove the internal vpp, please use msdkvpp plugin to do
conversion if necessary.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4000>
2023-05-19 00:02:08 +00:00
Mengkejiergeli Ba
7613e50cbb bad:docs: Add new properties description for msdkh264enc and msdkh265enc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4589>
2023-05-18 17:53:44 +00:00
Mengkejiergeli Ba
7d993f930b msdkenc: Add properties max/min-qp for I/P/B frame separately in avc and hevc
max-qp and min-qp will set the same quantizer scale for I/P/B frames,
while max-qp-i/p/b and min-qp-i/p/b enable the max/min quantizer for I,P,B
frame separately. When max/min-qp and max/min-qp-i/p/b are given
simultaneously, the later set one will overide the previous one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4589>
2023-05-18 17:53:44 +00:00
Sangchul Lee
2a79f23e9d tests/webrtc: Validate peer connection stats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2127>
2023-05-18 12:08:55 +00:00
Sangchul Lee
2661bf6d9a webrtc: Add data-channels-opened/closed to get-stats signal documentation
With contributions from: Matthew Waters <matthew@centricular.com>

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2127>
2023-05-18 12:08:55 +00:00
Haihua Hu
78d9d8478d gstplay: fix critical log when enable playbin3
when play rtsp stream with playbin3 enabled, there are some critical logs:

g_object_get_is_valid_property: object class 'GstPlayBin3' has no property named 'n-video'
g_object_get_is_valid_property: object class 'GstPlayBin3' has no property named 'n-audio'
g_object_get_is_valid_property: object class 'GstPlayBin3' has no property named 'n-text'

self->collection could be NULL when READY->PAUSED if the pipeline
is live, then it will fallback to query playbin2's property,
we can call gst_play_streams_info_create_from_collection
directly, it will check self->collection internal.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4460>
2023-05-18 10:27:29 +00:00
Ruben Gonzalez
5c0f6b88d8 README.md: fix current version
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4662>
2023-05-18 06:25:50 +00:00
Martin Nordholts
85e3f31740 webrtc: Track stats for data channels opened and closed
Track data channel stats for `dataChannelsOpened` and
`dataChannelsClosed` in `RTCPeerConnectionStats` as specified by
https://www.w3.org/TR/webrtc-stats/#dictionary-rtcpeerconnectionstats-members

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4638>
2023-05-18 04:31:16 +00:00
Seungha Yang
ad70dd64f9 d3d11videosink: Add render-rectangle property
... and resize HWND on GstVideoOverlay::set_render_rectangle even when
we are rendering without external HWND

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2563
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4653>
2023-05-17 23:06:05 +00:00
Seungha Yang
e9d8bf7532 h264parser: Define level enum values
... and stop duplicating it

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4595>
2023-05-17 21:29:25 +00:00
Elliot Chen
f722d9c428 gstplay: avoid getting property of playbin2 if subtitle_sid is null
There is a probability of getting "current-text" property
 when play with playbin3, and this property is available
 only in playbin2.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4106>
2023-05-17 15:24:29 +08:00
Seungha Yang
289bc9c91d wasapi2: fix "device" property description
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4651>
2023-05-17 04:50:04 +00:00
Tim-Philipp Müller
c80b0a589a wasapi: fix "device" property description
Fixes gstreamer/gst-plugins-bad#1620

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4651>
2023-05-17 04:50:04 +00:00
Carlos Rafael Giani
5cf384a632 avdtputil: Use int instead of int range for fixed bitpool values
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1698

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4650>
2023-05-17 03:13:54 +00:00
Seungha Yang
7a3be74b63 cudaconvertscale: Add support for flip/rotation
Similar to the d3d11convert element, colorspace conversion, resizing and
flip/rotation operations can be done in a single kernel function call

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4640>
2023-05-16 19:24:36 +00:00
Seungha Yang
d335eb8c7c d3d11convert: Fix for runtime property update
Every setup happens in set_caps() method but basetransform will not
call the set_caps() if in/out caps were not changed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4646>
2023-05-16 16:03:35 +00:00
He Junyan
3497bbb8a8 va: No need to sort the device after registered
The va devices are already registered by the drm path order, so
there is no need to sort them again after registered.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4643>
2023-05-16 08:37:48 +00:00
He Junyan
8e52e42444 va: Sort udev path name before register the va plugins
The devices list returned by g_udev_client_query_by_subsystem() may
contain udev devices in disorder path name. For example, on some
platform it may contain renderD129 before renderD128 device. This
will cause we register wrong va plugin name. In this case, the
renderD129 will be registered as default plugins such as vah265dec,
while the renderD128 will be registered as varenderD128h265dec.
This conflicts with the non-udev version of gst_va_device_find_devices().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4643>
2023-05-16 08:37:48 +00:00
Víctor Manuel Jáquez Leal
ad40a9323e jpegparse: fix warning text and debug data
They were backwards or missing.

Fix: #2567
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4641>
2023-05-15 17:31:58 +02:00
Johan Sternerup
a1f0727186 sctpenc: Fix potential shutdown deadlock
When transitioning from state PAUSED to READY, the sctpenc element
could previously be stuck in an endless loop trying to resend data
in case the underlying sctp stream was in the process of
resetting. usrsctp_sendv() would repeatedly return EAGAIN with the
result that 0 bytes were sent and then sctpenc would retry forever.

To bring sctpenc out of the resend loop we just need to inform the
sink pad that it is flushing, which is already done for the associated
data queue, but we also need to set the bools associated with the
sinkpads that are used as the loop criterion.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4601>
2023-05-15 06:57:07 +00:00
Yinhang Liu
c5748c2051 msdkmjpegdec: Fix ColorFormat for BGRx format
For msdkmjpegdec, the BGRx format is supported in src caps,
set the ColorFormat to MFX_JPEG_COLORFORMAT_RGB.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4489>
2023-05-15 05:41:35 +00:00
Yinhang Liu
3883ae8c2a msdk: Fix initialization of the msdk_session.impl_idx
This fixes the issue of msdk_session.impl_idx not being initialized.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4448>
2023-05-15 01:22:29 +00:00
Seungha Yang
e34397ab09 d3d11: Update element meta
Make them consistent, update outdated description and fix some typos

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4619>
2023-05-12 20:13:58 +00:00
Víctor Manuel Jáquez Leal
7df7efdc3f vulkan: minor meson clean ups
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4621>
2023-05-12 18:04:52 +00:00
Philippe Normand
fe4f034c8a wpe: Add support for the WPEWebKit 2.0 API version
Most notably this disables console messages support when the 2.0 API is used,
because there is no replacement for it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4159>
2023-05-12 14:20:31 +00:00
Matthew Waters
b10ec569d7 webrtc: advertise end-of-candidate with an empty candidate string
Just like what is done in the browsers.  When this is sent to the peer,
they will be able to know that no more candidates are coming and can
complete ICE.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4598>
2023-05-12 04:52:22 +00:00
Piotr Brzeziński
f60c87769f macos: Remove old NSApp workaround related code
This is no longer needed since the introduction of `gst_macos_main()` in 1.22.
Before that existed, we had a patch for GLib in Cerbero, which did work but made it
impossible to update GLib at all. The code being removed was a fail-safe in case of
running without said patch being applied. It's no longer needed, since for macOS
we just wrap our GStreamer with an NSApplication using `gst_macos_main()`.

Warnings will be displayed if no NSApp/NSRunLoop is found wherever needed,
pointing the user towards using the new API.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4366>
2023-05-11 20:30:19 +02:00
Víctor Manuel Jáquez Leal
ad2d1ce393 vkshaderspv: fix example
Use the correct element names.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4594>
2023-05-10 20:14:07 +02:00
Seungha Yang
ebcebe548d d3d11videosink: Don't clear prepared buffer on unlock_stop()
That can be called between prepare() and render() which results in
unexpected error flow return

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4583>
2023-05-10 16:20:41 +00:00
Tong Wu
b05659859a msdk: fix a not referenced build error
Error Type: error C4189: ‘dma_caps’: local variable is initialized but not referenced

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4587>
2023-05-10 07:57:45 +00:00
Matthew Waters
21b232ce30 closedcaption: write 0x00 padding instead of 0x80 in cc_data/cdp
Depending on the exact output format, 0x00 may be a better default for
padding than 0x80.  0x00 is the recommended padding value when used in
CDP (and cc_data) but is not when used in s334-1a.  See CTA-708-E 4.3.5
amd SMPTE 334-1-2007 5.3.2.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4578>
2023-05-10 00:52:01 +00:00
Seungha Yang
74b7493fd3 h264decoder: Drop nonexisting picture silently without error
If end_picture() was not successful, we do drop corresponding
GstVideoCodecFrame and therefore gst_video_decoder_get_frame()
will return nullptr which is expected behavior.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4561>
2023-05-09 17:02:48 +00:00
Yinhang Liu
cb5c0e47c8 msdk: Remove unreachable statement
The execution cannot reach the statement: "gst_caps_unref(dma_caps);",
so remove it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4449>
2023-05-09 05:57:06 +00:00
Philippe Normand
b75114983e webrtcdatachannel: Bind to parent webrtcbin using a weak reference
The previous approach of using a simple pointer could lead to a use-after-free
in case a data-channel was created and its parent webrtcbin was disposed soon
after.

Fixes #2103

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4160>
2023-05-08 19:20:22 +00:00
Matthew Waters
8ca6547f49 webrtc/nice: support consent-freshness RFC7675
As is supported by libwebrtc already.  This allows ICE components to
transition to failed if consent to send from the peer is revoked or if
multiple consent packets are lost.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4542>
2023-05-08 13:50:44 +00:00
Seungha Yang
4449881b08 d3d11: Add support for IPC
Adding d3d11ipcsrc and d3d11ipcsink elements so that Direct3D11 textures
can be shared between processes

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4514>
2023-05-06 03:19:09 +09:00
Seungha Yang
7b6f7e6e36 d3d11memory: Don't clear wrapped texture memory
The external texture may hold already rendered scene and therefore
it should not be cleared in alloc method

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4554>
2023-05-05 13:18:06 +00:00
Ruben Gonzalez
7d9747490b onnx: Fix typo in documented pipeline
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4552>
2023-05-05 13:16:42 +02:00
Víctor Manuel Jáquez Leal
6258914b1d vkdebug: fix type compilation warning
Since VkMemoryHeapFlagBits is an enum, while VkMemoryHeapFlags is the expected
alias of VkFlags.

This issue is spotted by warning of gcc 13.1.1

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4547>
2023-05-05 10:05:40 +00:00
Seungha Yang
ddcc5676d3 mfvideoenc: Allow only even resolution numbers
Some H/W vendors support odd resolution if D3D11 texture is used
or via IMF2DBuffer, but not all vendors support it.
Also software MFT does not allow odd resolution.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1165
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2537
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4540>
2023-05-04 18:06:45 +00:00
Philippe Normand
4db12345d1 webrtcbin: Fix potential deadlock when closing before any data was sent
A blocking pad probe is added on new sink pads, it's usually removed after the
caps have been negotiated or the signaling state switched to stable, but if that
never happens and the pad is released we kept the pad probe active, leaving the
pad blocked, preventing clean disposal.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4529>
2023-05-03 02:29:31 +00:00
Guillaume Desmottes
5a7ed3c89d srt: assert instead of segfault when passing no error to ERROR_TO_WARNING
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4524>
2023-05-02 21:01:45 +00:00
Guillaume Desmottes
3a5510f61c srt: fix segfault if send_headers() failed
The error handling code was assuming that 'internal_error' was set,
while we were passing the caller GError.
The internal error is already propagated to the caller later on.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4524>
2023-05-02 21:01:45 +00:00
Philippe Normand
d9c853f165 dtlstransport: Keep strong ref of dtls encoder/decoder
Otherwise get_property() calls for the client, certificate and/or
remote-certificate properties might access moved objects, since the encoder and
decoder are added to the transportsendbin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4519>
2023-05-02 03:54:53 +00:00
Mihail Ivanchev
8e64dea5c6 gstcodectimestamper: remove PC file generation from plugin's own meson.build
The file generated here is incomplete; it is generated for all plugins in a loop at an upper level.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4518>
2023-05-01 16:41:32 +00:00
He Junyan
96e576a818 va: h265enc: map the mbbrc to correct enum value in get_property()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4509>
2023-04-28 16:46:24 +00:00
He Junyan
5d1c35bd16 va: h264enc: map the mbbrc to correct enum value in get_property()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4509>
2023-04-28 16:46:24 +00:00
Thibault Saunier
187d91627c rtpsrc: Give better names to internal elements
Same name was used for all instances of rtpsrc making debugging more complex

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4484>
2023-04-28 16:00:47 +00:00
Seungha Yang
c98ad6f249 wasapi2: Allows process loopback capture on Windows 10
As per MS documentation[1], it requires Windows 10 Build 20348
but it seems to be supported by old versions too

[1] https://learn.microsoft.com/en-us/windows/win32/api/audioclientactivationparams/
ns-audioclientactivationparams-audioclient_process_loopback_params

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2524
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4505>
2023-04-28 14:11:16 +00:00
Nirbheek Chauhan
479f0175b5 meson: Add feature options for optional va deps libdrm and gudev
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4428>
2023-04-28 15:22:31 +05:30
Nirbheek Chauhan
55ee0635d3 meson: Fix libdrm and vaapi configure checks
We do not need fallback: for libdrm checks because the wrap file
already has a [provide] section.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4428>
2023-04-28 15:21:10 +05:30
Víctor Manuel Jáquez Leal
3a09e700e6 vkswapper: missing image barrier after vkCmdClearColorImage
After clear color image command the swapper image needs to add a barrier before
copying the buffer to display on it. Otherwise a potential synchronization
problem might occur.

Fixes #2403

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4501>
2023-04-28 00:59:57 +00:00
Víctor Manuel Jáquez Leal
f12e052e54 vulkan: use VK_QUEUE_FAMILY_IGNORED in barriers
Instead of using the valid queue family 0 (zero) if there aren't queue transfers
there's no need to specify a not validated queue family, but just
VK_QUEUE_FAMILY_IGNORED.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4501>
2023-04-28 00:59:57 +00:00
Seungha Yang
4ed3c46de7 cudamemory: Fix for semi planar YUV memory size decision
UV plan of the semi planar format requires only half of Y plane size

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4502>
2023-04-27 20:55:53 +00:00
Daniel Moberg
4c1de25e9d webrtc: do not tear down data channel before data is flushed
Current implementation can in some cases detect
that all data is sent but in reality it is not,
leading to a push to an unlinked pad.
This is a race between the probe used to track data sent and a
call to close.

This patch sends an EOS before starting the close procedure
and then waits for the EOS event to come through to the
src pad before commencing with tear down.
This ensures that any queued data before EOS is flushed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4462>
2023-04-27 00:40:18 +00:00
Matthew Waters
262be30b6f ccutils: generate valid padding in field 1 when needing to generate field 2
Fixes CC in Field 2 but not in Field 1 errors.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4490>
2023-04-26 20:43:13 +00:00
Seungha Yang
4710f45e65 d3d11videosink: Fix for ignored initial render rectangle
Application can set target render rect before internal HWND
configuration

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2518
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4480>
2023-04-26 19:39:09 +00:00
Stéphane Cerveau
40bd8468af bad: disable dtls test if openssl is not present
On MacOS with homebrew, the openssl library is not
properly detected with pkg-config.
So disable the test compilation if openssl
is not properly detected along with libcrypto.

libcrypto is detected but it uses the system one
which leads to the error:

your binary is not an allowed client of /usr/lib/libcrypto.dylib for
architecture x86_64

See more details from Apple:

https://developer.apple.com/forums/thread/124782

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4481>
2023-04-25 10:01:57 +00:00
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
Eva Pace
692d4a3a16 webrtcbin: Fix trace log 'from' value
`webrtc->signaling_state` (from) and `new_signaling_state` (to) had the
same value when printed in a trace log. This commit adds a
`old_signaling_state` variable to hold the previous value, so that the
print statement works as intented.

Spotted by: Mustafa Asım REYHAN
Fixes #1802

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4362>
2023-04-25 04:27:02 +00:00
Thibault Saunier
7aaf2b48ef doc: Avoid shelling out to hotdoc to generate plugins config files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4479>
2023-04-25 02:57:55 +00:00
Thibault Saunier
6e305a471f meson: Add CameraBin and Va girs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4479>
2023-04-25 02:57:55 +00:00
Stéphane Cerveau
cc81e961a0 applemedia: fix missing definition
Fix missing kCVPixelFormatType_64RGBALE definition
on Catalina for example

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4478>
2023-04-24 17:05:03 +00:00
Martin Nordholts
2fed3bf6c4 webrtc: Plug leaks of resolved ICE addresses
The addresses we get from `resolve_host_finish()` (via
`resolve_host_async()`, `resolve_host_main_cb()`, `on_resolve_host()`,
`g_resolver_lookup_by_name_finish()`) must be freed. Otherwise we leak
memory.

Leak found and confirmed fixed with GCC AddressSanitizer.

Change-Id: If32d24452d626234f01b253b77a7d6d16eac1cee
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4469>
2023-04-24 06:23:30 +00:00
Thibault Saunier
b14e675a27 gir: Checkout all .gir files and check that they are updated on the CI
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3010>
2023-04-22 09:32:32 -04:00
Seungha Yang
3811894d9c d3d11overlay: Enhance documentation and fix typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4455>
2023-04-20 18:05:27 +00:00
Seungha Yang
c7c380abb1 d3d11memory: Remove redundant bind flag validation
It has been validated outside of each function already

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4455>
2023-04-20 18:05:27 +00:00
Jordan Petridis
63ccf85049 sctp: Avoid old-style function defintions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4457>
2023-04-20 09:38:59 +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
Edward Hervey
ab458eae56 pcapparse: Add support for Linux "cooked" capture encapsulation v2
See https://www.tcpdump.org/linktypes/LINKTYPE_LINUX_SLL2.html

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4451>
2023-04-19 09:56:47 +02:00
Thibault Saunier
03ac969240 d3d11: Fix typo in interlace mode name in enum
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4414>
2023-04-18 14:56:41 +00:00
Sebastian Dröge
6a0965cb8a tsdemux: Set number of channels to 2 for dual mono Opus
Instead of leaving it at 0, which will then cause caps creation to fail.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4445>
2023-04-18 14:56:44 +03:00
Guillaume Desmottes
901383771d dash: mpdclient: fix divide by 0 if segment has no duration
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4436>
2023-04-18 06:37:27 +00:00
Seungha Yang
53dc1b96e2 d3d11compositor: Reconfigure resource only when output caps is changed
GstD3D11Converter setup is heavy operation since it requires
shader compile, GPU resource allocation, some math, mutex, etc.
We can avoid it if negotiated caps is not changed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4439>
2023-04-17 17:30:26 +00:00
Seungha Yang
c883ab593c d3d11: Add d3d11overlay element
Similar to cairooverlay element but this element emits "draw"
signal with Direct3D11 render target view, so that an application
can render/overlay/blend on the given render target view
without any copy operation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4415>
2023-04-17 23:22:57 +09:00
Seungha Yang
3d6a609590 d3d11compositor: Add "ignore-inactive-pads" property
Same as compositor element

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4438>
2023-04-17 13:19:15 +00:00
Seungha Yang
7eefdd1b95 d3d11compositor: Skip zero alpha input
Blending such input is a waste of resource since nothing will
be rendered

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4438>
2023-04-17 13:19:15 +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
Mathieu Duponchelle
6c25caa572 docs: mark GstSRTSink and GstSRTSrc as plugin API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4408>
2023-04-13 21:46:59 +00:00
Seungha Yang
af86c4b80e d3d11videosink: Remove pointless GetDC call
We don't use the Win32 device context handle at all.
Removing code which was copied from GL code blindly
in early d3d11 implementation stage a long time ago

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4407>
2023-04-12 19:54:31 +00:00
Michael Olbrich
fe6b76c64e srtpdec: fix "srtp-key" check
The original code was:

if (!gst_structure_get (s, "srtp-key", GST_TYPE_BUFFER, &buf, NULL) || !buf) {
  goto error;
} else {
  stream->key = buf;
}

So use "srtp-key" if it is set so a non NULL buffer. The condition was
incorrectly inverted in ad7ffe64a6 to:

if (gst_structure_get (s, "srtp-key", GST_TYPE_BUFFER, &buf, NULL) || !buf) {
  stream->key = buf;
} ...

Fix the condition so it works as originally intended and avoid accessing
'buf' uninitialised.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4401>
2023-04-12 18:16:21 +00:00
Seungha Yang
9489fb3f54 sdpdemux: Add support for RFC4570 SDP source filters
Parse source-filter attributes and configure udpsrc accordingly

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3485>
2023-04-12 16:32:07 +00:00
Thibault Saunier
5797fa09af codectimestamper: Implement QUERY_CAPS support
This is required to ensure that downstream restrcitions are also
propagated upstream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4341>
2023-04-12 15:07:28 +00:00
Thibault Saunier
dbc6afd874 codectimestamper: Use accept-intersect and accept-template caps
We should behave similarly to video parsers so we can use:
- accept-template as we can also accept caps with missing fields.
- accept-intersect to do quick check with the pad template caps as it is
enough. Users should have figured the appropriate full caps on a
previous caps query

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4341>
2023-04-12 15:07:28 +00:00
Seungha Yang
9be36adaa3 cea608mux: Add support for seeking
The "start_time" should be cleared per flush in order to apply
new offset time to each output buffer. Also, input running time
must be compared with output running time, not output position.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4398>
2023-04-12 08:57:03 +00:00
Seungha Yang
a3fd3ad4d7 cea608mux: Implement GstAggregator::clip
Drop buffers if it's outside of segment

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4398>
2023-04-12 08:57:03 +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
Seungha Yang
bb5c151336 h264decoder: Enable low-latency bumping in case of pic_order_cnt_type 2
In case of POC type 2, output order is equal to decoding order
(no frame reordering)

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2447
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4357>
2023-04-10 13:42:31 +00:00
Seungha Yang
73daa0e0ad h264decoder: Fix for latency report
The minimum latency answered by an element should be the maximum
latency from the element's perspective. Also consider max_reorder_frames
update as a sequence change

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4357>
2023-04-10 13:42:31 +00:00
Seungha Yang
e0c2578f73 h264decoder: Ignore invalid max_num_reorder_frames in VUI
It's not fatal and can be ignored

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4357>
2023-04-10 13:42:31 +00:00
Seungha Yang
f439481d8e h265decoder: Fix for latency report when src caps is not configured
Depending on subclass, negotiation might not happen on new_sequence()

Fixing regression introduced by the commit
4a4823b972

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4357>
2023-04-10 13:42:31 +00:00
Seungha Yang
560fd4834c h264decoder: Fix for latency report when src caps is not configured
Depending on subclass, negotiation might not happen on new_sequence()

Fixing regression introduced by the commit
4a4823b972

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4357>
2023-04-10 13:42:31 +00:00
Wang Chuan
d7d0c969df gstd3d11window: fix memory leak
GstStructure may leak when using external HWND

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4373>
2023-04-10 12:12:27 +00:00
Seungha Yang
ba8f944df7 amfencoder: Set output DTS
AMF runtime does not provide correct DTS. Although GetPts() seems to
be returning DTS, it still needs to be adjusted to meet DTS <= PTS
requirement. Do calculate DTS in baseclass instead

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4092>
2023-04-08 23:11:32 +09:00
Evgeny Pavlov
6f62128433 amfcodec: Add options for B-frames for amfh264enc plugin
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4092>
2023-04-08 23:11:28 +09:00
Seungha Yang
7117cba831 decklinkaudiosink: Fix playback when video caps is configured before audio
Scheduled playback starts on videosink's state change or on caps
but it's possible that audiosink is configure without caps yet.
Try start scheduled playback on audiosink's caps event as well

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4364>
2023-04-07 18:59:17 +00:00
Dario Marino Saccavino
07cf7b2a29 wasapi2: Add option to monitor loopback device's mute state
When loopback recording from a render device, the wasapi2src element
captures audio even if the device is muted. This change adds the
'loopback-silence-on-device-mute' property that, when set to `true`,
causes wasapi2src to inject silence in the pipeline when
the device is muted.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1306
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4337>
2023-04-07 17:19:33 +00:00
Jan Schmidt
1b762ba012 mpegpsdemux: Rework gap sending
Take the gap logic from mpegtsdemux, and don't
send gap events on a stream that's outputting buffers with
no timestamps. Time isn't advancing, but the stream has
buffers - so it's not sparse.

Fixes #2374

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4333>
2023-04-06 01:34:03 +00:00
Sebastian Dröge
b90c0bd79b vulkan: Use new GLib APIs as suggested by comments
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4349>
2023-04-06 00:26:13 +00:00
Nicolas Dufresne
c883fea19e h265parse: Don't override upstream framerate
The framerate should only be replaced (and corrected for alternating field)
when it is parsed from the bitstream. Otherwise, the upstream framerate
from caps should be trusted and assumed correct.

Related to gst-plugins-bad!2020

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4259>
2023-04-05 13:33:39 -04:00
Nicolas Dufresne
93904f1921 h265parse: Rename parsed_framerate to framerate_from_caps
That meaning of parsed_framerate is ambigious, it is set whenever the
framerate has been parsed from caps, which can be confused with being
parsed from the bitstream. Rename this as framerate_from_caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4259>
2023-04-05 13:33:39 -04:00
Edward Hervey
38dd5deb66 tsdemux: Minor refactoring
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4336>
2023-04-04 20:54:50 +00:00
Edward Hervey
8e51399334 mpegts: Fix include headers
<gst/mpegts/mpegts.h> is the unique header to use

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4336>
2023-04-04 20:54:50 +00:00
Wojciech Kapsa
8d4916df84 decklink: fix 10 bit RGB (r210) format auto detection
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2391

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4332>
2023-04-04 20:37:09 +03:00
Seungha Yang
47fda2c51c d3d11screencapturesrc: Add "window-capture-mode" property
... to support capturing only window's client area

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2425
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4324>
2023-04-03 15:06:47 +00:00
Seungha Yang
1876e5c429 cea608mux: Fix output buffer timestamping
Don't assume that input stream starts from zero running time.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4319>
2023-04-03 13:11:00 +00:00
Aleksandr Slobodeniuk
e683000573 d3d11videosink: fix race conditions in win32 window
One race condition is the fact that the window object
can be destroyed while running some routine in the UI
thread (such as resizing). To avoid that situation we make
UI thread hold a reference on the window object while it's
running.
Other probpematic case is when the window handle is reused:
if we stop and start the pipeline very fast,
so the sink creates a new window object that is going to use
the same window handle as the previous one.
And finally the case when the pipeline is stopped immediatelly
right after starting, this one is also handled in this commit.

NOTE: a unit test that reproduces this cases have been added
in the previous commit.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4260>
2023-04-03 11:19:11 +00:00
Aleksandr Slobodeniuk
fcf4dbf8e3 d3d11videosink: add gstcheck test for win32 window
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4260>
2023-04-03 11:19:10 +00:00
Matthew Waters
54acb36689 vulkan/wayland: use xdg_wm_base when available
wl_shell is deprecated and has been removed from some compositors.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4316>
2023-04-03 02:36:38 +00:00
Matthew Waters
edffae31dd vulkan/wayland: provide a dummy registry global_remove function
Even if we don't care about any global objects being removed, wayland
will still error if globals are removed without a corresponding listener
set up for them.  e.g. wl_output hotplugging

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4316>
2023-04-03 02:36:38 +00:00
Matthew Waters
21cff6b134 vulkan/wayland: rename debug category to mention wayland instead of XCB
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4316>
2023-04-03 02:36:38 +00:00
Seungha Yang
7755cd2f7a d3d11videosink: Enhancement for initial window size decision
Use AdjustWindowRect() method to calculate window size so that
video scene can be rendered on client area without black borders

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4323>
2023-04-02 00:31:58 +09:00
Matthew Waters
b132a44ba5 ccconverter: reintroduce frame count reset on cycle completion
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4308>
2023-03-31 21:35:21 +00:00
Seungha Yang
55db8367f7 tools: Count argc after parsing GOption on Windows
Existing codes rely on modified argc value by g_option_context_parse()
but g_option_context_parse_strv() is used in case of Windows.
Count arguments after the option parsing manually.
Fixing command "gst-inspect-1.0.exe -b"

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4313>
2023-03-31 18:11:52 +00:00
Brad Hards
4087bb9a55 mpegts: remove stream-type from KLV meta
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4310>
2023-03-31 07:03:54 +00:00
Brad Hards
6f2eb752c5 mpegts: add support for KLV metadata in PES packets
Co-authored-by: Andoni Morales Alastruey <ylatuya@gmail.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1312>
2023-03-30 12:16:52 +00:00
Brad Hards
4e14bac1ff mpegts: implement metadata in PES packets
Co-authored-by: Andoni Morales Alastruey <ylatuya@gmail.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1312>
2023-03-30 12:16:52 +00:00
Víctor Manuel Jáquez Leal
e5c38003b8 gsth254picture: move internal API to private header
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4288>
2023-03-30 11:40:33 +02:00
Víctor Manuel Jáquez Leal
57e0bdb356 h264decoder: use last_output_poc from DPB
It seems that `last_output_poc` in `h264decoder` class is a left over of commit
5527cc4a2e.

This patch removes it but keeps the log message by fetching the `h264picture`'s
`last_output_pic`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4288>
2023-03-30 09:38:47 +00:00
Víctor Manuel Jáquez Leal
a31cd75c73 vkmemory: flush whole size
Running element_vkcolorconver test with Vulkan validation layer this error is
raised:

Code 0 : Validation Error: [ VUID-VkMappedMemoryRange-size-01390 ] Object 0:
handle = 0x100000000010, type = VK_OBJECT_TYPE_DEVICE_MEMORY;
| MessageID = 0xdd4e6d8b
| vkFlushMappedMemoryRanges: Size in pMemRanges[0] is 0x4, which is not a
multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize (0x40) and offset +
size (0x0 + 0x4 = 0x4) not equal to the memory size (0xb). The Vulkan spec
states: If size is not equal to VK_WHOLE_SIZE, size must either be a multiple of
VkPhysicalDeviceLimits::nonCoherentAtomSize, or offset plus size must equal the
size of memory

The reason of is that the image size used in the test doesn't comply hardware
restrictions. In order to avoid juggling with image size and hardware
restrictions, this patch proposes to use VK_WHOLE_SIZE macro.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4296>
2023-03-30 00:03:05 +00:00
Víctor Manuel Jáquez Leal
d69e1393f8 tests: vkimage: add VK_IMAGE_USAGE_SAMPLED_BIT usage bit
Running tests with Vulkan Validation enabled show an error on vkimage tests:

Code 0 : Validation Error: [ VUID-VkImageViewCreateInfo-image-04441 ]
Object 0: VK_NULL_HANDLE, type = VK_OBJECT_TYPE_COMMAND_BUFFER; Object 1: handle
= 0x50000000005, type = VK_OBJECT_TYPE_IMAGE;
| MessageID = 0xb75da543
| Invalid usage flag for VkImage 0x50000000005[] used by vkCreateImageView(). In
this case, VkImage should have VK_IMAGE_USAGE_SAMPLED_BIT |
VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT |
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT |
VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT |
VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR |
VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR |
VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR |
VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR | VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM
| VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM set during creation.
The Vulkan spec states: image must have been created with a usage value
containing at least one of the usages defined in the valid image usage list for
image views

This patch adds VK_IMAGE_USAGE_SAMPLED_BIT to the usage bits in test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4296>
2023-03-30 00:03:04 +00:00
Víctor Manuel Jáquez Leal
3e194267d1 vkfullscreenquad: set enable_clear as TRUE by default
While using the validation layer with this pipeline:

gst-launch-1.0 videotestsrc num-buffers=10 ! vulkanupload ! vulkancolorconvert ! vulkansink

The validation layer throws this message:

Code 0 : Validation Error: [ VUID-VkAttachmentDescription-format-06699 ]
Object 0: handle = 0x5555562e9610, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x52b3229e |
vkCreateRenderPass: pCreateInfo->pAttachments[0] format is
VK_FORMAT_B8G8R8A8_UNORM and loadOp is VK_ATTACHMENT_LOAD_OP_LOAD, but
initialLayout is VK_IMAGE_LAYOUT_UNDEFINED.
The Vulkan spec states: If format includes a color or depth aspect and loadOp is
VK_ATTACHMENT_LOAD_OP_LOAD, then initialLayout must not be VK_IMAGE_LAYOUT_UNDEFINED

When creating the render pass the loadOp can be either
`VK_ATTACHMENT_LOAD_OP_CLEAR` or `VK_ATTACHMENT_LOAD_OP_LOAD` depending on
`enable_clear`. While `enable_clear` is FALSE by default (which means
`VK_ATTACHMENT_LOAD_OP_LOAD`). Nonetheless, its value is explicitly changed by
`vkoverlaycompositor` to FALSE too!

This behavior was introduced in merge request #2470 where
`VK_ATTACHMENT_LOAD_OP_CLEAR` was a fixed value for loadOp. Thus, the bug
consists in a missing initialization of `enable_clear` to TRUE from that merge
request.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4296>
2023-03-30 00:03:04 +00:00
Erik Fröbrant
456bbad2dd curlbasesink: error codes in transfer error details
There is currently no easy way for an application to distinguish between
different resource write errors being set in the curlbasesink.
Add curl status codes as error details on transfer failure.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4062>
2023-03-29 10:03:36 +00:00
Erik Fröbrant
8f094a1cc8 curlhttpsink: HTTP code in transfer error details
There is currently no easy way for an application to distinguish between
different resource write errors being set in the curlhttpsink.
Add HTTP status code as error details on transfer failure.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4062>
2023-03-29 10:03:35 +00:00
Matthew Waters
58d1ab4618 vulkanswapper: correctly handle force-aspect-ratio=false
It was simply ignored so actually handle it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4278>
2023-03-27 11:58:46 +00:00
Tim-Philipp Müller
c798f01fae debugqroverlay: fix string leak
g_string_free(.., FALSE) gives us ownership of the string
already, no need to duplicate that again with g_strdup(),
and doing so will leak the string returned by g_string_free()
here. Caught by compiler warnings in newer GLib versions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4273>
2023-03-27 07:37:11 +00:00
Tim-Philipp Müller
330836db8e taglist, plugins: fix compiler warnings with GLib >= 2.76
Fix compiler warnings about not using the return value when
freeing the GString segment with g_string_free(.., FALSE):

    ignoring return value of ‘g_string_free_and_steal’ declared with attribute ‘warn_unused_result’

which we get with newer GLib versions. These were all harmless.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4273>
2023-03-27 07:37:11 +00:00
Sebastian Dröge
da198e59b2 av1enc: Use correct enum type with libaom >= 3
This fixes, among other things, a compiler warning with clang.

Also add static assertions that our own enum values match with the ones
from libaom.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4223>
2023-03-25 07:12:53 +00:00
Stéphane Cerveau
f3dfe7b125 openjpegdec: allow multithread decoding only in subframe mode
To avoid mis-ordered frames, allow multithread decoding only in
subframe mode.

Fixes #1786

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3948>
2023-03-25 06:03:02 +00:00
Mathieu Duponchelle
e8c362ee34 cea608mux: advance segment->position when outputting
It is the responsibility of the subclass to advance segment->position if
it wants to rely on gst_aggregator_simple_get_next_time() for timeouts
in live mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4266>
2023-03-24 21:17:58 +00:00
Víctor Manuel Jáquez Leal
292d6cdbed vaencoder: remove display reference in decode picture
Since it's possible to grab the VA display from the GstBuffer and
GstMemory, there's no need to keep a reference to it in
GstVaEncodePicture.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3066>
2023-03-24 14:05:15 +00:00
Víctor Manuel Jáquez Leal
494169aad4 vadecoder: remove display reference in decode picture
Since it's possible to grab the VA display from the GstBuffer and
GstMemory, there's no need to keep a reference to it in
GstVaDecodePicture.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3066>
2023-03-24 14:05:15 +00:00
Víctor Manuel Jáquez Leal
746e81fccf vkinstance: register GStreamer version as engine version
Specification says:

"""
engineVersion is an unsigned integer variable containing the developer-supplied
version number of the engine used to create the application.
"""

Assuming the engine is GStreamer, it would be expected to set its version as
engine version.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4243>
2023-03-24 04:28:54 +00:00
Seungha Yang
af6dccd6e6 d3d11bufferpool: Fix invalid access in debug print loop
Add missing condition check in for loop

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4255>
2023-03-23 18:15:03 +00:00
Víctor Manuel Jáquez Leal
1ace1a5275 vkinstance: enable GPU assisted validation
This allows to check for syncronization issues while using the validation layer.

https://vulkan.lunarg.com/doc/sdk/1.3.239.0/linux/synchronization_usage.html

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4245>
2023-03-23 16:46:34 +00:00
Matthew Waters
ba81f3597d vulkanoverlaycompositor: also support RGBA vulkan images
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4184>
2023-03-23 22:18:47 +11:00
Sebastian Dröge
84e08a377b mpegtsdemux: Fix handling of explicit Opus channel mapping
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4180>
2023-03-23 08:46:50 +00:00
Sebastian Dröge
9d2ac6e90b mpegtsmux: Allow writing arbitrary Opus channel mapping families and up to 255 channels
And fix writing of dual-mono special cases.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4180>
2023-03-23 08:46:50 +00:00
Stéphane Cerveau
23661f0446 vulkan: gl: change symbols to static
Change window_proc and subclass_proc to static to avoid symbols
duplication.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4246>
2023-03-23 00:56:04 +00:00
Stéphane Cerveau
e88e8527ed sys: avoid double definition of symbol MEDIASUBTYPE_I420
Namespace the symbol MEDIASUBTYPE_I420 to avoid double definition
across dshow and mediafoundation plugins.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4246>
2023-03-23 00:56:04 +00:00
Seungha Yang
96555c7ee9 nvh264encoder: Fix template caps
It should include progressive as well

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4236>
2023-03-22 23:40:58 +00:00
Víctor Manuel Jáquez Leal
c159e40a9f vulkan: silence gobject-instrospection warnings
According with gi annotations [1] the "optional" annotation must be only
for (out) or (inout) parameters.

1. https://gi.readthedocs.io/en/latest/annotations/giannotations.html

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4244>
2023-03-22 14:19:13 +00:00