platform/upstream/gst-plugins-good.git
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.

5 years agortpjitterbuffer: Stop waiting after EOS
Nicolas Dufresne [Thu, 22 Nov 2018 15:41:29 +0000 (10:41 -0500)]
rtpjitterbuffer: Stop waiting after EOS

After EOS is received, it is pointless to wait for further events,
specially waiting on timers. This patches fixes two cases where we could
wait instead of returning GST_FLOW_EOS and trigger a spin of the loop
function when EOS is queued, regardless if this EOS is the queue head or
not.

5 years agoflacdec: Use new channel count for audio info
Jochen Henneberg [Sat, 27 Oct 2018 11:41:46 +0000 (13:41 +0200)]
flacdec: Use new channel count for audio info

5 years agoflacdec: Caps may have changed on FLAC metadata change
Jochen Henneberg [Sat, 27 Oct 2018 11:36:16 +0000 (13:36 +0200)]
flacdec: Caps may have changed on FLAC metadata change

If the decoder signals metadata change we need to update the output
format and negotiate with downstream elements.

5 years agoflacdec: Reset decoder on set_format()
Jochen Henneberg [Sat, 27 Oct 2018 11:28:56 +0000 (13:28 +0200)]
flacdec: Reset decoder on set_format()

Any call to set_format() could mean that the stream type changed so we
reset the decoder and mark got_headers FALSE.

5 years agoflacparse: On sink caps change restart parser
Jochen Henneberg [Wed, 5 Dec 2018 17:42:55 +0000 (18:42 +0100)]
flacparse: On sink caps change restart parser

Draining the parser is not enough here, on caps change we need to
reset it so it is ready to accept new caps.

5 years agortpgstdepay: Update pad caps if inline caps change
Jochen Henneberg [Tue, 4 Dec 2018 17:50:51 +0000 (18:50 +0100)]
rtpgstdepay: Update pad caps if inline caps change

If the inlined caps change while using the same CV we need to update the
source pad caps.

5 years agoosxvideo: meson: Add dependencies by using appleframeworks
Justin Kim [Fri, 14 Dec 2018 03:21:58 +0000 (12:21 +0900)]
osxvideo: meson: Add dependencies by using appleframeworks

Otherwise, it fails to link.

gst-build#13

5 years agocairooverlay: Optimize premultiplication/unpremultiplication loops
Sebastian Dröge [Fri, 7 Dec 2018 17:09:30 +0000 (19:09 +0200)]
cairooverlay: Optimize premultiplication/unpremultiplication loops

Pull in video frame fields into local variables. Without this the
compiler must assume that they could've changed on every use and read
them from memory again.

This reduces the inner loop from 6 memory reads per pixels to 4, and the
number of writes stays at 3.

5 years agoqtdemux: Put framerate into the closedcaption caps if it can be calculated from the...
Sebastian Dröge [Wed, 5 Dec 2018 17:37:13 +0000 (19:37 +0200)]
qtdemux: Put framerate into the closedcaption caps if it can be calculated from the stream

Using the same calculation used for video streams.

5 years agoqtmux: Set timescale of closedcaption tracks to the one of the main video track
Sebastian Dröge [Wed, 5 Dec 2018 17:31:25 +0000 (19:31 +0200)]
qtmux: Set timescale of closedcaption tracks to the one of the main video track

5 years agoAutomatic update of common submodule
Thibault Saunier [Wed, 5 Dec 2018 20:24:13 +0000 (17:24 -0300)]
Automatic update of common submodule

From ed78bee to 59cb678

5 years agoRemove duplicate declarations
Maciej Wolny [Mon, 19 Nov 2018 18:20:52 +0000 (18:20 +0000)]
Remove duplicate declarations

This causes 'redefinition of typedef ...' errors on GCC 4.5.3

5 years agotests: rtpssrcdemux: fix uninstalled autotools build and distcheck
Tim-Philipp Müller [Fri, 30 Nov 2018 23:56:12 +0000 (23:56 +0000)]
tests: rtpssrcdemux: fix uninstalled autotools build and distcheck

5 years agoqtdemux: set need_segment after a second moov
Alicia Boya García [Fri, 30 Nov 2018 18:29:30 +0000 (19:29 +0100)]
qtdemux: set need_segment after a second moov

stream.segment should be updated with the values of the current edit
list, also when a new `moov` is received. Unfortunately this was not
being the case because of an early return.

As a consequence of this bugs, no end of movie clipping was being
performed on the new moov and no segment event was being emitted.

When performing stream switching (e.g. in MSE) the new moov may have a
different edit list. This is often the case when switching between
baseline H.264 (which lacks B-frames) and more demanding profiles. For
this reason it's important to emit a new segment in order to be able
to get matching stream times.

5 years agoqtdemux: Initialize QtDemuxStream.segment in its constructor
Alicia Boya García [Thu, 29 Nov 2018 21:42:34 +0000 (22:42 +0100)]
qtdemux: Initialize QtDemuxStream.segment in its constructor

This patch moves the initialization of QtDemuxStream.segment from
gst_qtdemux_add_stream() to _create_stream(). This ensures the segment
is always initialized when the stream is created.

Otherwise the segment format is left as GST_FORMAT_UNDEFINED in the case
were a track is reparsed and qtdemux_reuse_and_configure_stream() is
called instead of gst_qtdemux_add_stream(). (See
qtdemux_expose_streams() in the non streams-aware case.)

5 years agortpsession: properly handle rtcp_feedback_retention_window
Miguel Paris [Thu, 29 Nov 2018 12:48:33 +0000 (13:48 +0100)]
rtpsession: properly handle rtcp_feedback_retention_window

- Consider GST_CLOCK_TIME_NONE as not to be used.
- Complete "rtcp-feedback-retention-window" property getter/setter
  implementation.

5 years agortpsource: properly prune RTCP packets out of feedback_retention_window
Miguel Paris [Thu, 29 Nov 2018 12:02:53 +0000 (13:02 +0100)]
rtpsource: properly prune RTCP packets out of feedback_retention_window

Closes #522

5 years agortpsource: properly compare buffer PTSs
Miguel Paris [Thu, 29 Nov 2018 12:01:44 +0000 (13:01 +0100)]
rtpsource: properly compare buffer PTSs

5 years agortpsource: retain_rtcp_packet: warning if invalid running_time
Miguel Paris [Thu, 29 Nov 2018 11:58:18 +0000 (12:58 +0100)]
rtpsource: retain_rtcp_packet: warning if invalid running_time

5 years agortpsession: properly set the running_time for rtcp packet info
Miguel Paris [Thu, 29 Nov 2018 11:55:38 +0000 (12:55 +0100)]
rtpsession: properly set the running_time for rtcp packet info

5 years agortpssrcdemux: Rename confusingly name lock macros
Nicolas Dufresne [Thu, 29 Nov 2018 19:54:06 +0000 (14:54 -0500)]
rtpssrcdemux: Rename confusingly name lock macros

This is an extra internal recurisve lock use to avoid having to take
both sink pad streams lock all the time. This patch renamed it
INTERLNAL_STREAM_LOCK/UNLOCK() to avoid confusion with possible upstream
GST_PAD API.

5 years agortpssrcdemux: Hold on internal stream lock while pushing sticky
Nicolas Dufresne [Wed, 28 Nov 2018 22:14:11 +0000 (17:14 -0500)]
rtpssrcdemux: Hold on internal stream lock while pushing sticky

This reverts "6f3734c305 rtpssrcdemux: Only forward stick events while
holding the sinkpad stream lock" and actually hold on the internal
stream lock. This prevents in some needed case having a second
streaming thread poping in and messing up event ordering.

5 years agotest: rtpssrcdemux: Test event forwarding
Nicolas Dufresne [Tue, 27 Nov 2018 22:10:57 +0000 (17:10 -0500)]
test: rtpssrcdemux: Test event forwarding

This the first unit test of this element. It adds a test that verify
that events are forwarded correctly.

5 years agomatroskademux: fix handling of MS ACM audio
Matej Knopp [Wed, 4 Nov 2015 11:52:17 +0000 (12:52 +0100)]
matroskademux: fix handling of MS ACM audio

Pass riff codec-data as strf, not strd, which is where
gst_riff_create_audio_caps() expects the WAVEFORMATEXTENSIBLE
data.

https://bugzilla.gnome.org/show_bug.cgi?id=757583
Fixes #234

5 years agoRun gst-indent through the files
Jordan Petridis [Wed, 28 Nov 2018 03:52:16 +0000 (05:52 +0200)]
Run gst-indent through the files

This is required before we enabled an indent test in the CI.

https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/33

5 years agoaspectcropration: Fix potential unref of NULL pointer
Thibault Saunier [Mon, 26 Nov 2018 11:10:24 +0000 (08:10 -0300)]
aspectcropration: Fix potential unref of NULL pointer

5 years agoaspectcropratio: Set caps from the streaming thread on property changes
Thibault Saunier [Sun, 25 Nov 2018 14:31:11 +0000 (11:31 -0300)]
aspectcropratio: Set caps from the streaming thread on property changes

Otherwise it might lead to deadlocks

See https://gitlab.gnome.org/GNOME/pitivi/issues/2259

Closes #518

5 years agortpssrcdemux: Forward serialized events to all pads
Nicolas Dufresne [Fri, 23 Nov 2018 19:01:35 +0000 (14:01 -0500)]
rtpssrcdemux: Forward serialized events to all pads

While forwarding serialized event, we use gst_pad_forward() function.
In the forward callback (GstPadForwardFunction) we always return
TRUE. Returning true there will stop the dispatching procedure. As a
side effect, only one events is receiving the events. This breaks
when sending EOS from the applicaiton, it also breaks the latency
tracer.

5 years agomeson: Specify encoding to UTF-8 when building with MSVC
Seungha Yang [Sat, 24 Nov 2018 10:13:28 +0000 (19:13 +0900)]
meson: Specify encoding to UTF-8 when building with MSVC

Use build arguments consistent with core and -base. This can also
remove noisy "C4819" warning of non-us locale MSVC.

5 years agoCheck for zlib header
Xavier Claessens [Wed, 21 Nov 2018 20:11:00 +0000 (15:11 -0500)]
Check for zlib header

5 years agov4l2: Properly fix Android build
Nicolas Dufresne [Wed, 21 Nov 2018 23:53:39 +0000 (18:53 -0500)]
v4l2: Properly fix Android build

The previous patch did not even compile on any possible platform or C
standard. That commit also didn't have a proper commit message.

Android ships Linux with a different signature for ioctl. They first
released an ioctl with int as request type, and later "fixed" it by
adding an override with unsign, which is still not matching Linux and
BSD implementation which uses unsigned long int.

5 years agoFix ioctl() signature on Android
Xavier Claessens [Wed, 21 Nov 2018 21:11:02 +0000 (16:11 -0500)]
Fix ioctl() signature on Android

5 years agoFix zlib detection when there is no pkg-config file
Xavier Claessens [Tue, 9 Oct 2018 20:43:08 +0000 (16:43 -0400)]
Fix zlib detection when there is no pkg-config file

5 years agopulse: Expose the correct max rate that we support
Arun Raghavan [Mon, 19 Nov 2018 14:35:39 +0000 (20:05 +0530)]
pulse: Expose the correct max rate that we support

PulseAudio defines PA_RATE_MAX as the maximum sampling rate that it
supports. We were previously exposing a maximum rate of INT_MAX, which
is incorrect, but worked because nothing was really using a rate greater
than 384000 kHz.

While playing DSD data, we hit a case where there might be very high
sample rates (>1MHz), and pulsesink fails during stream creation with
such streams because it erroneously advertises that it supports such
rates.

Since PA_RATE_MAX is #define'd to (8*48000U), we can't just use it in
the caps string. Instead, we fix up the rate to what we actually support
whenever we use our macro caps.

5 years agomatroskademux: Defer seeks received before GST_MATROSKA_READ_STATE_DATA
Alicia Boya García [Wed, 14 Nov 2018 07:57:55 +0000 (08:57 +0100)]
matroskademux: Defer seeks received before GST_MATROSKA_READ_STATE_DATA

This patch enables matroskademux to receive seeks before it reaches
GST_MATROSKA_READ_STATE_DATA.

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

This also enables receiving seeks in the element READY state.

When such a seek is received, it is stored to be later handled when
GST_MATROSKA_READ_STATE_DATA is reached.

5 years agortpsession: Implement reset
Linus Svensson [Tue, 16 Oct 2018 10:38:46 +0000 (12:38 +0200)]
rtpsession: Implement reset

Reset RTPSession when rtpsession changes state from PAUSED to READY.
Without this change, a stored last_rtptime in RTPSource could interfere
with RTP timestamp generation in RTCP Sender Report.

Fixes #510

5 years agortpsession: test: Plug memory leak
Linus Svensson [Tue, 6 Nov 2018 14:05:54 +0000 (15:05 +0100)]
rtpsession: test: Plug memory leak

5 years agortpfunnel: Stop using G_DECLARE_FINAL_TYPE
Mathieu Duponchelle [Mon, 12 Nov 2018 23:37:11 +0000 (00:37 +0100)]
rtpfunnel: Stop using G_DECLARE_FINAL_TYPE

Fixes #516

5 years agoAdd Gitlab CI configuration
Jordan Petridis [Mon, 12 Nov 2018 11:42:29 +0000 (13:42 +0200)]
Add Gitlab CI configuration

This commit adds a .gitlab-ci.yml file, which uses a feature
to fetch the config from a centralized repository. The intent is
to have all the gstreamer modules use the same configuration.

The configuration is currently hosted at the gst-ci repository
under the gitlab/ci_template.yml path.

Part of https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/29

5 years agov4l2object: Read driver selected interlace mode
Nicolas Dufresne [Fri, 19 Oct 2018 02:23:31 +0000 (22:23 -0400)]
v4l2object: Read driver selected interlace mode

If there was no interlace-mode field in the caps. Read back the value
selected by the driver. This way, if the driver does not support
progressive, then it will automatically negotiate the returned mode
unless this mode is not supported by GStreamer.

This method was already used for colorimetry. Just like colorimetry, the
interlace mode is not longer probed by v4l2src dues to performance
issues.

Fixes #511

5 years agomatroska: implement preliminary support for the bitrate query
Matthew Waters [Thu, 17 May 2018 11:58:25 +0000 (21:58 +1000)]
matroska: implement preliminary support for the bitrate query

Return the size / total duration as a ballpark estimate.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60

5 years agoisomp4: add preliminary support for the bitrate query
Matthew Waters [Thu, 17 May 2018 11:53:56 +0000 (21:53 +1000)]
isomp4: add preliminary support for the bitrate query

Return the upstream size over the duration as a first estimate.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60

5 years agortpbin: Sink jitterbuffer/storage before passing as parameters to signals
Sebastian Dröge [Tue, 6 Nov 2018 21:02:21 +0000 (23:02 +0200)]
rtpbin: Sink jitterbuffer/storage before passing as parameters to signals

Otherwise signal handlers from bindings will take ownership of them as
they are still floating, and we won't own a reference inside rtpbin
anymore.

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

5 years agoflvmux: Test that timestamps are always increasing
Havard Graff [Sat, 27 Oct 2018 17:00:52 +0000 (18:00 +0100)]
flvmux: Test that timestamps are always increasing

Decreasing timestamps break rtmpsink.

With contributions from Olivier Crête.

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