platform/upstream/gstreamer.git
6 years agomsdk: Avoid build failures on Windows until d3d allocator is implemented
Hyunjun Ko [Tue, 13 Feb 2018 22:54:03 +0000 (13:54 -0900)]
msdk: Avoid build failures on Windows until d3d allocator is implemented

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

6 years agomsdkdec: use video memory if there's another MSDK context in a pipeline
Hyunjun Ko [Tue, 13 Feb 2018 22:53:02 +0000 (13:53 -0900)]
msdkdec: use video memory if there's another MSDK context in a pipeline

1\ If downstream's pool is MSDK bufferpool,
2\ If there's shared GstMsdkContext in the pipeline,

a decoder decides to use video memory.

This policy should be improved to handle more cases.

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

6 years agomsdk: add async depth from each msdk element to GstMsdkContext to be shared
Hyunjun Ko [Tue, 13 Feb 2018 22:52:14 +0000 (13:52 -0900)]
msdk: add async depth from each msdk element to GstMsdkContext to be shared

In case that pipeline is like ".. ! decoder ! encoder ! ..." with using
video memory,
decoder needs to know the async depth of the following msdk element so
that it could
allocate the correct number of video memory.

Otherwise, decoder's memory is exhausted while processing.

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

6 years agomsdkdec/enc: query GstContext to share GstMsdkContext
Hyunjun Ko [Tue, 13 Feb 2018 22:51:18 +0000 (13:51 -0900)]
msdkdec/enc: query GstContext to share GstMsdkContext

How to share/create GstMsdkcontext is the following:

- Search GstMsdkContext if there's in the pipeline.
  - If found, check if it's decoder, encoder or vpp by job type.
    - If it's same job type, it creates another instance of
GstMsdkContext
     with joined-session.
    - Otherwise just use the shared GstMsdkContext.
  - If not found, just creates new instance of GstMsdkContext.

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

6 years agomsdk: context: add job type to figure out if joining session is necessary
Hyunjun Ko [Tue, 13 Feb 2018 22:50:48 +0000 (13:50 -0900)]
msdk: context: add job type to figure out if joining session is necessary

According to the driver's instruction, if there are two or more encoders
or decoders in a process, the session should be joined by
MFXJoinSession.

To achieve this successfully by GstContext, this patch adds job type
specified if it's encoder, decoder or vpp.

If a msdk element gets to know if joining session is needed by the
shared context,
it should create another instance of GstContext with joined session,
which
is not shared.

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

6 years agomsdk: adds util functions to handle GstContext
Hyunjun Ko [Tue, 13 Feb 2018 22:50:08 +0000 (13:50 -0900)]
msdk: adds util functions to handle GstContext

To share GstMsdkContext with each msdk element,
it will be using GstContext.

Most common code is from gstreamer-vaapi.

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

6 years agomsdkdec: use bufferpool
Hyunjun Ko [Tue, 13 Feb 2018 22:49:28 +0000 (13:49 -0900)]
msdkdec: use bufferpool

1\ In decide_allocation, it makes its own msdk bufferpool.
  - If downstream supports video meta, it just replace it with the msdk
bufferpool.
  - If not, it uses the msdk bufferpool as a side pool, which will be
decoded into.
    and will copy it to downstream's bufferpool.

2\ Decide if using video memory or system memory.
  - This is not completed in this patch.
  - It might be decided in update_src_caps.
  - But tested for both system memory and video memory cases.

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

6 years agomsdkenc: use bufferpool
Hyunjun Ko [Tue, 13 Feb 2018 22:48:32 +0000 (13:48 -0900)]
msdkenc: use bufferpool

1\ Proposes msdk bufferpool to upstream.
  - If upstream has accepted the proposed msdk bufferpool,
    encoder can get msdk surface from the buffer directly.
  - If not, encoder get msdk surface its own msdk bufferpool
    and copy from upstream's frame to the surface.

2\ Replace arrays of surfaces with msdk bufferpool.

3\ In case of using VPP, there should be another msdk bufferpool
   with NV12 info so that it could convert first and encode.

Calls gst_msdk_set_frame_allocator and uses video memory only on linux.
and uses system memory on Windows until d3d allocator is implemented.

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

6 years agomsdk: supports bufferpool
Hyunjun Ko [Tue, 13 Feb 2018 22:44:08 +0000 (13:44 -0900)]
msdk: supports bufferpool

Implements 2 memory allocators:
1\ GstMsdkSystemAllocator: This will allocate system memory.
2\ GstMsdkVideoAllocator: This will allocate device memory depending
on the platform. (eg. VASurface)

Currently GstMsdkBufferPool uses video allocator currently by default
only on linux. On Windows, we should use system memory until d3d
allocator
is implemented.

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

6 years agomsdk: adds frame allocator using libva
Hyunjun Ko [Tue, 13 Feb 2018 21:43:42 +0000 (12:43 -0900)]
msdk: adds frame allocator using libva

Implements msdk frame allocator which is required from the driver.
Also makes these functions global so that GstMsdkAllocator could use
the allocated video memory later and couple with GstMsdkMemory.

GstMsdkContext keeps allocation information such as mfxFrameAllocRequest
and mfxFrameAllocResponse after allocation.

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

6 years agomsdkdec: fix typo
Hyunjun Ko [Tue, 13 Feb 2018 21:43:00 +0000 (12:43 -0900)]
msdkdec: fix typo

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

6 years agomsdk: implements GstMsdkContext.
Hyunjun Ko [Tue, 13 Feb 2018 21:41:28 +0000 (12:41 -0900)]
msdk: implements GstMsdkContext.

Makes GstMsdkContext to be a descendant of GstObject so that
we could track the life-cycle of the session of the driver.

Also replaces MsdkContext with this one.
Keeps msdk_d3d.c alive for the future.

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

6 years agomsdk: libva: adds utility function between mfx and libva
Hyunjun Ko [Tue, 13 Feb 2018 21:39:44 +0000 (12:39 -0900)]
msdk: libva: adds utility function between mfx and libva

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

6 years agomsdk: adds new utility functions for conversion from gstreamer to libmfx
Hyunjun Ko [Tue, 13 Feb 2018 21:37:47 +0000 (12:37 -0900)]
msdk: adds new utility functions for conversion from gstreamer to libmfx

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

6 years agomsdk: move and rename the function msdk_video_alignment
Hyunjun Ko [Tue, 13 Feb 2018 21:36:46 +0000 (12:36 -0900)]
msdk: move and rename the function msdk_video_alignment

Move the msdk_video_alignment function from decoder
to msdk.c and rename so that others could call this function
without duplicated declaration.

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

6 years agoaudioaggregator: remove, moved to -base
Tim-Philipp Müller [Tue, 13 Feb 2018 14:11:49 +0000 (14:11 +0000)]
audioaggregator: remove, moved to -base

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

6 years agoaudiomixer: remove, moved to -base
Tim-Philipp Müller [Tue, 13 Feb 2018 00:28:36 +0000 (00:28 +0000)]
audiomixer: remove, moved to -base

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

6 years agoproxy: remove unneeded object private structs
Tim-Philipp Müller [Mon, 12 Feb 2018 19:30:01 +0000 (19:30 +0000)]
proxy: remove unneeded object private structs

Plugin headers are not installed.

Also mark internal funcs as internal.

6 years agoqt: remove plugin, moved to -good
Tim-Philipp Müller [Mon, 12 Feb 2018 18:48:32 +0000 (18:48 +0000)]
qt: remove plugin, moved to -good

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

6 years agoconfigure: remove two more unneeded gtk conditionals
Tim-Philipp Müller [Mon, 12 Feb 2018 15:44:00 +0000 (15:44 +0000)]
configure: remove two more unneeded gtk conditionals

6 years agogtk: remove, plugin has moved to -good
Tim-Philipp Müller [Thu, 8 Feb 2018 19:11:21 +0000 (19:11 +0000)]
gtk: remove, plugin has moved to -good

6 years agointeraudio: Make sure both PTS and DTS values are defined
Carlos Rafael Giani [Thu, 7 Dec 2017 14:52:39 +0000 (15:52 +0100)]
interaudio: Make sure both PTS and DTS values are defined

The inter plugin originated in 0.10, which had only one timestamp. As a
result, during the port to 1.0, the DTS were left undefined. This can cause
subtle bugs with basesrc, which can end up incorrectly picking DTS over PTS
and producing output buffers with incorrect timestamps.

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

6 years agowasapisrc: Re-align device period if necessary
Nirbheek Chauhan [Thu, 8 Feb 2018 20:35:23 +0000 (02:05 +0530)]
wasapisrc: Re-align device period if necessary

Same changes as done for wasapisink in cbe2fc40a. Turns out this is
sometimes also needed for capture. Reported by Mathieu_Du.

Also improve logging in that case for easier debugging.

6 years agomeson: make version numbers ints and fix int/string comparison
Tim-Philipp Müller [Thu, 8 Feb 2018 19:09:45 +0000 (19:09 +0000)]
meson: make version numbers ints and fix int/string comparison

WARNING: Trying to compare values of different types (str, int).
The result of this is undefined and will become a hard error
in a future Meson release.

6 years agoRevert "gdpdepay: don't use allocator if it has custom alloc"
Víctor Manuel Jáquez Leal [Mon, 5 Feb 2018 17:03:31 +0000 (18:03 +0100)]
Revert "gdpdepay: don't use allocator if it has custom alloc"

This reverts commit f6cb16ab8cecfe683473b173732ad040e858abd5.

6 years agoproxy: Fix plugin definition
Nirbheek Chauhan [Thu, 8 Feb 2018 09:49:12 +0000 (15:19 +0530)]
proxy: Fix plugin definition

I'm not sure how this was missed in review...

6 years agoproxy: Remove dead code from Makefile.am
Nirbheek Chauhan [Thu, 8 Feb 2018 09:15:28 +0000 (14:45 +0530)]
proxy: Remove dead code from Makefile.am

There is no gstproxytest.c

6 years agomeson: Fix wasapi build on Windows
Nirbheek Chauhan [Thu, 8 Feb 2018 09:11:05 +0000 (14:41 +0530)]
meson: Fix wasapi build on Windows

Was missing device prober and avrt (on msvc)

6 years agowasapi: Unprepare when src/sink_prepare fails
Nirbheek Chauhan [Thu, 8 Feb 2018 08:57:43 +0000 (14:27 +0530)]
wasapi: Unprepare when src/sink_prepare fails

unprepare() is not called automatically on failure.

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

6 years agowasapisink: Re-align device period if necessary
Nirbheek Chauhan [Wed, 7 Feb 2018 21:41:10 +0000 (03:11 +0530)]
wasapisink: Re-align device period if necessary

Sometimes the minimum period advertised by a card results in an
unaligned buffer size error during initialization in exclusive mode.
In that case, we can fetch the actual buffer size in frames and
calculate the period from that.

We can't do this pre-emptively because we can't call GetBufferSize
till Initialize has been called at least once.

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

6 years agowasapisink: pre-load the buffer with silence
Nirbheek Chauhan [Wed, 7 Feb 2018 21:39:26 +0000 (03:09 +0530)]
wasapisink: pre-load the buffer with silence

This reduces the chances of startup glitches, and also reduces the
chances that we'll get garbled output due to driver bugs.

Recommended by the WASAPI documentation.

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

6 years agowasapi: Try to use latency-time and buffer-time
Nirbheek Chauhan [Tue, 6 Feb 2018 23:18:58 +0000 (04:48 +0530)]
wasapi: Try to use latency-time and buffer-time

So far, we have been completely discarding the values of latency-time
and buffer-time and trying to always open the device in the lowest
latency mode possible. However, sometimes this is a bad idea:

1. When we want to save power/CPU and don't want low latency
2. When the lowest latency setting causes glitches
3. Other audio-driver bugs

Now we will try to follow the user-set values of latency-time and
buffer-time in shared mode, and only latency-time in exclusive mode (we
have no control over the hardware buffer size, and there is no use in
setting GstAudioRingBuffer size to something larger).

The elements will still try to open the devices in the lowest latency
mode possible if you set the "low-latency" property to "true".

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

6 years agowasapi: Cover more HRESULT error messages
Nirbheek Chauhan [Tue, 6 Feb 2018 18:26:41 +0000 (23:56 +0530)]
wasapi: Cover more HRESULT error messages

This requires using allocated strings, but it's the best option. For
instance, a call could fail because CoInitialize() wasn't called, or
because some other thing in the stack failed.

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

6 years agowasapi: Increase thread priority to reduce glitches
Nirbheek Chauhan [Tue, 6 Feb 2018 18:15:02 +0000 (23:45 +0530)]
wasapi: Increase thread priority to reduce glitches

This is particularly important when running in exclusive mode because
any delays will immediately cause glitching.

The MinGW version in Cerbero is too old, so we can only enable this when
building with MSVC or when people build GStreamer for MSYS2 or other
MinGW-based distributions.

To force-enable this code when building with MinGW, build with
CFLAGS="-DGST_FORCE_WIN_AVRT -lavrt".

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

6 years agowasapi: Allow opening devices in exclusive mode
Nirbheek Chauhan [Tue, 6 Feb 2018 18:10:49 +0000 (23:40 +0530)]
wasapi: Allow opening devices in exclusive mode

This provides much lower latency compared to opening in shared mode,
but it also means that the device cannot be opened by any other
application. The advantage is that the achievable latency is much
lower.

In shared mode, WASAPI's engine period is 10ms, and so that is the
lowest latency achievable.

In exclusive mode, the limit is the device period itself, which in my
testing with USB DACs, on-board PCI sound-cards, and HDMI cards is
between 2ms and 3.33ms.

We set our audioringbuffer limits to match the device, so the
achievable sink latency is 6-9ms. Further improvements can be made if
needed.

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

6 years agowasapi: Rename struct element for device name
Nirbheek Chauhan [Tue, 6 Feb 2018 18:07:19 +0000 (23:37 +0530)]
wasapi: Rename struct element for device name

We will use ->device for storing a pointer to the IMMDevice structure
which is needed for fetching the caps supported by devices in
exclusive mode.

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

6 years agowasapi: Fix indentation issues missed by the commit hook
Nirbheek Chauhan [Thu, 8 Feb 2018 06:02:32 +0000 (11:32 +0530)]
wasapi: Fix indentation issues missed by the commit hook

These were missed because the relevant commits were made on Windows
where `indent` wasn't installed.

6 years agovulkanupload: actually loop over possible uploaders
Matthew Waters [Thu, 8 Feb 2018 05:55:43 +0000 (16:55 +1100)]
vulkanupload: actually loop over possible uploaders

Fix some funky control that wasn't working

CID #1417219

6 years agowebrtc: Fix ffeb09e4 conditional
Matthew Waters [Thu, 8 Feb 2018 04:48:49 +0000 (15:48 +1100)]
webrtc: Fix ffeb09e4 conditional

Fixes ffeb09e4abe73d3b9e8909996816f0288e307e22

if (sscanf(...)) {  // != 0
  error;
}

Is not correct where != 0 indicates some kind of success.

Check instead that the correct number of elements were slurped.

6 years agowebrtc: change dead code to an assert
Matthew Waters [Thu, 8 Feb 2018 04:47:33 +0000 (15:47 +1100)]
webrtc: change dead code to an assert

CID #1429140

6 years agodtls: add meson definition for recently added test
Matthew Waters [Thu, 8 Feb 2018 04:29:13 +0000 (15:29 +1100)]
dtls: add meson definition for recently added test

6 years agowebrtc: bail on invalid rtpbin names
Matthew Waters [Thu, 8 Feb 2018 04:25:22 +0000 (15:25 +1100)]
webrtc: bail on invalid rtpbin names

If we fail parsing rtpbin pad names, someone has screwed up so critical
and return.

CID #1429142

6 years agoAdd new 'proxy' element to stream data between pipelines
Nirbheek Chauhan [Wed, 3 Feb 2016 18:38:57 +0000 (00:08 +0530)]
Add new 'proxy' element to stream data between pipelines

This keep-it-simple plugin is useful when you want to pipe arbitrary
data to a different pipeline within the same process. Some advantages
over appsink/appsrc, the inter elements, etc:

* Ease of use. Buffers, events, and caps are transmitted as-is without
  copying or serialization.
* Enables zerocopy (especially DMABUF) transparently without any
  special-casing.
* Enables usage with sinks or elements that are unreliable and may
  throw errors and need re-initialization, such as a network sink, a
  USB device sink (v4l2), etc.
* Transmits arbitrary data, not just audio/video/subs
* Can easily implement 1 producer pipeline -> N dynamic consumer
  pipelines within a single process when combined with the `tee`
  element.

All queries, events, buffers, and buffer lists are proxied. State
changes, clocks, and base times for the two pipelines are independent
since the upstream and downstreams continue to be different pipelines.

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

6 years agoqt: don't #include platform specific gstglcontext_*.h headers
Matthew Waters [Wed, 7 Feb 2018 09:15:00 +0000 (20:15 +1100)]
qt: don't #include platform specific gstglcontext_*.h headers

They aren't public headers

6 years agoopencv: fix OPENCV_PATH_NAME when using meson
Guillaume Desmottes [Tue, 6 Feb 2018 10:36:27 +0000 (11:36 +0100)]
opencv: fix OPENCV_PATH_NAME when using meson

Meson was checking for $prefix/OpenCV but was then defining
OPENCV_PATH_NAME with 'OpenCv' rather than 'OpenCV'.

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

6 years agoaom: Drop pointless cast from av1enc
Sean DuBois [Mon, 5 Feb 2018 08:53:20 +0000 (08:53 +0000)]
aom: Drop pointless cast from av1enc

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

6 years agoaom: Fix all definite leaks in av1enc
Sean DuBois [Fri, 2 Feb 2018 06:56:17 +0000 (06:56 +0000)]
aom: Fix all definite leaks in av1enc

Track if the encoder has been inited, and cleanup if needed. Also unref
input_state if has been set

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

6 years agoaom: Consistent naming between av1dec and av1enc
Sean DuBois [Fri, 2 Feb 2018 05:43:20 +0000 (05:43 +0000)]
aom: Consistent naming between av1dec and av1enc

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

6 years agoaom: Implement flush for av1dec
Sean DuBois [Wed, 31 Jan 2018 07:34:32 +0000 (07:34 +0000)]
aom: Implement flush for av1dec

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

6 years agoautotools: use -fno-strict-aliasing where supported
Tim-Philipp Müller [Sun, 4 Feb 2018 11:18:06 +0000 (12:18 +0100)]
autotools: use -fno-strict-aliasing where supported

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

6 years agotests: add a test for the dtls{enc,dec} elements
Matthew Waters [Mon, 5 Feb 2018 06:00:15 +0000 (17:00 +1100)]
tests: add a test for the dtls{enc,dec} elements

6 years agodtls: drop upstream segment and stream-start events
Matthew Waters [Mon, 5 Feb 2018 05:57:52 +0000 (16:57 +1100)]
dtls: drop upstream segment and stream-start events

Fixes tests with GstHarness

We will push our own from the srcpad task.

6 years agodtls: don't leak the system clock
Matthew Waters [Mon, 5 Feb 2018 06:41:25 +0000 (17:41 +1100)]
dtls: don't leak the system clock

Obtain and release it as needed.

6 years agodtlsenc: fix typo in is-client property description
Matthew Waters [Mon, 5 Feb 2018 05:16:31 +0000 (16:16 +1100)]
dtlsenc: fix typo in is-client property description

6 years agoadaptivedemux: reject segment seeks
Mathieu Duponchelle [Fri, 7 Jul 2017 15:32:33 +0000 (17:32 +0200)]
adaptivedemux: reject segment seeks

While #782140 can stay open for actually handling these,
the fact is currently adaptivedemux does not handle segment
seeks, and as such should not accept them.

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

6 years agowebrtcbin: an element that handles the transport aspects of webrtc connections
Matthew Waters [Tue, 31 Jan 2017 09:56:59 +0000 (20:56 +1100)]
webrtcbin: an element that handles the transport aspects of webrtc connections

SDP's are generated and consumed according to the W3C PeerConnection API
available from https://www.w3.org/TR/webrtc/

The SDP is either created initially from the connected
sink pads/attached transceivers as in the case of generating an offer or
intersected with the connected sink pads/attached transceivers as in
the case for creating an answer.  In both cases, the rtp payloaded streams
sent by the peer are exposed as separate src pads.

The implementation supports trickle ICE, RTCP muxing, reduced size RTCP.

With contributions from:
Nirbheek Chauhan <nirbheek@centricular.com>
Mathieu Duponchelle <mathieu@centricular.com>
Edward Hervey <edward@centricular.com>

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

6 years agodtls: remove reliance on a default GMainContext/Loop
Matthew Waters [Tue, 16 Jan 2018 09:53:15 +0000 (20:53 +1100)]
dtls: remove reliance on a default GMainContext/Loop

By removing the indirection to the main loop completely when receiving
the peer certificate. For reference, the on-decoder-key signal does not
have a redirection.

6 years agonetsim: fix format errors for different platforms
Omar Akkila [Wed, 31 Jan 2018 18:21:58 +0000 (13:21 -0500)]
netsim: fix format errors for different platforms

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

6 years agoconfigure: fix opengl api conditional
Tim-Philipp Müller [Wed, 31 Jan 2018 16:10:24 +0000 (16:10 +0000)]
configure: fix opengl api conditional

Fixes build of openglmixers plugin due to mismatch between
build system conditional USE_OPENGL and define in gstglconfig.h

6 years agoconfigure: fix OpenGL API detection
Tim-Philipp Müller [Wed, 31 Jan 2018 13:03:28 +0000 (13:03 +0000)]
configure: fix OpenGL API detection

And don't build gl mosaic element unconditionally.

6 years agoautotools: fix build if OpenGL support is not available
Tim-Philipp Müller [Wed, 31 Jan 2018 13:02:07 +0000 (13:02 +0000)]
autotools: fix build if OpenGL support is not available

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

6 years agogdpdepay: don't use allocator if it has custom alloc
Víctor Manuel Jáquez Leal [Mon, 29 Jan 2018 11:53:51 +0000 (12:53 +0100)]
gdpdepay: don't use allocator if it has custom alloc

gdpdepay element uses the decide_allocation to fetch the downstream
allocator. Nonetheless it is possible that allocate uses a custom
alloc function, which is not usable by gdpdepay, crashing later the
application when the allocater buffer is NULL.

This patch checks for the allocator flags and reset it if the
allocator has a custom alloc function.

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

6 years agogdpdepay: don't allocation query if caps aren't fixed
Víctor Manuel Jáquez Leal [Mon, 29 Jan 2018 11:50:36 +0000 (12:50 +0100)]
gdpdepay: don't allocation query if caps aren't fixed

When querying downstream for allocation, and the source caps hasn't
set its caps, using ANY by default, it raises a critical message in
console:

CRITICAL **: gst_video_info_from_caps: assertion 'gst_caps_is_fixed (caps)' failed

This patch bails out decide_allocation() if the caps aren't fixed.

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

6 years agowasapi: Correctly set ringbuffer segsize/segtotal
Nirbheek Chauhan [Tue, 30 Jan 2018 22:21:47 +0000 (03:51 +0530)]
wasapi: Correctly set ringbuffer segsize/segtotal

This will set the actual-latency-time and actual-buffer-time of the sink
and source.

We completely ignore the latency-time/buffer-time values set
on the element because WASAPI is happiest when it is reading/writing at
the default period. Improving this will likely require the use of the
IAudioClient3 interfaces which are not available in MinGW yet.

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

6 years agowasapi: Implement a device provider for probing
Nirbheek Chauhan [Wed, 24 Jan 2018 19:21:22 +0000 (00:51 +0530)]
wasapi: Implement a device provider for probing

Currently only does probing and does not handle messages from
endpoints/devices. In the future we want to do proper monitoring which
is well-supported in WASAPI.

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

6 years agowasapi: Implement support for >2 channels
Nirbheek Chauhan [Wed, 24 Jan 2018 02:50:38 +0000 (08:20 +0530)]
wasapi: Implement support for >2 channels

We need to parse the WAVEFORMATEXTENSIBLE structure, figure out what
positions the channels have (if they are positional), and reorder them
as necessary.

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

6 years agomeson: use -fno-strict-aliasing where supported
Tim-Philipp Müller [Tue, 30 Jan 2018 20:35:07 +0000 (20:35 +0000)]
meson: use -fno-strict-aliasing where supported

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

6 years agocodecparser: vp8: Fix range decoder init
Sreerenj Balachandran [Tue, 30 Jan 2018 20:34:58 +0000 (11:34 -0900)]
codecparser: vp8: Fix range decoder init

According to the vp8 spec, the first partition (size can be derived from
the frame header) should have all compressed header information and we
implemented gst codecparser based on that. But it doesn't seem to be the
case with some of the streams (#792773) and libvpx
works fine because it uses the whole frame size (not the first partition
size) to initialize the bool decoder.

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

6 years agokmssink: Make render rectangle property controllable
Nicolas Dufresne [Mon, 22 Jan 2018 21:21:27 +0000 (16:21 -0500)]
kmssink: Make render rectangle property controllable

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

6 years agoglvideomixer: fix vertex_buffer leak
Vincent Penquerc'h [Mon, 3 Oct 2016 12:11:07 +0000 (13:11 +0100)]
glvideomixer: fix vertex_buffer leak

We call the base class first as this will remove the pad from
the aggregator, thus stopping misc callbacks from being called,
one of which (process_textures) will recreate the vertex_buffer
if it is destroyed

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

6 years agosrtp: Support libsrtp2
Jan Alexander Steffens (heftig) [Fri, 26 Jan 2018 15:25:33 +0000 (16:25 +0100)]
srtp: Support libsrtp2

For libsrtp 1, add defines that translate the new namespaced identifiers
to the old unnamespaced ones. Also move the code for setting and getting
a stream's ROC into two compat functions that match libsrtp2's API.

It seems that libsrtp2 properly supports changing the ROC without having
to touch the sequence numbers afterwards, given that srtp_set_stream_roc
sets a pending_roc field, so the entire roc_changed dance should not be
needed anymore. The compat functions for libsrtp 1 just contain our
preexisting hacks, however, so it's still needed there.

libsrtp2 has no means of discovering the streams in the session, so to
create the stats structure we need to iterate over our own set of SSRCs.
For this we also need to re-add the previously removed ssrcs_set to the
encoder.

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

6 years agortmpsink: don't crash if there's streamheader field in the caps
Tim-Philipp Müller [Sun, 28 Jan 2018 14:28:33 +0000 (14:28 +0000)]
rtmpsink: don't crash if there's streamheader field in the caps

Fix regression when used in combination with new flvmux which was
ported to GstAggregator, and which sends plain video/x-flv caps
before sending full caps that include streamheaders.

6 years agoahc: enable autofocus callback
Justin Kim [Wed, 13 Dec 2017 04:43:30 +0000 (13:43 +0900)]
ahc: enable autofocus callback

It should be enabled to set autofocus properly, but
it seems to be commented out mistakenly from the first commit.

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

6 years agoaom: Add direct casts for GstAV1Enc and GstAV1Dec
Sean DuBois [Fri, 26 Jan 2018 06:01:35 +0000 (06:01 +0000)]
aom: Add direct casts for GstAV1Enc and GstAV1Dec

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

6 years agoaom: Deadline was removed from AV1
Sean DuBois [Fri, 26 Jan 2018 05:20:55 +0000 (05:20 +0000)]
aom: Deadline was removed from AV1

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

6 years agoaom: Fix leak in av1dec
Sean DuBois [Sun, 31 Dec 2017 07:47:47 +0000 (07:47 +0000)]
aom: Fix leak in av1dec

AOM Decoder wasn't being destroyed in stop

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

6 years agoaom: Put av1enc config debugging under gst_av1_enc_debug namespace
Sean DuBois [Sun, 14 Jan 2018 22:22:07 +0000 (22:22 +0000)]
aom: Put av1enc config debugging under gst_av1_enc_debug namespace

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

6 years agodirectsoundsrc: Add missing \ in multi-line #define
Sebastian Dröge [Thu, 25 Jan 2018 19:23:09 +0000 (21:23 +0200)]
directsoundsrc: Add missing \ in multi-line #define

6 years agodirectsoundsrc: Add support for a DeviceProvider
Sebastian Dröge [Mon, 22 Jan 2018 12:06:31 +0000 (14:06 +0200)]
directsoundsrc: Add support for a DeviceProvider

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

6 years agowasapi: Fix some leaks, bugs, and compiler warnings
Nirbheek Chauhan [Wed, 24 Jan 2018 02:50:13 +0000 (08:20 +0530)]
wasapi: Fix some leaks, bugs, and compiler warnings

Also improve logging.

6 years agoh26{4,5}parse: expose chroma format and bit depth in caps
Guillaume Desmottes [Mon, 6 Nov 2017 11:39:32 +0000 (12:39 +0100)]
h26{4,5}parse: expose chroma format and bit depth in caps

This information could be used for example to pick a decoder supporting
a specific chroma and/or bit depth, like 4:2:2 10 bits.
It can also be used to inform earlier decoder about the format it is
about to decode.

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

6 years agonvenc: add "gop-size" property
Tim-Philipp Müller [Sun, 16 Apr 2017 14:08:27 +0000 (16:08 +0200)]
nvenc: add "gop-size" property

This also changes the default gop size from 30 to 75 frames.

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

6 years agonvenc: mark properties that can be changed at runtime accordingly
Tim-Philipp Müller [Wed, 24 Jan 2018 10:21:48 +0000 (10:21 +0000)]
nvenc: mark properties that can be changed at runtime accordingly

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

6 years agonvenc: Add support for dynamic bitrate/preset reconfiguration
Ole André Vadla Ravnås [Mon, 17 Apr 2017 11:58:53 +0000 (13:58 +0200)]
nvenc: Add support for dynamic bitrate/preset reconfiguration

Useful for dynamically updating bitrate in live scenarios.

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

6 years agonvenc: Add support for I420
Ole André Vadla Ravnås [Fri, 14 Apr 2017 13:30:44 +0000 (15:30 +0200)]
nvenc: Add support for I420

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

6 years agonetsim: fix misleading packet delay log
Jun Xie [Thu, 21 Dec 2017 10:33:49 +0000 (18:33 +0800)]
netsim: fix misleading packet delay log

packet delay time shall be calculated by ready_time minus current time

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

6 years agovideoaggregatorpad: implement skip_buffer
Mathieu Duponchelle [Thu, 28 Dec 2017 11:15:21 +0000 (12:15 +0100)]
videoaggregatorpad: implement skip_buffer

Skip buffers from sources with a framerate higher than the output
framerate.

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

6 years agodecklink: don't crash if there are no decklink devices
Tim-Philipp Müller [Tue, 23 Jan 2018 14:49:51 +0000 (14:49 +0000)]
decklink: don't crash if there are no decklink devices

Fixes generic/states check.

6 years agodecklink: don't limit number of devices to 16
Tim-Philipp Müller [Tue, 23 Jan 2018 10:27:57 +0000 (10:27 +0000)]
decklink: don't limit number of devices to 16

There is no fixed limitation for the number of devices on the
decklink API side according to BlackMagic. Many PC motherboards
are able support 6 decklink cards each with up to 8 inputs so
a limit of 16 might well be too low.

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

6 years agoUpdate for renamed aggregator pad API
Tim-Philipp Müller [Tue, 23 Jan 2018 09:01:00 +0000 (09:01 +0000)]
Update for renamed aggregator pad API

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

6 years agomeosn: curl: also check for and use libssh2 if available
Tim-Philipp Müller [Mon, 22 Jan 2018 18:53:22 +0000 (18:53 +0000)]
meosn: curl: also check for and use libssh2 if available

6 years agodirectsoundsrc: Don't dynamically load one DirectSound symbol at runtime
Sebastian Dröge [Mon, 22 Jan 2018 11:44:29 +0000 (13:44 +0200)]
directsoundsrc: Don't dynamically load one DirectSound symbol at runtime

Just link statically to it, like for all other DirectSound symbols.

6 years agowasapi: Rewrite most of the code to make it work
Nirbheek Chauhan [Sun, 21 Jan 2018 03:32:30 +0000 (09:02 +0530)]
wasapi: Rewrite most of the code to make it work

Both the source and the sink elements were broken in a number of ways:

* prepare() was assuming that the format was always S16LE 2ch 44.1KHz.
  We now probe the preferred format with GetMixFormat().
* Device initialization was done with the wrong buffer size
  (buffer_time is in microseconds, not nanoseconds).
* sink_write() and src_read() were just plain wrong and would never
  write or read anything useful.
* Some functions in prepare() were always returning FALSE which meant
  trying to use the elements would *always* fail.
* get_caps() and delay() were not implemented at all.

TODO: support for >2 channels
TODO: pro-audio low-latency
TODO: SPDIF and other encoded passthroughs

Three new properties are now implemented: role, mute, and device.

* 'role' designates the stream role of the initialized device, see:
   https://msdn.microsoft.com/en-us/library/windows/desktop/dd370842(v=vs.85).aspx
* 'device' is a system-wide GUIDesque string for a specific device.
* 'mute' is a sink property and simply mutes it.

On my Windows 8.1 system, the lowest latency that works is:

  wasapisrc buffer-time=20000
  wasapisink buffer-time=10000

aka, 20ms and 10ms respectively. These values are close to the lowest
possible with the IAudioClient interface. Further improvements require
porting to IAudioClient2 or IAudioClient3.

https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/low-latency-audio

6 years agotests: camerabin: skip checks if we don't have encoders for the default format
Tim-Philipp Müller [Sat, 20 Jan 2018 15:49:35 +0000 (15:49 +0000)]
tests: camerabin: skip checks if we don't have encoders for the default format

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

6 years agotests: ipcpipeline: fix struct initialisation warnings with clang
Tim-Philipp Müller [Wed, 17 Jan 2018 12:06:28 +0000 (12:06 +0000)]
tests: ipcpipeline: fix struct initialisation warnings with clang

Use init macros to avoid gst-indent making a mess of it.

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

6 years agotests: remove test that's never been ported to 1.x
Tim-Philipp Müller [Tue, 16 Jan 2018 11:35:22 +0000 (11:35 +0000)]
tests: remove test that's never been ported to 1.x

6 years agohlsdemux: fix memory leak while updating master playlist
Jun Xie [Wed, 3 Jan 2018 02:26:49 +0000 (10:26 +0800)]
hlsdemux: fix memory leak while updating master playlist

new_master needs to be freed if current playlist is not a master playlist

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

6 years agolv2: fix inverted boolean properties
Tim-Philipp Müller [Mon, 15 Jan 2018 20:01:06 +0000 (20:01 +0000)]
lv2: fix inverted boolean properties

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

6 years agocheck: Update gitignore
Edward Hervey [Thu, 11 Jan 2018 10:49:06 +0000 (11:49 +0100)]
check: Update gitignore

6 years agomxfdemux: Remove useless check
Edward Hervey [Thu, 11 Jan 2018 10:41:33 +0000 (11:41 +0100)]
mxfdemux: Remove useless check

Any modification of ret in that "while (ret == GST_FLOW_OK)" loop will
break (and cause it to stop the iteration).

CID #1427095