platform/upstream/gst-plugins-good.git
7 years agotaglib: use -fvisibility=hidden with this C++ plugin in meson too
Tim-Philipp Müller [Thu, 10 Aug 2017 13:44:35 +0000 (14:44 +0100)]
taglib: use -fvisibility=hidden with this C++ plugin in meson too

Also pass args as cpp_args.

7 years agoqtdemux: allow larger files
Michael Olbrich [Wed, 22 Mar 2017 14:25:17 +0000 (15:25 +0100)]
qtdemux: allow larger files

For really long files such as contiguous recordings of a whole day, the
50MB limit is not sufficient.

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

7 years agoqtdemux: Fix offsets for reading lpcm specific fields
Sebastian Dröge [Thu, 10 Aug 2017 13:08:06 +0000 (16:08 +0300)]
qtdemux: Fix offsets for reading lpcm specific fields

We were reading at the completely wrong positions, 16 bytes later in the
data.

Also add support for high-aligned samples.

7 years agomeson: don't export symbols by default
Tim-Philipp Müller [Thu, 10 Aug 2017 13:01:09 +0000 (14:01 +0100)]
meson: don't export symbols by default

Only plugin entry points should be exported.

Currently plugins might export more symbols with
the meson build, as we don't have the exports
regexp there that we pass to libtool.

7 years agowavparse: Fix memory leak in wavparse element
Deepak Srivastava [Thu, 10 Aug 2017 09:44:31 +0000 (15:14 +0530)]
wavparse: Fix memory leak in wavparse element

Fixing of leaking the text field of the GstWavParseNote and
GstWavParseLabl structure.

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

7 years agov4l2bufferpool: Don't mark jpeg frames as deltas
Cyril Lashkevich [Tue, 8 Aug 2017 10:37:12 +0000 (10:37 +0000)]
v4l2bufferpool: Don't mark jpeg frames as deltas

JPEG formats are encoded, but they never have keyframe flag. But in
fact they are keyframes

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

7 years agoosxvideo: rename library according to the plugin name
Philippe Normand [Sun, 6 Aug 2017 12:06:45 +0000 (13:06 +0100)]
osxvideo: rename library according to the plugin name

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

7 years agov4l2bufferpool: Don't drop buffer ref on qbuf
Nicolas Dufresne [Wed, 2 Aug 2017 21:16:21 +0000 (17:16 -0400)]
v4l2bufferpool: Don't drop buffer ref on qbuf

This function no longer take ownership of the buffer.

CID 1414800

7 years agov4l2: Enable VP9 format
Nicolas Dufresne [Wed, 2 Aug 2017 21:13:55 +0000 (17:13 -0400)]
v4l2: Enable VP9 format

This was missing, preventing the encoder and decoder to work
properly. This also adds support for camera that would produce
VP9 (if that exists).

7 years agov4l2: Remove spurious CATEGORY_EXTERN
Nicolas Dufresne [Wed, 2 Aug 2017 16:28:38 +0000 (12:28 -0400)]
v4l2: Remove spurious CATEGORY_EXTERN

These have been copy pasted all over the place and are not used anymore.
All object have it's own category now. This fixes build warning since
the VP9 decoder had vp8 category declared.

7 years agov4l2videoenc: Move the profile/level negotation in the base class
Nicolas Dufresne [Wed, 2 Aug 2017 14:39:46 +0000 (10:39 -0400)]
v4l2videoenc: Move the profile/level negotation in the base class

This removes duplicated code across different codec.

7 years agov4l2videoenc: Turn gst_v4l2_is_video_enc into a helper
Nicolas Dufresne [Wed, 2 Aug 2017 13:36:08 +0000 (09:36 -0400)]
v4l2videoenc: Turn gst_v4l2_is_video_enc into a helper

This reduces the amount of code needed in each codec class.

7 years agov4l2: Add VP8/9 encoder support
Nicolas Dufresne [Tue, 1 Aug 2017 20:01:11 +0000 (16:01 -0400)]
v4l2: Add VP8/9 encoder support

7 years agov4l2object: Use mmap64 to match libv4l2 signature
Nicolas Dufresne [Mon, 31 Jul 2017 15:56:05 +0000 (11:56 -0400)]
v4l2object: Use mmap64 to match libv4l2 signature

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

7 years agov4l2bufferpool: Copy flags and timestamp when importing
Nicolas Dufresne [Tue, 1 Aug 2017 13:22:43 +0000 (09:22 -0400)]
v4l2bufferpool: Copy flags and timestamp when importing

Whenever we import from downstream pool (userptr or dmabuf-import), we
should copy over the flags and timestamp, otherwise downstream will not
get proper synchronization or will not be able to notice frames that has
corruption in it.

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

7 years agov4l2: Add H263 Encoder support
Nicolas Dufresne [Mon, 31 Jul 2017 20:09:30 +0000 (16:09 -0400)]
v4l2: Add H263 Encoder support

7 years agov4l2: Add missing no-inst header
Nicolas Dufresne [Thu, 27 Jul 2017 17:51:25 +0000 (13:51 -0400)]
v4l2: Add missing no-inst header

7 years agov4l2: Add interface for MPEG4 encoding
Nicolas Dufresne [Wed, 26 Jul 2017 19:18:01 +0000 (15:18 -0400)]
v4l2: Add interface for MPEG4 encoding

7 years agov4l2: Ignore register issue and keep probing
Nicolas Dufresne [Thu, 27 Jul 2017 14:51:07 +0000 (10:51 -0400)]
v4l2: Ignore register issue and keep probing

Don't stop registering the other dynamic plugins if one registration
fails.

7 years agomulawdec: Unmap input buffer if failing to map the output buffer
Sebastian Dröge [Thu, 27 Jul 2017 11:21:34 +0000 (14:21 +0300)]
mulawdec: Unmap input buffer if failing to map the output buffer

7 years agoalawdec: Fix Memory leak in error case
Satya Prakash Gupta [Thu, 27 Jul 2017 03:52:25 +0000 (09:22 +0530)]
alawdec: Fix Memory leak in error case

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

7 years agov4l2: Update external files with latest
Nicolas Dufresne [Thu, 27 Jul 2017 00:36:15 +0000 (20:36 -0400)]
v4l2: Update external files with latest

This is copied from the linux kernel with only some include changes so
it works outside the kernel headers.

7 years agomatroskamux: For audio tracks, take the default duration from the first buffer
Sebastian Dröge [Tue, 18 Jul 2017 07:41:40 +0000 (10:41 +0300)]
matroskamux: For audio tracks, take the default duration from the first buffer

... if we don't have any better idea from the caps. This allows writing
SimpleBlocks for a majority of audio streams where the duration of
frames is usually fixed. And as a side effect, allows VLC to play
streams with Opus as it only works with SimpleBlocks currently:
  https://trac.videolan.org/vlc/ticket/18545

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

7 years agov4l2: Fix compilation without libv4l2
Nicolas Dufresne [Mon, 24 Jul 2017 20:45:40 +0000 (16:45 -0400)]
v4l2: Fix compilation without libv4l2

7 years agov4l2: Keep ref to element in allocator/pool
Nicolas Dufresne [Mon, 24 Jul 2017 20:13:56 +0000 (16:13 -0400)]
v4l2: Keep ref to element in allocator/pool

Removes the FIXME/Question in the buffer pool and add a ref to the
element in the GstAllocator too. This ref is strictly required to keep
the GstV4l2Object structure around.

7 years agov4l2object: Removed unused members
Nicolas Dufresne [Mon, 24 Jul 2017 18:27:05 +0000 (14:27 -0400)]
v4l2object: Removed unused members

7 years agov4l2: Add run-time environment to enable libv4l2
Nicolas Dufresne [Mon, 24 Jul 2017 18:19:02 +0000 (14:19 -0400)]
v4l2: Add run-time environment to enable libv4l2

The library has started preventing a lot of interesting use cases,
like CREATE_BUFS, DMABuf, usage of TRY_FMT. As the libv4l2 is totally
inactive and not maintained, we decided to disable it. As a convenience
we added a run-time environment that let you enable it for testing.

  GST_V4L2_USE_LIBV4L2=1

This of course only works if you have enabled libv4l2 at build time.

7 years agojpegenc: declare quality property changeable in PLAYING state
Nicola Murino [Mon, 17 Jul 2017 08:04:02 +0000 (10:04 +0200)]
jpegenc: declare quality property changeable in PLAYING state

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

7 years agov4l2object: Fix colorimetry validation
Nicolas Dufresne [Sat, 22 Jul 2017 03:34:59 +0000 (23:34 -0400)]
v4l2object: Fix colorimetry validation

While not documented, gst_video_colorimetry_matches() only accepts well
known names. Looking at the code and unit test, this seems to be on
purpose, so fixing by parsing the string and compating the colorimetry
structures.

7 years agov4l2encoder: Fix negotiation error handling
Nicolas Dufresne [Fri, 21 Jul 2017 19:40:24 +0000 (15:40 -0400)]
v4l2encoder: Fix negotiation error handling

The subclass negotiated function will call set_format, if that fails the
pool will not be created. We ended up with an assertion.

GStreamer-CRITICAL **: gst_buffer_pool_set_active: assertion 'GST_IS_BUFFER_POOL (pool)' failed

7 years agov4l2src: Speedup camera startup by skipping try_fmt
Nicolas Dufresne [Thu, 20 Jul 2017 02:25:49 +0000 (22:25 -0400)]
v4l2src: Speedup camera startup by skipping try_fmt

In this commit, we enabled skip_try_fmt_probes quirk in order to speed
up the start which is known to be disastrously slow with certain USB
cameras.

This has the side effect that we needed to rewrite the entire
negotiation process in a way that we iterate over the possible caps
until we find one that works.

The new negotiation method consist of extracting a preferred structure
from the peer caps and using this to fixate and sort the caps. To
reflect the old behaviour, we sort all resolution strictly bigger
to the preferred one with the closes one first. The rest is appended,
keeping the same order. We then normalize the caps in case there was
some list of interlace-mode or colorimetry left. We finally iterate
over all fixed caps and try it. 99% of the time, the first or the
second one should work, whit the result of a single S_FMT being issues.

From there, it will be relatively easy to introduce new negotiation
algorithm. The current algorithm is made for optimal image quality
with a scaling sink that sets it's window resolution as preference.
This the case if for:

  v4l2src ! videoconvert ! videoscale ! ximagesink

Other strategy would be needed to optimize for non-scaling sink like
ximagesink or kmssink when the driver does not scale.

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

7 years agov4l2object: Introduce quirk to skip slow probes
Nicolas Dufresne [Thu, 20 Jul 2017 02:09:38 +0000 (22:09 -0400)]
v4l2object: Introduce quirk to skip slow probes

skip_try_fmt_probes quirk is set, V4L2 object will not probe for
interlace-mode and colorimetry to avoid relying on try_fmt. This quirk
will be used by v4l2src to avoid desastrous startup time with slow
USB webcams.

When this quirk is enabled, caller will have to iterate over the
negotiated caps as it may contains unsupported formats. If the peer
didn't choose a specific interlace-mode, or colorimetry, the value
chosen by the driver is set into the caps. For this reason, when this
mode is enabled, gst_v4l2_object_set_format() will require writable
caps.

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

7 years agov4l2object: always set the GstV4l2Error on error
Nicolas Dufresne [Thu, 20 Jul 2017 02:07:32 +0000 (22:07 -0400)]
v4l2object: always set the GstV4l2Error on error

Some of the error case were conditional to using try_fmt or not.
This is slightly unexpected, always set the error so the caller
can decide.

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

7 years agov4l2object: Minor style fix and useful trace
Nicolas Dufresne [Thu, 20 Jul 2017 02:05:49 +0000 (22:05 -0400)]
v4l2object: Minor style fix and useful trace

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

7 years agov4l2object: Fix try/s_fmt errors
Nicolas Dufresne [Thu, 20 Jul 2017 02:03:29 +0000 (22:03 -0400)]
v4l2object: Fix try/s_fmt errors

According to the spec,TRY_FMT cannot return EBUSY, though it can
return EINVAL if it was not possible to update the format to
something supported.

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

7 years agov4l2object: Validate colorimetry in S/TRY_FMT
Nicolas Dufresne [Thu, 20 Jul 2017 02:01:26 +0000 (22:01 -0400)]
v4l2object: Validate colorimetry in S/TRY_FMT

This is in preparation for removing slow TRY_FMT probes for
colorimetry. As we won't have tried that colorimetry we cannot
assume the driver will accept it.

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

7 years agov4l2object: Validate field in S/TRY_FMT
Nicolas Dufresne [Thu, 20 Jul 2017 01:56:14 +0000 (21:56 -0400)]
v4l2object: Validate field in S/TRY_FMT

This is in preparation from removing the slow TRY_FMT probes for
interlacing. As we won't have tried that interlace-mode already
we need to validate that the driver isn't refusing it.

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

7 years agotests: icles: fix build
Tim-Philipp Müller [Fri, 21 Jul 2017 18:01:19 +0000 (19:01 +0100)]
tests: icles: fix build

Can't do additions/subtractions on void* pointers.

7 years agotests:icles: Fix previous patch by implementing our memmem
Thibault Saunier [Fri, 21 Jul 2017 15:04:17 +0000 (11:04 -0400)]
tests:icles: Fix previous patch by implementing our memmem

Using the string version of it will fail on '\0'.

7 years agotests:icles: Do not use memmem GNU extension function
Thibault Saunier [Fri, 21 Jul 2017 14:17:00 +0000 (10:17 -0400)]
tests:icles: Do not use memmem GNU extension function

As it is not avalaible on windows/msvc and we can use pure GLib for that

7 years agodirectsound: Fix .c file name in Makefile
Nicolas Dufresne [Thu, 20 Jul 2017 21:21:05 +0000 (17:21 -0400)]
directsound: Fix .c file name in Makefile

This was broken by accident, bad search and replace.

7 years agowaveform: Fix DLL name to match plugin name
Nicolas Dufresne [Thu, 20 Jul 2017 15:02:10 +0000 (11:02 -0400)]
waveform: Fix DLL name to match plugin name

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

7 years agodirectsound: Fix DLL name to match plugin name
Nicolas Dufresne [Thu, 20 Jul 2017 14:38:32 +0000 (10:38 -0400)]
directsound: Fix DLL name to match plugin name

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

7 years agoqtdemux: preferably send open-ended segment rather than repeated segment events
Mark Nauwelaerts [Wed, 19 Jul 2017 10:38:03 +0000 (12:38 +0200)]
qtdemux: preferably send open-ended segment rather than repeated segment events

7 years agoqtdemux: fix seeking in fragmented file without mfra random access info
Mark Nauwelaerts [Wed, 19 Jul 2017 09:27:32 +0000 (11:27 +0200)]
qtdemux: fix seeking in fragmented file without mfra random access info

... which no longer worked due to unconditionally clearing sample info and
ending up in inconsistent state.  Let's tread a bit more carefully and also
allow for the old seek handling that resorts to scanning if no mfra info
is available.

7 years agov4l2videodec: add some useful debug messages
Nicolas Dechesne [Wed, 19 Jul 2017 08:42:46 +0000 (10:42 +0200)]
v4l2videodec: add some useful debug messages

Add a couple of useful debug traces , they happened to be useful to
debug/investigate a 4K video playback issue with v4l2, so let's make these
changes more permanent.

Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
https://bugzilla.gnome.org/show_bug.cgi?id=785109

7 years agov4l2: Fix 4K colorimetry
Nicolas Dufresne [Tue, 18 Jul 2017 15:28:37 +0000 (11:28 -0400)]
v4l2: Fix 4K colorimetry

Since 1.6, the transfer function for BT2020 has been changed from BT709
to BT2020_12. It's the same function, but with more precision. As a side
effect, the V4L2 colorpsace didn't match GStreamer colorspace. When
GStreamer ended up making a guess, it would not match anything supported
by V4L2 anymore. This this by using BT2020_12 for BT2020 colorspace and
BT2020 transfer function in replacement of BT709 whenever a 4K
resolution is detected.

7 years agov4l2object: Only check CROPCAP for par once
Nicolas Dufresne [Fri, 14 Jul 2017 20:21:38 +0000 (16:21 -0400)]
v4l2object: Only check CROPCAP for par once

The pixel aspect ratio is documented to not change unless the TV
Standard is changed. So this mean that this will be uniform across all
possible format and resolutions.

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

7 years agoRevert "matroskamux: adjust unit test to modified behaviour"
Sebastian Dröge [Tue, 18 Jul 2017 07:01:13 +0000 (10:01 +0300)]
Revert "matroskamux: adjust unit test to modified behaviour"

This reverts commit 8fe478c8a7746cd2c63f20d23e97e26e1a0e6192.

We're back to previous behaviour

7 years agomatroskamux: add properties to control cluster duration
Nicola Murino [Mon, 17 Jul 2017 22:26:11 +0000 (00:26 +0200)]
matroskamux: add properties to control cluster duration

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

7 years agov4l2: UVC driver is named uvcvideo these days
Nicolas Dufresne [Tue, 18 Jul 2017 00:47:26 +0000 (20:47 -0400)]
v4l2: UVC driver is named uvcvideo these days

The quirk to avoid probing interlacing didn't work anymore as the driver
is now name uvcvideo. This should slightly speed up camera startup.

7 years agov4l2object: Remove unused defines
Nicolas Dufresne [Thu, 13 Jul 2017 01:02:39 +0000 (21:02 -0400)]
v4l2object: Remove unused defines

7 years agov4l2: Make gst_v4l2_get_capabilities static
Nicolas Dufresne [Thu, 13 Jul 2017 00:53:51 +0000 (20:53 -0400)]
v4l2: Make gst_v4l2_get_capabilities static

It's not used outside of v4l2_calls.c

7 years agov4l2: Merge v4l2_calls.h into gstv4l2object.h
Nicolas Dufresne [Thu, 13 Jul 2017 00:49:47 +0000 (20:49 -0400)]
v4l2: Merge v4l2_calls.h into gstv4l2object.h

First step of a larger cleanup, all function from v4l2_calls are in fact
methods on GstV4l2Object. This split makes the code really confusing.
This also remove no longer unused macros.

7 years agomeson: po: use glib preset and read language list from LINGUAS
Tim-Philipp Müller [Sat, 15 Jul 2017 11:48:19 +0000 (12:48 +0100)]
meson: po: use glib preset and read language list from LINGUAS

Supported since meson 0.37, so we can use it now.

7 years agov4l2object: Trace unknown fourcc as text
Nicolas Dufresne [Fri, 14 Jul 2017 16:12:56 +0000 (12:12 -0400)]
v4l2object: Trace unknown fourcc as text

This makes it easier to find out what is not supported.

7 years agov4l2: Don't probe for unneeded format
Nicolas Dufresne [Fri, 14 Jul 2017 15:54:57 +0000 (11:54 -0400)]
v4l2: Don't probe for unneeded format

For v4l2videodec/enc, we generate elements per formats, and in
this case we can speed up the start up by only probing the format
we care about.

7 years agov4l2videodec: Implement stable element names
Nicolas Dufresne [Thu, 13 Jul 2017 16:32:00 +0000 (12:32 -0400)]
v4l2videodec: Implement stable element names

Before that, each m2m node would be wrapped as a single, multi-format
decoder element. As a unique name was needed, we where using the device
name, which changes between re-boots. This led to unpredictable element
names. In this patch, we generate an element per codec, using
v4l2<codec>dec name. If there is multiple decoder for the same format,
the following elements will be named v4l2<node><codec>dec.

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

7 years agosouphttpsrc: Post an element message with the HTTP headers on the bus too
Sebastian Dröge [Thu, 13 Jul 2017 11:50:44 +0000 (14:50 +0300)]
souphttpsrc: Post an element message with the HTTP headers on the bus too

Instead of just sending a sticky event with them downstream. This allows
getting the HTTP headers easily in the application, and especially also
on errors.

7 years agoqtdemux: Fix parsing of RLE depth
Sebastian Dröge [Thu, 13 Jul 2017 09:47:02 +0000 (12:47 +0300)]
qtdemux: Fix parsing of RLE depth

Regression introduced by 86b427dc70562f891a551ffc9f96cefe1cafcddd

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

7 years agoshout2: use gint and guint in place of int and uint
Philippe Renon [Mon, 10 Jul 2017 16:57:11 +0000 (18:57 +0200)]
shout2: use gint and guint in place of int and uint

this fixes a compilation error with gcc 7.1.0 on mys2 where uint is not defined

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

7 years agortpgsmpay: fix accidental garbage data before actual payload
Yasushi SHOJI [Fri, 7 Jul 2017 12:15:57 +0000 (21:15 +0900)]
rtpgsmpay: fix accidental garbage data before actual payload

Do not allocate payload size outbuf if appending payload buffer.

The commit 137672ff1824948bda4b1b1967de8c24a0055b67 attached payload
to the output buffer but forgot to remove payload allocation.  That
effectively doubled payload size and add zero'ed or random bytes.

Makes the following pipeline work again:

gst-launch-1.0 -v audiotestsrc wave=2 ! gsmenc ! rtpgsmpay ! rtpgsmdepay ! gsmdec ! autoaudiosink

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

7 years agomatroskademux: segment seek position is expressed in buffer time
Mark Nauwelaerts [Sat, 1 Jul 2017 16:57:47 +0000 (18:57 +0200)]
matroskademux: segment seek position is expressed in buffer time

... so it need not be corrected again for stream start

7 years agoavidemux: provide average bitrate tag
Mark Nauwelaerts [Sun, 9 Jul 2017 08:54:27 +0000 (10:54 +0200)]
avidemux: provide average bitrate tag

7 years agoexamples: v4l2: fix wrong initializations brought by 4e8ad583022671c5
Reynaldo H. Verdejo Pinochet [Sat, 8 Jul 2017 06:49:44 +0000 (23:49 -0700)]
examples: v4l2: fix wrong initializations brought by 4e8ad583022671c5

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

7 years agoexamples: v4l2: add example for v4l2src renegotiation
Nicolas Dufresne [Fri, 27 Feb 2015 16:03:42 +0000 (13:03 -0300)]
examples: v4l2: add example for v4l2src renegotiation

Based on work from Thiago Santos <thiagoss@osg.samsung.com>

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

7 years agomeson: find python3 via python3 module
Tim-Philipp Müller [Fri, 7 Jul 2017 10:58:10 +0000 (11:58 +0100)]
meson: find python3 via python3 module

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

7 years agotests: rtpbin: fix build in uninstalled setup
Tim-Philipp Müller [Wed, 5 Jul 2017 13:44:41 +0000 (14:44 +0100)]
tests: rtpbin: fix build in uninstalled setup

7 years agortpsession: Send EOS if all internal sources sent bye
Olivier Crête [Tue, 4 Jul 2017 21:42:25 +0000 (17:42 -0400)]
rtpsession: Send EOS if all internal sources sent bye

The ones which are not internal should not matter, and we should
wait for all sources to have sent their BYEs.

And add unit test

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

7 years agortpsession: Only send EOS if all sources have been marked bye
Olivier Crête [Tue, 4 Jul 2017 16:24:41 +0000 (12:24 -0400)]
rtpsession: Only send EOS if all sources have been marked bye

Now that multiple sender RTPSource can share the same RTPSession, we
must not send an EOS unless they're all marked bye.

7 years agocaca: Do not include, unused, sys/time.h
Thibault Saunier [Tue, 4 Jul 2017 15:49:29 +0000 (11:49 -0400)]
caca: Do not include, unused, sys/time.h

Which moreover makes building on windows (mingw/msvc) fail:
 https://ci.appveyor.com/project/thiblahute/gst-build-ge9m5

7 years agortprtxreceive: Add memory and boudary checks
Nicolas Dufresne [Mon, 3 Jul 2017 15:47:13 +0000 (11:47 -0400)]
rtprtxreceive: Add memory and boudary checks

This element was not checking if mapping the RTP buffer and the payload
worked, and was not checking if the RTX payload was large enough.

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

7 years agosouphttpsrc: Unset limit on the number of connection if soup session sharing is used
Seungha Yang [Tue, 4 Jul 2017 05:58:00 +0000 (14:58 +0900)]
souphttpsrc: Unset limit on the number of connection if soup session sharing is used

Soup allows only up to two connections per host in a session,
if we use default value. When session sharing is used, however,
more connections might be required in a session.
(e.g., multi-audio adaptive streaming case)

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

7 years agoimagefreeze: fix use-after-free on seek event
Tim-Philipp Müller [Mon, 3 Jul 2017 19:27:29 +0000 (20:27 +0100)]
imagefreeze: fix use-after-free on seek event

Get seqnum before unreffing the seek event.

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

7 years agoqtmux: robustify time tracking for sparse subtitle stream
Mark Nauwelaerts [Sat, 1 Jul 2017 16:59:14 +0000 (18:59 +0200)]
qtmux: robustify time tracking for sparse subtitle stream

7 years agoqtmux: correctly track chunk size of subtitle stream
Mark Nauwelaerts [Sat, 1 Jul 2017 16:59:07 +0000 (18:59 +0200)]
qtmux: correctly track chunk size of subtitle stream

... thereby ensuring correct chunk offset tracking for all streams.

7 years agortpstats: fix assertion 'denom > 0' failed
Julien Isorce [Tue, 27 Jun 2017 14:59:18 +0000 (15:59 +0100)]
rtpstats: fix assertion 'denom > 0' failed

gst_util_uint64_scale_int takes a gint as denom parameter
whereas ctx->clock_rate is a guint32.

It happens when gst_rtp_packet_rate_ctx_reset set clock_rate
to -1.

So just define clock_rate as gint like it is done in rtpsource.h

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

7 years agov4l2: Block recursive calls to resurect_buffer
Matt Fischer [Wed, 28 Jun 2017 19:05:27 +0000 (14:05 -0500)]
v4l2: Block recursive calls to resurect_buffer

When resurrecting a buffer, the subsequent free call can result
in the group-released handler being called again, which causes
a recursive loop.  This patch blocks the signal handler during
the time that it executes, ensuring that the loop will not occur.

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

7 years agotests: souphttpsrc: Avoid deprecated ssl-ca-file property
Jan Alexander Steffens (heftig) [Tue, 20 Jun 2017 14:39:36 +0000 (16:39 +0200)]
tests: souphttpsrc: Avoid deprecated ssl-ca-file property

SoupSession's ssl-ca-file property is deprecated. Use the recommended
tls-database property.

This is a bit more complex as it requires creating a GTlsFileDatabase
object for an absolute (!) path to the CA certificates file.

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

7 years agotests: souphttpsrc: Avoid deprecated server ssl properties
Jan Alexander Steffens (heftig) [Tue, 20 Jun 2017 14:37:55 +0000 (16:37 +0200)]
tests: souphttpsrc: Avoid deprecated server ssl properties

The ssl-cert-file and ssl-key-file properties are deprecated. Use the
soup_server_set_ssl_cert_file function to load the files.

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

7 years agotests: souphttpsrc: Make ssl_cert/key_file static
Jan Alexander Steffens (heftig) [Tue, 20 Jun 2017 14:34:41 +0000 (16:34 +0200)]
tests: souphttpsrc: Make ssl_cert/key_file static

Just a bit of cleanup.

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

7 years agotests: souphttpsrc: Update test-cert.pem
Jan Alexander Steffens (heftig) [Tue, 20 Jun 2017 14:28:35 +0000 (16:28 +0200)]
tests: souphttpsrc: Update test-cert.pem

Recent GnuTLS disregards the Common Name and only looks at the Subject
Alternative Name extension. Since our test-cert has no SAN extension,
validation fails.

Generate a new certificate with SAN. In addition to 127.0.0.1, for good
measure make it valid for localhost and ::1, too.

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

7 years agosouphttpsrc: Allow any type of proxy
Nicolas Dufresne [Thu, 29 Jun 2017 19:22:39 +0000 (15:22 -0400)]
souphttpsrc: Allow any type of proxy

Currently we only allowed HTTP proxy. Don't filter for the scheme, just check
if it looks like an URI. Soup will warn if the URI is invalid or if
proxy protocol is not supported. This enables using SOCKS 4/5 which is
directly implemented into GIO.

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

7 years agov4l2: increase by one the number of allocated buffers
Guillaume Desmottes [Wed, 24 May 2017 13:07:51 +0000 (15:07 +0200)]
v4l2: increase by one the number of allocated buffers

Increasing this number fix a buffer starvation problem I'm hitting
with a "v4l2src ! kmssink" pipeline.

kmssink requests 2 buffer as it keeps a reference on the last rendered
one. So we were allocating 3 buffers for the pipeline.
Once the first 2 buffers have been pushed we ended up with:
- one buffer queued in v4l2
- one being pushed
- one kept as last rendered

If this 3rd buffer is released after that v4l2 used the first one to
capture we end up with a buffer starvation problem as no buffer is currently
queued in v4l2 for capture.

Fixing this by adding one extra buffer to the pipeline so when one
buffer is being pushed downstream the other can already be queued to
capture the next frame.

We were already adding 3 buffers if downstream didn't reply to the
allocation query. I reduced this number to 2 to compensate the extra
buffer which is now always added.

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

7 years agortspsrc: Create send/recv mutexes once, not on every connect()
Sebastian Dröge [Thu, 29 Jun 2017 15:59:58 +0000 (18:59 +0300)]
rtspsrc: Create send/recv mutexes once, not on every connect()

Also fixes a crash caused by freeing an uninitialized mutex in an error
case.

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

7 years agov4l2allocator: Fix memory leak with dmabuf
Matt Fischer [Tue, 27 Jun 2017 23:20:17 +0000 (18:20 -0500)]
v4l2allocator: Fix memory leak with dmabuf

This patch fixes a memory leak that is caused if the dmabuf file
descriptor dup fails.  Previously, _cleanup_failed_alloc() would
not unref the memory because mems_allocated had not yet been
incremented.

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

7 years agoqtdemux: specify '_swr' atom as a container atom
Mark Nauwelaerts [Wed, 28 Jun 2017 17:46:04 +0000 (19:46 +0200)]
qtdemux: specify '_swr' atom as a container atom

... so it is parsed as an mp4 style metadata atom as written by muxer

7 years agoqtmux: initialize mdhd language code as undefined
Mark Nauwelaerts [Tue, 27 Jun 2017 18:14:57 +0000 (20:14 +0200)]
qtmux: initialize mdhd language code as undefined

7 years agortpjitterbuffer: Add a faststart-min-packets property
Nicolas Dufresne [Thu, 22 Jun 2017 19:34:42 +0000 (15:34 -0400)]
rtpjitterbuffer: Add a faststart-min-packets property

When set this property will allow the jitterbuffer to start delivering
packets as soon as N most recent packets have consecutive seqnum. A
faststart-min-packets of zero disables this feature. This heuristic is
also used in rtpsource which implements the probation mechanism and a
similar heuristic is used to handle long gaps.

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

7 years agomeson: Allow using glib as a subproject
Thibault Saunier [Fri, 23 Jun 2017 20:18:57 +0000 (16:18 -0400)]
meson: Allow using glib as a subproject

7 years agomeson: build examples
Tim-Philipp Müller [Mon, 26 Jun 2017 10:09:48 +0000 (11:09 +0100)]
meson: build examples

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

7 years agomeson: fix with-package-name option
Tim-Philipp Müller [Mon, 26 Jun 2017 08:47:55 +0000 (09:47 +0100)]
meson: fix with-package-name option

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

7 years agomeson: tests: icles: simplify build file
Tim-Philipp Müller [Mon, 26 Jun 2017 08:38:46 +0000 (09:38 +0100)]
meson: tests: icles: simplify build file

7 years agomeson: build tests/icles/
Tim-Philipp Müller [Sun, 25 Jun 2017 23:22:05 +0000 (00:22 +0100)]
meson: build tests/icles/

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

7 years agoqtmux: correctly calculate overall first_ts to ensure stream sync
Mark Nauwelaerts [Mon, 19 Jun 2017 19:13:42 +0000 (21:13 +0200)]
qtmux: correctly calculate overall first_ts to ensure stream sync

... by minding and compensating for the dts_adjustment that may have
been introduced in the PTS timeline.

7 years agomatroskademux: track highest known cluster position and time
Mark Nauwelaerts [Sat, 10 Jun 2017 13:14:41 +0000 (15:14 +0200)]
matroskademux: track highest known cluster position and time

... to use as a fallback initial duration estimate and to provide for
interpolation when scanning for position.

7 years agomatroskademux: improve and simplify searching for cluster and position
Mark Nauwelaerts [Sat, 10 Jun 2017 11:46:20 +0000 (13:46 +0200)]
matroskademux: improve and simplify searching for cluster and position

... avoiding inefficiency proportional to file size

7 years agomatroskademux: increase chunk size when scanning for cluster
Mark Nauwelaerts [Thu, 8 Jun 2017 14:55:29 +0000 (16:55 +0200)]
matroskademux: increase chunk size when scanning for cluster

7 years agomatroskademux: maintain variable state when searching for position
Mark Nauwelaerts [Thu, 8 Jun 2017 14:39:06 +0000 (16:39 +0200)]
matroskademux: maintain variable state when searching for position

... so skipping to next cluster happens efficiently

7 years agomeson: build raw1394 plugin
Tim-Philipp Müller [Fri, 23 Jun 2017 23:21:00 +0000 (00:21 +0100)]
meson: build raw1394 plugin

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