Commit graph

5990 commits

Author SHA1 Message Date
Haihua Hu
d6e538dc56 glvideomixer: need update output geometry after src caps reconfigure
Need update output geometry when sink caps changed and use
gst_structure_set to update caps if structure is fixed

https://bugzilla.gnome.org/show_bug.cgi?id=787820
2017-09-21 11:56:13 +10:00
Chris Bass
3d2f004db2 ttmlparse: Ensure default showBackground behaviour is enacted
Ensure that region backgrounds are always show when tts:showBackground
is not explicitly set, in accordance with the default behavour given in
the TTML spec.

https://bugzilla.gnome.org/show_bug.cgi?id=787942
2017-09-20 17:11:29 +03:00
Haihua Hu
5f4ee3909e glimagesink: expose should do redisplay all the time
when using internal window, window resize should work
when pause state, but expose only do redisplay when
window_id is valid. So expose should do redisplay all
the time.

https://bugzilla.gnome.org/show_bug.cgi?id=787394
2017-09-19 12:53:30 +10:00
Tim-Philipp Müller
6eff4f8d81 mssdemux: fix caps leak in error code path
https://bugzilla.gnome.org/show_bug.cgi?id=787736
2017-09-15 20:34:28 +01:00
Jochen Henneberg
1874d01eda qmlglsink: Expose itemInitialized as property
Instead of just signalling when ready exposing the state
as a property allows us to bind at any time if player is
loaded async.
2017-09-14 15:12:12 +10:00
Tim-Philipp Müller
fcf8b6bb90 qt: fix build with qmake
Move the package defines for GST_PLUGIN_DEFINE from the
command line into the source file to avoid quoting issues
(-DPACKAGE_NAME="foo" means the quotes won't actually make
it to the compiler and then it no longer gets a string constant).
2017-09-07 09:39:13 +01:00
Thibault Saunier
039fc65468 dfbvideosink: Pass the VideoInfo to gst_video_info_from_caps
Fixing the build
2017-09-06 16:04:49 -03:00
Nicolas Dufresne
9b2e28d91d Request minimum buffer even if need_pool is FALSE
When tee is used, it will not request a pool, but still it wants to
know how many buffers are required.

https://bugzilla.gnome.org/show_bug.cgi?id=730758
2017-09-06 14:19:37 -04:00
George Kiagiadakis
e796a7cb97 hlsdemux: fix compilation with OpenSSL 1.1.0
OpenSSL 1.1.0 no longer allows stack-allocated structures;
it hides the implementation behind typedefs

https://bugzilla.gnome.org/show_bug.cgi?id=787309
2017-09-05 15:54:48 +03:00
Matthew Waters
03e96f3ceb gtkglsink: expose the created display and context correctly
1. Propagate the GstGLDisplay we create
2. Add the created GstGLContext to the propagated GstGLDisplay

Otherwise with multi-branch GL pipelines involving gtkglsink, things
will fall apart and errors will be genarated somewhere.
2017-09-05 21:16:33 +10:00
Sebastian Dröge
b41dd59061 sbcenc: Fix typo in docs 2017-09-05 10:56:24 +03:00
Edward Hervey
8ef273dc29 plugin: Rename libde265 to de265 for consistency
And avoids it being blacklisted
2017-09-05 09:51:41 +02:00
Nicola Murino
6ef65f550b opencv: allow compilation against 3.3.0
https://bugzilla.gnome.org/show_bug.cgi?id=787234
2017-09-04 10:10:48 +03:00
Edward Hervey
7c8a469f9a qt: Only include qtgui-config.h on qt >= 5.9.0
The file does not exist in previous versions
2017-09-01 15:57:25 +02:00
Matthew Waters
14087c6c8d qt: the defines for QT_OPENGL_ES_2 have moved
Update the includes to account for that
2017-08-31 14:40:44 +10:00
Jochen Henneberg
d9b55f6575 qt: ensure GL_DRAW_FRAMEBUFFER 2017-08-31 12:41:52 +10:00
Tim-Philipp Müller
54d7e2811f meson: fix build for isoff lib addition 2017-08-26 12:03:06 +01:00
Seungha Yang
0f1de50222 smoothstreaming: Use isoff to parse tfxd/tfrf
https://bugzilla.gnome.org/show_bug.cgi?id=777825
2017-08-25 17:21:41 -07:00
Seungha Yang
7d06ecb3a4 isoff: Move isoff to gst-libs
Also rename unit test dash_isoff to isoff

https://bugzilla.gnome.org/show_bug.cgi?id=777825
2017-08-25 17:21:04 -07:00
Matthew Waters
029e01743f srtp: zero out session member on dealloc
Fixes a user-after-free retrieving stats from _get_property()
2017-08-24 18:02:01 +10:00
Matthew Waters
d8bc42fb30 glutils: fix matrix operations everywhere
- correct the matrix multiplication
- Use column-major matrices
  - reverse order of matrix multiplications

https://bugzilla.gnome.org/show_bug.cgi?id=785980
2017-08-23 15:32:10 +10:00
Matthew Waters
05a2aa33ea gltransformation: draw with GL_TRIANGLES
Drawing 5 vertices with GL_TRIANGLE_STRIP will draw an extra unneeded
triangle.
2017-08-23 15:31:36 +10:00
Julien Isorce
2d9720690c qt: fix broken build due to commit 2fd84a6c for gstgl
https://bugzilla.gnome.org/show_bug.cgi?id=784779
2017-08-22 13:44:20 +01:00
Julien Isorce
9403af81ef gl: fix broken build due to previous commit 2fd84a6c
Can reproduce after installing libgraphene-dev

Also fixes caopengllayersink.h to anticipate build error on osx.

https://bugzilla.gnome.org/show_bug.cgi?id=784779
2017-08-22 12:42:22 +01:00
Julien Isorce
2fd84a6c86 gl: do not include GL headers in public gstgl headers
Except for gst/gl/gstglfuncs.h

It is up to the client app to include these headers.
It is coherent with the fact that gstreamer-gl.pc does not
require any egl.pc/gles.pc. I.e. it is the responsability
of the app to search these headers within its build setup.

For example gstreamer-vaapi includes explicitly EGL/egl.h
and search for it in its configure.ac.

For example with this patch, if an app includes the headers
  gst/gl/egl/gstglcontext_egl.h
  gst/gl/egl/gstgldisplay_egl.h
  gst/gl/egl/gstglmemoryegl.h
it will *no longer* automatically include EGL/egl.h and GLES2/gl2.h.
Which is good because the app might want to use the gstgl api only
without the need to bother about gl headers.

Also added a test: cd tests/check && make libs/gstglheaders.check

https://bugzilla.gnome.org/show_bug.cgi?id=784779
2017-08-22 10:00:19 +01:00
Jan Schmidt
f02993921c gldownload: Micro-optimisation. Don't check output caps on every buffer
The output caps will only change on a set_caps() call, so check if
they contain the SystemMemory feature then and save some
per-buffer CPU.
2017-08-22 01:57:42 +10:00
Thibault Saunier
df4c6385aa meson: Fix build with openjpeg>=2.2
2.2 implies HAVE_2_1
2017-08-14 16:37:27 -03:00
Carlos Rafael Giani
a13e8b3efa qmlglsink: Add itemInitialized signal to QML item
This is useful for autoplay for example. With autoplay, it is necessary to
wait until the scene graph is fully set up. This signal is emitted once the
QML item node is ready. So, inside a connected slot, the pipeline's state
can be set to PLAYING to automatically start playback as soon as the QML
script is loaded.

https://bugzilla.gnome.org/show_bug.cgi?id=786246
2017-08-14 14:51:43 +03:00
Clemens Lang
15f24fef53 openjpeg: Fix build against openjpeg 2.2
OpenJPEG 2.2 has some API changes and thus ships its headers in a new
include path. Add a configure check (to both meson and autoconf) to
detect the newer version of OpenJPEG and add conditional includes.

Fix the autoconf test for OpenJPEG 2.1, which checked for HAVE_OPENJPEG,
which was always set even for 2.0.

https://bugzilla.gnome.org/show_bug.cgi?id=786250
2017-08-14 10:25:07 +03:00
Sebastian Dröge
d1eb5f727c openh264dec: Drop current frame if passing it to the decoder caused an error
Otherwise we will get it again later for output, however this frame will
never actually be output so we will shift timestamps.

This is especially bad if we're handling a live stream where the first
frames are not keyframes. We would output the keyframe with the
timestamp of the first frame, and everything would be too late when
arriving in the sink.
2017-08-10 23:25:13 +03:00
Sebastian Dröge
a04c48fec1 openh264dec: Don't unref NULL frame on EOS decoding error 2017-08-10 23:21:46 +03:00
Alex Ashley
048d703577 curlhttpsrc: set http-version default if curl does not have HTTP2 feature present
If the version of the curl library is recent enough to allow support
for HTTP2 (i.e. CURL_VERSION_HTTP2 is defined) but does not actually
have that feature enabled, the call to
g_object_class_install_property() uses an incorrect default value for
the "http-version" property. The default should be 1.1 if HTTP2 is
not supported by libcurl or if not enabled by libcurl.

https://bugzilla.gnome.org/show_bug.cgi?id=786049
2017-08-09 17:59:31 +03:00
George Kiagiadakis
f0500ec8b4 rtmpsrc: fix flushing seek
Previously this was broken, because a flushing seek causes unlock()
to be called and in the implementation of unlock() we close the
socket, so the seek errors out.

This patch fixes it by re-connecting before the seek.
Unfortunately, a seek does not work properly right after
re-connecting, so a small hack is also in place: we read 1 buffer
before seeking to allow librtmp to do its processing in RTMP_Read()

https://bugzilla.gnome.org/show_bug.cgi?id=785941
2017-08-08 16:00:44 +03:00
George Kiagiadakis
74154c258f rtmpsrc: remove unused macro 2017-08-08 16:00:44 +03:00
Sam Hurst
6baa66a889 curlhttpsrc: Does version set fail because of HTTP2
Check to see if setting CURL_HTTP_VERSION_2_0 failed due to lack of HTTP/2
support or some bigger underlying libcurl failure

https://bugzilla.gnome.org/show_bug.cgi?id=785878
2017-08-08 09:06:49 +01:00
Philippe Normand
5bf092bd64 curlhttpsrc: set http-version class property as enum
This matches better with the preferred_http_version which was already declared
as enum.

https://bugzilla.gnome.org/show_bug.cgi?id=785878
2017-08-08 09:06:49 +01:00
Thibault Saunier
a6fc222656 de265: Fix plugin name to match new plugin naming convention 2017-08-03 12:51:13 -04:00
Reynaldo H. Verdejo Pinochet
aa1b530f66 curl: curlqueue: add symbol name to avoid confusing gtkdoc 2017-07-26 17:22:31 -07:00
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