platform/upstream/gstreamer.git
5 years agovulkan: remove unused downsample AYUV shader
Matthew Waters [Thu, 20 Jun 2019 04:36:02 +0000 (14:36 +1000)]
vulkan: remove unused downsample AYUV shader

5 years agowebrtcbin: fix DTLS when receivebin is set to DROP
Mathieu Duponchelle [Wed, 19 Jun 2019 17:43:14 +0000 (19:43 +0200)]
webrtcbin: fix DTLS when receivebin is set to DROP

Regression introduced by b4bdcf15b7237eb5c5943c4f746701a477333000

This commit prevents the handshake from reaching dtlsdec when
the receive state of the receive bin is set to DROP (for example
when transceivers are sendonly).

This preserves the intent of the commit, by blocking the bin
at its sinks until the receive state is no longer BLOCK, but
makes sure the handshake still goes through, by only dropping
data at the src pads, as was the case before.

5 years agovkcolorconvert: add support for RGB<->NV12
Matthew Waters [Wed, 19 Jun 2019 15:39:53 +0000 (01:39 +1000)]
vkcolorconvert: add support for RGB<->NV12

5 years agovkbuffermemory: report requested size of the memory
Matthew Waters [Wed, 19 Jun 2019 15:36:55 +0000 (01:36 +1000)]
vkbuffermemory: report requested size of the memory

Rather than using Vulkan's much larger aligned sizes. Fixes multi-planer
video with the GstVideoFrame API.

5 years agovulkancolorconvert: support RGB <-> AYUV/YUY2/UYVY
Matthew Waters [Wed, 19 Jun 2019 09:09:21 +0000 (19:09 +1000)]
vulkancolorconvert: support RGB <-> AYUV/YUY2/UYVY

5 years agovktrash: add mini_object_unref destroy function
Matthew Waters [Wed, 19 Jun 2019 05:28:42 +0000 (15:28 +1000)]
vktrash: add mini_object_unref destroy function

5 years agovkfullscreenrender: create descriptor sets later
Matthew Waters [Wed, 19 Jun 2019 05:27:11 +0000 (15:27 +1000)]
vkfullscreenrender: create descriptor sets later

The desciptor sets may be dependant on the caps

5 years agovulkan/shaders: change glslc compilation args based on configurations
Matthew Waters [Wed, 19 Jun 2019 05:25:18 +0000 (15:25 +1000)]
vulkan/shaders: change glslc compilation args based on configurations

Add depfile support so that modifying an #included glsl snippet
rebuilds all the dependant shaders.

5 years agovulkan: add a color conversion element
Matthew Waters [Thu, 13 Jun 2019 08:05:40 +0000 (18:05 +1000)]
vulkan: add a color conversion element

Currently converts between all 4-component RGBA/RGBx formats.

5 years agovulkan: add some information on vulkan formats
Matthew Waters [Thu, 13 Jun 2019 07:57:51 +0000 (17:57 +1000)]
vulkan: add some information on vulkan formats

5 years agovkupload: Also implement copying non vulkan memory into vulkan buffers
Matthew Waters [Thu, 13 Jun 2019 07:44:22 +0000 (17:44 +1000)]
vkupload: Also implement copying non vulkan memory into vulkan buffers

The only way we can upload things is through our memory so any
non-vulkan memory that appears must be copied into our memory.

5 years agovulkan: add download element
Matthew Waters [Thu, 13 Jun 2019 07:05:44 +0000 (17:05 +1000)]
vulkan: add download element

Currently only downloads images into a host-visible buffer and
synchronises immediately.

5 years agovulkan/identity: Split out most rendering code to a base class
Matthew Waters [Mon, 10 Jun 2019 16:05:32 +0000 (02:05 +1000)]
vulkan/identity: Split out most rendering code to a base class

A simple base class that renders a 2d fullscreen quad parallel to the
screen surface inside the view frustum.

5 years agovkupload: fix a structure sType
Matthew Waters [Wed, 12 Jun 2019 08:25:00 +0000 (18:25 +1000)]
vkupload: fix a structure sType

5 years agovulkan: ensure initialization of a couple of debug categories
Matthew Waters [Tue, 11 Jun 2019 08:37:59 +0000 (18:37 +1000)]
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.

5 years agovksink: Retrieve vulkan queue earlier
Matthew Waters [Tue, 21 May 2019 07:19:00 +0000 (17:19 +1000)]
vksink: Retrieve vulkan queue earlier

Allows using the swapper's queue over upstream's queue.  The swapper
will check for the necessary presentation support that upstream may not
consider.

5 years agompegvideoparse: Pass through interlace-mode field from upstream if available
Sebastian Dröge [Wed, 19 Jun 2019 11:13:02 +0000 (14:13 +0300)]
mpegvideoparse: Pass through interlace-mode field from upstream if available

We generally always prefer the information from upstream for other
metadata (pixel-aspect-ration, etc.) and should also do so here.

Other parsers (h264parse) already do the same.

5 years agozbar: Include running-time, stream-time and duration in the messages
Sebastian Dröge [Wed, 19 Jun 2019 10:31:39 +0000 (13:31 +0300)]
zbar: Include running-time, stream-time and duration in the messages

The timestamp/PTS alone is meaningless without the segment and usually
applications care about the running-time or stream-time.

This also keeps the messages in sync with the spectrum and level
elements.

5 years agotests: hls: Add a test case for EXT-X-MAP tag
Seungha Yang [Sat, 4 Nov 2017 11:40:18 +0000 (20:40 +0900)]
tests: hls: Add a test case for EXT-X-MAP tag

https://bugzilla.gnome.org/show_bug.cgi?id=776928

5 years agotests: Enable hls m3u8 unit test with meson build
Seungha Yang [Sun, 12 May 2019 10:21:23 +0000 (19:21 +0900)]
tests: Enable hls m3u8 unit test with meson build

5 years agohlsdemux: Set fragment header uri if exists
Seungha Yang [Sat, 4 Nov 2017 11:39:39 +0000 (20:39 +0900)]
hlsdemux: Set fragment header uri if exists

To allow downloading fragment hearder, set its uri if there is
available "Media Initialization" parsed from EXT-X-MAP tag

https://bugzilla.gnome.org/show_bug.cgi?id=776928

5 years agohls: m3u8: Parsing EXT-X-MAP tag to store initialization data
Seungha Yang [Sat, 4 Nov 2017 11:15:33 +0000 (20:15 +0900)]
hls: m3u8: Parsing EXT-X-MAP tag to store initialization data

EXT-X-MAP tag informs media initialization data,
such as moov box in ISOBMFF case and PAT/PMT for MPEG TS stream.

https://bugzilla.gnome.org/show_bug.cgi?id=776928

5 years agohlsdemux: Do not clear/advance fragment by finished header downloading
Seungha Yang [Mon, 30 Jan 2017 05:13:06 +0000 (14:13 +0900)]
hlsdemux: Do not clear/advance fragment by finished header downloading

Header data must be forwarded to downstream, but if demux does not finish
to finding type (e.g., ts, mp4 and etc), this header data can be cleared
by _stream_clear_pending_data(). Moreover, although demux finish downloading
header data, still it has fragment date to be downloaded, fragment sequence
shouldn't be advanced yet at that moment.

https://bugzilla.gnome.org/show_bug.cgi?id=776928

5 years agotests: insertbin: Don't use duplicated variable name
Seungha Yang [Tue, 19 Feb 2019 12:46:43 +0000 (21:46 +0900)]
tests: insertbin: Don't use duplicated variable name

../subprojects/gst-plugins-bad/tests/check/libs/insertbin.c(46): warning C4273:
  'mutex': ...

The "mutex" was declared in gstcheck.h already

5 years agoapplemedia: add the '-fobjc-arc' for darwin/ios
Matthew Waters [Mon, 17 Jun 2019 04:58:50 +0000 (14:58 +1000)]
applemedia: add the '-fobjc-arc' for darwin/ios

We use ARC so we need to signal that to the compiler.

5 years agouvch264: Implement device provider
Thibault Saunier [Mon, 3 Jun 2019 16:18:13 +0000 (12:18 -0400)]
uvch264: Implement device provider

5 years agouvch264: Factor out checking if v4l2device is uvc compatible
Thibault Saunier [Mon, 3 Jun 2019 16:17:22 +0000 (12:17 -0400)]
uvch264: Factor out checking if v4l2device is uvc compatible

5 years agoh265parse: update parser state and header flag when using fallback sps
Nicola Murino [Mon, 8 Apr 2019 17:24:00 +0000 (19:24 +0200)]
h265parse: update parser state and header flag when using fallback sps

When sps parsing fails we use a fallback sps from the caps, since we
have got an sps we need to update parser state and header as in the case the
sps was successfully parsed

5 years agoh264parse: update parser state and header flag when using fallback sps
Nicola Murino [Mon, 26 Nov 2018 16:23:21 +0000 (17:23 +0100)]
h264parse: update parser state and header flag when using fallback sps

When sps parsing fails we use a fallback sps from the caps, since we
have got an sps we need to update parser state and header as in the case the
sps was successfully parsed

Closes #503

5 years agoh264parse: Post a WARNING when data is broken
Thibault Saunier [Fri, 31 May 2019 14:12:54 +0000 (10:12 -0400)]
h264parse: Post a WARNING when data is broken

5 years agoh265parse: Add more string representations of extension profiles
Seungha Yang [Wed, 12 Jun 2019 06:47:52 +0000 (15:47 +0900)]
h265parse: Add more string representations of extension profiles

5 years agoh265parser: Add more profiles to known type
Seungha Yang [Wed, 12 Jun 2019 06:32:17 +0000 (15:32 +0900)]
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.

5 years agoh265parse: Update framerate when we found vps_timing_info
Dong Il Park [Thu, 18 Apr 2019 09:12:34 +0000 (18:12 +0900)]
h265parse: Update framerate when we found vps_timing_info

The timing_info was described at vps or vui parameter.
So we can update the framerate field of GstCaps when we could
parse vps_timing_info parameters.

5 years agoh265parser: Use vps_timing_info when not present in vui
Dong Il Park [Thu, 18 Apr 2019 07:54:51 +0000 (16:54 +0900)]
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.

5 years agovulkan: Add support WIN32 for Windows
Seungha Yang [Sat, 8 Jun 2019 13:57:21 +0000 (22:57 +0900)]
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.

5 years agoavdtpsrc: Honour initial transport volume setting before connection
Arun Raghavan [Wed, 12 Jun 2019 08:12:14 +0000 (10:12 +0200)]
avdtpsrc: Honour initial transport volume setting before connection

We make the binding go from the avdtpsrc to the transport, so that any
initial setting before a connection made is used.

5 years agouvch264src: Make sure we set our segment
Thibault Saunier [Tue, 11 Jun 2019 16:10:13 +0000 (12:10 -0400)]
uvch264src: Make sure we set our segment

We were not setting self->segment and we are using it
when notifying downstream that we handled a REQUEST_KEY_UNIT
event, leading to all sort of criticals.

5 years agoh265parse: Don't miss constraint indicator flags in codec data
Seungha Yang [Tue, 11 Jun 2019 05:28:22 +0000 (14:28 +0900)]
h265parse: Don't miss constraint indicator flags in codec data

Set more unhandled flags to general_constraint_indicator_flags field.
The field is required for building "Codecs" parameter as defined
ISO/IEC 14496-15 Annex E. The resulting "Codecs" string might be used
in various places (e.g., HLS/DASH manifest, browser, player, etc)

5 years agortpmanagerbad: fix the plugin registration
Marc Leeman [Fri, 7 Jun 2019 14:12:25 +0000 (14:12 +0000)]
rtpmanagerbad: fix the plugin registration

After compilation, the compiled library needs to be added to the list
of plugin libraries.
.
Also, fix for static builds

5 years agoRemove VDPAU plugin
Tim-Philipp Müller [Thu, 6 Jun 2019 17:22:43 +0000 (18:22 +0100)]
Remove VDPAU plugin

It's been replaced by NVENC/NVDEC and even NVIDIA doesn't
support VDPAU any longer and hasn't for quite some time.

The plugin has been unmaintained and unsupported for a very
long time, and given the track record over the last 10 years
it seems highly unlikely anyone is going to make it work well,
not to mention adding plumbing for proper zero-copy or
gst-gl integration.

Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/828

5 years agoautotools: fix distcheck
Tim-Philipp Müller [Thu, 6 Jun 2019 17:36:00 +0000 (18:36 +0100)]
autotools: fix distcheck

5 years agoautotools: remove gst/rtp/ from cruft dir list
Tim-Philipp Müller [Wed, 5 Jun 2019 16:10:19 +0000 (17:10 +0100)]
autotools: remove gst/rtp/ from cruft dir list

5 years agortp: fix autotools build some more
Tim-Philipp Müller [Wed, 5 Jun 2019 15:58:32 +0000 (16:58 +0100)]
rtp: fix autotools build some more

5 years agowpe: Fix build with -Werror enabled
Philippe Normand [Wed, 5 Jun 2019 11:47:16 +0000 (12:47 +0100)]
wpe: Fix build with -Werror enabled

Including gl.h from WPEThreadedView.h leads to GST_LEVEL_DEFAULT detected as
redefined. The proposed fix is to include config.h from the CPP implementation
file and disable gl.h inclusion in the header, by using forward declarations.

5 years agoavwait: Allow start and end timecode to be set back to NULL
Sebastian Dröge [Wed, 5 Jun 2019 08:46:49 +0000 (11:46 +0300)]
avwait: Allow start and end timecode to be set back to NULL

And check everywhere if they're NULL before accessing them.

5 years agoUse G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally
Niels De Graef [Wed, 5 Jun 2019 06:12:10 +0000 (08:12 +0200)]
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).

5 years agotests/vulkan: allow instance creation failures
Matthew Waters [Tue, 21 May 2019 04:04:07 +0000 (14:04 +1000)]
tests/vulkan: allow instance creation failures

Usually means that there is no vulkan implementation available.

We skip tests in that case

5 years agotest/vulkan: add simple memory test
Matthew Waters [Mon, 20 May 2019 03:54:56 +0000 (13:54 +1000)]
test/vulkan: add simple memory test

5 years agovkupload: remove debugging error log
Matthew Waters [Mon, 20 May 2019 03:48:27 +0000 (13:48 +1000)]
vkupload: remove debugging error log

5 years agovulkan: implement the correct memory barriers necessary
Matthew Waters [Mon, 20 May 2019 03:46:56 +0000 (13:46 +1000)]
vulkan: implement the correct memory barriers necessary

Vulkan validation layers are finally silent!

5 years agovulkan: remove uneeded buffer inheritence information
Matthew Waters [Thu, 16 May 2019 12:39:51 +0000 (22:39 +1000)]
vulkan: remove uneeded buffer inheritence information

buffer inheritence informationi is only required for secondary command
buffers which we are not creating

5 years agovulkan: add a new image copying element
Matthew Waters [Thu, 16 May 2019 09:48:24 +0000 (19:48 +1000)]
vulkan: add a new image copying element

Copies using the graphics pipeline, an input image and renders to an
output image.

5 years agovkmemory: fix allocation of sizes less than the alignment
Matthew Waters [Thu, 16 May 2019 09:39:20 +0000 (19:39 +1000)]
vkmemory: fix allocation of sizes less than the alignment

Avoids allocating a 0-sized device memory which is invalid vulkan usage

5 years agovk*pool: expand usage hints to cover use in a renderpass
Matthew Waters [Thu, 16 May 2019 09:38:35 +0000 (19:38 +1000)]
vk*pool: expand usage hints to cover use in a renderpass

5 years agovkformat: fix format conversion for matching vulkan formats
Matthew Waters [Thu, 16 May 2019 09:36:18 +0000 (19:36 +1000)]
vkformat: fix format conversion for matching vulkan formats

Other formats still need a swizzle or conversion.

5 years agovkbuffermemory: bufferview's are only for texture-like memory
Matthew Waters [Thu, 16 May 2019 09:35:11 +0000 (19:35 +1000)]
vkbuffermemory: bufferview's are only for texture-like memory

5 years agovkupload: add raw->vulkanimage uploader
Matthew Waters [Thu, 16 May 2019 09:34:41 +0000 (19:34 +1000)]
vkupload: add raw->vulkanimage uploader

5 years agovktrash: add more destruction of vulkan types
Matthew Waters [Thu, 16 May 2019 09:33:06 +0000 (19:33 +1000)]
vktrash: add more destruction of vulkan types

5 years agovulkan: use c99 designated initializers where possible
Matthew Waters [Thu, 9 May 2019 11:50:47 +0000 (21:50 +1000)]
vulkan: use c99 designated initializers where possible

Makes the code much easier to read and allows removing our terrible
macros for structure initialization.

5 years agovkswapper: support displaying memory:VulkanImage
Matthew Waters [Wed, 8 May 2019 11:26:17 +0000 (21:26 +1000)]
vkswapper: support displaying memory:VulkanImage

5 years agovkupload: implement buffer to image uploader
Matthew Waters [Wed, 8 May 2019 04:50:29 +0000 (14:50 +1000)]
vkupload: implement buffer to image uploader

5 years agovkqueue: unly unref the context query if it succeeds
Matthew Waters [Wed, 8 May 2019 04:48:43 +0000 (14:48 +1000)]
vkqueue: unly unref the context query if it succeeds

5 years agovulkansink: Respond to queue queries
Matthew Waters [Wed, 8 May 2019 04:47:43 +0000 (14:47 +1000)]
vulkansink: Respond to queue queries

5 years agovulkan: large docs update
Matthew Waters [Thu, 11 Apr 2019 06:52:54 +0000 (16:52 +1000)]
vulkan: large docs update

5 years agovulkan: add a command pool object for tracking
Matthew Waters [Wed, 10 Apr 2019 04:27:26 +0000 (14:27 +1000)]
vulkan: add a command pool object for tracking

5 years agovkswapper: don't output duplicate formats
Matthew Waters [Wed, 10 Apr 2019 01:56:59 +0000 (11:56 +1000)]
vkswapper: don't output duplicate formats

5 years agovulkan: make a gstvulkan library out of the existing API
Matthew Waters [Mon, 8 Apr 2019 11:35:22 +0000 (21:35 +1000)]
vulkan: make a gstvulkan library out of the existing API

5 years agovkbufferpool: Fix multiplaner allocations
Matthew Waters [Mon, 8 Apr 2019 08:43:50 +0000 (18:43 +1000)]
vkbufferpool: Fix multiplaner allocations

Use the plane width/height and the sizes required by vulkan

Fixes allocation of:
videotestsrc ! video/x-raw,format=I420 ! vulkanupload ! fakesink

5 years agovk*memory: explicitly error out for driver NPOT alignment
Matthew Waters [Mon, 8 Apr 2019 08:42:12 +0000 (18:42 +1000)]
vk*memory: explicitly error out for driver NPOT alignment

5 years agovulkan/image: initialize the requirements struct before using it
Matthew Waters [Thu, 4 Apr 2019 08:30:28 +0000 (19:30 +1100)]
vulkan/image: initialize the requirements struct before using it

5 years agovulkan: don't require every element to have a display
Matthew Waters [Thu, 4 Apr 2019 08:27:55 +0000 (19:27 +1100)]
vulkan: don't require every element to have a display

Only sink elements really care about a valid display

5 years agovulkan: remove unused X11 window system references
Matthew Waters [Thu, 4 Apr 2019 07:38:13 +0000 (18:38 +1100)]
vulkan: remove unused X11 window system references

We use XCB instead

5 years agovulkan: remove unused layer enablement
Matthew Waters [Thu, 4 Apr 2019 06:33:34 +0000 (17:33 +1100)]
vulkan: remove unused layer enablement

This is possible now via the vulkan loader

5 years agowebrtc: Fix log when adding stun server
Ali Yousuf [Mon, 20 May 2019 11:34:55 +0000 (16:34 +0500)]
webrtc: Fix log when adding stun server

5 years agowebrtc: fix the location of signalling-state change notification
Matthew Waters [Tue, 4 Jun 2019 05:35:24 +0000 (15:35 +1000)]
webrtc: fix the location of signalling-state change notification

1. The spec indicates that the notification should occur near the end of
   'setting the description' processing
2. The current location with the drop of the lock could cause the 'check
   if negotiation is needed' logic to execute and become confused about
   the state of the webrtcbin's current local descriptions.
   In the bad case, the following assertions could be hit:
   g_assert (trans->mline < gst_sdp_message_medias_len (webrtc->current_local_description->sdp));
   g_assert (trans->mline < gst_sdp_message_medias_len (webrtc->current_remote_description->sdp));

Moving the signalling state change later in the set description task
means that checking for a renegotiation will early abort as the
signalling state is not STABLE before the session description and
transceivers have been updated.

5 years agomake: rtp: Remove spurious header file
Nicolas Dufresne [Tue, 4 Jun 2019 00:29:18 +0000 (20:29 -0400)]
make: rtp: Remove spurious header file

This header file no longer exist.

5 years agortpmanagerbad: add RTP streaming elements
Marc Leeman [Mon, 3 Jun 2019 20:08:23 +0000 (20:08 +0000)]
rtpmanagerbad: add RTP streaming elements

This is a re-implementation of the RTP elements that are submitted in
2013 to handle RTP streams. The elements handle a correct connection
for the bi-directional use of the RTCP sockets.

https://bugzilla.gnome.org/show_bug.cgi?id=703111

The rtpsink and rtpsrc elements add an URI interface so that streams
can be decoded with decodebin using the rtp:// interface.

The code can be used as follows

```
gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay config-interval=3 ! rtpsink uri=rtp://239.1.1.1:1234

gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay config-interval=1 ! rtpsink uri=rtp://239.1.2.3:5000
gst-launch-1.0 rtpsrc uri=rtp://239.1.2.3:5000?encoding-name=H264 ! rtph264depay ! avdec_h264 ! videoconvert ! xvimagesink

gst-launch-1.0 videotestsrc ! avenc_mpeg4 ! rtpmp4vpay config-interval=1 ! rtpsink uri=rtp://239.1.2.3:5000
gst-launch-1.0 rtpsrc uri=rtp://239.1.2.3:5000?encoding-name=MP4V-ES ! rtpmp4vdepay ! avdec_mpeg4 ! videoconvert ! xvimagesink
```

rtpmanagerbad: add pkg-config
rtpmanagerbad: Rtp should be uppercase
rtpmanagerbad: add G_OS_WIN32 for shielding unix headers
rtpmanagerbad: remove Since from documentation
rtpmanagerbad: rename lib name from nrtp to rtpmanagerbad
rtpmanagerbad: sync meson.build with other modules
rtpmanagerbad: add Makefile.am
rtpmanagerbad: use GstElement to count pads
rtpmanagerbad: use gst_bin_set_suppressed_flags
rtpmanagerbad: check element creation
rtpmanagerbad: post message when trying to access missing rtpbin
rtpmanagerbad: return FALSE with g_return tests
rtpmanagerbad: use gsocket multicast check
rtpmanagerbad: use gst_caps_new_empty_simple iso gst_caps_from_string
rtpmanagerbad: sync with gstrtppayloads.h
rtpmanagerbad: correct media type X-GST
rtpmanagerbad: test if a compatible pad was found
rtpmanagerbad: remove evil copy of GstRTPPayloadInfo
rtpmanagerbad: add gio_dep to meson
rtpmanagerbad: revert to old glib boilerplate

GStreamer 1.16 does not yet support the newer GLib templates, so revert.

rtpmanagerbad: return GST_STATE_CHANGE_NO_PREROLL for live sources

for live sources, NO_PREROLL should be returned for PLAYING->PAUSED and
READY->PAUSED transitions.

rtpmanagerbad: use GstElement pad counting
rtpmanagerbad: just use template name to request pad
rtpmanagerbad: remove commented code
rtpmanagerbad: use funnel to send multiple streams on one socket
rtpmanagerbad: avoid beaches

beaches should only be used during the summer, so rewrite the code to
return explicitly and avoid beaches during the winter.

rtpmanagerbad: add copyright to test code
rtpmanagerbad: g_free is NULL safe
rtpmanagerbad: do not trace rtpbin
rtpmanagerbad: return NULL explitly
rtpmanagerbad: warn when data port is not even

According to RFC 3550, RTP data should be sent on even ports, while RTCP
is sent on the following odd port.

rtpmanagerbad: document port allocation in rtpsink/src
rtpmanagerbad: improve uri description
rtpmanagerbad: add comment re-use socket
rtpmanagerbad: rename gst_object_set_properties_from_uri_query
rtpmanagerbad: loan prop/val setter from rist
rtpmanagerbad: rtpsrc: fix unitialised pointer
rtpmanagerbad: fix silly typo
rtpmanagerbad: test for empty key/value
rtpmanagerbad: rtpsrc: deprecate ssrc collision to INFO
rtpmanagerbad: sync debug with rist
rtpmanagerbad: small strings allocated on stack
rtpmanagerbad: correct rename
rtpmanagerbad: add locking on prop setters/getters

Locking is added because the URI allows to access the properties too.

rtpmanagerbad: allow for RTCP through NAT
rtpmanagerbad: move gio to header file
rtpmanagerbad: free small strings too
rtpmanagerbad: ttl_mc for ttl on dynudpsink
rtpmanagerbad: add comments on the URI registered
rtpmanagerbad: correct macro after file rename
rtpmanagerbad: code style
rtpmanagerbad: handle wrong URIs in setter
rtpmanagerbad: nit URI notation correction

In an URI, the first key/value pair should not have an ampersand, the
parser did not die though.

5 years agomeson: Bump minimal GLib version to 2.44
Niels De Graef [Fri, 31 May 2019 21:06:33 +0000 (23:06 +0200)]
meson: Bump minimal GLib version to 2.44

This means we can use some newer features and get rid of some
boilerplate code using the G_DECLARE_* macros.

As discussed on IRC, 2.44 is old enough by now to start depending on it.

5 years agotests/dash_mpd: take account of Period start in expected timestamps
Alex Ashley [Tue, 11 Dec 2018 14:43:21 +0000 (14:43 +0000)]
tests/dash_mpd: take account of Period start in expected timestamps

The start of each segment is relative to the Period start, minus
the presentation time offset.

As specified in section 5.3.9.6 of the MPEG DASH specification:
The value of the @t attribute minus the value of the
@presentationTimeOffset specifies the MPD start time of
the first Segment in the series.

Several tests use a Period@start value of 10 seconds, which either
needs to be taken into account when calculating expected timestamps
or have that attribute removed.

This commit uses a mix of updating the timestamps and removing the
start attribute, so that both the case of its presence and absence
is tested.

5 years agodashdemux: include both Period start and presentationTimeOffset in segment start
Alex Ashley [Tue, 16 Oct 2018 15:57:30 +0000 (16:57 +0100)]
dashdemux: include both Period start and presentationTimeOffset in segment start

The start of each segment is relative to the Period start, minus
the presentation time offset.

As specified in section 5.3.9.6 of the MPEG DASH specification:
    The value of the @t attribute minus the value of the
    @presentationTimeOffset specifies the MPD start time of
    the first Segment in the series.

dashdemux was not taking account of presentationTimeOffset and in
some methods was not taking into account the Period start time.
This commit modifies the segment->start value to always be
relative to the MPD start time (zero for VOD,
availabilityStartTime for live streams). This makes all uses of
the segment list consistent.

Fixes #841

5 years agodocs: document gstreamer-bad-audio
Mathieu Duponchelle [Fri, 31 May 2019 23:42:51 +0000 (01:42 +0200)]
docs: document gstreamer-bad-audio

And unprefix subproject paths, making a special case for
webrtc, to not conflict with the webrtc plugin

5 years agolibs: build a gir file for gstreamer-bad-audio
Mathieu Duponchelle [Fri, 31 May 2019 23:42:06 +0000 (01:42 +0200)]
libs: build a gir file for gstreamer-bad-audio

5 years agoavwait: Don't print warnings for every buffer passed
Vivia Nikolaidou [Tue, 2 Oct 2018 08:25:14 +0000 (11:25 +0300)]
avwait: Don't print warnings for every buffer passed

5 years agomsdk: return a right pointer for VUYA format
Haihao Xiang [Fri, 31 May 2019 06:09:40 +0000 (14:09 +0800)]
msdk: return a right pointer for VUYA format

The first channel in memory is V for VUYA format, note
GST_VIDEO_FORMAT_VUYA is mapped to MFX_FOURCC_AYUV in this plugin

5 years agodocs: update plugin doc cache and add more plugins
Tim-Philipp Müller [Wed, 29 May 2019 16:05:34 +0000 (17:05 +0100)]
docs: update plugin doc cache and add more plugins

5 years agomeson: add more plugins to plugins list
Tim-Philipp Müller [Wed, 29 May 2019 10:28:00 +0000 (11:28 +0100)]
meson: add more plugins to plugins list

Makes sure their path gets added to the uninstalled environment
and makes sure they get included in the docs.

5 years agobasetsmux: don't reset pad on flush_stop
Mathieu Duponchelle [Wed, 22 May 2019 19:44:44 +0000 (21:44 +0200)]
basetsmux: don't reset pad on flush_stop

This was mistakenly added when porting to aggregator, this
restores the old behaviour, by only resetting them when the
muxer itself is reset

5 years agompegtssection: events don't necessarily have a structure
Mathieu Duponchelle [Wed, 22 May 2019 19:44:22 +0000 (21:44 +0200)]
mpegtssection: events don't necessarily have a structure

5 years agobasetsmux: fix send_event by chaining up
Mathieu Duponchelle [Wed, 22 May 2019 19:44:02 +0000 (21:44 +0200)]
basetsmux: fix send_event by chaining up

5 years agompegtsmux: add SECTION comment
Mathieu Duponchelle [Wed, 29 May 2019 16:27:09 +0000 (18:27 +0200)]
mpegtsmux: add SECTION comment

We include an example for injecting sections in the transport
stream in the documentation

5 years agotests: add example for injecting MPEG-TS sections
Mathieu Duponchelle [Wed, 29 May 2019 15:03:59 +0000 (17:03 +0200)]
tests: add example for injecting MPEG-TS sections

5 years agobasetsmux: preserve user-specified sections across resets
Mathieu Duponchelle [Wed, 29 May 2019 15:01:40 +0000 (17:01 +0200)]
basetsmux: preserve user-specified sections across resets

As sections can be provided by the user through send_event
when the element state is NULL, their lifetime is expected
to match that of the muxer, and they must be preserved when
the state changes

5 years agoatscmux: send empty RRT / MGT / STT tables
Mathieu Duponchelle [Wed, 22 May 2019 23:44:19 +0000 (01:44 +0200)]
atscmux: send empty RRT / MGT / STT tables

These are mandated by A/65, their absence gets flagged by
stream analyzers. Users can of course provide filled up
versions through the send_event API.

5 years agotsmux: maintain packet counters in a global array
Mathieu Duponchelle [Wed, 22 May 2019 22:03:18 +0000 (00:03 +0200)]
tsmux: maintain packet counters in a global array

We can have multiple TsMuxPacketInfo objects for the same PID
with user-provided sections, for example ATSC requires multiple
tables with the same PID.

5 years agompegts: extend support for ATSC tables
Mathieu Duponchelle [Tue, 21 May 2019 00:53:20 +0000 (02:53 +0200)]
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

5 years agowebrtc: only set sctp ports if they are different
Matthew Waters [Fri, 24 May 2019 14:02:05 +0000 (00:02 +1000)]
webrtc: only set sctp ports if they are different

SCTPassociation will complain if we do that while running and resetting
is not something we support at the moment

5 years agotests/webrtc: wait until the SDP has been set before continuing
Matthew Waters [Thu, 7 Mar 2019 13:39:59 +0000 (00:39 +1100)]
tests/webrtc: wait until the SDP has been set before continuing

If we renegotiate, then it is currently possible for an added stream to
be added to webrtcbin before the SDP is complete.  This causes an
internal inconsistency as there is a 'pending sink transceiver' without
a corresponding media section in the sdp.  It also does not have an
associated transport stream and will fail in _connect_input_stream().

5 years agotests/webrtc: fix racy test with a prenegotiated data channel
Matthew Waters [Thu, 7 Mar 2019 13:37:39 +0000 (00:37 +1100)]
tests/webrtc: fix racy test with a prenegotiated data channel

If both data channels become ready simultaneously, then the two integer
read-add-update cycles can execute concurrently and only ever increment
once instead of the required twice.  Use an atomic add instead.

5 years agowebrtc/dc: move some code from webrtcbin into the datachannel
Matthew Waters [Thu, 7 Mar 2019 13:32:53 +0000 (00:32 +1100)]
webrtc/dc: move some code from webrtcbin into the datachannel

5 years agowebrtc: hold onto any unknown ICE candidates until the next SDP set
Matthew Waters [Mon, 4 Mar 2019 10:44:33 +0000 (21:44 +1100)]
webrtc: hold onto any unknown ICE candidates until the next SDP set

It is very possible for badly behaving signalling or peers to send
us ICE candidates before we receive an SDP.  While we had consideration
for that on the first set SDP, subsequent SDP's could result in
misconfigured ICE transports.  Expand the previous code to also take
into account reconfigurations.