platform/upstream/gst-plugins-good.git
5 years agortpsession: use the correct segment seqnum
Mathieu Duponchelle [Sat, 2 Feb 2019 01:24:01 +0000 (02:24 +0100)]
rtpsession: use the correct segment seqnum

5 years agoflvdemux: Do not error out if the first added and chained pad is not linked
Thibault Saunier [Sat, 26 Jan 2019 13:35:31 +0000 (10:35 -0300)]
flvdemux: Do not error out if the first added and chained pad is not linked

And let it the oportunity to get its other pad linked

Example:

```
$ gst-launch-1.0 uridecodebin uri=file:///home/thiblahute/gst-validate.save/gst-integration-testsuites/testsuites/../medias/defaults/flv/819290236.flv caps=audio/x-raw expose-all-streams=FALSE ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstFlvDemux:flvdemux0: Internal data stream error.
Additional debug info:
../subprojects/gst-plugins-good/gst/flv/gstflvdemux.c(2760): gst_flv_demux_loop (): /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstFlvDemux:flvdemux0:
streaming stopped, reason not-linked (-1)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
```

5 years agowebmmux: allow resolutions above 4096
Christopher Snowhill [Thu, 17 Jan 2019 07:54:25 +0000 (23:54 -0800)]
webmmux: allow resolutions above 4096

Modify the caps string to allow width and height greater than 4096.
There is no need to restrict it since the matroska format allows the
width and height values to be up to eight bytes long, and this also
applies to the webm subset of the format.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/550

5 years agomeson: qmlgl plugin iOS definitions
Nirbheek Chauhan [Fri, 1 Feb 2019 08:57:11 +0000 (14:27 +0530)]
meson: qmlgl plugin iOS definitions

Tested with cross-ios-arm64 and cross-ios-x86, since those two are the
only archs shipped with the official Qt binaries.

5 years agoqt: Don't define GLsync inside gstglfuncs.h
Nirbheek Chauhan [Fri, 1 Feb 2019 08:57:11 +0000 (14:27 +0530)]
qt: Don't define GLsync inside gstglfuncs.h

This was originally added for fixing conflicting definitions between
Android and Qt, but times have changed and now this breaks the build
on iOS:

 [...]/OpenGLES.framework/Headers/ES3/gl.h:1006:48: error: unknown type name 'gst_qt_GLsync'
 GL_API void           GL_APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)   OPENGLES_DEPRECATED(ios(7.0, 12.0), tvos(9.0, 12.0));
                                               ^
 ../ext/qt/gstqtgl.h:49:16: note: expanded from macro 'GLsync'
 #define GLsync gst_qt_GLsync
                ^
 6 errors generated.

Instead, we simply avoid defining GLsync ourselves if we're using Qt.

5 years agomeson: Fix indentation in qt plugin and add a FIXME comment
Nirbheek Chauhan [Fri, 1 Feb 2019 08:57:11 +0000 (14:27 +0530)]
meson: Fix indentation in qt plugin and add a FIXME comment

5 years agortph265depay; Fix handling of marker on aggregated packet
Nicolas Dufresne [Sun, 27 Jan 2019 02:02:27 +0000 (21:02 -0500)]
rtph265depay; Fix handling of marker on aggregated packet

When multiple nals are aggrgated, the marker bit should be associated only
with the last NAL of the packet. Otherwise we may break rendering in with
AU alignment.

5 years agortph264depay: Fix handling or marker on STAP-A
Nicolas Dufresne [Sun, 27 Jan 2019 02:01:08 +0000 (21:01 -0500)]
rtph264depay: Fix handling or marker on STAP-A

Only forward the marker for the last NAL of the STAP-A. Otherwise each NAL
endup being assumed to be a full frame which may break rendering.

Fixes 557

5 years agotest: h265depay: Add todo for testing aggregate packets with marker
Nicolas Dufresne [Sun, 27 Jan 2019 14:19:00 +0000 (09:19 -0500)]
test: h265depay: Add todo for testing aggregate packets with marker

We are missing a sample to test this, but a fix has been made, so add a
todo.

5 years agotest: rtph264depay: Check handling of STAP-A marker
Nicolas Dufresne [Sun, 27 Jan 2019 01:42:40 +0000 (20:42 -0500)]
test: rtph264depay: Check handling of STAP-A marker

Related to #557

5 years agomeson: orc-test is not required
Nirbheek Chauhan [Thu, 31 Jan 2019 09:53:43 +0000 (15:23 +0530)]
meson: orc-test is not required

This is especially never available on iOS.

5 years agomeson: Add support orc fallback
Seungha Yang [Wed, 30 Jan 2019 10:44:01 +0000 (19:44 +0900)]
meson: Add support orc fallback

Allow fallback to orc subproject if any.
Additionally 'dependencies' keyword is removed from find_library,
because it's invalid keyword for find_library.

5 years agogdkpixbufdec: always output a TIME segment
Mathieu Duponchelle [Thu, 17 Jan 2019 20:06:54 +0000 (21:06 +0100)]
gdkpixbufdec: always output a TIME segment

It makes no sense for a decoder to output a BYTES segment, and
many elements one would plug downstream of a video decoder assume
the segments they receive are in TIME format, for example this fixes:

gst-validate-1.0 filesrc location=opacity01.svg ! gdkpixbufdec ! \
videobalance ! videoconvert ! fakesink

In that case, videobalance was emitting an assertion when trying to
call gst_object_sync_values()

5 years agomeson: Add macOS definitions for qmlgl plugin
Nirbheek Chauhan [Tue, 29 Jan 2019 06:42:51 +0000 (12:12 +0530)]
meson: Add macOS definitions for qmlgl plugin

Tested with Cerbero.

5 years agomeson: Fix building of qmlgl plugin on Android
Nirbheek Chauhan [Tue, 29 Jan 2019 06:42:51 +0000 (12:12 +0530)]
meson: Fix building of qmlgl plugin on Android

Needs gnustl for C++ STL support, which is the GNU STL on Android API
19 and older, and is a wrapper for the llvm-libc++ STL on newer APIs.

QtGui C++ templates use GL functions, so GLESv2 is needed at link time

5 years agodeinterleave: Allow switching between 1 channel configs
Vincent Penquerc'h [Thu, 24 Jan 2019 21:21:12 +0000 (16:21 -0500)]
deinterleave: Allow switching between 1 channel configs

regardless of whether they're positioned, since positioning
with a 1 channel stream doesn't change anything.

5 years agoconfigure.ac: Fix Qt Android integration
Nirbheek Chauhan [Tue, 22 Jan 2019 06:15:49 +0000 (11:45 +0530)]
configure.ac: Fix Qt Android integration

The Qt Android integration is now signalled with HAVE_QT_ANDROID

See: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/merge_requests/86

5 years agoMeson: fallback to libsoup subproject
Xavier Claessens [Tue, 18 Dec 2018 19:46:25 +0000 (14:46 -0500)]
Meson: fallback to libsoup subproject

5 years agomeson: detect opengl api from -base .pc files correctly
Tim-Philipp Müller [Tue, 22 Jan 2019 12:52:25 +0000 (12:52 +0000)]
meson: detect opengl api from -base .pc files correctly

There was a mismatch between the .pc files generated by
autotools and by meson that would lead to meson not detecting
that opengl api is available even though it is, if -base was
built with autotools. The mismatch has now been rectified in
-base, so we need to update for that.

This is mostly for consistency, this problem didn't seem
to affect anything in -good.

See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/871

5 years agomeson: ximage: check for XShmAttach()
Tim-Philipp Müller [Tue, 22 Jan 2019 09:51:33 +0000 (09:51 +0000)]
meson: ximage: check for XShmAttach()

Fixes FIXME.

5 years agomeson: add options for ximagesrc xshm, xfixes, xdamage checks
Tim-Philipp Müller [Tue, 22 Jan 2019 09:32:31 +0000 (09:32 +0000)]
meson: add options for ximagesrc xshm, xfixes, xdamage checks

And rename x11 option to ximagesrc.

Fixes #553

5 years agoqmlgl: add README.md with information on building for non-linux platforms with qmake
George Kiagiadakis [Mon, 21 Jan 2019 09:53:53 +0000 (11:53 +0200)]
qmlgl: add README.md with information on building for non-linux platforms with qmake

5 years agoqmlgl: meson: fix theoretical support for building for android
George Kiagiadakis [Sat, 19 Jan 2019 14:46:41 +0000 (15:46 +0100)]
qmlgl: meson: fix theoretical support for building for android

The android code path is slightly different than the EGLFS one,
so I added previously a HAVE_QT_ANDROID define for use with qmake.
Here I also add it in meson, although I expect nobody will ever use
meson to build this, as it's complicated.

5 years agoqmlgl: qmake: add support for MacOS target
George Kiagiadakis [Sat, 19 Jan 2019 14:37:45 +0000 (15:37 +0100)]
qmlgl: qmake: add support for MacOS target

5 years agoqmlgl: qmake: remove cerbero's include dir from the include path
George Kiagiadakis [Sat, 19 Jan 2019 14:21:43 +0000 (15:21 +0100)]
qmlgl: qmake: remove cerbero's include dir from the include path

pkg-config should do it's job here, this is unnecessary and implies using cerbero

5 years agoqmlgl: qualify Qt includes with their module and remove module include dir from the...
George Kiagiadakis [Sat, 19 Jan 2019 14:19:26 +0000 (15:19 +0100)]
qmlgl: qualify Qt includes with their module and remove module include dir from the .pro file

it is perfectly legal to use the <module/class> style of includes with Qt
and it avoids the need for having the module's include dir in the include path

5 years agoqmlgl: qmake: don't link against QtWidgets, it's not used
George Kiagiadakis [Sat, 19 Jan 2019 14:10:09 +0000 (15:10 +0100)]
qmlgl: qmake: don't link against QtWidgets, it's not used

5 years agoqmlgl: qmake: fix building for android
George Kiagiadakis [Sat, 19 Jan 2019 14:07:44 +0000 (15:07 +0100)]
qmlgl: qmake: fix building for android

5 years agomeson: Generate pkg-config file for qmlgl plugin
Nirbheek Chauhan [Fri, 18 Jan 2019 21:09:32 +0000 (02:39 +0530)]
meson: Generate pkg-config file for qmlgl plugin

5 years agotests: rtp-payloading avoid -Wmaybe-uninitialized
Victor Toso [Thu, 17 Jan 2019 15:26:56 +0000 (16:26 +0100)]
tests: rtp-payloading avoid -Wmaybe-uninitialized

More false positives as both of them are initialized in the line
before they are used, wrapped with fail_unless() check.

5 years agotests: matroskamux avoid -Wmaybe-uninitialized
Victor Toso [Thu, 17 Jan 2019 15:19:40 +0000 (16:19 +0100)]
tests: matroskamux avoid -Wmaybe-uninitialized

False positive for the three variables but some warnings like:

   ../tests/check/elements/matroskamux.c:875:10:
    warning: 'chapters_offset' may be used uninitialized in this function [-Wmaybe-uninitialized]
   *index = chapters_offset;
   ~~~~~~~^~~~~~~~~~~~~~~~~

The above is false positive as there is a gboolean to check if it was
initialized or not (found_chapters_declaration).

5 years agopulse: Fix format info to caps conversion for PCM
Arun Raghavan [Mon, 28 May 2018 09:09:53 +0000 (14:39 +0530)]
pulse: Fix format info to caps conversion for PCM

5 years agoRevert "pulsesrc: Move to extended stream API"
Arun Raghavan [Fri, 18 Jan 2019 06:57:34 +0000 (12:27 +0530)]
Revert "pulsesrc: Move to extended stream API"

This reverts commit 4d67d1bd16bcf25acf89d8acd952badcd5b9a657.

Using the extended API for the capture path depends on a fix in
PulseAudio
(https://gitlab.freedesktop.org/pulseaudio/pulseaudio/merge_requests/49).

Until then, let's go back to the standard API.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/552

5 years agomeson: Search for qmake-qt5 before qmake
Nirbheek Chauhan [Fri, 18 Jan 2019 09:11:14 +0000 (14:41 +0530)]
meson: Search for qmake-qt5 before qmake

The canonical name for the binary is qmake-qt5, and qmake is the
generic name that can also be a qt4 qmake.

5 years agov4l2: mark caps from probe as MAY_BE_LEAKED
Guillaume Desmottes [Thu, 17 Jan 2019 14:30:25 +0000 (15:30 +0100)]
v4l2: mark caps from probe as MAY_BE_LEAKED

5 years agov4l2transform: fix cdata caps leaks
Guillaume Desmottes [Tue, 15 Jan 2019 17:06:11 +0000 (18:06 +0100)]
v4l2transform: fix cdata caps leaks

The cdata structure was freed but not its caps.
It was already done in gst_v4l2_video_dec_subclass_init() and
gst_v4l2_video_enc_subclass_init().

5 years agoRelease 1.15.1
Tim-Philipp Müller [Thu, 17 Jan 2019 01:59:28 +0000 (01:59 +0000)]
Release 1.15.1

5 years agoUpdate docs
Tim-Philipp Müller [Thu, 17 Jan 2019 01:59:28 +0000 (01:59 +0000)]
Update docs

5 years agoUpdate translations
Tim-Philipp Müller [Thu, 17 Jan 2019 01:59:18 +0000 (01:59 +0000)]
Update translations

5 years agogtk/gl: Only unbind buffers/vertex attrib arrays if we can't directly bind the vertex...
Sebastian Dröge [Wed, 16 Jan 2019 12:11:44 +0000 (14:11 +0200)]
gtk/gl: Only unbind buffers/vertex attrib arrays if we can't directly bind the vertex array to 0

Binding the vertex array to 0 will unbind everything else already.

In the previous order older versions of the Intel GL driver caused
errors to be printed for every single call when disabling the vertex
attrib arrays after binding the vertex array to 0.

5 years ago meson: enable tests for orc code
Tim-Philipp Müller [Wed, 16 Jan 2019 00:57:46 +0000 (00:57 +0000)]
 meson: enable tests for orc code

5 years agortspsrc: send GstRTSPSrcTimeout message on timeout
Patrick Radizi [Thu, 29 Nov 2018 15:07:08 +0000 (16:07 +0100)]
rtspsrc: send GstRTSPSrcTimeout message on timeout

The GstRTSPSrcTimeout message is sent by the rtspsrc when it receives
the on-timeout signal from rtpsession. This can be used by an
application for error handling.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/499

5 years agoflvdemux: Handle the encoder metadata the same as metadatacreator
Sebastian Dröge [Wed, 9 Jan 2019 15:52:28 +0000 (17:52 +0200)]
flvdemux: Handle the encoder metadata the same as metadatacreator

And store it in our ENCODER tag.

5 years agoflvmux: Add encoder metadata to the header
Sebastian Dröge [Wed, 9 Jan 2019 15:48:36 +0000 (17:48 +0200)]
flvmux: Add encoder metadata to the header

And also add a property for setting this. By default it has the same
value as the metadatacreator metadata.

Various software is using encoder instead of metadatacreator, others are
using them both for different purposes. As such it's useful to have
support for setting both here.

5 years agopulsesrc: Move to extended stream API
Arun Raghavan [Mon, 28 May 2018 09:11:05 +0000 (14:41 +0530)]
pulsesrc: Move to extended stream API

This is needed as a precursor to allowing capture of IEC61937
formats. We now also need to include the channel map while converting
format info to caps so that a correct channel mask is generated for
pulsesrc's caps.

5 years agotest: rtph265pay: Verify we only mark the last fragment
Jan Alexander Steffens (heftig) [Wed, 9 Jan 2019 15:27:16 +0000 (16:27 +0100)]
test: rtph265pay: Verify we only mark the last fragment

5 years agotest: rtph265pay: Use a bigger test frame
Jan Alexander Steffens (heftig) [Wed, 9 Jan 2019 15:24:54 +0000 (16:24 +0100)]
test: rtph265pay: Use a bigger test frame

The existing frame's last slice is too small to be used for
fragmentation tests.

5 years agotest: rtph264pay: Verify we only mark the last fragment
Jan Alexander Steffens (heftig) [Wed, 9 Jan 2019 14:59:16 +0000 (15:59 +0100)]
test: rtph264pay: Verify we only mark the last fragment

5 years agortph265pay: Only mark the last fragment of an AU
Jan Alexander Steffens (heftig) [Wed, 9 Jan 2019 15:25:36 +0000 (16:25 +0100)]
rtph265pay: Only mark the last fragment of an AU

Commit e721071dcac9f231e5e10b4bb31323658a6cdd1a removed the check for
the end of fragmentation. As a result, all fragments of an AU's last
NALU were marked.

5 years agortph264pay: Only mark the last fragment of an AU
Jan Alexander Steffens (heftig) [Wed, 9 Jan 2019 14:56:51 +0000 (15:56 +0100)]
rtph264pay: Only mark the last fragment of an AU

Commit 4add820cce278213ede3d5fce427ea92e0619b6f removed the check for
the end of fragmentation. As a result, all fragments of an AU's last
NALU were marked.

Potential fix for https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/540

5 years agosplitmuxsrc: Refactor part preparation code and remove "prepared" signal from reader...
Sebastian Dröge [Wed, 9 Jan 2019 09:48:52 +0000 (11:48 +0200)]
splitmuxsrc: Refactor part preparation code and remove "prepared" signal from reader helper object

We don't need a special signal anymore but can directly work with
async-done

5 years agosplitmuxsrc: Implement state change asynchronously instead of blocking
Sebastian Dröge [Wed, 9 Jan 2019 09:42:36 +0000 (11:42 +0200)]
splitmuxsrc: Implement state change asynchronously instead of blocking

Blocking in change_state() is a recipe for disaster, even more so if
we wait for another thread that also calls into various element API and
could then lead to deadlocks on e.g. the state lock.

5 years agopulsesrc: fix checking for invalid stream index
Marc-André Lureau [Sat, 5 Jan 2019 19:10:46 +0000 (23:10 +0400)]
pulsesrc: fix checking for invalid stream index

PA_INVALID_INDEX, the default value, is unfortunately !0.

Setting the volume before the stream is created will put the ring
buffer in error state. Unfortunately, that's what spice-gtk does.

5 years agoqtdemux: Split CEA608 buffers correctly so that each output buffer represents a singl...
Sebastian Dröge [Thu, 20 Dec 2018 10:14:46 +0000 (12:14 +0200)]
qtdemux: Split CEA608 buffers correctly so that each output buffer represents a single frame

5 years agoqtdemux: Refactor buffer pushing into its own function
Sebastian Dröge [Thu, 20 Dec 2018 09:45:36 +0000 (11:45 +0200)]
qtdemux: Refactor buffer pushing into its own function

5 years agoqtdemux: Extract CEA608 framerate from the (first) video stream
Sebastian Dröge [Thu, 20 Dec 2018 09:31:58 +0000 (11:31 +0200)]
qtdemux: Extract CEA608 framerate from the (first) video stream

EA608 closed caption tracks are a bit special in that each sample
can contain CCs for multiple frames, and CCs can be omitted and have to
be inferred from the duration of the sample then.

As such we take the framerate from the (first) video track here for
CEA608 as there must be one CC byte pair for every video frame
according to the spec.

For CEA708 all is fine and there is one sample per frame.

5 years agotests: Enable more unit tests on Windows
Seungha Yang [Sun, 30 Dec 2018 12:55:28 +0000 (21:55 +0900)]
tests: Enable more unit tests on Windows

5 years agotests: Remove pointless unistd.h include
Seungha Yang [Sun, 30 Dec 2018 12:54:44 +0000 (21:54 +0900)]
tests: Remove pointless unistd.h include

5 years agomatroskademux: Don't leak allocated index memory
Seungha Yang [Wed, 26 Dec 2018 11:27:58 +0000 (20:27 +0900)]
matroskademux: Don't leak allocated index memory

Don't forget to free returned memory from _search_pos()

5 years agotests: dist new rtph265.rtp file
Tim-Philipp Müller [Tue, 25 Dec 2018 14:31:44 +0000 (15:31 +0100)]
tests: dist new rtph265.rtp file

Fixes make distcheck.

5 years agoaudiofx: add stereo element which was moved from -bad to build
Tim-Philipp Müller [Tue, 25 Dec 2018 13:51:38 +0000 (14:51 +0100)]
audiofx: add stereo element which was moved from -bad to build

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/457

5 years agoMove stereo plugin from -bad
Tim-Philipp Müller [Tue, 25 Dec 2018 12:07:23 +0000 (13:07 +0100)]
Move stereo plugin from -bad

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

5 years agoqtdemux: Offset correction for track language code parsing
Philippe Normand [Sat, 22 Dec 2018 16:55:51 +0000 (17:55 +0100)]
qtdemux: Offset correction for track language code parsing

The duration field being a uint64, is stored in 8 bytes, not 4. So the offset of
the following field, language code, needs to be updated accordingly so that the
parsed language code is not garbage.

5 years agortspsrc: Accept NULL for "port-range" property
Juan Navarro [Fri, 21 Dec 2018 09:59:22 +0000 (10:59 +0100)]
rtspsrc: Accept NULL for "port-range" property

The documentation of "port-range" implies that passing NULL should be
valid, but currently it is not. Without this check, the sscanf() call
will crash.

5 years agoRevert "rtpbin: receive bundle support"
Mathieu Duponchelle [Wed, 19 Dec 2018 13:28:54 +0000 (14:28 +0100)]
Revert "rtpbin: receive bundle support"

This reverts commit dcd3ce9751cdef0b5ab1fa118355f92bdfe82cb3.

This functionality was implemented for gstopenwebrtc, but it
turned out this was not actually needed for webrtc bundling
support, as shown in webrtcbin. It also doesn't correspond
to any standards.

This is an API break, but nothing should actually depend on
this, at least not for its initial purpose.

Changes in rtpbin.c were reverted manually, to preserve some
refactoring that had occurred in the original commit.

Fixes #537

5 years agortph264pay/rtph265pay: Fix use after free
Nicolas Dufresne [Wed, 19 Dec 2018 16:36:37 +0000 (11:36 -0500)]
rtph264pay/rtph265pay: Fix use after free

We can't assume a buffer that has been pushed in the adapter is still
valid. This fixes a use after free detect when running test on jenkins.

5 years agotagschecking: Use gst_message_parse_warning in case of GST_MESSAGE_WARNING
KimTaeSoo [Wed, 19 Dec 2018 13:51:11 +0000 (22:51 +0900)]
tagschecking: Use gst_message_parse_warning in case of GST_MESSAGE_WARNING

Bus message handler of tags checking unit test uses gst_message_parse_error()
in case of GST_MESSAGE_ERROR and GST_MESAGE_WARNING.
If gst_message_parse_error() is called in case of GST_MESSAGE_WARNING, assert occurs.
So modified to use gst_message_parse_warning() in case of GST_MESSAGE_WARNING.

5 years agotest: rtph264/265: Add libgstrtp in auto-tool makefile
Nicolas Dufresne [Wed, 19 Dec 2018 14:51:10 +0000 (09:51 -0500)]
test: rtph264/265: Add libgstrtp in auto-tool makefile

5 years agotest: rtph265: Copy and port tests from rtph264
Nicolas Dufresne [Tue, 18 Dec 2018 17:43:30 +0000 (12:43 -0500)]
test: rtph265: Copy and port tests from rtph264

This copy and port all the relevant tests from rtph264.

5 years agotest: rtph264depay: Check the marker is converted to flag
Nicolas Dufresne [Fri, 14 Dec 2018 22:54:36 +0000 (17:54 -0500)]
test: rtph264depay: Check the marker is converted to flag

5 years agotest: rtph264depay: Check that EOS drains the depayloaded
Nicolas Dufresne [Fri, 14 Dec 2018 22:53:17 +0000 (17:53 -0500)]
test: rtph264depay: Check that EOS drains the depayloaded

In AU mode, the depayloader may have accumulated NALs, test that
these NALs are drained and not dropped.

5 years agotest: rtph264pay: Add tests for marker bit
Nicolas Dufresne [Fri, 14 Dec 2018 20:30:21 +0000 (15:30 -0500)]
test: rtph264pay: Add tests for marker bit

Test that marker bit is transferred when input buffer has the
marker flag set but also that it's set whenever the payloader
receives complete AU.

5 years agotest: rtph264pay: Verify slices timestamp
Nicolas Dufresne [Thu, 13 Dec 2018 20:57:24 +0000 (15:57 -0500)]
test: rtph264pay: Verify slices timestamp

This test make sure that timestamps are properly transfered
to each NALU.

5 years agotest: rtph264pay: Add reserved nals test
Nicolas Dufresne [Tue, 4 Dec 2018 21:06:15 +0000 (16:06 -0500)]
test: rtph264pay: Add reserved nals test

5 years agortph265pay: Don't wait for next nal when input is aligned
Nicolas Dufresne [Tue, 18 Dec 2018 18:16:44 +0000 (13:16 -0500)]
rtph265pay: Don't wait for next nal when input is aligned

This is the same as what was done on rtph264pay in the patch
d5d28055c1e816e90e8c2d1151816b0c3e760ff3

5 years agortph265depay: Drain on EOS event
Nicolas Dufresne [Tue, 18 Dec 2018 17:53:15 +0000 (12:53 -0500)]
rtph265depay: Drain on EOS event

5 years agortph265depay: Factor out the code that push
Nicolas Dufresne [Tue, 18 Dec 2018 17:50:40 +0000 (12:50 -0500)]
rtph265depay: Factor out the code that push

This will be needed to implement draining on EOS.

5 years agortph264depay: Drain on EOS event
Nicolas Dufresne [Mon, 17 Dec 2018 21:48:53 +0000 (16:48 -0500)]
rtph264depay: Drain on EOS event

5 years agortph264depay: Factor out the code that push
Nicolas Dufresne [Fri, 14 Dec 2018 23:19:42 +0000 (18:19 -0500)]
rtph264depay: Factor out the code that push

This will be needed to implement draining on EOS.

5 years agortph26xpay: Remove unused IS_ACCESS_UNIT macro
Nicolas Dufresne [Fri, 14 Dec 2018 20:51:51 +0000 (15:51 -0500)]
rtph26xpay: Remove unused IS_ACCESS_UNIT macro

This macro is not longer used. It was secretly checking if that nal was
a slice, and confusingly name to that one may think it was checking if
the nal is an AUD.

5 years agortph265pay: Fix reading timestamps from adapter
Nicolas Dufresne [Wed, 3 Oct 2018 18:14:17 +0000 (14:14 -0400)]
rtph265pay: Fix reading timestamps from adapter

The code was reading the timestamp from the adapter before pushing the
new buffer into it. As a side effect, if the adapter was empty, we'd end
up using an older timestamp. In alignment=au, it means that all
timestamp was likely one frame in the past, while in alignment=nal, with
multiple slices per frame, the first slice would have the timestamp of
the previous one.

5 years agortph265pay: Forward the marker bit as buffer flag
Nicolas Dufresne [Wed, 3 Oct 2018 17:46:08 +0000 (13:46 -0400)]
rtph265pay: Forward the marker bit as buffer flag

We have a buffer flag to represent the marker bit (when present).
Forward this bit by setting the buffer flag accordingly.

5 years agortph265pay: Properly set the marker bit
Nicolas Dufresne [Wed, 3 Oct 2018 17:44:56 +0000 (13:44 -0400)]
rtph265pay: Properly set the marker bit

The marker bit is used for efficient decoding. The assumption that
it should be set on the AUD is wrong, since the AUD is conceptually
starts the frame, while the marker is to indicate the end.

So properly set the marker bit as soon as we know we are ending an
AU and also whenever upstream have set the GST_BUFFER_FLAG_MARKER
flag.

5 years agortph264pay: Fix reading timestamps from adapter
Nicolas Dufresne [Tue, 25 Sep 2018 15:49:52 +0000 (11:49 -0400)]
rtph264pay: Fix reading timestamps from adapter

The code was reading the timestamp from the adapter before pushing the
new buffer into it. As a side effect, if the adapter was empty, we'd end
up using an older timestamp. In alignment=au, it means that all
timestamp was likely one frame in the past, while in alignment=nal, with
multiple slices per frame, the first slice would have the timestamp of
the previous one.

5 years agortph264pay: Properly set the marker bit
Nicolas Dufresne [Mon, 24 Sep 2018 19:31:12 +0000 (15:31 -0400)]
rtph264pay: Properly set the marker bit

The marker bit is used for efficient decoding. The assumption that
it should be set on the AUD is wrong, since the AUD is conceptually
starts the frame, while the marker is to indicate the end.

So properly set the marker bit as soon as we know we are ending an
AU and also whenever upstream have set the GST_BUFFER_FLAG_MARKER
flag.

5 years agortph264depay: Forward the marker bit as buffer flag
Nicolas Dufresne [Mon, 24 Sep 2018 19:27:41 +0000 (15:27 -0400)]
rtph264depay: Forward the marker bit as buffer flag

We have a buffer flag to represent the marker bit (when present).
Forward this bit by setting the buffer flag accordingly.

5 years agortph264pay: Protect against use of reserved NAL types
Nicolas Dufresne [Fri, 21 Sep 2018 20:22:43 +0000 (20:22 +0000)]
rtph264pay: Protect against use of reserved NAL types

Don't allow external encoder to use one of the reserved NAL type
implicated in NAL aggreation. These out-of-spec NAL types, if passed
from the outside world will lead to an invalid RTP payload being
created.

5 years agotests: Enable unit test on Windows
Seungha Yang [Fri, 7 Dec 2018 12:46:12 +0000 (21:46 +0900)]
tests: Enable unit test on Windows

Allow run some unit tests on Windows.
* Remove hardcoded path separator in whitelist env for Meson to choose
  OS-specific separator automatically (i.e., ';' for windows and ':' for *nix)
* Add dependency explicitly for some test cases, otherwise plugins couldn't be
  loaded on uninstalled environment of Windows.

5 years agomeson: Prefer to use join_paths() over '/'
Seungha Yang [Tue, 18 Dec 2018 11:39:40 +0000 (20:39 +0900)]
meson: Prefer to use join_paths() over '/'

... to avoid mixing '/' and '\' in a path string on Windows.

5 years agortpulpfec: stop and start the harness when setting error-after
Jonny Lamb [Mon, 17 Dec 2018 18:04:37 +0000 (18:04 +0000)]
rtpulpfec: stop and start the harness when setting error-after

gstreamer!55 makes some changes to how the `error-after` counter works
which breaks this test. This change makes the test not rely on the
ability to alter `error-after` at runtime and explicitly stops and
starts the harness before pushing data.

An alternative would be to add another argument to
`harness_rtpulpfecdec` to set `error-after` on construction but that's
slightly more long-winded. so I went for this approach instead.

Fixes #532, even though that's already closed.

5 years agotests: remove rtpaux test
Mathieu Duponchelle [Mon, 17 Dec 2018 17:59:34 +0000 (18:59 +0100)]
tests: remove rtpaux test

The initial mission statement for this test was:

* demonstrate usage of the request-aux-* signals in rtpbin
* test the rtx elements

We have examples that serve the first use case, and better
(harnessed) tests for the second use case.

This test is slow and racy, it served its purpose but can now
be removed.

Fixes #533

5 years agosouphttpsrc: check difference in time from the last socket read before changing blocksize
Nicola Murino [Mon, 17 Dec 2018 18:18:43 +0000 (19:18 +0100)]
souphttpsrc: check difference in time from the last socket read before changing blocksize

If the pipeline consumes the data slower than the available network speed,
for example because sync=true, is useless to increase the blocksize and
reading in too big blocksizes can cause the connection to time out

Closes #463

5 years agov4l2: Avoid code duplication
Guillaume Desmottes [Wed, 8 Aug 2018 07:27:09 +0000 (09:27 +0200)]
v4l2: Avoid code duplication

The function gst_v4l2_object_add_interlace_mode() has repeating code so
it's best use a loop instead. That will make it easy and simple to add
additional interlace modes in a following patch.

5 years agov4l2: Make use of gst_video_interlace_mode_to_string()
Zeeshan Ali [Wed, 27 Jun 2018 21:20:33 +0000 (23:20 +0200)]
v4l2: Make use of gst_video_interlace_mode_to_string()

Instead of a custom map to translate the interlace modes to strings, let's
make use of the base API provided.

5 years agoosxcoreaudio: fix typo
Nicola Murino [Mon, 17 Dec 2018 12:45:36 +0000 (13:45 +0100)]
osxcoreaudio: fix typo

kAudioFormatFlagIsSignedInteger is a format flags

Closes #394

5 years agoqtgl: Handle OPENGL header guard changes
Edward Hervey [Mon, 17 Dec 2018 08:33:39 +0000 (09:33 +0100)]
qtgl: Handle OPENGL header guard changes

In 2018 khronos changed the gl header guards. If we don't detect
this properly we would end up with plenty of symbol redifinition
(since we would be importing twice the "same" header).

Instead detect if the "newer" header was already included and if
so define the "old" define to avoid this situation

Fixes #523

5 years agoisomp4: Replace GST_VIDEO_CAPTION_TYPE_CEA608_IN_CEA708_RAW with CEA608_S334_1A
Sebastian Dröge [Mon, 10 Dec 2018 15:34:03 +0000 (17:34 +0200)]
isomp4: Replace GST_VIDEO_CAPTION_TYPE_CEA608_IN_CEA708_RAW with CEA608_S334_1A

For the demuxer we have to select line offset 0 for the time being as
this information is not passed over MOV.

5 years agortpjitterbuffer tests: Validate the number of buffers
Olivier Crête [Fri, 14 Dec 2018 01:45:23 +0000 (20:45 -0500)]
rtpjitterbuffer tests: Validate the number of buffers

5 years agortpjitterbuffer: Run all timers immediately on EOS
Olivier Crête [Fri, 14 Dec 2018 00:17:43 +0000 (19:17 -0500)]
rtpjitterbuffer: Run all timers immediately on EOS

When the EOS event is received, run all timers immediately and avoid
pushing the EOS downstream before this has been run. This ensures that
the lost packet statistics are accurate.

5 years agortpjitterbuffer test: Stop jitterbuffer before pads to avoid race
Olivier Crête [Fri, 14 Dec 2018 00:16:11 +0000 (19:16 -0500)]
rtpjitterbuffer test: Stop jitterbuffer before pads to avoid race

The teardown of the pads checks the refcount, but there are timers
inside the jitterbuffer that can push things, so if we're not lucky,
things could be pushed while the pads are being shut down. Putting the
jitterbuffer to NULL first avoids this.