Commit graph

2473 commits

Author SHA1 Message Date
Sebastian Dröge
6c8eeb448d adaptivedemux: Don't claim to be live when answering the LATENCY query
Even for "live" streams we are not live in the GStreamer meaning of the word.
We don't produce buffers that are timestamped based on their "capture time"
and our clock, but just based on whatever timestamps the stream might contain.

Also even if we wanted to claim to be live, that wouldn't work well as we
would have to return GST_STATE_CHANGE_NO_PREROLL when going from READY to
PAUSED, which we can't. We first need data to know if we are "live" or not.
2015-04-23 17:47:18 +02:00
Sebastian Dröge
0cd3938345 adaptivedemux: Allow subclasses to override how a new manifest would be downloaded 2015-04-23 17:47:18 +02:00
Sebastian Dröge
c1f98daa74 adaptivedemux: Expose downloader
This allows subclasses to use it and share connections if possible.
2015-04-23 17:47:18 +02:00
Sebastian Dröge
3c639d3235 adaptivedemux: Don't stop all tasks and streams from the update task on errors
It will deadlocks as we will then join() the update task from itself. Instead
just post an actual error message on the bus and only stop the update task.

The application is then responsible for shutting down the element, and thus
all the other tasks and everything, based on the error message it gets.
2015-04-21 22:04:56 +02:00
Matthew Waters
ab9eb432fb glwindow: track context activation properly
We only need to deactivate/reactivate the context iff it was already
active.
2015-04-21 12:55:24 +10:00
Matthew Waters
6cb6d8f9e8 gldisplay: synchronize the searching and creation of GstGLContext's
Ootherwise we could end up with multiple elements in different chains
each creating a context.  Fixes context creation with glvideomixer.
2015-04-21 12:55:24 +10:00
Guillaume Desmottes
89e2a5fe75 videoaggregator: fix caps leak when early returning
https://bugzilla.gnome.org/show_bug.cgi?id=747993

Signed-off-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
2015-04-17 14:45:05 +01:00
Matthieu Bouron
93d2e67cbc glcontext: Make gst_gl_context_egl_activate fail if the old surface could not be destroyed
https://bugzilla.gnome.org/show_bug.cgi?id=746251
2015-04-17 14:39:11 +02:00
Matthieu Bouron
8ebc715fbf glcontext: Make gst_gl_context_egl_activate fail if the surface could not be created
Also add some error logging.
2015-04-16 11:47:00 +02:00
Sebastian Dröge
2fe6fe12cf glcolorconvert: Fix last commit 2015-04-11 19:35:48 +02:00
Sebastian Dröge
a557a546ac gl: Remove iOS/EAGL workaround for R/RG textures
This should be unneeded now after https://bugzilla.gnome.org/show_bug.cgi?id=732507
2015-04-11 19:17:00 +02:00
Sebastian Dröge
b10cdc8536 glcolorconvert: Add correct check for RG/R textures in glcolorconvert too
https://bugzilla.gnome.org/show_bug.cgi?id=732507
2015-04-11 19:14:34 +02:00
Anton Obzhirov
6a2e986f07 glbasefilter: avoid segfault when gl platform is not available
https://bugzilla.gnome.org/show_bug.cgi?id=747124
2015-04-10 12:15:29 -03:00
Sebastian Dröge
9592a0c32f videoaggregator: Remove broken timestamps-going-backwards check
This would've also triggered if for some reason the segment was updated
in such a way that PTS went backwards, but the running time increased. Like
what happens when non-flushing seeks are done.

We're doing a proper buffer-from-the-past check a few lines below based on the
running time, which is the only time we should care about here.
2015-04-08 19:31:43 -07:00
Reynaldo H. Verdejo Pinochet
7fb02dc918 aggregator: document gap handling behavior
https://bugzilla.gnome.org/show_bug.cgi?id=746249
2015-04-03 18:17:35 -03:00
Reynaldo H. Verdejo Pinochet
ca2de787db aggregator: drop stale white space at warning 2015-04-03 18:17:35 -03:00
Reynaldo H. Verdejo Pinochet
931fbf5e12 aggregator: implement gap handling
https://bugzilla.gnome.org/show_bug.cgi?id=746249
2015-04-03 18:17:35 -03:00
Olivier Crête
43d4d3c5ca aggregator: Unify downstream flow return and flushing
Also means that having a non-OK downstream flow return
wakes up the chain functions.

https://bugzilla.gnome.org/show_bug.cgi?id=747220
2015-04-02 15:59:27 -04:00
Olivier Crête
b9a422d8d0 aggregator: Flushing is always in pad lock, no need to atomics
The usage of atomics was always doubtful as it was used to release a
GCond

https://bugzilla.gnome.org/show_bug.cgi?id=747220
2015-04-02 15:59:27 -04:00
Olivier Crête
d1bae20802 aggregator: Reset pending_eos on pad flush
https://bugzilla.gnome.org/show_bug.cgi?id=747220
2015-04-02 15:59:27 -04:00
Olivier Crête
38d8db801a aggregator: Unify code to set a pad flushing
https://bugzilla.gnome.org/show_bug.cgi?id=747220
2015-04-02 15:59:27 -04:00
Alessandro Decina
6981a8d15b libgstgl: fix rendering on iOS
Stop assuming that the handle has been set by the time ->create_context is
called. After bc7a7259f3 set_window_handle always
happens after ->create_context in fact.

See also https://bugzilla.gnome.org/show_bug.cgi?id=745090
2015-04-02 18:29:39 +11:00
Olivier Crête
5a6024850c aggregator: Query latency on first incoming buffer.
And keep on querying upstream until we get a reply.

Also, the _get_latency_unlocked() method required being calld
with a private lock, so removed the _unlocked() variant from the API.
And it now returns GST_CLOCK_TIME_NONE when the element is not live as
we think that 0 upstream latency is possible.

https://bugzilla.gnome.org/show_bug.cgi?id=745768
2015-04-01 22:39:26 -04:00
Edward Hervey
0360a62135 introspection: Don't use g-ir-scanner cache at compile time
It pollutes user directories and we don't need to cache it

https://bugzilla.gnome.org/show_bug.cgi?id=747095
2015-03-31 15:42:03 +02:00
Thiago Santos
66b01c9a0c adaptivedemux: do not try to advance fragment if there is none
It might return OK from subclasses and it could cause a bitrate
renegotiation. For DASH and MSS that is ok as they won't expose
new pads as part of this but it can cause issues for HLS as
it will expose new pads, leading to pads that will only have EOS
that cause decodebin to fail

https://bugzilla.gnome.org/show_bug.cgi?id=745905
2015-03-27 16:22:57 -03:00
Nirbheek Chauhan
dceb8aefd1 videoaggregator: Document why buffer_vinfo is needed 2015-03-24 14:54:33 +01:00
Nirbheek Chauhan
802a29eb48 videoaggregator: Check if there's a previous buffer to 'keep'
If we want to keep a previous buffer but there's no previous buffer, we actually
need more data instead.
2015-03-24 14:54:33 +01:00
Philippe Normand
14ac40f106 gl/dispmanx: surfaceless EGL context support
Show the DispmanX window only if there's no shared external GL context
set up. When a window is required by the context a transparent
DispmanX element is created and later on made visible by the ::show
method.

https://bugzilla.gnome.org/show_bug.cgi?id=746632
2015-03-24 11:12:05 +00:00
Julien Isorce
e1e17dcadb glwindow: remove unused gl_thread field 2015-03-22 19:12:15 +01:00
Julien Isorce
d35e3b8481 gldisplay: fix GThread leak
https://bugzilla.gnome.org/show_bug.cgi?id=746541
2015-03-22 19:03:19 +01:00
Matthew Waters
0ee027b6ee gl/docs: update some doc comments 2015-03-18 10:13:25 -07:00
Olivier Crête
0656c2fc67 aggregator: Be more aggressive with invalid replies to our latency query
https://bugzilla.gnome.org/show_bug.cgi?id=745768
2015-03-16 14:31:50 -04:00
Matthew Waters
78c82328ee gldisplay: tentative proper context collision detection
Fixes
tee name=t ! queue ! gliamgesink t. ! queue ! glimagesink
2015-03-15 14:43:10 +00:00
Víctor Manuel Jáquez Leal
d925e7fd19 glupload: move meta-data copy into gst-gl library
In some upload implementations the out buffer has more than one references,
turning the buffer not writable, so it won't be possible to modify its
meta-data.

This patch moves the meta-data copy before increasing the reference of the out
buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=746173
2015-03-14 19:53:02 +00:00
Matthew Waters
48f8b5b46b glmemory: fix the slight difference between EXT_rg and ARB_rg
GL_EXT_texture_rg doesn't take sized formats for the internalformat
parameter of TexImage* but GL_ARB_texture_rg and GL(ES)3 do.

https://bugzilla.gnome.org/show_bug.cgi?id=732507
2015-03-14 18:59:27 +00:00
Matthew Waters
fa61e8e4ce glsyncmeta: make context to wait and set sync explicit
otherwise we may wait on a sync object in same context by accident
2015-03-14 16:53:46 +00:00
Julien Isorce
802bf79998 gl: add GstGLDisplayCocoa
https://bugzilla.gnome.org/show_bug.cgi?id=746012
2015-03-14 08:38:03 +00:00
Julien Isorce
90f0cfceb7 gl/cocoa: do not terminate loop in gst_gl_window_cocoa_close
It is now done in _finalize.

Fix regression introduced by
"gl/window: create the main loop/context on init/finalize"
bc7a7259f3
2015-03-14 07:49:14 +00:00
Julien Isorce
2d593b4c26 gl: avoid overwriting display and context to NULL
It happens when the application provides display
and/or context.
2015-03-13 18:30:30 +00:00
Matthew Waters
a29a18cc3a glshader: attribute locations are -1 on error 2015-03-13 17:41:17 +00:00
Neos3452
40a4530c5d glshader: prevent from getting attributes without vertex shader
It doesn't make sense to query for vertex attributes without a vertex
shader. Moreover this is causing a crash on OSX.

https://bugzilla.gnome.org/show_bug.cgi?id=746168
2015-03-13 17:35:18 +00:00
Matthew Waters
773f9fa6ff glupload: unref the bufferpool 2015-03-13 12:40:04 +00:00
Matthew Waters
34485c9976 gl: get the context from basemixer/basefilter 2015-03-13 12:30:20 +00:00
Matthew Waters
91b7642c48 gl: retreive the gldisplay/app gl context as soon as possible
fixes the usage of gst_gl_display_filter_gl_api
2015-03-13 12:30:20 +00:00
Julien Isorce
daef98e3e6 glcolorconvert: cache indices in a buffer object 2015-03-12 18:19:57 +00:00
Matthew Waters
66ccdab09a gl/cocoa: avoid deadlock when creating context on the main thread.
Make window/view creation async so that it is possible to
gst_gl_context_create from the main thread.
2015-03-12 16:45:51 +00:00
Matthew Waters
ef0bd30c87 gl: store the list of contexts within gldisplay
Removes the reliance on the allocation query to propogate GL contexts.

Allows thread safely getting a context for the a specific thread.
2015-03-12 16:45:51 +00:00
Matthew Waters
cebdf84c81 glcontext: store the thread current context 2015-03-12 16:45:51 +00:00
Matthew Waters
5a867ddc47 glfilter: don't use the library upload/convert objects 2015-03-12 16:45:50 +00:00
Matthew Waters
0c800027ba glupload: implement propose_allocation pool handling for glmemory upload 2015-03-12 16:45:50 +00:00