Commit graph

3596 commits

Author SHA1 Message Date
Stefan Sauer
7e4efce310 audioaggregator: improve readability in offset calculation
Don't reuse the offset variables will contain a sample offset for an
intermediate time value. Instead add a segment_pos variable of type
GstClockTime for this. Use The clock-time macros to check if we got
a valid time.
2017-10-15 10:29:20 +02:00
Stefan Sauer
cae591ac06 audioaggregator: move comment to the place it is meant to be
This probably got shifted after some changes.
2017-10-14 18:20:30 +02:00
Tim-Philipp Müller
90ec5e580b videoaggregator: use GstFlowReturn for flow returns 2017-10-13 11:46:09 +01:00
Stefan Sauer
ae8ee0315e audioaggregator: remove buffer!=NULL check
Acording to the logic this cannot happen (we already check this before). So
add a assert like we do above and remove the check. This make it clearer that
we check for the offset range.
Also remove a dead assignment since we reassign this a few lines below.
2017-10-05 18:12:29 +02:00
Stefan Sauer
d8ef396fb0 audioaggreator: update docs
Remove wrote references to collectpads. Document the units.
2017-10-05 17:57:35 +02:00
Havard Graff
22f0f11abf meson: remove vs_module_defs
The GST_EXPORT should handle it.
2017-10-05 13:57:48 +01:00
Rico Tzschichholz
4a60566999 meson: Fix namespace and add some missing args in the gir generation 2017-10-05 13:56:46 +01:00
Stefan Sauer
ea5900d12f audioaggregator: pass blocksize to mix_buffer()
No need to recalc the value twice per run. Establishes that it is the same
value.
2017-10-05 08:57:09 +02:00
Stefan Sauer
afa3b968a0 audioaggregator: rename _fill_buffer() to _queue_new_buffer()
It does not fill a buffer. Rename it and add a short comment.
2017-10-05 08:57:09 +02:00
Stefan Sauer
7d97004dd7 aggregator: cleanup event forwarding
Don't copy the whole event struct. Set the input params when we call the
forwarding helper. Initialize the internal fields and return values in the
helper.
2017-10-05 08:57:09 +02:00
Stefan Sauer
324977fd7c aggregator: simplify src_event
Avoid extra ref/unref, we have a ref and do_seek unrefs. Just return the result
as we have. This lets us remove the local var plus the label.
2017-10-05 08:57:09 +02:00
Reynaldo H. Verdejo Pinochet
0f71d2e408 Use proper GtkDoc notation for NULL/FALSE/TRUE 2017-10-03 14:35:48 -07:00
Reynaldo H. Verdejo Pinochet
88fcf303c5 adaptivedemux: fix typos 2017-10-03 14:35:48 -07:00
Cassandra Rommel
47fd4d391e gl: Use GstGLDisplayEGL directly instead of creating a GstGLDisplayVIVFb subclass
This simplifies the code a lot without any functional changes apart from
not closing the display connection. Closing the display connection is
not safe to do as it is shared between all other code in the same
process and no reference counting or anything happens at the platform
layer.
2017-10-03 10:14:51 +02:00
Stefan Sauer
2f62217981 audioaggregator: reduce variable scope
This is a non-functional change that makes the code more alike to the previous
check. I should be more obvious when we drop a buffer.
2017-10-02 17:01:36 +02:00
Stefan Sauer
81bbdd9fcd audioaggregator: update comment for aggregate
Replace collect-pads left-over. Remove first paragraph, we're not doing this.
Remove 3), 4) since this is not per pad.
2017-10-02 17:01:36 +02:00
Justin Kim
c74d557127 glcontext_egl: Add gstglwindow header
Otherwise, compiler complains implicit function declaration warning.

https://bugzilla.gnome.org/show_bug.cgi?id=788413
2017-10-02 13:33:40 +02:00
Ponnam Srinivas
5df10fa6f3 glfilter: Unmap video frame in error case
https://bugzilla.gnome.org/show_bug.cgi?id=788194
2017-09-28 13:59:14 +03:00
Haihua Hu
b738774566 gl/viv-fb: transform screen coordinate to viewport coordinate
In y direction, screen coordinate are opposite to viewport coordinate.

https://bugzilla.gnome.org/show_bug.cgi?id=787394
2017-09-19 12:53:53 +10:00
Haihua Hu
039c983a9f gl/viv-fb: fix wrong pos (x,y) calculate in queue_resize
queue_resize viewport coordinate calculate is wrong and
force queue_resize when do _set_render_rectangle in case
user input pos changed

https://bugzilla.gnome.org/show_bug.cgi?id=787394
2017-09-19 12:53:45 +10:00
Stefan Sauer
64526327c9 audioaggregator: fix typo in comment 2017-09-17 21:06:48 -07:00
Stefan Sauer
a2ce51984c aggregator: register func for do_events_and_queries
This fixes logging the func ptr from _iterate_sinkpads().
2017-09-17 21:06:48 -07:00
Stefan Sauer
fcb074af6f aggregator: only set clipped_buffer to NULL if needed 2017-09-17 12:31:38 -07:00
Stefan Sauer
864cfec839 aggregator: rename check_events
This function also handles queries. Update the code to loop until all events and
queuries are handled.
2017-09-17 12:31:38 -07:00
Stefan Sauer
f6176351a2 aggregator: add a few more comments to PadPrivate struct 2017-09-17 12:31:38 -07:00
Stefan Sauer
54d44f31e3 aggregator: rename buffers field to data
The queue stores buffers, events and queries.
2017-09-17 11:40:00 -07:00
Stefan Sauer
41a032470e aggregator: documentaion fixes
Fix typos and remove params docs, where the param was moved.
2017-09-17 10:20:09 -07:00
Philippe Renon
085f875a24 player: introduce helper method to remove seek source
this incidentally fixes a missing g_source_destroy() call in _main()

https://bugzilla.gnome.org/show_bug.cgi?id=787727
2017-09-15 17:28:12 +03:00
Philippe Renon
9fce29497d player: remove duplicate state_ret check in play internal
https://bugzilla.gnome.org/show_bug.cgi?id=787727
2017-09-15 17:28:12 +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
Matthew Waters
3f2a3d0db9 gl/wayland: call eglTerminate() before wl_display_disconnect()
Calling these two functions in the wrong order will result in
use-after-free inside wayland.

https://bugzilla.gnome.org/show_bug.cgi?id=787293
2017-09-05 21:16:33 +10: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
Matthew Waters
63c582d685 gl: fix build for ios/win32/android after 2fd84a6c
Some missing GL includes.
2017-08-28 12:57:47 +10:00
Tim-Philipp Müller
3c4dd9a7e5 isoff: make debug category private
Otherwise it shows up in .def file in autotools build.
2017-08-26 13:08:27 +01:00
Tim-Philipp Müller
0829891c2c isoff: export symbols 2017-08-26 12:02:51 +01:00
Seungha Yang
98576325e3 isoff: Add parsing mss specific tfrf and tfxd boxes
This code is imported from mssdemux's tfxd/tfrf parsing function

https://bugzilla.gnome.org/show_bug.cgi?id=777825
2017-08-25 17:21:32 -07:00
Seungha Yang
3db9152ec6 isoff: Add parsing moov and tfdt
To extract isobmff level timestamp, moov and tfdt parsing is required.

https://bugzilla.gnome.org/show_bug.cgi?id=777825
2017-08-25 17:21:11 -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
Tim-Philipp Müller
4686dc47e4 gl: install new glfuncs.h header 2017-08-25 20:38:08 +01:00
Matthew Waters
0fa19c150f gl/meson: add build for the vivante fb backend 2017-08-23 16:38:03 +10:00
Matthew Waters
78e73cd359 meson: build allocators library 2017-08-23 16:38:02 +10:00
Matthew Waters
556bed08a1 gl/meson: detect valid configuration from enabled apis/platform/winsys 2017-08-23 16:38:02 +10:00
Matthew Waters
a03f5f5de1 gl/build: also check for the GL/gl.h header
In order to successfully build against a detected libGL library we also need headers
2017-08-23 16:38:02 +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
Philippe Normand
afa8bf425a gl/cocoa: fix build after commit 2fd84a6c 2017-08-22 16:19:32 +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
Philippe Normand
8a29da8023 player: notify of media-info update after duration change
This is a follow-up of 98b0802a98

https://bugzilla.gnome.org/show_bug.cgi?id=786201
2017-08-15 09:38:55 +01:00
Matthew Waters
cbf4a44426 adaptivedemux: start/stop the manifest update loop on liveness or periodic update changes
Scenario:
A manifest starts out in live mode but then the recording is finalized
and a subsequent update changes the state to a non-live manifest when
the server has finished recording/transcoding/whatever with the full
list of fragments.

Without this patch, the manifest update task is never stopped on the
live->non-live transition and will busy loop, burning through one CPU
core.

https://bugzilla.gnome.org/show_bug.cgi?id=786275
2017-08-15 15:19:32 +10:00
Tim-Philipp Müller
ddf755b75d gl: fix build
Include private headers for parent class debug categories.
2017-08-14 12:12:34 +01:00
Tim-Philipp Müller
58a92767d4 gl: add missing new header files
https://bugzilla.gnome.org/show_bug.cgi?id=786170
2017-08-14 10:11:00 +01:00
Tim-Philipp Müller
a971aa4ba4 gl: make some debug categories private
They weren't supposed to be public.

https://bugzilla.gnome.org/show_bug.cgi?id=786170
2017-08-14 10:08:01 +01:00
Philippe Normand
98b0802a98 player: propagate updated duration to media_info
https://bugzilla.gnome.org/show_bug.cgi?id=786201
2017-08-14 09:21:29 +01:00
Tim-Philipp Müller
0b8f1f9e54 gl: don't export symbols that are not supposed to be public
Make a bunch of symbols private that are currently leaked
accidentally because they have a gst_* prefix and are used
internally. We mark those we can't make static with
G_GNUC_INTERNAL so that they get hidden with the autotools
build as well (although we could just pass -fvisibility=hidden
there too).
2017-08-13 11:09:25 +01:00
Tim-Philipp Müller
957cc0e51a gl: sprinkle more GST_EXPORT 2017-08-11 14:55:48 +01:00
Tim-Philipp Müller
b77948d511 mpegts: make accidentally exported debug category symbol private
Was never in header files, was just exported by accident because
of the gst_ prefix of the variable name.
2017-08-11 14:39:07 +01:00
Tim-Philipp Müller
2445021120 codecparsers: make debug categories static
They're only used internally. The VP9 parser's debug
category symbol was accidentally exported.
2017-08-11 14:34:34 +01:00
Mathieu Duponchelle
ca8d5f2872 videoaggregator: use colorimetry from find_best_format.
This increases the chances that we won't need to do any conversion
for a given pad.

https://bugzilla.gnome.org/show_bug.cgi?id=786078
2017-08-10 13:55:59 +02:00
Mathieu Duponchelle
388b7ee275 videoaggregator: improve find_best_format heuristic.
The goal here is to minimize the work needed to bring all images
to a common format. A better criteria than the number of pads
with a given format is the number of pixels with a given format.

https://bugzilla.gnome.org/show_bug.cgi?id=786078
2017-08-10 13:55:59 +02:00
Tim-Philipp Müller
212df08f4e gl, wayland: mark more declared functions with GST_EXPORT 2017-08-10 09:09:22 +01:00
Tom Bailey
4064683d36 adaptivedemux: Fix leak of pad probes in GstAdaptiveDemuxStream
This commit ensures that the idle probe which GstAdaptiveDemuxStream
adds to the upstream source pad is removed after use. Previously a new
probe was added to the pad whenever a fragment was downloaded, meaning
the number of pad probe callbacks being executed increased continually.

https://bugzilla.gnome.org/show_bug.cgi?id=785957
2017-08-08 16:04:42 +01:00
davecraig@unbalancedaudio.com
2ebcfcbc43 adaptivedemux: Stop prepared streams as well as running streams
There can be twice as many stream tasks running as there are output
pads for playback of variant HLS playlists. Half of them are the
current pads, and the other half are the pads that are about to be
switched to due to a bitrate change.
The old code only stopped the current streams which could result
in a deadlock on stopping the pipeline. The changes force stopping
and joining of any prepared streams too.

https://bugzilla.gnome.org/show_bug.cgi?id=785987
2017-08-08 12:24:21 +03:00
Sebastian Dröge
4a45a01b5e player: Constify the config argument to gst_player_get_video_snapshot()
This structure is only ever read from.
2017-08-08 11:05:39 +03:00
Sebastian Dröge
c28f2f6ce8 videoaggregator: Don't mix up width and height
CID 1416129
2017-08-04 11:08:18 +03:00
Thibault Saunier
806ff70590 compositor: Add support for crossfade blending
Crossfading is a bit more complex than just having two pads with the
right keyframes as the blending is not exactly the same.

The difference is in the way we compute the alpha channel, in the case
of crossfading, we have to compute an additive operation between
the destination and the source (factored by the alpha property of both
the input pad alpha property and the crossfading ratio) basically so
that the crossfade result of 2 opaque frames is also fully opaque at any
time in the crossfading process, avoid bleeding through the layer
blending.

Some rationnal can be found in https://phabricator.freedesktop.org/T7773.

https://bugzilla.gnome.org/show_bug.cgi?id=784827
2017-08-03 12:59:43 -04:00
Julien Isorce
b89c94b37e gl: return NULL mem if eglCreateImage failed
Found on rpi when gpu_mem is too low so there is not enough memory to
create the eglimage. But still gst_buffer_pool_acquire_buffer succeeded.
And it leads to a CRITICAL assert:
  gst_egl_image_get_image: assertion 'GST_IS_EGL_IMAGE (image)' failed

https://bugzilla.gnome.org/show_bug.cgi?id=785518
2017-08-01 10:32:36 +01:00
Stefan Sauer
1db572bf4f aggregator: log all events
We already log a few events explicitly, just log them all with more detail.
2017-07-30 12:19:35 +02:00
Tim-Philipp Müller
6ac76b3dd7 aggregator: fix header formatting 2017-07-29 16:54:38 +01:00
Matthew Waters
25ec84fa63 gl: document missing GstGLShader functions 2017-07-28 16:58:38 +01:00
Matthew Waters
3d2785965d gl/docs: some documentation updates
Add some missing/incomplete docs
2017-07-28 11:00:12 +01:00
Matthew Waters
23da53306f gl/docs: correctly name our objects in the documentation GstGl -> GstGL 2017-07-27 12:40:30 +10:00
Matthew Waters
bb3478da5b gl/docs: document GstGLFormat enum 2017-07-27 12:40:30 +10:00
Stefan Sauer
d3c8462e6c audioaggregator: use local var
Instead of the self->priv-> deref use the local var we created already.
2017-07-26 09:43:52 +02:00
Sebastian Dröge
7c3bfbb512 aggregator: Remove the GAP event from the queue before queueing up the GAP buffer
Otherwise check_events() will not remove the GAP event (as the queue
tail is not the event anymore but the GAP buffer), then the GAP buffer
is handled, then the GAP event is handled again, ... forever.
2017-07-24 18:38:57 +03:00
Tim-Philipp Müller
38726eb341 gl: fix g-i annotations for glframebuffer
gstglframebuffer.c:176: Error: GstGL: annotations not supported for tag "Since:".
2017-07-21 08:43:45 +01:00
Alessandro Decina
85e5c7b4d9 meson: specify fallback for libgmodule_dep
Fixes build with glib built as a subproject.
2017-07-20 17:51:41 +10:00
Tim-Philipp Müller
93c379a3fc video: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
059cc73487 uridownloader: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
ce8485a585 player: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
00bc9d7070 opencv: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
659fa31cf9 mpegts: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
8de28a4226 photography: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
6f47205321 insertbin: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
d9354b83bb codecparsers: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
7a28f62222 basecamerabinsrc: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
670c7433a6 aggregator: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
859f96615f audio: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
97e1fb6376 allocators: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Tim-Philipp Müller
9fb266ce5c adaptivedemux: mark symbols explicitly for export with GST_EXPORT 2017-07-18 12:46:57 +01:00
Edward Hervey
9da1328283 meson: Fix GLES2 check
On systems without pkg-config, we have the the library present but
not the headers

https://bugzilla.gnome.org/show_bug.cgi?id=785010
2017-07-17 08:52:57 +02:00
Philippe Normand
dcb35318e9 glwindow_cocoa: fix video overlay support
Make sure the window handle is configured after the NSWindow was created.

https://bugzilla.gnome.org/show_bug.cgi?id=767462
2017-07-16 10:21:29 +01:00
Matthew Waters
24e3cbf13b gl/cocoa: keep refs over async operations
Avoids dereferencing dead objects

What happens in the autovideosink case is that context 1 is created and
destroyed before all the async operations hae executed on the associated
window.  When the delayed operations execute, they then reference dead
objects and crash.

We fix this by keeping refs over all async operations so the object
cannot be deleted while async operations are in flight.

https://bugzilla.gnome.org/show_bug.cgi?id=782379
2017-07-16 12:50:31 +10:00
Matthew Waters
1656d8000d gl/window/x11: implement set_render_rectangle support
https://bugzilla.gnome.org/show_bug.cgi?id=782959
2017-07-16 12:50:31 +10:00
Stefan Sauer
b0e2b2b71b aggregator: remove duplicated code fragment
This code already runs above when (event || query).
2017-07-13 22:02:17 +02:00
Stefan Sauer
893c11136b aggregator: code cleanups
Fix comment typos, some copy'n'paste in logging. Add more doc comments.
2017-07-13 22:02:17 +02:00
Edward Hervey
50f92fab89 adaptivedemux: Workaround for live seek ranges when advancing
This is a workaround for a regression introduced by
f4190a49c0
 ( adaptivedemux: Check live seeking range more often )

The goal of the previous commit was to be able to cope with non-1.0
rates on live streams which have a "seeking window" (i.e. the server
keeps around quite a bit of the live stream so you can seek back into
it).

Without that commit, two different kind of issues would happen:
* When doing reverse playback, you would never check whether you
  are outside of the seekable region. And would then continuously
  try to download fragments that are no longer present.
* When doing fast forward, you would end up requesting fragments
  which are not present yet.

In order to determine whether one was *really* outside of the seekable
window, we check whether the current stream position is still
within the seekable region.

The *problem* though with that commit is that it assumes that subclasses
will return continuously updated seeking ranges (i.e. dependent on the
current time), which is *NOT* the case.

For example:
* dashdemux does use the current UTC to determine the seekable region
* hlsdemux uses the values from the last updated manifest

Therefore if one downloads fragments faster than realtime, for HLS
we would end up at the end of the last manifest seekable range, and
the previous commit would consider the stream as being ended... which
is not the case.

In the long run, we need to figure out a way to cope with non-1.0
rates on live streams for all types of stream (including HLS).

https://bugzilla.gnome.org/show_bug.cgi?id=783075
2017-07-13 14:44:11 +02:00
Thiago Santos
33afa6bd18 adaptivedemux: small refactor to avoid repeated code
Move segment event update to a function

https://bugzilla.gnome.org/show_bug.cgi?id=773159
2017-07-12 10:13:39 +02:00
Edward Hervey
1df725e5cd adaptivedemux: Handle prepared streams on seeks
This is a race that was exposed by the {hls|dash}.scrub_forward_seeking
validate test.

The "race" is that a subclass might want to change format, causing
a new stream to be created (but not exposed/switched yet) and put on the
prepared_streams list. That stream will have values (including pending
segment) from the pre-seek state.

Before the stream is exposed/switched, a new seek comes in and the stream
values get updated ... but the ones that will be changed don't get updated
causing them to push out wrong segments once they are exposed.

https://bugzilla.gnome.org/show_bug.cgi?id=773159
2017-07-12 10:13:39 +02: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
Jan Schmidt
cb3a65a19a glupload: Don't throw assertions on invalid allocation query
basesrc can send an allocation query with no caps, in which
case we should just fail it without throwing assertions.
2017-07-12 15:48:23 +10:00
Nicolas Dufresne
2f8980d70d Revert "adaptivedemux: Allow application to force EOS"
This reverts commit 8a070cf9af.
2017-07-07 17:20:38 -04:00