Thiago Santos [Tue, 26 Apr 2016 19:54:30 +0000 (16:54 -0300)]
qtdemux: offset edts segments by the min timestamp of the stream
Otherwise if the stream is starting at timestamp=X it would wait
'X' to start playing.
https://bugzilla.gnome.org/show_bug.cgi?id=752603
Thiago Santos [Tue, 26 Apr 2016 17:34:16 +0000 (14:34 -0300)]
qtdemux: rework segment event pushing
Instead of always keeping a safe segment (start=0) event from the beginning,
delay the creation of this event to when we really know the timestamp of the
first sample. This is important to properly start fragmented streams that
we might join in the middle or to play isolated fragment files that might
have an advanced tfdt.
https://bugzilla.gnome.org/show_bug.cgi?id=752603
Thibault Saunier [Fri, 25 May 2018 08:49:21 +0000 (10:49 +0200)]
qtdemux: Do not unref a NULL stream_tags
stream->stream_tags is reset to NULL once we expose the stream and
these have been consumed, we need to check that when cleaning up
the stream.
Thibault Saunier [Fri, 25 May 2018 08:17:29 +0000 (10:17 +0200)]
qtdemux: Do not run the preferred decryptor context query if no decryptor avalaible
Ultimately this avoids a segfault as the code expect a non NULL array
here.
Alicia Boya García [Fri, 30 Mar 2018 15:03:13 +0000 (17:03 +0200)]
qtdemux: Allow edit lists on fragmented files on push mode
Fragmented files often use elst.duration=0 which before
ee78825eaef2c5fffac7d6c5526fe18cec6b3eef was wrongly interpreted as
having no frames.
Since that issue has now been fixed, there is no reason to disable edit
lists in fragmented files. This commit enables them, therefore producing
correct stream time for files containing edit lists.
https://bugzilla.gnome.org/show_bug.cgi?id=793058
Alicia Boya García [Thu, 24 May 2018 10:58:00 +0000 (12:58 +0200)]
qtdemux: fix computation of first_duration for fragmented files in push mode
Since
ca068865c391e87932b1268d0c675be233dd2ffe the duration of the first
frame is not used for estimating the frame rate.
For this purpose, stream->first_duration was initialized with the
duration of the first frame. In fragmented files, this was previously
done by peeking the first moof, but that can only be done in pull mode.
Fortunately, we don't really need to do that, at least with the current
design: When we are estimating the frame rate we already have the
sample table, regardless of the scheduling mode and whether the file is
fragmented or not, so we can obtain first_duration there much more
reliably.
This fixes frame rate estimation for fragmented files in push mode.
https://bugzilla.gnome.org/show_bug.cgi?id=796384
Vivia Nikolaidou [Tue, 13 Jun 2017 14:42:55 +0000 (17:42 +0300)]
splitmuxsink: Added new async-finalize mode
This mode is useful for muxers that can take a long time to finalize a
file. Instead of blocking the whole upstream pipeline while the muxer is
doing its stuff, we can unlink it and spawn a new muxer+sink combination
to continue running normally.
This requires us to receive the muxer and sink (if needed) as factories,
optionally accompanied by their respective properties structures. Also
added the muxer-added and sink-added signals, in case custom code has to
be called for them.
https://bugzilla.gnome.org/show_bug.cgi?id=783754
Alicia Boya García [Wed, 23 May 2018 17:00:48 +0000 (19:00 +0200)]
qtdemux: Don't send gaps bigger than 1 second (now in push mode too)
This applies the same workaround to gaps that is being used in pull
mode.
https://bugzilla.gnome.org/show_bug.cgi?id=778426
Seungha Yang [Wed, 23 May 2018 11:08:56 +0000 (20:08 +0900)]
qtdemux: Properly handle edit list in push mode
If there are empty segments in edit list, demux should
adjust "accumulated_base" to apply it into running time.
https://bugzilla.gnome.org/show_bug.cgi?id=778426
Mathieu Duponchelle [Tue, 22 May 2018 20:14:03 +0000 (22:14 +0200)]
matroska-mux: write colorimetry
This is a straightforward translation of 5dd39d8, can be trivially
checked by running:
gst-launch-1.0 -v videotestsrc ! video/x-raw, colorimetry=2:4:7:1 ! \
matroskamux ! matroskademux ! fakesink
and verifying that the colorimetry is correctly preserved.
https://bugzilla.gnome.org/show_bug.cgi?id=796344
Alicia Boya García [Sat, 31 Mar 2018 15:19:03 +0000 (17:19 +0200)]
qtdemux: fix buggy duration in edits with duration=0 in fragmented files without a mehd
https://bugzilla.gnome.org/show_bug.cgi?id=794858
Tim-Philipp Müller [Wed, 23 May 2018 12:14:27 +0000 (13:14 +0100)]
docs: fix typos
Seungha Yang [Sat, 31 Mar 2018 09:42:47 +0000 (18:42 +0900)]
qtdemux: Clarify variable name
As defined by spec, use "empty edit". It's more straightforward.
https://bugzilla.gnome.org/show_bug.cgi?id=778426
Xabier Rodriguez Calvar [Wed, 21 Jun 2017 15:59:21 +0000 (17:59 +0200)]
qtdemux: add context for a preferred protection
qtdemux selected the first system corresponding to a working GStreamer
decryptor. With this change, before selecting that decryptor, qtdemux
will check if it has context (a preferred decryptor id) and if not, it
will request it.
The request includes track-id, available key system ids for the
available decryptors and even the events so that the init data is
accessible.
[eocanha@igalia.com: select the preferred protection system even if not available]
Test "4. ClearKeyVideo" in YouTube leanback EME conformance tests 2016 for
H.264[1] uses a media file[2] with cenc encryption which embeds 'pssh' boxes
with the init data for the Playready and Widevine encryption systems, but not
for the ClearKey encryption system (as defined by the EMEv0.1b spec[3] and with
the encryption system id defined in [4]).
Instead, the ClearKey encryption system is manually selected by the web page
code (even if not originally detected by qtdemux) and the proper decryption key
is dispatched to the decryptor, which can then decrypt the video successfully.
[1] http://yt-dash-mse-test.commondatastorage.googleapis.com/unit-tests/2016.html?test_type=encryptedmedia-test&webm=false
[2] http://yt-dash-mse-test.commondatastorage.googleapis.com/unit-tests/media/car_cenc-
20120827-86.mp4
[3] https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1b/encrypted-media/encrypted-media.html#simple-decryption-clear-key
[4] https://www.w3.org/Bugs/Public/show_bug.cgi?id=24027#c2
https://bugzilla.gnome.org/show_bug.cgi?id=770107
Enrique Ocaña González [Sat, 20 May 2017 16:55:40 +0000 (16:55 +0000)]
qtdemux: also push buffers without encryption info instead of dropping them
Test "17. PlayReadyH264Video" in YouTube leanback EME conformance tests 2016
for H.264[1] uses a media file[2] with cenc encryption whose first two 'moof'
boxes have no encryption information (no 'saiz' and 'saio' boxes).
Those boxes are actually not encrypted and the current qtdemux implementation
was just dropping them, breaking the test use case.
This patch detects those kind of situations and just lets the unencrypted
buffers pass. Of course, this needs some collaboration by the decryptors,
which should also do the same and not to try to decrypt those clear buffers.
[1] http://yt-dash-mse-test.commondatastorage.googleapis.com/unit-tests/2016.html?test_type=encryptedmedia-test&webm=false
[2] http://yt-dash-mse-test.commondatastorage.googleapis.com/unit-tests/media/oops_cenc-
20121114-142.mp4
https://bugzilla.gnome.org/show_bug.cgi?id=770107
Tim-Philipp Müller [Mon, 21 May 2018 10:49:08 +0000 (11:49 +0100)]
meson: use cdata.set_quoted() in more places
Tim-Philipp Müller [Mon, 21 May 2018 10:46:59 +0000 (11:46 +0100)]
meson: add 'nls' option to disable translations
And enable by default. Was implicitly disabled because
ENABLE_NLS was not defined.
Andre McCurdy [Tue, 9 Feb 2016 22:00:00 +0000 (14:00 -0800)]
id3v2mux: ensure valid sentinal for gst_structure_get()
gst_structure_get() is declared with G_GNUC_NULL_TERMINATED, ie
__attribute__((__sentinel__)), which means gcc will generate a
warning if the last parameter passed to the function is not NULL
(where a valid NULL in this context is defined as zero with any
pointer type).
The C code callers to gst_structure_get() within gst-plugins-good
use the C NULL definition (ie ((void*)0)), which is a valid sentinel.
However gstid3v2mux.cc uses the C++ NULL definition (ie 0L), which
is not a valid sentinel without an explicit cast to a pointer type.
Upstream-Status: Pending
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Andre McCurdy [Thu, 4 Feb 2016 02:12:38 +0000 (18:12 -0800)]
raw1394: avoid including <sys/poll.h> directly
Note from Edward Hervey: Patch from git.yoctoproject.org
musl libc generates warnings if <sys/poll.h> is included directly.
Upstream-Status: Pending
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Alicia Boya García [Fri, 23 Feb 2018 12:38:32 +0000 (13:38 +0100)]
qtdemux_parse_segments: remove superfluous variable
https://bugzilla.gnome.org/show_bug.cgi?id=793751
Olivier Crête [Mon, 23 Apr 2018 17:29:30 +0000 (13:29 -0400)]
flvmux: Remove custom get_next_time implementation
GstAggregator now does the same thing in the simple implementation.
https://bugzilla.gnome.org/show_bug.cgi?id=795486
Havard Graff [Tue, 15 May 2018 10:50:30 +0000 (11:50 +0100)]
rtpsession: Add tests for PLI and FIR
https://bugzilla.gnome.org/show_bug.cgi?id=795139
Havard Graff [Mon, 30 Apr 2018 06:41:19 +0000 (08:41 +0200)]
rtpsession: make "clear-pt-map" action signal actually work
Needed for PLI + FIR unit tests in follow-up commit.
https://bugzilla.gnome.org/show_bug.cgi?id=795139
Mikhail Fludkov [Thu, 6 Oct 2016 14:08:38 +0000 (16:08 +0200)]
rtpsession: Avoid unnecessary copy of stats structure
The code before copied GstStructure twice. The first time inside
gst_value_set_structure and the second time in g_value_array_append.
Optimized version does no copies, just transfers ownership to
GValueArray. It takes advantage of the fact that array has already
enough elements preallocated and the memory is zero initialized.
https://bugzilla.gnome.org/show_bug.cgi?id=795139
Tim-Philipp Müller [Tue, 15 May 2018 09:35:09 +0000 (10:35 +0100)]
Revert "BugFix : Change peak value to normalize audio file with fallback gain"
This reverts commit
36e49fd6f872f0b3f33083107a55fb7f671a47d0.
Breaks unit test, someone needs to investigate if it's the
patch's fault or if the test needs adjusting/updating.
https://bugzilla.gnome.org/show_bug.cgi?id=673970
Stian Selnes [Tue, 13 Dec 2016 09:13:52 +0000 (10:13 +0100)]
rtpsession: Drop packet if trying to send from non-internal source
If obtain_internal_source() returns a source that is not internal it
means there exists a non-internal source with the same ssrc. Such an
ssrc collision should be handled by sending a GstRTPCollision event
upstream and choose a new ssrc, but for now we simply drop the packet.
Trying to process the packet further will cause it to be pushed
usptream (!) since the source is not internal (see source_push_rtp()).
https://bugzilla.gnome.org/show_bug.cgi?id=795139
Tim-Philipp Müller [Sun, 13 May 2018 23:29:24 +0000 (00:29 +0100)]
matroskademux: tag disabled streams with FLAG_UNSELECT
So they're never picked as default, only by explicit
user action.
https://bugzilla.gnome.org/show_bug.cgi?id=690911
Sebastian Dröge [Mon, 14 May 2018 18:06:55 +0000 (21:06 +0300)]
qtmux: Print expected/actual values in debug log on mismatch in prefill mode
This helps debugging a lot.
Havard Graff [Tue, 10 Apr 2018 16:05:47 +0000 (18:05 +0200)]
rtpsession: Try media_ssrc if no src can be found for PLI sender_ssrc
Some RTP stacks out there does not set the sender_ssrc. In order to be
more robust, try to lookup the media_ssrc before dropping the PLI.
https://bugzilla.gnome.org/show_bug.cgi?id=795139
Mikhail Fludkov [Fri, 25 Aug 2017 09:59:00 +0000 (11:59 +0200)]
rtpsession: Fix on-feedback-rtcp race
If there is an external source which is about to timeout and be removed
from the source hashtable and we receive feedback RTCP packet with the
media ssrc of the source, we unlock the session in
rtp_session_process_feedback before emitting 'on-feedback-rtcp' signal
allowing rtcp timer to kick in and grab the lock. It will get rid of
the source and rtp_session_process_feedback will be left with RTPSource
with ref count 0.
The fix is to grab the ref to the RTPSource object in
rtp_session_process_feedback.
https://bugzilla.gnome.org/show_bug.cgi?id=795139
Stian Selnes [Mon, 27 Nov 2017 09:56:47 +0000 (10:56 +0100)]
rtpsession: Add missing lock around sess->ssrcs iteration
https://bugzilla.gnome.org/show_bug.cgi?id=795139
John-Mark Bell [Fri, 25 Aug 2017 09:22:47 +0000 (11:22 +0200)]
rtpsession: do not emit RBs for internal senders.
These are the sources we send from, so there is no reason to
report receive statistics for them (as we do not receive on them,
and the remote side has no knowledge of them).
https://bugzilla.gnome.org/show_bug.cgi?id=795139
Havard Graff [Tue, 10 Apr 2018 16:22:57 +0000 (18:22 +0200)]
tests: rtpsession: fix indentation
https://bugzilla.gnome.org/show_bug.cgi?id=795139
Edward Hervey [Sat, 12 May 2018 06:03:28 +0000 (08:03 +0200)]
v4l2: Fix typo in debug messages
It's a decoder, not an encoder :)
https://bugzilla.gnome.org/show_bug.cgi?id=795941
Vivia Nikolaidou [Thu, 22 Mar 2018 17:00:37 +0000 (18:00 +0100)]
splitmuxsink: Added caption_%u pad template
For closed-caption-enabled muxers (e.g. qtmux)
Edward Hervey [Thu, 10 May 2018 11:57:30 +0000 (13:57 +0200)]
qtdemux: Initialize riff library
Avoids debugging message issues. Also just use the main riff header
Seungha Yang [Tue, 8 May 2018 11:31:41 +0000 (20:31 +0900)]
tests: qtdemux: Add test for stream change
Add test case to verify track-id change and stream change
https://bugzilla.gnome.org/show_bug.cgi?id=684790
Seungha Yang [Tue, 8 May 2018 11:30:18 +0000 (20:30 +0900)]
qtdemux: Protect _expose_streams() from flush event
Flush during stream change can break autoplugging or the
flush event could be dropped.
https://bugzilla.gnome.org/show_bug.cgi?id=684790
Seungha Yang [Tue, 8 May 2018 11:26:41 +0000 (20:26 +0900)]
qtdemux: Try to expose whenever got new moov or new stream-start
Whenever got new moov or new stream-start,
demux will try to expose new pad by following rule.
Comparing stream-id in the current moov with previous one, then
* If matched stream-id is found from previous one,
reuse existing pad (most common case)
* Otherwise, expose new pad with new stream-start
* No more used stream will be freed
https://bugzilla.gnome.org/show_bug.cgi?id=684790
Seungha Yang [Tue, 8 May 2018 11:10:39 +0000 (20:10 +0900)]
qtdemux: Remove duplication of initializing member variables
Most initialization of variables in gst_qtdemux_init() are duplicated in
gst_qtdemux_reset() function.
https://bugzilla.gnome.org/show_bug.cgi?id=684790
Seungha Yang [Tue, 8 May 2018 11:09:10 +0000 (20:09 +0900)]
qtdemux: Create stream whenever got new moov
Whenever demux got moov, demux will create new stream. Only exception is
duplicated track-id in a moov box. In that case the first stream
will be accepted. This patch is pre-work for rework of moov handling.
https://bugzilla.gnome.org/show_bug.cgi?id=684790
Seungha Yang [Tue, 8 May 2018 10:57:11 +0000 (19:57 +0900)]
qtdemux: Store stream-id to manage streams
In order to figure out stream change such as
track-id change or stream-id change, demux will store
stream-id per QtDemuxStream structure.
https://bugzilla.gnome.org/show_bug.cgi?id=684790
Seungha Yang [Tue, 8 May 2018 10:39:02 +0000 (19:39 +0900)]
qtdemux: Use GList to manage QtDemuxStream
* Move to GList from static array
* Logging track-id instead of array index. It's more meaningful.
https://bugzilla.gnome.org/show_bug.cgi?id=684790
Seungha Yang [Tue, 8 May 2018 09:44:15 +0000 (18:44 +0900)]
qtdemux: Adjust the number of args of some functions
To be used with g_list_free_full in the next patch
https://bugzilla.gnome.org/show_bug.cgi?id=684790
Seungha Yang [Tue, 8 May 2018 09:22:58 +0000 (18:22 +0900)]
qtdemux: Add parentheses in macro
https://bugzilla.gnome.org/show_bug.cgi?id=684790
Marinus Schraal [Mon, 19 Mar 2018 22:36:13 +0000 (23:36 +0100)]
isomp4: Use full date time if available
The ©day tag contains a full date time, use it for the DATE_TIME tag
instead of just the DATE tag. This overrules the unreliable qt creation
time.
https://bugzilla.gnome.org/show_bug.cgi?id=731029
Jan Schmidt [Thu, 15 Mar 2018 11:59:39 +0000 (22:59 +1100)]
rtspsrc: Fix doc comment markers
Kyrylo Polezhaiev [Tue, 2 Feb 2016 16:58:24 +0000 (18:58 +0200)]
icydemux: avoid timestamp field initialisation for tag event
This field is not used and will be removed in 2.0 API.
https://bugzilla.gnome.org/show_bug.cgi?id=761462
Matej Knopp [Sun, 5 Oct 2014 13:51:18 +0000 (15:51 +0200)]
dcaparse: do not accept header with invalid channel count
https://bugzilla.gnome.org/show_bug.cgi?id=737928
Nirbheek Chauhan [Sat, 5 May 2018 13:57:24 +0000 (19:27 +0530)]
meson: Update option names to omit disable_ and with- prefixes
Also yield common options to the outer project (gst-build in our case)
so that they don't have to be set manually.
Anthony Violo [Thu, 12 Apr 2012 07:53:24 +0000 (09:53 +0200)]
BugFix : Change peak value to normalize audio file with fallback gain
https://bugzilla.gnome.org/show_bug.cgi?id=673970
Tim-Philipp Müller [Sat, 5 May 2018 14:32:59 +0000 (16:32 +0200)]
rtpvrawpay: don't use buffer lists if everything fits into one buffer
People might use very large mtu sizes where every payload
fits into a single output packet.
https://bugzilla.gnome.org/show_bug.cgi?id=795758
Kirill Marinushkin [Wed, 4 Apr 2018 13:50:55 +0000 (15:50 +0200)]
configure: Fix hard-coded enabled v4l2 probe on Linux/ARM
Currently, enable_v4l2_probe is hard-coded to "yes" on linux, platforms
arm and aarch64. This even overrides the --disable-v4l2-probe argument.
As a result, it is impossible to disable v4l2_probe. It becomes a problem
for use-cases, when startup time is critical, because the v4l2_probe
feature increases the initialization time.
This commit makes the v4l2_probe feature configurable.
On linux, platforms arm and aarch64, the default value is still "yes".
But now it can be disabled by the --disable-v4l2-probe argument.
https://bugzilla.gnome.org/show_bug.cgi?id=795200
Olivier Crête [Mon, 23 Apr 2018 15:26:12 +0000 (11:26 -0400)]
flvmux: Don't wake up the muxer unless there is data
https://bugzilla.gnome.org/show_bug.cgi?id=795332
Olivier Crête [Mon, 23 Apr 2018 15:19:18 +0000 (11:19 -0400)]
flvmux: Save the current position in the output segment
https://bugzilla.gnome.org/show_bug.cgi?id=795332
Olivier Crête [Thu, 19 Apr 2018 21:53:51 +0000 (17:53 -0400)]
flvmux: Wait for caps from both srcs before writing header
Wait for caps on all pads to start writing data even when source is live.
Includes unit test by Havard Graff that simulates it.
https://bugzilla.gnome.org/show_bug.cgi?id=794722
Guillaume Desmottes [Fri, 13 Apr 2018 11:29:06 +0000 (13:29 +0200)]
v4l2: rely on gst_v4l2_dup() to set no_initial_format and keep_aspect
gst_v4l2_dup() will now take care of setting
v4l2capture->no_initial_format and keep_aspect instead of doing it
manually.
Fix a typo as keep_aspect was set twice on v4l2output but never on
v4l2capture.
https://bugzilla.gnome.org/show_bug.cgi?id=795028
Xavier Claessens [Tue, 24 Apr 2018 18:06:10 +0000 (14:06 -0400)]
Meson: Generate pc file for all plugins in good
https://bugzilla.gnome.org/show_bug.cgi?id=794568
Tim-Philipp Müller [Wed, 25 Apr 2018 09:58:41 +0000 (10:58 +0100)]
meson: use -Wl,-Bsymbolic-functions where supported
Just like the autotools build.
Edward Hervey [Wed, 25 Apr 2018 08:37:40 +0000 (10:37 +0200)]
qtmux: Read caption from input buffer
And not from unallocated output buffer GstMapInfo
CID #1435131
Edward Hervey [Wed, 7 Feb 2018 10:00:18 +0000 (11:00 +0100)]
isomp4: qtmux: Add Closed Caption support
Supports CEA 608 and CEA 708 CC streams
Also supports usage in "Robust Prefill" mode if the incoming caption
stream is constant (i.e. there is one incoming CC buffer for each
video frame).
https://bugzilla.gnome.org/show_bug.cgi?id=606643
Edward Hervey [Tue, 6 Feb 2018 14:38:00 +0000 (15:38 +0100)]
isomp4: Make 'gmhd' atom usage more generic
Only the 'gmin' atom is required. Any other entry within it are
optional.
https://bugzilla.gnome.org/show_bug.cgi?id=606643
Thibault Saunier [Sun, 22 Apr 2018 13:40:19 +0000 (10:40 -0300)]
jpegenc: Accept sof-marker=4
sof-marker is 4 when input is in the RGB colorspace.
https://bugzilla.gnome.org/show_bug.cgi?id=795463
Mathieu Duponchelle [Mon, 2 Apr 2018 14:06:35 +0000 (16:06 +0200)]
ulpfecdec: output perfect seqnums
ULP FEC, as defined in RFC 5109, has the protected and protection
packets sharing the same ssrc, and a different payload type, and
implies rewriting the seqnums of the protected stream when encoding
the protection packets. This has the unfortunate drawback of not
being able to tell whether a lost packet was a protection packet.
rtpbasedepayload relies on gaps in the seqnums to set the DISCONT
flag on buffers it outputs. Before that commit, this created two
problems:
* The protection packets don't make it as far as the depayloader,
which means it will mark buffers as DISCONT every time the previous
packets were protected
* While we could work around the previous issue by looking at
the protection packets ignored and dropped in rtpptdemux, we
would still mark buffers as DISCONT when a FEC packet was lost,
as we cannot know that it was indeed a FEC packet, even though
this should have no impact on the decoding of the stream
With this commit, we consider that when using ULPFEC, gaps in
the seqnums are not a reliable indicator of whether buffers should
be marked as DISCONT or not, and thus rewrite the seqnums on
the decoding side as well to form a perfect sequence, this
obviously doesn't prevent the jitterbuffer from doing its job
as the ulpfec decoder is downstream from it.
https://bugzilla.gnome.org/show_bug.cgi?id=794909
Sebastian Dröge [Tue, 17 Apr 2018 14:57:16 +0000 (17:57 +0300)]
Revert "rtspsrc: Fix up sendonly/recvonly attribute handling"
This reverts commit
af273b4de9eb292c0b6af63665e10ca015895902.
While RFC 3264 (SDP) says that sendonly/recvonly are from the point of view of
the requester, the actual RTSP RFCs (RFC 2326 / 7826) disagree and say
the opposite, just like the ONVIF standard.
Let's follow those RFCs as we're doing RTSP here, and add a property at
a later time if needed to switch to the SDP RFC behaviour.
https://bugzilla.gnome.org/show_bug.cgi?id=793964
Sebastian Dröge [Mon, 16 Apr 2018 18:27:47 +0000 (21:27 +0300)]
flacparse: Drain the parser when a CAPS event is received
After a CAPS event, in theory a new stream can start and it might start
with the FLAC headers again. We can't detect FLAC headers in the middle
of the stream, so we drain the parser to be able to detect either FLAC
headers after the CAPS event or the continuation of the previous stream.
This fixes for example
gst-launch-1.0 audiotestsrc num-buffers=200 ! flacenc ! c. \
audiotestsrc num-buffers=200 freq=880 ! flacenc ! c. \
concat name=c ! rtpgstpay ! udpsink host=127.0.0.1 port=5000
gst-launch-1.0 udpsrc multicast-group=127.0.0.1 port=5000 \
caps=application/x-rtp,media=application,clock-rate=90000,encoding-name=X-GST ! \
rtpgstdepay ! flacparse ! flacdec ! audioconvert ! pulsesin
Tim-Philipp Müller [Mon, 16 Apr 2018 09:52:56 +0000 (10:52 +0100)]
Automatic update of common submodule
From 3fa2c9e to ed78bee
Matthew Waters [Thu, 5 Apr 2018 06:05:12 +0000 (16:05 +1000)]
meson: add build files for the qml plugin
Tested on linux with X11/wayland and semi-tested on Windows.
Windows crashes on item destruction however this is better than nothing.
Fix up some win32 build issues on the way with mismatched {} and
G_STMT_{START,END}
Mathieu Duponchelle [Fri, 13 Apr 2018 21:02:26 +0000 (23:02 +0200)]
flvmux test: refactor looped test.
Looping the test 500 times to only execute the test once every
33 times means we inited and deinited gstreamer 467 times
for no reason at all, which was annoying when running the test
with valgrind.
Mathieu Duponchelle [Fri, 13 Apr 2018 21:01:20 +0000 (23:01 +0200)]
flvmux: unref return of aggregator_pad_peek_buffer
We ended up leaking every single buffer going through the
muxer, which is far from ideal
Mathieu Duponchelle [Fri, 13 Apr 2018 20:49:43 +0000 (22:49 +0200)]
qtmux: Fix leak
gst_qt_mux_can_renegotiate () gets called everywhere following
that pattern:
return gst_qt_mux_can_renegotiate (ref(self));
This means the reference must be released both in the success
and failure cases, it was only done in the success case.
Mathieu Duponchelle [Fri, 13 Apr 2018 20:44:14 +0000 (22:44 +0200)]
flvmux: aggregate should not push EOS itself
Instead it is expected to return GST_FLOW_EOS, and let the
base class handle that.
Mathieu Duponchelle [Fri, 13 Apr 2018 19:19:02 +0000 (21:19 +0200)]
valgrind supps: ignore gnutls leaking a certificate
After investigating, we do dispose of the TLS connections
appropriately in the souphttpsrc test, which in turn
calls gnutls_deinit, but certificates get leaked anyway.
Mathieu Duponchelle [Fri, 13 Apr 2018 18:35:24 +0000 (20:35 +0200)]
souphttpsrc test: free g_get_current_dir return
Mathieu Duponchelle [Fri, 13 Apr 2018 18:31:07 +0000 (20:31 +0200)]
valgrind supps: bring getaddrinfo suppression from -base
Mathieu Duponchelle [Fri, 13 Apr 2018 18:28:35 +0000 (20:28 +0200)]
valgrind supps: ignore more twolame conditional moves
Mathieu Duponchelle [Fri, 13 Apr 2018 15:37:47 +0000 (17:37 +0200)]
rtpulpfec tests: Fix leaks
Alicia Boya García [Fri, 16 Feb 2018 22:40:50 +0000 (23:40 +0100)]
matroskademux: Add comment about Opus clipping
https://bugzilla.gnome.org/show_bug.cgi?id=793523
Whoopie [Wed, 11 Apr 2018 20:28:00 +0000 (20:28 +0000)]
v4l2object: Disable DMABuf for emulated formats
libv4l2 does not prevent exporting DMABuf even when emulated formats are
in use. As a side effect, userspace ends up with buffers of the original
formats which will cause issues.
https://bugzilla.gnome.org/show_bug.cgi?id=795097
Nicolas Dufresne [Mon, 9 Apr 2018 00:42:16 +0000 (20:42 -0400)]
v4l2object: Only use BT2020_12 for BT2020 v4l2 colorspace
BT2020_12 is not represented in V4L2, so drivers providing full colority
for BT2020 will set V4L2_XFER_FUNC_709 transfer function. To fix the
issue, we bump this to BT2020_12 if the resoltion is 4K, but we should
only do that if the colorspace is BT2020 to start with, otherwise it's
not possible to use normal BT709 for 4K 8bit formats.
Nicolas Dufresne [Sun, 8 Apr 2018 17:43:56 +0000 (13:43 -0400)]
v4l2object: Always set the colorimetry in S_FMT
So far we were only setting colorimetry for OUTPUT devices (v4l2sink or
m2m sink pad). This prevented selecting through caps negotiation the
colorimetry for CAPTURE devices (v4l2src or m2m src pad). This is rarely
selectable, but trying is harmless.
Sebastian Dröge [Wed, 11 Apr 2018 19:41:58 +0000 (21:41 +0200)]
monoscope: Only fixate pixel-aspect-ratio if the field exists
Vivia Nikolaidou [Wed, 11 Apr 2018 14:54:38 +0000 (17:54 +0300)]
splitmuxsink: Don't send fragment-opened-closed message if the reference ctx is NULL
It can happen during teardown that the reference context becomes NULL.
In that case, trying to send the fragment-opened-closed message would
lead to a crash.
Sebastian Dröge [Wed, 11 Apr 2018 07:12:09 +0000 (09:12 +0200)]
splitmuxsink: Run gst_iterator_foreach() as long as it returns GST_ITERATOR_RESYNC
CID 1434160
Edward Hervey [Wed, 11 Apr 2018 06:51:32 +0000 (08:51 +0200)]
qtdemux: Fix comparision for extra caption atom
We want to make sure we have *enough* data for the potential 2nd
caption atom.
CID #1434161
Edward Hervey [Wed, 11 Apr 2018 06:42:54 +0000 (08:42 +0200)]
qtdemux: Handle bogus caption samples
Corrupted files could potentially have multiple cdat/cdt2 atoms in
a sample entry, which is unclear how to handle.
Ignore repeated ones.
CID #1434162
CID #1434159
Sebastian Dröge [Tue, 10 Apr 2018 19:15:48 +0000 (21:15 +0200)]
monoscope: Fixate pixel-aspect-ratio too and make sure the final caps are completely fixated
Otherwise e.g. this fails with assertions:
gst-launch-1.0 audiotestsrc ! audioconvert ! monoscope ! videoconvert ! \
videoscale ! video/x-raw,width=800,height=600 ! ximagesink
Edward Hervey [Thu, 8 Mar 2018 09:10:01 +0000 (10:10 +0100)]
qtmux: Add comments and doc about prefill mode
Edward Hervey [Tue, 6 Feb 2018 13:36:50 +0000 (14:36 +0100)]
qtmux: Refactor pad re-negotiation code
It was similar for all pads
https://bugzilla.gnome.org/show_bug.cgi?id=606643
Edward Hervey [Wed, 31 Jan 2018 14:10:03 +0000 (15:10 +0100)]
qtdemux: Detect and expose CEA 608/708 Closed Caption tracks
https://bugzilla.gnome.org/show_bug.cgi?id=606643
Mathieu Duponchelle [Tue, 3 Apr 2018 23:48:44 +0000 (01:48 +0200)]
rtxsend: fix wrong memory layout assumption
The code responsible for creating retransmitted buffers
assumed the stored buffer had been created with
rtp_buffer_new_allocate when copying the extension data,
which isn't necessarily the case, for example when
the rtp buffers come from a udpsrc.
https://bugzilla.gnome.org/show_bug.cgi?id=794958
Mathieu Duponchelle [Mon, 2 Apr 2018 21:04:06 +0000 (23:04 +0200)]
rtpbin: new signal "get-storage"
Similar to the get-session and get-internal-session signals,
we expose a get-storage signal in addition to the
get-internal-storage signal to give access to the actual
element for applications that need to set properties on the
element, in particular "size-time"
https://bugzilla.gnome.org/show_bug.cgi?id=794910
Sebastian Dröge [Thu, 29 Mar 2018 16:19:21 +0000 (19:19 +0300)]
splitmuxsink: Add new reset-muxer property
With this the muxer is not set to NULL after each segment but instead
only flush events are sent to it to reset the EOS state.
As a result, the muxer will keep stream state and e.g. mpegtsmux will
keep the packet continuity counter continuous between segments as needed
by hlssink2.
https://bugzilla.gnome.org/show_bug.cgi?id=794816
Tim-Philipp Müller [Mon, 2 Apr 2018 11:48:50 +0000 (12:48 +0100)]
tests: remove broken and now pointless v4l2src-test
This tests APIs that don't exist any longer and also doesn't
work at all, and was last touched in a meaningful way in 2006.
Seungha Yang [Tue, 20 Mar 2018 15:19:37 +0000 (00:19 +0900)]
v4l2: Fix unknown type name ‘off_t’ error
Fix following build error
gstv4l2object.h:197:17: error: unknown type name ‘off_t’
gint fd, off_t offset);
^
https://bugzilla.gnome.org/show_bug.cgi?id=794533
Mathieu Duponchelle [Thu, 25 May 2017 01:44:39 +0000 (03:44 +0200)]
rtspsrc: reject segment seeks
https://bugzilla.gnome.org/show_bug.cgi?id=784681
Edward Hervey [Tue, 13 Feb 2018 10:50:05 +0000 (11:50 +0100)]
qtdemux: Handle variant of vorbis in mp4
Comes from gpac apparently. The codec_data uses the same packing
mechanism as matroska.
https://bugzilla.gnome.org/show_bug.cgi?id=738244
Edward Hervey [Thu, 22 Mar 2018 14:20:47 +0000 (15:20 +0100)]
qtdemux: Check sample count is valid in PIFF parsing
The value stored in cenc_aux_sample_count wasn't in sync with the
parsing code that followed which checks whether all entries are
valid and present.
Only write the actual sample count when we know for sure.
CID #1427087
Carlos Rafael Giani [Sun, 4 Mar 2018 14:14:08 +0000 (15:14 +0100)]
qt: Get EGL native display from QPA if platform header is available
https://bugzilla.gnome.org/show_bug.cgi?id=792378
Petr Kulhavy [Tue, 6 Mar 2018 01:14:34 +0000 (02:14 +0100)]
udpsrc: switch to using a buffer pool
This exposes a new property, mtu, which is used to determine the
initial size of buffers from the buffer pool. If received data
exceeds this, the element gracefully handles that in a manner similar
to what we had previously: a large memory gets filled and reallocated
at the next call to "fill".
The default size is set to 1500, which should cover most use cases.
With contributions from Mathieu Duponchelle <mathieu@centricular.com>
https://bugzilla.gnome.org/show_bug.cgi?id=772841