Commit graph

5828 commits

Author SHA1 Message Date
Seungha Yang
1c6cd54477 dashdemux: Initialize sidx_position to GST_CLOCK_TIME_NONE
If a manifest has non-zero presentation time offset
(i.e., earliest presentation time specified by sidx box is not zero),
the initial sidx position shouldn't be zero. Since we cannot define
exact sidx position until parsing sidx box, set the value to unknown.

https://bugzilla.gnome.org/show_bug.cgi?id=782693
2017-05-16 17:44:40 +03:00
Sebastian Dröge
9eda151348 hlssink2: New HLS sink element based on splitmuxsink
This embeds the muxer inside the sink and accepts elementary streams
while the old HLS sink required the muxer outside. Apart from that the
interface is the same as before.
Currently only mpegtsmux is supported, but support for other muxers is
just a matter of adding a property.

The advantage of the new sink is that it reduces complexity a lot and
properly handles pre-encoded streams with appropriately spaced
keyframes.

https://bugzilla.gnome.org/show_bug.cgi?id=781496
2017-05-12 12:03:10 +02:00
Nicolas Dufresne
a7737b6dce opencv/meson: Allow 3.2.0
This was already added and tested in autoconf.
2017-05-11 09:22:54 -04:00
Nicolas Dufresne
f6929ed1ed opencv/meson: Ensure variable opencv_found is set
If the required version is not satisfied, we need to make sure this
variable is set, otherwise build will fail.
2017-05-09 15:07:51 -04:00
Nicolas Dufresne
60fa3cab5b Bump and update for meson 0.40.1
This patch bumps the required meson to 0.40.1 as gstreamer core just
did, and cleanup some code to use a feature from 0.37 that allow
specifying version range when checking dependency.

https://bugzilla.gnome.org/show_bug.cgi?id=780654
2017-05-09 13:18:45 -04:00
Vincent Penquerc'h
413406d28a opusparse: do not drop preskip and gain from OpusHead header
https://bugzilla.gnome.org/show_bug.cgi?id=753275
2017-05-09 14:49:46 +01:00
Nicolas Dufresne
c91689db2a qmlgl: Make the plugin name match the pugin file name 2017-05-09 09:47:10 -04:00
Nicolas Dufresne
9bc2b04d5c gme: Make the plugin name match the plugin library name 2017-05-09 09:43:01 -04:00
Nicolas Dufresne
012782239e neon: Make the plugin name match the plugin library 2017-05-09 09:41:17 -04:00
Tim-Philipp Müller
6f38a0c6e1 glvideomixer: fix whole example launch line actually 2017-05-07 11:47:40 +01:00
Tim-Philipp Müller
7d274958f8 glvideomixer: remove extraneous \ from example launch line in docs 2017-05-07 11:42:34 +01:00
Ting-Wei Lan
b5abaabeae meson: hls: libm is required because m3u8.c uses math.h
https://bugzilla.gnome.org/show_bug.cgi?id=782119
2017-05-03 14:18:33 +01:00
George Kiagiadakis
cdfa0897e5 webrtcdsp: fix doc string of echo-cancel property
If the echo probe element is not found, initialization actually fails
instead of silently working with echo-cancel disabled.

https://bugzilla.gnome.org/show_bug.cgi?id=780976
2017-05-02 15:59:31 +03:00
Chris Bass
acfaf3a001 ttmlparse: Consolidate adjacent co-styled inline elements
A common subtitling use case is live-generated subtitles, in which each
new word is contained in its own span, and the spans are displayed
sequentially, with the effect that lines of displayed subtitles are
built up word-by-word.

This can, however, cause problems when the number of words in a block is
greater than the number of allowed GstMemorys in a GstBuffer.

Since in this use case each span will have the same styling as adjacent
spans, we can join adjacent spans (and other inline elements, such as
breaks) into a single element containing the concatenated text of each,
thus avoiding the limit of GstMemorys in a GstBuffer and also reducing
the amount of styling/layout metadata that is attached to each buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=781725
2017-04-25 22:18:53 +03:00
Chris Bass
22c3830858 ttmlparse: Don't add GstMemorys to a GstBuffer that is full
The parser stores the text from each inline element of a scene in its
own GstMemory, which is inserted in the GstBuffer containing the scene
data. However, GstBuffers can contain only a limited number of
GstMemorys. Therefore, don't add more than the maximum number of
GstMemorys to each buffer, and warn if this is attempted.

https://bugzilla.gnome.org/show_bug.cgi?id=781725
2017-04-25 22:18:53 +03:00
Chris Bass
ef65230b46 ttmlparse: Store newline as text of br element
When parsing <br> elements, store an actual newline in the text field of
the created TtmlElement. They then don't need to be treated as a
separate case from anon-span elements when being processed.

https://bugzilla.gnome.org/show_bug.cgi?id=781725
2017-04-25 22:18:53 +03:00
Chris Bass
81157e5168 ttmlparse: Replace repeated warning code with a function.
Encapsulates in a function the code that warns of an illegally
positioned element, rather than repeating the same code multiple times.
Also frees a string allocated by ttml_get_element_type_string, which was
previously being leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=781725
2017-04-25 22:18:53 +03:00
Chris Bass
8b19cccfc5 ttmlparse: Remove redundant text_index field of TtmlElement
https://bugzilla.gnome.org/show_bug.cgi?id=781725
2017-04-25 22:18:53 +03:00
Chris Bass
d8afce67c3 ttmlparse: Don't leak TtmlElements when deleting GNodes/trees.
https://bugzilla.gnome.org/show_bug.cgi?id=781725
2017-04-25 22:18:53 +03:00
Sebastian Dröge
29feef4913 mssdemux: Fix compiler warning
../subprojects/gst-plugins-bad/ext/smoothstreaming/gstmssdemux.c: In function ‘gst_mss_demux_requires_periodical_playlist_update’:
../subprojects/gst-plugins-bad/ext/smoothstreaming/gstmssdemux.c:729:16: error: unused variable ‘mssdemux’ [-Werror=unused-variable]
   GstMssDemux *mssdemux = GST_MSS_DEMUX_CAST (demux);
                ^~~~~~~~
cc1: all warnings being treated as errors
2017-04-25 13:22:33 +03:00
Matthew Waters
5199aa60d5 mss: always periodically update the manifest taking the new fragments
Without this, for streams where the content is stored indefinitely and
can be seeked on, the duration would never increase when in paused or,
until we reached near the end of the currently advertised stream (where
the internal fragment parser would see descriptions of new fragments).
2017-04-25 14:16:15 +10:00
Chris Bass
9f5e41218f ttmlparse: Convert tabs to spaces in input
The TTML spec has an issue in which tab (U+0009) characters that are
first in a sequence of whitespace characters are not suppressed at the
start and end of line areas. This issue was reported in [1] and the
editor of the TTML specs confirmed that this was not the intention
behind the spec.

The editor has created an issue to fix this in both the TTML1 and TTML2
specs [2], giving a proposal of what the spec should say. This patch
updates ttmlparse to implement the intended behaviour as proposed, in
which tabs in the input are converted to spaces before processing.

[1] https://github.com/w3c/imsc/issues/224
[2] https://github.com/w3c/ttml1/issues/235

https://bugzilla.gnome.org/show_bug.cgi?id=781539
2017-04-20 18:50:05 +01:00
Chris Bass
6eb36406f0 ttmlparse: Fix potential resource leak identified by coverity.
If multiple styles/regions with the same ID are present in the input
(which is not allowed in TTML), use the last and give a warning.

Fixes CID #1405134.
2017-04-20 10:40:32 +01:00
Chris Bass
9e3b63e109 ttmlrender: Fix potential resource leak identified by coverity
Fixes CID #1405133.
2017-04-20 10:40:32 +01:00
Chris Bass
129bee3d02 ttmlrender: Fix potential problem identified by clang
Clang's static analyser found potential code paths in which variables
were being used in comparisons when uninitialised. Fix by properly
handling out-of-range value returned by gst_ttml_get_element_index.
2017-04-19 18:28:31 +01:00
Chris Bass
98ce1e11bc ttmlparse: Fix potential NULL dereference identified by coverity
Hopefully fixes CID #1405131.
2017-04-19 18:28:31 +01:00
Chris Bass
3fbd12b141 ttmlrender: Fix integer handling issue identified by coverity
Fixes CID #1405132.
2017-04-19 18:28:31 +01:00
Sebastian Dröge
bb8b27bee4 hlssink: Remove some unused struct fields 2017-04-19 12:36:46 +01:00
Sebastian Dröge
db57a3b04f dashdemux: Rewrite ISOBMFF & SIDX handling
The previous code was handling both as separate steps and then tried to
combine the results, but this resulted in all kinds of bugs which showed
themselves as failures during seeking and offset tracking getting wrong.
This also showed itself with gst-validate on the sample stream.

The rewritten code now parses everything in one go and tracks the
current offset only once, and as a side effect simplifies the code a
lot.

Also added is detection of SIDX that point to other SIDX instead of
actual media segments, e.g. with this stream:
  http://dash.akamaized.net/dash264/TestCases/1a/sony/SNE_DASH_SD_CASE1A_REVISED.mpd
Support for this will have to be added at some point but that should
also be easier with the rewritten code.

https://bugzilla.gnome.org/show_bug.cgi?id=781233
2017-04-18 13:49:08 +02:00
Seungha Yang
68ac72431c mpdparser: Do sanity check of Segment Base Information only at Repesentation level
Spec 5.3.9.2 is saying about the existence of duration and SegmentTimeline
only for Representation level. Other level such as Period or AdaptationSet
might not have the attributes.

https://bugzilla.gnome.org/show_bug.cgi?id=780570
2017-04-15 18:33:41 -07:00
Seungha Yang
6167dab39e mpdparser: Allow inherit Segment{Base,Template} from Period
Similar to SegmentList, Representation can inherit Segment{Base,Template}
from Period

https://bugzilla.gnome.org/show_bug.cgi?id=780570
2017-04-15 18:33:41 -07:00
Jan Schmidt
b392ab4bcd motioncells: Fix cell string generation
Allow 1 extra char in the tmp buffer where the motion cell
snippets are generated, so that it doesn't leave off a comma
when dealing with cells that have 2 numerals in both indices
2017-04-14 01:58:11 +10:00
Tim-Philipp Müller
5b458bf829 ttml: build, but don't autoplug unless GST_TTML_AUTOPLUG env var is set
Don't hide build behind --enable-experimental. Our goal is to not
autoplug it for now, so let's just always build it if the dependencies
are there and hide autoplugging enablement behind an env var.
2017-04-13 11:33:41 +01:00
Sebastian Dröge
e0e1db212f Revert "dashdemux: Fix issue when manifest update sets slow start without passing necessary header & caps changes downstream"
This reverts commit c9fbf3459a.

The representation ID comparision here was wrong and triggering always
if the ID did *not* change, causing needless redownloading of the
header. The sample stream provided in the bug does not exist anymore.
2017-04-12 20:11:16 +03:00
Thibault Saunier
78022a6e0c docs: Port all docstring to gtk-doc markdown 2017-04-12 12:57:57 -03:00
Edward Hervey
94fe5c690e mpdparser: Fix leak
The error: location takes care of freeing new_representation

CID #1405027
2017-04-12 10:54:23 +02:00
Edward Hervey
92ce999ca6 mpdparser: Run gst-indent 2017-04-12 10:54:05 +02:00
Jürgen Sachs
270f97611c dashdemux/mpdparser: Fix wrong false sanity check for manifests with nested SegmentTemplate nodes
https://bugzilla.gnome.org/show_bug.cgi?id=778237
2017-04-11 11:19:34 +03:00
Sebastian Dröge
67778ac55e dashdemux: Handle current SIDX before current position in normal mode like in keyunit-only trick mode
Otherwise we'll get into an infinite loop here. Now this is still not
correct and will cause a clean error, but at least it won't hang forever
anymore.
2017-04-10 18:46:01 +03:00
Seungha Yang
a3a12d0978 mpdparser: Report error if Representation is invalid
Spec "5.3.5 Representation" is saying that
id and bandwidth attributes are mandatory fields.

https://bugzilla.gnome.org/show_bug.cgi?id=780569
2017-04-09 10:58:27 +03:00
Seungha Yang
41996ad9c0 dashdemux: Fix SEEK of multi-period On-Demand profile
For each period, media presentation is the relative to the
period-start time. So SIDX seek position should be target seek
position minus period-start. Also, if presentationTimeOffset
is defined, the value should be compensated

https://bugzilla.gnome.org/show_bug.cgi?id=780397
2017-04-09 10:54:01 +03:00
Chris Bass
28e0bdb7fe ttmlparse: push segment events downstream
Without this, subtitles will stop after seeking.

https://bugzilla.gnome.org/show_bug.cgi?id=780897
2017-04-09 10:42:26 +03:00
Chris Bass
b4d9d9d9f8 ttmlparse: don't filter out untimed whitespace
Significant whitespace in elements that don't have begin/end values
should inherit timing from its parent, or if no its parents have no
timing, from the document's Root Temporal Extent. Currently, such
whitespace is removed, which is not spec-compliant. Fix this by
retaining whitespace in content nodes, and assigning a Root Temporal
Extent of 24 hours to any significant whitespace whose parents have no
associated timing.

https://bugzilla.gnome.org/show_bug.cgi?id=781027
2017-04-09 10:42:16 +03:00
Chris Bass
89b6b1a760 ttmlparse: don't leak caps.
https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00
Chris Bass
60bcf63a29 ttmlrender: improve function comments/descriptions
https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00
Chris Bass
ada24bd2b6 ttmlrender: relocate type definitions to head of file
https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00
Chris Bass
0288ee24e9 ttml: correctly implement lineHeight behaviour
The specified behaviour in TTML when lineHeight is "normal" is different
from the behaviour when a percentage is given. In the former case, the
line height is a percentage (the TTML spec recommends 125%) of the largest
font size that is applied to the spans within the block; in the latter
case, the line height is the given percentage of the font size that is
applied to the block itself.

The code doesn't correctly implement this behaviour; this patch fixes
that.

https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00
Chris Bass
f28df30a8b ttmlrender: apply correct line height to blocks with multiple text sizes
In TTML, the height of every line in a block is determined by lineHeight
and fontSize style attributes, and should be the same for each line in
that block, regardless of whether different sized text appears on
different lines. Currently, a single PangoLayout is used to lay out all
the text in a block; however, pango will vary the line height in a
layout depending on the size of text used in each line, which is not
compliant with TTML.

This patch makes ttmlrender lay out the lines in a block itself, rather
than using a PangoLayout to do the work. The code still uses a
PangoLayout to render the text of each element, but the overall layout
of the text in a block is now controlled by ttmlrender itself. By doing
this, ttmlrender is able to ensure that the height of each line in a
block is correct.

https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00
Chris Bass
2a4a18b2ab ttmlrender: add facility to stitch images in both directions
https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00
Chris Bass
ce532ddcfd ttmlrender: extend UnifiedElement type to include font metrics
https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00