Commit graph

6002 commits

Author SHA1 Message Date
Reynaldo H. Verdejo Pinochet
d82ae7a45f curlhttpsrc: do not check for NULL before g_free()
g_free() is NULL-safe.
2017-07-26 16:51:50 -07:00
Sam Hurst
85eb69d717 curlhttpsrc: Fix flagged Coverity errors
Fixes CIDs 1415707 - 1415717
2017-07-26 23:16:10 +03:00
Sam Hurst
b922edce7b curl: Reorganise header files to fix macOS builds
https://bugzilla.gnome.org/show_bug.cgi?id=744261
2017-07-26 18:57:38 +01:00
Edward Hervey
07afe5da0c curlhttpsrc: Fix compilation without debugging system enabled 2017-07-26 09:19:42 +02:00
Sam Hurst
e74b3a02dd curl: Add curlhttpsrc element
Merged from https://github.com/bbc/gst-curlhttpsrc commit
  f8aabcfc5c50a44f3362de831377d6e86dcd2d49

https://bugzilla.gnome.org/show_bug.cgi?id=744261
2017-07-26 09:52:20 +03:00
Alessandro Decina
f33b2fcf4c meson: make smoothstreaming depend on gio 2017-07-20 18:44:25 +10:00
Seungha Yang
a218a2a1af dashdemux: Add support webvtt subtitle stream
Enable exposing webvtt subtitle streams.

https://bugzilla.gnome.org/show_bug.cgi?id=784715
2017-07-18 09:40:18 +02:00
Nicola Murino
e8f11615bd openh264enc: set GST_PARAM_MUTABLE_PLAYING for bitrate/max-bitrate properties
This way is documented that these properties can be changed in any state

https://bugzilla.gnome.org/show_bug.cgi?id=784988
2017-07-17 19:13:19 -04:00
Nicola Murino
11e8cf92f2 openh264enc: allow to dynamically change bitrate
https://bugzilla.gnome.org/show_bug.cgi?id=784988
2017-07-17 19:13:18 -04:00
Nicola Murino
20b5db0615 openh264enc: fix indentation
https://bugzilla.gnome.org/show_bug.cgi?id=784988
2017-07-17 19:13:18 -04:00
Satya Prakash Gupta
c431fcda78 gsm: unmap output buffer when done
https://bugzilla.gnome.org/show_bug.cgi?id=784887
2017-07-17 09:22:15 +01:00
Thiago Santos
ead63a2686 dashdemux: update manifest streams correctly if pads aren't exposed
In some cases, it is possible that we need to update the manifest before
pads have been exposed at all. If there are no current pads, just expose
the next prepared streams. This doesn't handle the case where a manifest
update would happen while a live streams is changing periods, which is a
type of use case that we're unaware of real usages yet.

https://bugzilla.gnome.org/show_bug.cgi?id=783028
2017-07-13 07:42:58 +02:00
Jan Schmidt
b7fc75c883 qt: Use a proxy object for access to the QML widget
QML can destroy the video widget at any time, leaving
us with a dangling pointer. Use a lock and a proxy
object to cope with that, and block in the widget
destructor if there are ongoing calls into the widget.
2017-07-12 15:51:11 +10:00
Jan Schmidt
6083ad6287 glfilter: Remove hard-coded pad templates
Add a function to install the default RGBA pad templates,
but don't make them required so that there can be
GstGLFilter sub-classes with different input/output
caps if they want. Remove the hard-coded RGBA restriction in
the set_caps_features call, as it will be taken care
of by intersecting with the pad templates.

Update all the sub-classes to match
2017-07-12 15:50:24 +10:00
Olivier Crête
6adfb120ab openexr: Header are not C++11, force C++98 2017-07-11 12:43:46 -04:00
Jussi Kukkonen
97b0085c48 vulkan: Use the generated version of vkconfig.h
Build fails in ext/vulkan/xcb and ext/vulkan/wayland when:
* building from tarball
* building out-of-tree
* Only one WSI integration (xcb or wayland) is enabled by configure.ac
This is because vkconfig.h from source directory gets used instead
of the generated one.

Add the correct build directory to "-I". Use angle bracket
include in vkapi.h so that it actually looks in the include search
path instead of defaulting to the same (source tree) directory.

https://bugzilla.gnome.org/show_bug.cgi?id=784539
2017-07-10 21:42:49 +10:00
Jussi Kukkonen
9c6d36984f vkdisplay: Use ifdef for platform specific defines
VK_KHR_*_SURFACE_EXTENSION_NAME are only available when corresponding
WSI is enabled.

https://bugzilla.gnome.org/show_bug.cgi?id=784539
2017-07-10 21:42:49 +10:00
Aaron Boxer
6d723303a2 openjpegdec: support grayscale with alpha channel
https://bugzilla.gnome.org/show_bug.cgi?id=783591
2017-07-10 10:15:18 +03:00
Yasushi SHOJI
c360ceea4d meson: Added meson.build for gsm
https://bugzilla.gnome.org/show_bug.cgi?id=784646
2017-07-07 17:02:14 +05:30
Tim-Philipp Müller
c0550265e6 Revert "openjpegdec: support grayscale with alpha channel"
This reverts commit 1883ac26b7.

This breaks the build on older versions of openjpeg:
gstopenjpegdec.c:752:30: error: ‘opj_image_comp_t {aka struct opj_image_comp}’ has no member named ‘alpha’

https://bugzilla.gnome.org/show_bug.cgi?id=783591
2017-07-06 09:37:28 +01:00
Aaron Boxer
1883ac26b7 openjpegdec: support grayscale with alpha channel
https://bugzilla.gnome.org/show_bug.cgi?id=783591
2017-07-06 10:01:46 +03:00
Tim-Philipp Müller
3dcfb3ce0e ttml: fix linking to libgstvideo
https://bugzilla.gnome.org/show_bug.cgi?id=784439
2017-07-03 10:11:42 +01:00
Jan Schmidt
45ab816853 qt: Remove misleading reference to GTK in qtitem.cc 2017-06-22 01:01:40 +10:00
Eunhae Choi
4ef53c455b directfb: fix caps leak
add unref in case of error

https://bugzilla.gnome.org/show_bug.cgi?id=783961
2017-06-20 09:28:28 +03:00
Aaron Boxer
a6d1f77299 openjpegdec: fix display artifacts for RGB 8-bit
https://bugzilla.gnome.org/show_bug.cgi?id=783626
2017-06-12 09:54:44 +03:00
Vincent Penquerc'h
903684aa78 openjpeg: guard against invalid memory access on crafted files 2017-06-08 16:17:44 +01:00
Nicolas Dufresne
7d53a5cd0a gl: Add dependency to gstallocators 2017-06-07 11:50:30 -04:00
Edward Hervey
2b401de91c dashdemux: Implement a default presentation delay
Have a fallback presentation delay is great (if not present in the
manifest), having an actual default value is better.

https://bugzilla.gnome.org/show_bug.cgi?id=783244
2017-06-01 15:27:07 +02:00
Thiago Santos
95a2786741 mpdparser: remove duplicate free of client data
https://bugzilla.gnome.org/show_bug.cgi?id=783028
2017-06-01 15:27:07 +02:00
Edward Hervey
34d8ddd92d dashdemux: Remove wrong assertion
This is wrong because:
* If the rate is negative we should check for the *previous* period
* adaptivedemux already does the proper checks before calling this
  method
2017-05-31 11:28:08 +02:00
Edward Hervey
417c70805b ttml: Simplify code
n2 can never be NULL since:
* it's in a "while (n1 && n2)" block
* and it's not modified before

CID #1405868
2017-05-26 17:55:44 +02:00
Haihua Hu
405d059a22 glframebuffer: check frame buffer status need use specific fbo target
https://bugzilla.gnome.org/show_bug.cgi?id=783065
2017-05-25 12:34:04 +03:00
Sebastian Dröge
64ccac4bfb openmpt: Fix compilation with 0.2.7386 as in Debian
The OPENMPT_API_VERSION_AT_LEAST macro does not exist.
2017-05-24 11:47:47 +03:00
Tim-Philipp Müller
0969e8323f wildmidi: include stdint.h for int8_t 2017-05-23 09:17:29 +01:00
Reynaldo H. Verdejo Pinochet
bbb89dd34c wildmididec: explicitly cast buffer data to int8 in _decode()
Fixes compiler warning introduced in commit ff32a4297:

gstwildmididec.c:637:47: error: pointer targets in passing argument 2 of ‘WildMidi_GetOutput’ differ in signedness
       WildMidi_GetOutput (wildmidi_dec->song, (char *) (info.data), info.size);
                                               ^
wildmidi_lib.h:106:15: note: expected ‘int8_t * {aka signed char *}’ but argument is of type ‘char *’
 WM_SYMBOL int WildMidi_GetOutput (midi *handle, int8_t *buffer, uint32_t size);

https://bugzilla.gnome.org/show_bug.cgi?id=768576
2017-05-23 08:44:53 +01:00
Carlos Rafael Giani
e7a5fdfde4 openmpt: Add openmptdec element
https://bugzilla.gnome.org/show_bug.cgi?id=768576
2017-05-22 16:34:05 +02:00
Carlos Rafael Giani
ff32a4297f wildmidi: Port to 1.0 on top of the nonstreamaudiodecoder base class
https://bugzilla.gnome.org/show_bug.cgi?id=768576
2017-05-22 16:34:05 +02:00
Anders Jonsson
f3de920b12 gltestsrc: Fix typo (occured->occurred)
https://bugzilla.gnome.org/show_bug.cgi?id=782947
2017-05-22 13:57:37 +02:00
Olivier Crête
1e84f90bdb glbasemixer: Remove unused negotiated member
This is now all handled in GstAggregator, so this code is not
called anymore.
2017-05-21 18:31:59 +02:00
Olivier Crête
1a2df0400d gl*mixer: Use propose_allocation from the GstAggregator base class
https://bugzilla.gnome.org/show_bug.cgi?id=782918
2017-05-21 18:17:54 +02:00
Carlos Rafael Giani
f191bf0c11 qmlglsink: Add dummy texture that is shown as placeholder for NULL buffers
https://bugzilla.gnome.org/show_bug.cgi?id=782917
2017-05-21 16:52:23 +02:00
Olivier Crête
9897c5c80d glbasemixer: Remove own decide_allocation, use GstAggregator's
https://bugzilla.gnome.org/show_bug.cgi?id=746529
2017-05-21 13:24:29 +02:00
Olivier Crête
d3c2ccb3dd glbasemixer: Use aggregator for allocation handling
https://bugzilla.gnome.org/show_bug.cgi?id=746529
2017-05-21 13:24:29 +02:00
Olivier Crête
31bbfd6773 videoaggregator: Get the buffer from the pool if available
https://bugzilla.gnome.org/show_bug.cgi?id=746529
2017-05-21 13:24:29 +02:00
Matthew Waters
7c53043386 aggregator: add simple support for caps handling
Modelled off the videoaggregator caps handling as that seems the most
mature aggregtor-using implementation that has caps handling there is.

https://bugzilla.gnome.org/show_bug.cgi?id=776931
2017-05-20 16:21:17 +02:00
Sebastian Dröge
be465a139b dashdemux: Use correct (sub) fragment start when clipping chunk size
If we didn't download anything yet, we shouldn't use fragment.start but
the start position of the current sidx entry.
2017-05-18 19:04:57 +02:00
Sebastian Dröge
d5eee31918 dashdemux: Make sure to pass the next buffer after a seek with DISCONT flag
When we manually seek for skipping ahead in keyunit-only trickmode, we
have to enforce that ourselves as adaptivedemux does not know about the
seeks.
2017-05-18 19:04:57 +02:00
Sebastian Dröge
d884ec2904 dashdemux: Ensure that we never ever download over the current SIDX entry
Even if downloading more than needed to try to get the moof and first
keyframe both together.
2017-05-18 19:04:57 +02:00
Sebastian Dröge
71259d9ad4 dashdemux: Take SIDX entry timestamp/duration into account for keyunit-only mode
And not the whole segment's timestamp/duration
2017-05-18 19:04:57 +02:00
Sebastian Dröge
c3fd905f11 dashdemux: Reset parsing state correctly in various places 2017-05-18 19:04:57 +02:00
Sebastian Dröge
927c158303 dashdemux: Reset previous target_time when seeking 2017-05-18 19:04:57 +02:00
Sebastian Dröge
e2a6573c7d dashdemux: Smooth out skip distances in keyframe-only trick modes
This ensures smoother playback. It looks weird if we first do a big
jump, then play a couple of consecutive frames, just to again skip ahead
quite a bit because we ran late again.
2017-05-18 19:04:57 +02:00
Sebastian Dröge
ddef518701 dashdemux: Take configure max bitrate/framerate into account for keyframe skipping
And by default only produce up to 10 fps.
2017-05-18 19:04:57 +02:00
Sebastian Dröge
6a037a78de dashdemux: Try harder to not run into a loop over the same fragment over and over
While still making sure to not jump ahead one fragment further than
needed.
2017-05-18 19:04:57 +02:00
Sebastian Dröge
ef8f194855 dashdemux: Add some debug output to the target time selection 2017-05-18 19:04:57 +02:00
Sebastian Dröge
6b6c7382c3 dashdemux: Use the current clock running time in addition to the QoS earliest time 2017-05-18 19:04:57 +02:00
Sebastian Dröge
133d1e86bd dashdemux: Download keyframes from the current position if we're far enough ahead
Far enough here means more than 500ms or 4 times the average keyframe
download time. There is no need to jump ahead by one average keyframe
download time in this case.

This makes playback smooth if the network is fast enough.
2017-05-18 19:04:57 +02:00
Sebastian Dröge
4efa3185bb dashdemux: Fix sync sample selection based on target time in reverse playback mode 2017-05-18 19:04:57 +02:00
Sebastian Dröge
b3e2657ac1 dashdemux: Snap-seek for skipping ahead and use actual keyframe distance in the current fragment if applicable 2017-05-18 19:04:57 +02:00
Sebastian Dröge
b7f87e2518 dashdemux: Don't adjust for fragment duration twice when seeking ahead in KEYUNITS mode 2017-05-18 19:04:57 +02:00
Sebastian Dröge
5d09bc04a2 dashdemux: Add current fragment duration in reverse playback mode to the position
We play from the end of the fragment to the beginning, not from the
beginning backwards.
2017-05-18 19:04:57 +02:00
Sebastian Dröge
9267b4a725 dashdemux: Never take more than the current fragment duration for estimations inside the fragment
Taking the average might give us from results.
2017-05-18 19:04:57 +02:00
Sebastian Dröge
df420cc21f dashdemux: Don't increase current position if we just downloaded the moof in KEYUNIT mode 2017-05-18 19:04:57 +02:00
Edward Hervey
245d73e516 dashdemux: Improve key-unit trick mode downloading
When dealing with key-unit trick mode downloads, the goal is to
provide the best "Quality of Experience". This is achieved by:
1) maximizing the number of frames displayed per second
2) avoiding "stalling" as much as possible (i.e. not downloading and
  decoding frames fast enough)

This implementation achives this by:
1) Knowing very precisely the current keyframe being download (i.e
  more accurate than at the fragment level which might contain more
  than one keyfram). This is the new "actual_position" variable
  introduced by this commit
2) Knowing the position of downstream (provided by QoS and stored
  in the adaptivedemuxstream qos_earliest_time variable)
3) Knowing how long it takes to request and fully download a keyframe
  (the average_download_time variable)

Taking those 3 variables into account, whenever a keyframe has been
pushed downstream we calculate a "target time" (target_time variable)
which is the ideal next keyframe time to request so that:
1) It will be requested/downloaded/demuxed/decoded in time to be
  displayed without being too late
2) It will not be too far ahead that it would cause too few frames
  per second to be displayed.

How far ahead we will request is inversily proportional to how close
the actual position (actual_position) is from the downstream
position (qos_earliest_time). The more is buffered between the source
and the sink, the "closer" the target time will be, and therefore
the more frames per seconds will be displayed (up to the limit
of keyframes_per_second * absolute_rate).
2017-05-18 19:04:57 +02:00
Edward Hervey
04224ad440 dashdemux: Store average download time
This will be used to bound the download rate when working in
keyframe-only trick mode
2017-05-18 19:04:57 +02:00
Sebastian Dröge
2379dc3f5b dashdemux: Collect keyunit distance and size statistics 2017-05-18 19:04:57 +02:00
Edward Hervey
d8d1fc8bc4 dashdemux: Disable bitrate switching in key-unit trick mode
This creates too much havoc for now
2017-05-18 19:04:57 +02:00
Edward Hervey
8f400c1343 dashdemux: Use new adaptivedemux trickmode macro
Reduces the lines of code, and makes it a bit more readable
2017-05-18 19:04:57 +02:00
Simon Himmelbauer
67980f27ce qt: Use GST_GL_HAVE_PLATFORM_CGL instead of GST_GL_HAVE_PLATFORM_COCOA
The latter is not used/available anymore since years. Also fix a typo
in the include path for the Cocoa GL display header.
2017-05-18 15:24:13 +03:00
Dmitry Zhadinets
f0a75cf029 motioncells: delay motionmaskcoords until caps arrive
motionmaskcoords is not applied on start because the information
about resolution isn't available until caps arrive.

https://bugzilla.gnome.org/show_bug.cgi?id=768666
2017-05-18 13:37:03 +02:00
Tim-Philipp Müller
80d66dfec8 Fix up package name and origin in some plugins 2017-05-18 10:58:20 +01:00
Sebastian Dröge
634cd87c76 gst: Clear floating flag in constructor of all GstObject subclasses that are not owned by any parent
https://bugzilla.gnome.org/show_bug.cgi?id=743062
2017-05-17 10:40:23 +03:00
Haihua Hu
ea2959bd88 qml: Add EGL platform support for x11 backend
Add support for EGL platform when x11 is available. This can work
e.g. on imx6 platform.

https://bugzilla.gnome.org/show_bug.cgi?id=782718
2017-05-17 10:33:48 +03:00
Nicolas Dufresne
4261692187 Remove plugin specific static build option
Static and dynamic plugins now have the same interface. The standard
--enable-static/--enable-shared toggle are sufficient.
2017-05-16 14:05:52 -04:00
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
Chris Bass
aec8406fd7 ttmlrender: extend UnifiedBlock type
Include a reference to the GstSubtitleStyleSet of the represented block
and a string containing the concatenated text from all elements.

https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00
Chris Bass
9f0a06245b ttml: add refcounting to GstSubtitleStlyeSet type
https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00
Chris Bass
4f790d13a6 ttmlrender: rename TextRange type and its fields.
https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00
Chris Bass
ac91886ab7 ttmlrender: store PangoLayout in object state
https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00
Chris Bass
96e07de31d ttmlrender: put all functions in gst_ttml_render namespace
https://bugzilla.gnome.org/show_bug.cgi?id=780402
2017-04-09 10:42:08 +03:00
Nicolas Dufresne
99ff04447f meson: Fix mplex plugin file name
Meson was creating libgstmplex2.so which didn't match the plugin name
'mplex'.
2017-03-29 23:37:59 -04:00
George Kiagiadakis
da44fea1d1 webrtcechoprobe: return from _read() early if the probe is not configured yet
https://bugzilla.gnome.org/show_bug.cgi?id=780642
2017-03-29 16:45:12 +03:00
Luis de Bethencourt
2be93e47ec dashdemux: fix typo in implementation notes
s/enveloppe/envelope
2017-03-28 17:08:15 +02:00
Nicolas Dufresne
41464c6133 webrtcdsp: Add support to build with meson 2017-03-27 21:15:32 -04:00
Mathieu Duponchelle
fc261bc38a webrtcdsp: expose voice activity detection.
The element now exposes properties to enable and configure
voice activity detection, and posts "voice-activity" messages
when the return value of stream_has_voice () changes.

https://bugzilla.gnome.org/show_bug.cgi?id=779138
2017-03-27 20:15:02 -04:00
Matthew Waters
0a25fe2893 mssdemux: only add live fragments after manifest fragments
A live manifest may have a set (> LookAheadFragmentCount) of fragments
that have already been served and are stored on the server, maybe
indefinitely.  Adding the parsed live fragments after the manifest
fragments breaks duration reporting and the seekable range.

Fix by only adding parsed fragments outside the list of fragments which
assumes that the fragment list in the manifest is accurate enough to not
stray too far off what's in the retrieved data.

https://bugzilla.gnome.org/show_bug.cgi?id=779447
2017-03-27 18:42:07 +11:00
Nicolas Dufresne
ba0e1df657 Add missing include path for gst/glib-compat-prive.h
This fixes build failure in mplex and mpeg2enc plugins and most likely
in kate plugin (untested).
2017-03-24 15:43:07 -04:00
Nirbheek Chauhan
ddcd7735b6 meson: Build mpeg2enc and mplex when available 2017-03-23 02:48:39 +05:30
Sebastian Dröge
b8b2946e03 dashdemux: In reverse playback mode, if seeking to the beginning of a fragment, start with the previous one instead
There's no point to start downloading a fragment just to output 1ns.
2017-03-22 12:06:33 +02:00
Sebastian Dröge
19eba961d2 dashdemux: Implement SNAP_NEAREST seeks 2017-03-21 20:38:09 +02:00
Sebastian Dröge
0cc777b3b0 dashdemux: Don't use ABS() for calculating differences
We know which number is bigger.
2017-03-21 20:38:09 +02:00
Sebastian Dröge
7778e8293a dashdemux: Only snap seeks forwards if the seek position does not happen to be the exact segment position 2017-03-21 20:38:09 +02:00
Sebastian Dröge
bcbf1f67f0 dashdemux: Use gst_mpdparser_get_segment_end_time() directly instead of calculating it again
It does the exact same calculations.
2017-03-21 20:38:09 +02:00
Sebastian Dröge
43d1dd3dad mpdparser: Refactor to get rid of one level of indentation in seeking code
Also go out of the segment searching loop once segment->start > ts.
We're not going to find any earlier segment anymore.
2017-03-21 20:38:09 +02:00
Sebastian Dröge
ffa63c5933 dashdemux: Fix snap SIDX seeking and report if we're going outside the index
Instead of just going to the first or last fragment, report if we're
going outside the index. This should never happen unless there's a bug
or the stream is broken.

Allow some possibility for inaccuracies here though.
2017-03-21 20:38:09 +02:00
Tim-Philipp Müller
24ee608947 Update for 'mad' mp3 decoder removal
https://bugzilla.gnome.org/show_bug.cgi?id=776140
2017-03-20 17:15:54 +00:00
Seungha Yang
b8344ea997 m3u8: Fix parsing EXT-X-DISCONTINUITY
EXT-X-DISCONTINUITY tag should have no trailing ":" character

https://bugzilla.gnome.org/show_bug.cgi?id=780179
2017-03-17 12:13:40 +02:00
Seungha Yang
16dd0e693d m3u8: Release m3u8 lock if consistent checking failed
To fix deadlock during live m3u8 update

https://bugzilla.gnome.org/show_bug.cgi?id=780180
2017-03-17 12:13:40 +02:00
Sebastian Dröge
7e21168d4d dashdemux: Just reset SIDX parser if the index is invalid for the current segment
https://bugzilla.gnome.org/show_bug.cgi?id=780108
2017-03-16 12:35:40 +02:00
Chris Bass
4ac2a8d6a6 ttml: Replace assertions
Remove assertions and replace, where necessary, with code that handles
the error cases.

https://bugzilla.gnome.org/show_bug.cgi?id=776436
2017-03-15 13:28:36 +02:00
Sebastian Dröge
141f3b2f4d dashdemux: If a SIDX seek failed although we're in the correct segment, disable the SIDX usage for this segment
The SIDX apparently does not contain information about the current
segment, so better stop using it instead of using incorrect values.
2017-03-15 13:27:23 +02:00