Commit graph

22520 commits

Author SHA1 Message Date
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
0886160123 adaptivedemux: separate manifest update task from download tasks
Rationale is to allow the manifest update task to continue running while
seeks are occurring.  Otherwise, if the user reliably performs a seek
before the manifest is updated, then as the manifest task is reset on
seeks (and thus the time to wait between manifest updates), the manifest
would never be updated.

This fix makes the manifest update task free-running and continously
update even during seeks.
2017-04-25 14:16:15 +10: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
Tim-Philipp Müller
80903beae1 Automatic update of common submodule
From 60aeef6 to 48a5d85
2017-04-24 20:28:06 +01:00
Nicolas Dufresne
99755badbe kmssink: Add msm to the list of drivers
This prevent having to set the driver-name explicitly when running on
Qualcomm/MSM boards.
2017-04-21 21:30:10 -04: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
Sebastian Dröge
0a4717ea20 Revert "decklinkvideo/audiosrc: Add GstReferenceTimestampMeta with the stream time to each buffer"
This reverts commit d5684d5b14.

This shouldn't have been merged before 1.12.
2017-04-19 19:08:41 +01:00
Sebastian Dröge
d5684d5b14 decklinkvideo/audiosrc: Add GstReferenceTimestampMeta with the stream time to each buffer
This is basically a frame counter provided by the driver and it's
advancing at the speed of the HDMI/SDI input. Having this available on
each buffer allows to know what constant-framerate-based timestamp each
frame is corresponding to and can be used e.g. to write out files
accordingly without having the local pipeline clock timestamps used.

https://bugzilla.gnome.org/show_bug.cgi?id=779213
2017-04-19 19:06:37 +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
Ole André Vadla Ravnås
cb28314013 nvenc: Stop bitstream thread in ::stop()
Otherwise we are likely to crash if EOS didn't happen yet.

https://bugzilla.gnome.org/show_bug.cgi?id=781410
2017-04-19 11:51:57 +01:00
Ole André Vadla Ravnås
70ac63a97c nvenc: Update to the current gstreamer-gl API
https://bugzilla.gnome.org/show_bug.cgi?id=781410
2017-04-19 11:51:55 +01:00
Ole André Vadla Ravnås
b721a47a50 nvenc: Add support for the Cuda 8.0 SDK
https://bugzilla.gnome.org/show_bug.cgi?id=781410
2017-04-19 11:51:52 +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
Thiago Santos
22c037df6c tests: dash_mpd: add some inheritance tests
Tests regarding inheritance of segment template attributes
2017-04-15 18:44:04 -07: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
Edward Hervey
e00be27585 adaptivedemux: Don't hold locks when pushing FLUSH_START
Some actions (Qos, reconfigure, ...) might take place before we finish pushing out flush_start.

One problem would be that:
1) The QOS handling in adaptivedemux takes the MANIFEST LOCK
  That QOS event comes from basesink with its PREROLL_LOCK taken
2) FLUSH_START is sent from adaptivedemux with the MANIFEST_LOCK taken and the basesink flushing handler needs to take the PREROLL_LOCK

 => deadlock

https://bugzilla.gnome.org/show_bug.cgi?id=781320
2017-04-15 08:18:39 +02:00
Edward Hervey
44ec6bb2f3 adaptivedemux: Fix segment creation/adaptation some more
Take into account the segment stop and the negative rates

https://bugzilla.gnome.org/show_bug.cgi?id=781267
2017-04-14 08:02:29 +02: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
Philipp Zabel
9ed9c14eb5 kmssink: if the plane can not scale, retry without scaling and remember
Retry the drmModeSetPlane call without scaling if the first try fails,
and remember not to scale anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=781188
2017-04-12 19:31:47 +02: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
Thibault Saunier
90f766cc51 rawvideoparse: videoparse now uses GstValueArray and not GValueArray 2017-04-12 12:08:07 -03:00
Thibault Saunier
a49c114d4e docs: Stop linking to inexistant symbols 2017-04-12 12:07:51 -03:00
Thibault Saunier
4f9328a514 aggregator: Make instance var name match between .c and .h
Making GI happy
2017-04-12 12:07:26 -03:00
Sebastian Dröge
244a80787d Revert "directsoundsrc: Correctly calculate segsize and segtotal"
This reverts commit 6d256d9908.

It was configuring the period/buffer size in a way that often causes
drop-outs or complete underruns. Needs further investigation.
2017-04-12 13:18:18 +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
Claudio Saavedra
61ba3f1986 meson: add missing gstglrenderbuffer.h header
https://bugzilla.gnome.org/show_bug.cgi?id=781179
2017-04-11 16:54:04 +03:00
Tim-Philipp Müller
0ded4c1356 meson: decklink: fix meson configure error on macOS
"meson encountered an error in file
sys/decklink/meson.build, line 33, column 2:
Invalid use of addition: must be str, not list"

Also remove nonsensical linker flags on windows.

https://bugzilla.gnome.org/show_bug.cgi?id=781156
2017-04-11 09:43:53 +01:00
Fabian Orccon
456153cec9 faceoverlay: Port to GStreamer 1.x
https://bugzilla.gnome.org/show_bug.cgi?id=764011
2017-04-11 11:22:01 +03:00
Fabian Orccon
d4797e4455 faceoverlay: Revert deletion
https://bugzilla.gnome.org/show_bug.cgi?id=764011
2017-04-11 11:22:01 +03: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
Tim-Philipp Müller
cb61240760 Automatic update of common submodule
From 39ac2f5 to 60aeef6
2017-04-10 23:49:16 +01: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
Scott D Phillips
fc0c7d664d meson: gl: set default value of 0 for glconf vars
meson's configure_file emits only a comment like /* #undef ... */
for values which are unset in the configuration_data. For
gstglconfig.h, this differs from the autotools build where the
preprocessor definitions are always either 0 or 1. So loop over a
list of variables to set to zero as default.

Also sync up the gstglconfig.h.meson file with the additional
macros defined by the autotools build.

https://bugzilla.gnome.org/show_bug.cgi?id=781043
2017-04-09 11:20:43 +03:00
Vincent Penquerc'h
cd78fc58ec gstaggregator: fix event use after free
https://bugzilla.gnome.org/show_bug.cgi?id=781017
2017-04-09 11:17:19 +03:00
Vincent Penquerc'h
8a5d6397c1 mxfmux: fix index entry leak
https://bugzilla.gnome.org/show_bug.cgi?id=781023
2017-04-09 11:17:11 +03:00