Commit graph

3836 commits

Author SHA1 Message Date
Sebastian Dröge 28b0be4036 rtptransceiver: Remove direction setter and vfunc and replace it by a property
It was changed from a function to a property in the latest WebRTC spec.
2019-08-06 12:22:21 +00:00
Yeongjin Jeong 68057cee98 vulkan: Fix GstMemory leaks
Allocated GstMemory should be freed with g_free()
2019-08-06 07:44:05 +00:00
Matthew Waters d916cad886 vulkan: add a couple of headers to the install list 2019-08-05 11:32:59 +10:00
Jan Schmidt 18b54f8d34 h265parser: Skip unused SEI bits differently
3-byte emulation bytes can confuse the current code that skips
bits at the end of an SEI. Use a simpler method that's also
quicker because it skips all remaining bits in one go instead
of 1 bit at a time.
2019-07-30 17:37:49 +00:00
Seungha Yang 5e7dbdf585 h265parse: Add support for compatible profiles of extensions
From decoder's capability point of view as defined by the h265 specification,
accept peer profile caps.
2019-07-31 00:32:40 +09:00
Charlie Turner 659d76a633 adaptivedemux: remove some deadlocks using webkitwebsrc.
WebKit's websrc depends on the main-thread for download completion
rendezvous. This exposed a number of deadlocks in adaptivedemux due to
it holding the MANIFEST_LOCK during network requests, and also needing
to hold it to change_state and resolve queries, which frequently occur
during these download windows.

Make demux->running MT-safe so that it can be accessed without using the
MANIFEST_LOCK. In case a source is downloading and requires a MT-thread
notification for completion of the fragment download, a state change
during this download window will deadlock unless we cancel the downloads
and ensure they are not restarted before we finish the state-change.

Also make demux->priv->have_manifest MT-safe. A duration query happening
in the window described above can deadlock for the same reason. Other
src queries (like SEEKING) that happen in this window also could
deadlock, but I haven't hit this scenario.

Increase granularity of API_LOCK'ing in change_state as well. We need to
cancel downloads before trying to take this lock, since sink events
(EOS) will hold it before starting a fragment download.
2019-07-29 13:19:41 +01:00
Matthew Waters 58f203844d vulkan/window: add property for the parent display 2019-07-05 16:20:05 +10:00
Matthew Waters fda9b57dbe vulkan/device: add property for the parent instance 2019-07-05 16:13:13 +10:00
Jan Schmidt de115dac4e h264parser lib: Add more profile_idc to the recognised set
Update the list of profile_idc recognised during SPS parsing
based on H.264 201704
2019-07-05 00:17:59 +10:00
Jan Schmidt 8899a471e3 h264parse lib: Remove the SPS parse_vui_params flag
The SPS parsing functions take a parse_vui_param flag
to skip VUI parsing, but there's no indication in the output
SPS struct that the VUI was skipped.

The only caller that ever passed FALSE seems to be the
important gst_h264_parser_parse_nal() function, meaning - so the
cached SPS were always silently invalid. That needs changing
anyway, meaning noone ever passes FALSE.

I don't see any use for saving a few microseconds in
order to silently produce garbage, and since this is still
unstable API, let's remove the parse_vui_param.
2019-07-05 00:17:59 +10:00
Jan Schmidt 81c20cadea h264parser lib: Warn on invalid pic_timing SEI
The spec calls for pic_timing SEI to be absent unless
there's either a CpbDpbDelaysPresentFlag or
pic_struct_present_flag in the SPS VUI data. If
both those flags are missing, warn.
2019-07-05 00:17:59 +10:00
Jan Schmidt 75ce024b1e h264parser lib: Always consume all SEI bits
If parsing an SEI errors out, it might not consume
all bits, leaving extra unparsed data in the reader
that the outer loop then tries to parse as a new
appended SEI.

Skip all the bits if any are left over to avoid
'finding' extra garbage SEI in the parsing.
2019-07-05 00:17:59 +10:00
Jan Schmidt a978bd2cab h264parser: Return BROKEN_LINK for missing SPS
When parsing SEI that require an SPS, return
GST_H264_PARSER_BROKEN_LINK instead of a generic
parsing error to let callers distinguish
bitstream errors from (expected) missing packets
when resuming decode.
2019-07-05 00:17:59 +10:00
Jan Schmidt 34b0eb4953 h264parser: Improve documentation
Improve some docs around the NALU structure contents
2019-07-05 00:17:58 +10:00
Jan Schmidt 44d16fc00d gstmpegvideoparser: Documentation fixes
Fix some spelling mistakes and improve documentation in
the MPEG video parser
2019-07-05 00:17:58 +10:00
Matthew Waters 69af8a9360 vulkan: move swapper object to the gstvulkan library
Allows other sinks and/or user code to display to a VkSurface
2019-07-04 14:18:15 +10:00
Matthew Waters b5256d94fc vulkan: move trash list to library 2019-07-04 14:18:15 +10:00
Matthew Waters 0cb416db11 vkbuffermemory: report requested size of the memory
Rather than using Vulkan's much larger aligned sizes. Fixes multi-planer
video with the GstVideoFrame API.
2019-06-20 01:41:56 +10:00
Matthew Waters bbdb2f3f17 vulkan: add some information on vulkan formats 2019-06-20 01:41:56 +10:00
Matthew Waters 2dcdaaf7cb vulkan: ensure initialization of a couple of debug categories
Needed when some of the context querying functions can be called before
an instance has been created.
2019-06-20 01:41:56 +10:00
Seungha Yang 567258be29 h265parser: Add more profiles to known type
"High Throughput", "Multiview", "Scalable", "3D", "Screen Content Coding",
and "Scalable format range extensions" profiles can be supported
via h265parser APIs now.
2019-06-13 23:05:09 -04:00
Dong Il Park 1af22f3561 h265parser: Use vps_timing_info when not present in vui
The same timing_info will be present at vps or vui.
When the timeing_info is present in the VPS, vui_timing_info
, when present, shall be equal to vps_timing_info, and when
not present, is inferred to be equal to vps_timing_info.
2019-06-14 02:15:46 +00:00
Seungha Yang 7b1b3327a0 vulkan: Add support WIN32 for Windows
It's almost a fork of glwindow_win32 implementation.
To build on Windows, Vulkan SDK (at https://vulkan.lunarg.com/sdk/home)
and VK_SDK_PATH environment are required. Note that VK_SDK_PATH environment
setting is a part of the SDK installation.
2019-06-13 04:55:15 +00:00
Niels De Graef 7af1a4566f Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally
Since we started depending on GLib 2.44, we can be sure this macro is
defined (it will be a no-op on compilers that don't support it).
2019-06-05 08:12:10 +02:00
Matthew Waters ac09f88eb9 vulkan: implement the correct memory barriers necessary
Vulkan validation layers are finally silent!
2019-06-04 09:03:44 +00:00
Matthew Waters ae13e66639 vkmemory: fix allocation of sizes less than the alignment
Avoids allocating a 0-sized device memory which is invalid vulkan usage
2019-06-04 09:03:44 +00:00
Matthew Waters 0efd559950 vk*pool: expand usage hints to cover use in a renderpass 2019-06-04 09:03:44 +00:00
Matthew Waters 25a970f9d5 vkformat: fix format conversion for matching vulkan formats
Other formats still need a swizzle or conversion.
2019-06-04 09:03:44 +00:00
Matthew Waters 5478d39900 vkbuffermemory: bufferview's are only for texture-like memory 2019-06-04 09:03:44 +00:00
Matthew Waters d61e771c37 vulkan: use c99 designated initializers where possible
Makes the code much easier to read and allows removing our terrible
macros for structure initialization.
2019-06-04 09:03:44 +00:00
Matthew Waters 673d775df0 vkupload: implement buffer to image uploader 2019-06-04 09:03:44 +00:00
Matthew Waters c568d1a673 vkqueue: unly unref the context query if it succeeds 2019-06-04 09:03:44 +00:00
Matthew Waters 70fda3ff78 vulkan: large docs update 2019-06-04 09:03:44 +00:00
Matthew Waters 32d217a9df vulkan: add a command pool object for tracking 2019-06-04 09:03:44 +00:00
Matthew Waters 25dd3b32e5 vulkan: make a gstvulkan library out of the existing API 2019-06-04 09:03:44 +00:00
Mathieu Duponchelle 51ea6ec6b7 docs: document gstreamer-bad-audio
And unprefix subproject paths, making a special case for
webrtc, to not conflict with the webrtc plugin
2019-06-01 02:58:09 +00:00
Mathieu Duponchelle 7e5ae06ffe libs: build a gir file for gstreamer-bad-audio 2019-06-01 02:58:09 +00:00
Mathieu Duponchelle f9c0367619 mpegtssection: events don't necessarily have a structure 2019-05-30 17:20:12 +02:00
Mathieu Duponchelle 09749192d8 mpegts: extend support for ATSC tables
Adds constructors for the following sections:

STT: System Time Table
MGT: Master Guide Table
RRT: Rating Region Table

Also adds parsing code for RRT
2019-05-30 13:53:05 +00:00
Matthew Waters 177aa22bcd webrtc: Initial support for stream addition/removal
Limitations:
- No transport changes at all (ICE, DTLS)
- Codec changes are untested and probably don't work
- Stream removal doesn't remove transports (i.e. non-bundled transports
  will stay around until webrtcbin is shutdown)
- Unified Plan SDP only. No Plan-B support.
2019-05-30 21:33:09 +10:00
Matthew Waters c3c4b07ad3 webrtc/transceiver: add a set_direction function
Matches the setDirection() from the W3C spec and allows changing the
transceiver direction at the next negotiation cycle.
2019-05-30 21:33:09 +10:00
Mathieu Duponchelle da6afdec9c doc: remove xml from comments 2019-05-29 22:58:08 +02:00
Tim-Philipp Müller 0d59589935 codecparsers: fix debug category initialisation
Make thread-safe.
2019-05-25 15:29:25 +02:00
Sebastian Dröge b3bf3a0d21 webrtc: Add various Since markers to new types after 1.14.0 2019-05-21 12:16:31 +03:00
Thibault Saunier 47a49f3381 docs: Build documentation with hotdoc 2019-05-13 17:00:00 -04:00
Thibault Saunier 7fe3f36ac8 Minor documentation fixes 2019-05-13 11:36:27 -04:00
Niels De Graef 39c8c206be webrtc: Add g_autoptr() support for public types 2019-05-08 15:47:06 +02:00
Christoph Reiter 22c6a4085f meson: fix build with opencv=enabled and opencv4. Fixes #964
Having the opencv feature enabled would lead to the opencv3 dependency
being required which failed with only opencv4 being available.

Instead don't require anything and error out at the end if the feature was enabled
but no dependency was found.
2019-05-06 07:21:45 +00:00
Christoph Reiter 3a5bcfc593 autotools: gstsctp: set LDFLAGS
This fixes the mingw build which failed because of "-no-undefined" missing.
2019-05-05 12:39:01 +02:00
Seungha Yang bd91ebd6e4 h265parser: Add parsing mastering display colour volume SEI message
... and content light level SEI message. Those SEI messages are required
for HDR rendering.
2019-05-03 19:44:15 +00:00