Commit graph

6639 commits

Author SHA1 Message Date
Yeongjin Jeong
663aeb2131 svthevcenc: Add new SVT-HEVC encoder element
The SVT-HEVC (Scalable Video Technology[0] for HEVC) Encoder is an
open source video coding technology[1] that is highly optimized for
Intel Xeon Scalable processors and Intel Xeon D processors.

[0] https://01.org/svt
[1] https://github.com/OpenVisualCloud/SVT-HEVC
2019-12-20 15:43:55 +00:00
Francisco Javier Velázquez-García (francisv)
c7fe1e8164 gstsrtsink: Add wait-for-connection property to srtsink
Add `wait-for-connection` property to `srtsink` element.  This
property allows the element to process packets even when no clients
are connected.
2019-12-19 19:46:47 +00:00
Olivier Crête
fad9096647 Revert "ccextractor: support new CEA 608 formats"
This reverts commit 80dd7b2d3d.
2019-12-17 16:43:54 -05:00
Aaron Boxer
80dd7b2d3d ccextractor: support new CEA 608 formats 2019-12-17 18:26:35 +00:00
Wonchul Lee
8e79e53c6e wlvideoformat: clean up video formats
It cleans up videoFormat by combining the wl_shm_formats and
drm_formats into a single table that represents the same format.
In addition, it adds NV61 format to the waylandsink.
2019-12-17 17:12:03 +00:00
Stéphane Cerveau
6bc0e9527e remove various useless linefeed in logs 2019-12-11 10:51:29 +01:00
Olivier Crête
411bde315c srtp: Remove %z as it doesn't work on Windows 2019-12-09 15:41:13 -05:00
Stéphane Cerveau
1711369526 openh264enc: keep the headers
be able to resend the headers on demand after a key-unit request
2019-12-06 08:35:00 +00:00
Stéphane Cerveau
c28e7d928d dash: move parser nodes/types to separated files
Rename GstMpdClient to GstMPDClient and use GObject model.

Move nodes to file from gstmpdparser.c:
- GstMPDRootNode
- GstMPDBaseURLNode
- GstMPDUTCTimingNode
- GstMPDMetricsNode
- GstMPDMetricsRangeNode
- GstMPDSNode
- GstMPDSegmentTimelineNode
- GstSegmentTemplateNode
- GstMPDSegmentURLNode
- GstMPDSegmentListNode
- GstMPDPeriodNode
- GstMPDRepresentationNode
- GstMPDsubRepresentationNode
- GstMPDAdaptationSetNode
- GstMPDContentComponentNode
- GstMPDSubsetNode
- GstMPDProgramInformationNode

Move types to gstmpdhelper from gstmpdparser.c:

- GstURLType
- GstDescriptorType
- GstSegmentBaseType
- GstMPDMultSegmentBaseType
- GstMPDRepresentationBaseType

Cleanup naming when possible.
2019-12-05 09:06:37 +00:00
Stéphane Cerveau
86b251b7d1 dash: split mpdparser, mpdclient and xmlhelper
provide a separate namespace for mpd helper
for xml parsing and the real mpd parsing.
2019-12-05 09:06:37 +00:00
Matthew Waters
c3685bafa4 vulkanviewconvert: clear the cached uniforms on caps change
Caps changes can change the output/input layout which needs to be
reflected in the input uniforms to the shader.
2019-12-05 03:21:21 +00:00
Matthew Waters
81d1e16b6b vulkan: move fullscreenquad object to library
It's useful and extensible enough to be used by us and other elements
2019-12-04 07:20:27 +00:00
Nirbheek Chauhan
f3e4aa1a18 openexr: Fix check for when to pass -std=c++98
commit 6adfb120ab added this flag to fix
builds with `-Werror`, and afterwards it was changed to use a version
check when newer versions of openexr moved over to C++11.

However, some distros have backported patches to older openexr
versions which make it require C++11, which makes the version check
incorrect and causes an error because we passed `-Werror -std=c++98`.

Instead, directly check when usage of the header requires `-std=c++98`
with `-Werror` and override the `cpp_std` setting on the target.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1117
2019-12-02 08:53:59 +00:00
Matthew Waters
24d096597b vulkan: implement caching and reuse of a couple of vulkan resources
Includes a new GstVulkanHandlePool base class for pooling different
resources togther.  The descriptor cache object is ported to
GstVulkanHandlePool with the exact same functionality.

A new GstVulkanFenceCache is also implemented for caching fences
which is used internally by GstVulkanDevice for creating or reusing
fences.

The existing GstVulkanTrashFenceList object now caches trash objects.
2019-11-28 23:27:21 +00:00
Matthew Waters
f810147709 vulkancolorconvert: disable YUY2 conversion
It doesn't work and never seemed to
2019-11-28 23:27:21 +00:00
Matthew Waters
615022ad93 vulkan: split vkfullscreenrender into two
Part 1 is a base class (vkvideofilter) that handles instance, device,
queue retrieval and holding that has been moved to the library
Part 2 is a fullscreenrenderquad that is still in the plugin that
performs all of the previous vulkan-specific functionality.
2019-11-28 23:27:21 +00:00
Matthew Waters
756d52ef15 vulkan/upload: allocate from the correct pool
Only relevant when upstream does not use our provided pool.
2019-11-28 23:27:21 +00:00
Matthew Waters
4f3051fd2d vulkan: add a couple of missing fence unrefs 2019-11-28 23:27:21 +00:00
Matthew Waters
a3454edeb2 vulkan/colorconvert: zero out sampler create struct 2019-11-28 23:27:21 +00:00
Jeffy Chen
2077061333 waylandsink: Commit the parent after creating subsurface
We should commit the parent to activate new subsurface, this is
documented in the protocol.

Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
2019-11-25 19:12:51 +08:00
Seungha Yang
ae76f9ab23 ttmlparse: Collect buffers until detecting complete xml document
Given buffer could be fragmented and we might need to
collect buffers until end tag is detected. And/or, a buffer
can consist of multiple ttml documents.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/494
2019-11-22 18:31:10 +09:00
Edward Hervey
706ec236ac webrtcdatachannels: Don't leak strings
They would leak in error cases

CID: 1455480
2019-11-21 16:38:53 +01:00
Edward Hervey
c026522084 webrtcbin: Fix memory leak
The structure is not used after this block

CID: 1455481
2019-11-21 16:25:21 +01:00
Jakub Adam
19391ae4c7 srtobject: allow passing SRT Stream ID in stream URI
Based on Stream ID, the application can accept or reject the connection,
select the desired data stream, or set an appropriate passphrase for the
connection. Example usage:

  srt://127.0.0.1:1234?streamid=mystream
2019-11-20 17:09:34 +00:00
Linus Svensson
8106fd1a64 curl: Require libcurl 7.55.0
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T is available from libcurl version
7.55.0.
2019-11-20 11:34:15 +01:00
Xavier Claessens
951bd01fbe dash: Fix typo in meson.build 2019-11-19 14:49:56 +00:00
Ederson de Souza
484a272306 avtpcvfdepay: Don't hide gst_pad_push return
avtpcvfdepay was effectively hiding any return from gst_pad_push, so no
errors or GST_FLOW_EOS would be propagated upstream.

Tests also added.
2019-11-19 13:35:00 +00:00
Ederson de Souza
c45c235b2a avtpcvfpay: Do not hide or modify gst_pad_push errors
Current code would change any non-ok return from gst_pad_push to
GST_FLOW_ERROR, thus hiding meaningful returns such as GST_FLOW_EOS.

Tests also added.
2019-11-19 13:35:00 +00:00
Ederson de Souza
b09bc36160 avtpcvfdepay: Tone down some log messages
Most of avtpcvfdepay messages are currently logged as warnings, which can
make some scenarios - such as receiving two AVTP streams on the same
pipeline - too verbose.

This patch tones those message down to INFO or DEBUG level - more in
sync with avtpaafdepay logging.
2019-11-19 13:35:00 +00:00
Alex Ashley
e9c68347f0 curlhttpsrc: add support for range GET
To allow curlhttpsrc to support DASH streams that use the on-demand
profile, it needs to support HTTP Range GETs. In GStreamer, the RANGE
is specified by issuing a GST_FORMAT_BYTES seek to set the start and
end of the range. curlhttpsrc needs to implement seek and set the
appropriate curl options to make it add the Range header to the
request.
2019-11-17 14:28:25 +00:00
Matthew Waters
9f4b043161 vulkan/queue: be sure to take a lock around command submission
This ensures that only one thread is submitting commands at a time as
required by the Vulkan specification.
2019-11-14 07:10:16 +00:00
Matthew Waters
c89f21388d vulkan/render: fix indent command comment typo 2019-11-14 07:10:16 +00:00
Matthew Waters
726261aa05 vulkan: NULL check destruction of vulkan resources
If the element fails to start up, any number of vulkan resources could
have not been created.
2019-11-13 22:27:59 +00:00
Matthew Waters
0c3eec57f2 vulkan: make new trash objects ref the fence
Avoids gst_vulkan_fence_ref at each call site of the trash object
creation
2019-11-13 22:27:59 +00:00
Edward Hervey
b55f380b20 hlsdemux: Don't use deprecated SSL methods
And instead use the fixed-size variants (which aren't deprecated)
2019-11-08 10:43:08 +00:00
Edward Hervey
7bceb6c3ff bad: Avoid using deprecated API
GTimeval is deprecated
2019-11-08 10:43:08 +00:00
Matthew Waters
32b3387ae6 vulkan: implement proper descriptor set handling
The major functionality gain this provides is proper reference counting
for a descriptor set.  Overall this allows us to create descriptor sets
when they are needed (or reused from a cache) without violating any of
vulkan's object synchronisation requirements.

As there are a fixed number of sets available in a pool, the number of
descriptors in elements is currently hardcoded to 32.  This can be extended
in a future change to create pools on the fly if that limit is ever overrun.
2019-11-07 20:01:57 +00:00
Matthew Waters
1c89096b4f vulkan/fence: add always-signalled fence type
Allows a cleaner control flow when there is no fence available for use
with the trash list.  An always signalled fence type will always return
TRUE for gst_vulkan_fence_is_signalled.
2019-11-07 20:01:57 +00:00
Matthew Waters
66244e9342 vulkanviewconvert: fix typo of output image view name 2019-11-07 20:01:57 +00:00
Matthew Waters
7a1bb3001a vulkan: use VK_NULL_HANDLE in more places
Fixes compiler warnings on 32-bit platforms assigning a void * to a
64-bit integer value.
2019-11-07 20:01:57 +00:00
Matthew Waters
475a2b0acd vulkan/image: use the full video info for returning vulkan formats
We may need some colorspace information for returning sRGB vs no sRGB.
2019-11-07 20:01:57 +00:00
Yeongjin Jeong
56333073a9 vulkan: Fix build error when gstvulkan is not installed
The following build error occurs:

vkdeviceprovider.h:30:10: fatal error: gst/vulkan/vulkan.h: No such file or directory
  #include <gst/vulkan/vulkan.h>
           ^~~~~~~~~~~~~~~~~~~~~
2019-11-07 03:31:19 +00:00
Niels De Graef
d8f61515d8 Don't pass default GLib marshallers for signals
By passing NULL to `g_signal_new` instead of a marshaller, GLib will
actually internally optimize the signal (if the marshaller is available
in GLib itself) by also setting the valist marshaller. This makes the
signal emission a bit more performant than the regular marshalling,
which still needs to box into `GValue` and call libffi in case of a
generic marshaller.

Note that for custom marshallers, one would use
`g_signal_set_va_marshaller()` with the valist marshaller instead.
2019-11-06 14:27:46 +00:00
Justin Kim
e6847b6d29 srt: split incoming buffer up into srt chunk 2019-11-06 13:14:26 +00:00
Aaron Boxer
6d3429af34 documentation: fixed a heap o' typos 2019-11-05 09:11:25 -05:00
Wonchul Lee
5320bb9085 av1enc: Add tile-{columns,rows} properties
It provides to set tile-columns and tile-rows configurations. The av1
codec allows an input image frame be partitioned into separate vertical
or horizontal tile which can be encoded or decoded independently. It
helps to encode/decode parallel.
2019-11-05 00:10:26 +00:00
Wonchul Lee
fc93b2669d av1enc: Enable row-mt by default
Enabling row-mt property can help to increase cpu utilization and reduce
encoding speed, so set it to on by default.
2019-11-05 00:10:26 +00:00
Yeongjin Jeong
a7ec30dc94 curlhttpsrc: Hook up libcurl logging message to gstreamer
CURLOPT_DEBUGFUNCTION option replaces the standard debug function
used when CURLOPT_VERBOSE is in effect. This callback receives various debug information.
2019-11-04 23:14:02 +00:00
Sebastian Dröge
f6b4e24f72 ccconverter: Instead of erroring out on too big input drop additional data 2019-11-04 13:43:25 +00:00
Jan Alexander Steffens (heftig)
5dd3e35fb5 openexr: Fix compilation with OpenEXR 2.4
It uses modern C++; adding -std=c++98 breaks the build.
2019-11-02 22:08:55 +00:00