Commit graph

6943 commits

Author SHA1 Message Date
Mathieu Duponchelle
22981e8a42 Port to latest GstAggregator segment API
The aggregator segment is now exposed on the src pad

https://bugzilla.gnome.org/show_bug.cgi?id=793944
2018-03-01 15:33:25 +01:00
Mathieu Duponchelle
318eb61e23 audioaggregator: remove GstAudioAggregator->info
As we now require subclasses to use a subclass of
GstAudioAggregatorPad, we can reuse its info field

https://bugzilla.gnome.org/show_bug.cgi?id=793943
2018-03-01 15:33:25 +01:00
Edward Hervey
6f5c9db1cc id3v2: re-fix handling of v2.4 extended headers
The various id3v2 specs handle the extended header sizes differently
(because hey, it wouldn't be fun otherwise).

http://id3.org/id3v2.3.0 states:
"Where the 'Extended header size', currently 6 or 10 bytes, excludes
 itself."

http://id3.org/id3v2.4.0-structure states:
  Extended header size   4 * %0xxxxxxx
     Number of flag bytes       $01
     Extended Flags             $xx

   Where the 'Extended header size' is the size of the whole extended
   header, stored as a 32 bit synchsafe integer. An extended header can
   thus never have a size of fewer than six bytes.

So in id3v2.4.0 it's the *whole* extended header size (a-la ISOBMFF
atom), whereas in id3v2.3.0 it's the extended header size *excluding*
those 4 initial bytes.

And for other versions, god knows..

Fixes regression introduced in commit da607005.

https://bugzilla.gnome.org/show_bug.cgi?id=792983
2018-03-01 12:42:10 +00:00
Mathieu Duponchelle
10835e9919 audioaggregator: refactor conversion API
For the rationale, see:

https://bugzilla.gnome.org/show_bug.cgi?id=793917

Also test audiomixer conversion of current output buffer
2018-03-01 00:40:24 +01:00
Jan Schmidt
c920d994ab glcolorconvert: Fix a typo in a debug message 2018-03-01 02:14:07 +11:00
Jan Schmidt
f15f60a062 glfilter: Support non-2D texture targets
Allow for sub-classes to change pad templates to
support other texture targets, and bind input textures
accordingly.

When setting the caps, also store the texture target.

By default, glfilter only reports 2D texture targets
in the default caps, but sub-classes can change that
and it would be nice if they could easily find out
which texture targets were negotiated.

This adds 2 fields to the public struct, but since
it's unreleased -base API, it's not an ABI break.
2018-03-01 02:14:07 +11:00
Sebastian Dröge
fae7f790be audioaggregator: Document that the pad's audio info is read-only and needs the object lock
Also fix indentation in the header a bit.
2018-02-28 15:23:25 +02:00
Víctor Manuel Jáquez Leal
f3d98fa1a3 roi-meta: duplicate params when copying meta
When copying the meta the params list should be copy too into the
new meta.

https://bugzilla.gnome.org/show_bug.cgi?id=793883
2018-02-27 14:27:42 -05:00
Nicolas Dufresne
d796188cf1 meson: Don't install GL GBM headers 2018-02-27 13:16:01 -05:00
Nicolas Dufresne
fbc2375d57 gl: Move DRM_CFLAGS into gst-gl.m4 2018-02-27 13:12:59 -05:00
Nicolas Dufresne
b8bc2b87d0 gl: Add missing gbm directory to dist dir
This fixes make distcheck
2018-02-26 07:46:26 -05:00
Carlos Rafael Giani
ee59537657 gl: Add DRM cflags
This prevents cross compilation errors like:

usr/include/xf86drm.h:40:10: fatal error: drm.h: No such file or directory

These are caused because gstgldisplay_gbm.h includes xf86drm.h .

https://bugzilla.gnome.org/show_bug.cgi?id=793837
2018-02-26 07:27:20 -05:00
Sebastian Dröge
783e450a60 pbutils: Fix compilation of last commit 2018-02-26 11:55:46 +02:00
Thiago Santos
006c7181ed pbutils: Move locale dir initialization to a separate function and do lazy initialization
It is the only thing gst_pb_utils_init()  does and it could be
automatically called from the places in pbutils it is needed.

After 1.14 we should deprecate gst_pb_utils_init().

https://bugzilla.gnome.org/show_bug.cgi?id=793611
2018-02-26 11:49:04 +02:00
Nicolas Dufresne
1a97338dc7 gl: Add meson support for GBM backend
https://bugzilla.gnome.org/show_bug.cgi?id=782923
2018-02-23 21:09:45 -05:00
Carlos Rafael Giani
4df219f336 gl: Add Mesa3D GBM backend
This makes it possible to use the GStreamer OpenGL elements without a
windowing system if a libdrm- and Mesa3D-supported GPU is present

https://bugzilla.gnome.org/show_bug.cgi?id=782923
2018-02-23 21:09:45 -05:00
Nicolas Dufresne
977a2d04fd roi-meta: Fix bad doc comment syntax 2018-02-22 16:11:20 -05:00
Guillaume Desmottes
f5855d50ad videometa: add support for downstream parameters to ROI meta
The current GstVideoRegionOfInterestMeta API allows elements to detect
and name ROI but doesn't tell anything about how this information is
meant to be consumed by downstream elements.
Typically, encoders may want to tweak their encoding settings for a
given ROI to increase or decrease their quality.
Each encoder has its own set of settings so that's not something that
can be standardized.

This patch adds encoder-specific parameters to the meta which can be
used to configure the encoding of a specific ROI.

A typical use case would be: source ! roi-detector ! encoder
with a buffer probe on the encoder sink pad set by the application.
Thanks to the probe the application will be able to tell to the encoder
how this specific region should be encoded.

Users could also develop their specific roi detectors meant to be used with a
specific encoder and directly putting the encoder parameters when
detecting the ROI.

https://bugzilla.gnome.org/show_bug.cgi?id=793338
2018-02-21 12:30:10 -05:00
Mikhail Fludkov
d7397f0235 rtpbuffer.h: Add new RTPBuffer flags
These flags will be used for Forward Error Correction purposes

https://bugzilla.gnome.org/show_bug.cgi?id=792695
2018-02-21 12:45:41 +01:00
Tim-Philipp Müller
41d7356fa1 meson: fix multi-line string
https://bugzilla.gnome.org/show_bug.cgi?id=793629
2018-02-20 11:52:43 +00:00
Thiago Santos
400ea72b06 pbutils: add some missing gi annotations
For allow-none parameters
2018-02-19 11:23:40 -08:00
Tim-Philipp Müller
4fe5178957 appsrc: don't signal the GCond if no one is waiting on it
Performance optimisation: Keep track whenever the streaming
thread or the application thread are waiting on the GCond for
more space or new data, and only signal on the GCond if someone
is actually waiting. Avoids unnecessary syscalls and thus
context switches.
2018-02-19 16:04:22 +00:00
Tim-Philipp Müller
5a5a1f0dc6 appsrc: use GstQueueArray instead of GQueue for internal item queue
Performance optimisation.

Avoids alloc/free churn for the queue's list nodes.

Depends on new API in GstQueueArray in core.
2018-02-19 16:04:15 +00:00
Tim-Philipp Müller
0846ceef59 appsink: don't signal the GCond if no one is waiting on it
Performance optimisation: Keep track whenever the streaming
thread or the application thread are waiting on the GCond
for more space or new data, and only signal on the GCond if
someone is actually waiting. Avoids unnecessary syscalls and
thus context switches.
2018-02-19 16:03:39 +00:00
Tim-Philipp Müller
8b22d47057 appsink: use GstQueueArray instead of GQueue for internal item queue
Performance optimisation.

Avoids alloc/free churn for the queue's list nodes.
2018-02-19 16:03:06 +00:00
Víctor Manuel Jáquez Leal
1784f62895 gl/wayland: Memory leak when display couldn't connect
When trying to create a wayland display, it may fail because there
is not actually display to connect. It this case NULL is returned
but the created instance is not freed.

This patch unrefs the failed display.

https://bugzilla.gnome.org/show_bug.cgi?id=793483
2018-02-16 13:56:50 +01:00
Mathieu Duponchelle
06ae49f525 audio-converter: fix declaration-after-statement 2018-02-15 21:08:08 +01:00
Mathieu Duponchelle
9cf4293bde audio-converter: add a convenience conversion method
This is useful from python bindings

https://bugzilla.gnome.org/show_bug.cgi?id=793492
2018-02-15 20:51:30 +01:00
Mathieu Duponchelle
6a4a82f355 gst_audio_converter_new: update annotations
https://bugzilla.gnome.org/show_bug.cgi?id=793492
2018-02-15 20:51:30 +01:00
Mathieu Duponchelle
9046e6001b AudioConverter: register as boxed type
https://bugzilla.gnome.org/show_bug.cgi?id=793492
2018-02-15 20:51:30 +01:00
Mathieu Duponchelle
3d50d0e8b0 audio-info: annotate gst_audio_info_set_format
https://bugzilla.gnome.org/show_bug.cgi?id=793492
2018-02-15 20:51:30 +01:00
Edward Hervey
2c4dfa101a Update disted backup ORC files 2018-02-15 07:14:20 +01:00
Mathieu Duponchelle
73d2031ffc gstaudiopack.orc: pack_u32be_swap: actually swap
Fixes:

gst-launch-1.0 audiotestsrc ! audio/x-raw, format=U32BE ! \
audioconvert ! autoaudiosink
2018-02-15 01:32:54 +01:00
Nicolas Dufresne
f2726a2b4a doc: Fix since marker in dmabuf to match a stable release 2018-02-14 14:16:14 -05:00
Nicolas Dufresne
7d8208912a doc: Remove extra . after Since marker 2018-02-14 14:14:58 -05:00
Nicolas Dufresne
f0cbe02541 doc: Fix Since 1.X marker on new video formats 2018-02-14 14:10:22 -05:00
Tim-Philipp Müller
54655196e7 audioaggregator: remove declaration for function that doesn't exist 2018-02-13 17:16:53 +00:00
Tim-Philipp Müller
4984c84505 docs: add GstAudioAggregator to docs 2018-02-13 17:10:42 +00:00
Tim-Philipp Müller
4647d6684f GstAudioAggregator: hook up to build
https://bugzilla.gnome.org/show_bug.cgi?id=791218
2018-02-13 16:09:09 +00:00
Tim-Philipp Müller
ab758a9a39 audioaggregator, audiomixer, audiointerleave: move from -bad to -base
https://bugzilla.gnome.org/show_bug.cgi?id=791218
2018-02-13 15:56:49 +00:00
Tim-Philipp Müller
992fb96843 gl: g-i: expose platform-specific display API in bindings
https://bugzilla.gnome.org/show_bug.cgi?id=786391
2018-02-08 17:00:31 +00:00
Sebastian Cote
9e77d9cacf rtspconnection: also add Content-Type to HTTP POST request when tunnelling
When the GstRTSPConnection class sends a RTSP over HTTP tunnelling
request, the HTTP Content-Type header is missing from the HTTP POST
request.

This isn't a problem with most servers, but there are servers that
rejects the request without there also being a Content-Type header.

RFC 1945:
Any HTTP/1.0 message containing an entity body should include a
Content-Type header field defining the media type of that body.

Apple Dispatch 28:
QuickTime Streaming uses the "application/x-rtsp-tunnelled" MIME
type in both the Content-Type and Accept headers. This reflects
the data type that is expected and delivered by the client and server.

https://bugzilla.gnome.org/show_bug.cgi?id=793110
2018-02-08 16:08:03 +00:00
Matthew Waters
bc604f3597 gl: remove more deprecated type aliases
Additions on top of

https://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=32a17f313494cbadaf8ec4e337d742e8d7e1b67b
https://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=c8b99139b1ef3f8891548b0f2607a135917c338e
2018-02-08 21:14:56 +11:00
Matthew Waters
54701ceb40 gl/display/egl: Fix precondition in display_egl_get_from_native
We don't really want type=NONE as input and it was already impossible
for that to occur with the other condtions.

CID #1427144
2018-02-08 16:16:59 +11:00
Nicolas Dufresne
bc3f9b53fa video: Fix GRAY10_LE32 depth information 2018-02-07 14:48:00 -05:00
Sebastian Dröge
30833f6242 video: Change struct padding from void* to gpointer
gobject-introspection causes inconsistent type information for the
former and we use gpointer everywhere else.
2018-02-07 18:40:49 +02:00
Nicolas Dufresne
eb7565b60e video-format: Fix 10LE32 formats packing function
The source offset (soff) was not incremented for each component and then
each group of 3 components were inverted. This was causing a staircase
effect combined with some noise.

https://bugzilla.gnome.org/show_bug.cgi?id=789876
2018-02-06 16:18:40 -05:00
Philippe Normand
c8b99139b1 glcontext: remove deprecated type alias
Now for real without un-needed comments...
2018-02-06 16:13:07 +00:00
Philippe Normand
32a17f3134 glcontext: remove deprecated type alias 2018-02-06 16:08:47 +00:00
Matthew Waters
90198daed1 gl: some annotation fixes 2018-02-05 14:58:06 +11:00
Matthew Waters
576f4e0c64 gl/build/meson: fix gl_api variable names 2018-02-05 14:56:07 +11:00
Matthew Waters
e620cf32cf glmemory: fixup GL_RGB565 usage when performing texsubimage
An additional change for the texsubimage use case on top of
https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=c2b2c68beaddbea0ec4fe7b099507cc492f6dd7c
https://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=ea6bed111bab9b394d787f7760c6a3b953630d3a

https://bugzilla.gnome.org/show_bug.cgi?id=783066
https://bugzilla.gnome.org/show_bug.cgi?id=792584
2018-02-01 23:30:51 +11:00
Tim-Philipp Müller
c443e33a3a meson: use built-in pic kwarg when building static helper libs
instead of passing -fPIC manually.
2018-01-30 20:33:17 +00:00
Nicolas Dufresne
17b118c120 glimagesink: Allow resetting render rectangle
As documented, passing -1 to x and/or y should reset the render
rectangle to the window/display size.

https://bugzilla.gnome.org/show_bug.cgi?id=792798
2018-01-30 09:58:14 +00:00
Nicolas Dufresne
c70dd75f12 video-overlay: Add helpers for render-rectangle property
This is a set of helper that makes it easy to enable the render
rectangle to be controllable through a property.

https://bugzilla.gnome.org/show_bug.cgi?id=792798
2018-01-29 16:26:09 +00:00
Nicolas Dufresne
c256e96047 video: Add NV16_10LE32 support
This adds a 10 bit variant for NV16 packed into 32 bits little endian
words. The MSB 2 bits are padding. This format is used on Xilinx SoC and
identified with the FOURCC XV20.

https://bugzilla.gnome.org/show_bug.cgi?id=789876
2018-01-29 16:01:34 +00:00
Nicolas Dufresne
f7a27d7403 video: Add GRAY10_LE32 support
This add a 10bit variant of gray scale packed into 32bits little endian
words. The MSB 2 bits are padding and should be ignored. This format is
used on Xilinx SoC and is identified with the FOURCC XV10.

https://bugzilla.gnome.org/show_bug.cgi?id=789876
2018-01-29 16:01:34 +00:00
Nicolas Dufresne
2b9725d0df video: Add NV12_10LE32 support
This adds a 10bit variant for NV12 which packs 3 10bit components
into little endian 32bit words. The MSB 2 bits are padding and should be
ignored. This format is used on Xilinx SoC and is identified with there
with the FOURCC XV15

https://bugzilla.gnome.org/show_bug.cgi?id=789876
2018-01-29 16:01:34 +00:00
Tim-Philipp Müller
29534c3829 Update for renamed aggregator pad API
https://bugzilla.gnome.org/show_bug.cgi?id=791204
2018-01-23 09:01:00 +00:00
Tim-Philipp Müller
a1af74feda tag: id3v2: don't leak stack pointer outside of block where it's valid
https://bugzilla.gnome.org/show_bug.cgi?id=788548
2018-01-19 20:43:57 +00:00
Roland Peffer
0ffc2015aa meson: gl: fix build on windows
https://bugzilla.gnome.org/show_bug.cgi?id=791772
2018-01-16 13:59:08 +00:00
Tim-Philipp Müller
df0831ce57 meson: fix check whether both gles2 and opengl headers can be included
cc.compiles() doesn't support the prefix: kwarg currently, so it
never had any effect.

https://github.com/mesonbuild/meson/issues/2364
https://bugzilla.gnome.org/show_bug.cgi?id=787964
2018-01-16 11:27:18 +00:00
Matthew Waters
b25413fb1c gl/wayland: move roundtrip on show to window thread
This makes it thread safe and fixes a possible deadlock.

Keeping the roundtrip off the window thread will result in two different
threads call wl_display_dispatch_queue() for the same queue which
violates the assumption for _dispatch_queue()'s thread-safety
guarantees.

https://bugzilla.gnome.org/show_bug.cgi?id=788754
https://bugzilla.gnome.org/show_bug.cgi?id=792156
https://bugzilla.gnome.org/show_bug.cgi?id=758984
2018-01-04 15:39:36 +11:00
Tim-Philipp Müller
c117460420 glcolorconvert: re-enable -Wformat-nonliteral warning
We can pass string constants here to g_strdup_printf(),
so do so and re-enable the -Wformat-nonliteral warning
we had to disable when merging the opengl libs.
2018-01-03 09:21:49 +00:00
Tim-Philipp Müller
ae4f9aebcc glcolorconvert: fix missing printf arg for apple rectangular texture case
Found by -Wformat-nonliteral (to be re-enabled in a separate commit).
2018-01-03 09:21:38 +00:00
Philippe Normand
81f8257354 gl: cocoa: fix formatting for function definition
This is a follow-up of 5d35e1fa15
2017-12-30 12:29:13 +00:00
Philippe Normand
5d35e1fa15 gl: cocoa: Implement set_render_rectangle
Resize the internal NSView according to the provided render rectangle.

https://bugzilla.gnome.org/show_bug.cgi?id=791445
2017-12-30 12:24:12 +00:00
Tim-Philipp Müller
d679f752f1 gl: don't link to system gstallocators
We already link to the in-tree gstallocators, no need
to link to it again here, which also ends up being the
system gstallocators lib.

https://bugzilla.gnome.org/show_bug.cgi?id=791956
2017-12-26 15:36:44 +01:00
Miguel Paris
bae3636197 rtp: fix gst_rtp_buffer_ext_timestamp taking into account backwards
If timestamp goes forwards more than allowed, we consider that the
timestamp belongs to the previous counting, so the extended timestamp
is unwrapped.

https://bugzilla.gnome.org/show_bug.cgi?id=783443
2017-12-21 17:27:42 -05:00
Edward Hervey
558b37d889 audioaggregator: Don't leak pads
all audioaggregator subclasses were leaking the first sink pad :)
2017-12-20 15:03:44 +01:00
Mathieu Duponchelle
164b5a7f94 audioaggregator: implement input conversion
https://bugzilla.gnome.org/show_bug.cgi?id=786344
2017-12-19 23:39:37 +01:00
Tim-Philipp Müller
0dd66648c3 gl: fix up a few more #if HAVE_FOO
error: "HAVE_PNG" is not defined, evaluates to 0 [-Werror=undef]
2017-12-19 16:51:24 +00:00
Tim-Philipp Müller
6559bd75ac allocators: fix meson build after physmem move from -bad 2017-12-19 12:44:35 +00:00
Josep Torra
70f93db181 gl: cocoa: fix a warning when building in MacOS 10.12
gstglwindow_cocoa.m:186:60: error: incompatible pointer types sending 'GstGLContextCocoa *'
(aka 'struct _GstGLContextCocoa *') to parameter of type 'GstGLContext *' (aka 'struct _GstGLContext *')
2017-12-19 12:42:29 +00:00
Víctor Manuel Jáquez Leal
7b8108a4ca gl: display: demote error level at display creation error
https://bugzilla.gnome.org/show_bug.cgi?id=791391
2017-12-19 12:41:00 +00:00
Tim-Philipp Müller
8227135f3b gl: hook up to build system
Tests and documentation will follow separately.

The mixer elements in the opengl plugin need to stay
in -bad for now since they use GstVideoAggregator.

https://bugzilla.gnome.org/show_bug.cgi?id=754094
2017-12-19 12:01:48 +00:00
Tim-Philipp Müller
59fe9c9122 gl: remove GST_USE_UNSTABLE_API bits 2017-12-19 12:01:37 +00:00
Sebastian Dröge
1aec533d21 allocators: move GstPhysMemoryAllocator abstraction from -bad to -base
This can be used in a generic way as common interface by all platforms
that, in one way or another, pass around physical memory addresses.

This is used by the gl lib and seems useful enough, so might just as
well move it next to the other allocators.

https://bugzilla.gnome.org/show_bug.cgi?id=779067
2017-12-19 12:01:26 +00:00
Tim-Philipp Müller
cdbb261d9c Move OpenGL library and plugin from -bad
Merge branch 'opengl-move'

https://bugzilla.gnome.org/show_bug.cgi?id=754094
2017-12-19 12:00:43 +00:00
Nicolas Dufresne
b769f02261 gldisplay: Prefer wayland over X11
As most Wayland compositors supports XWayland, X11 backend get
selected. This also realign better GStreamer decision to what
happens with GTK and other stack out there.
2017-12-09 19:32:31 +00:00
Nicolas Dufresne
4cb1a1ca97 gldisplay: Add missing GL API to the doc 2017-12-09 19:32:31 +00:00
Matt Fischer
c98f92ee03 gldownload: Add dmabuf exporting
This patch adds code to gldownload to export the image as a
dmabuf if requested.  The element now exposes memory:DMABuf as
a cap feature, and if it is selected, the element exports the
texture to an EGL image and then a dmabuf. It also implements a
fallback to system memory download in case the exportation failed.

https://bugzilla.gnome.org/show_bug.cgi?id=776927
2017-12-09 19:32:31 +00:00
Matthew Waters
1abd0804f4 gl/caopengllayer: use public GstGLContext instead of Cocoa-specific one
Allows keeping the GstGLCAOpenGLLayer public but not the winsys-specific
context/display/window.
2017-12-09 19:32:31 +00:00
Matthew Waters
6533e25e9c Revert "gl: cocoa: sprinkle some GST_EXPORT"
This reverts commit 94d798c333.

cocoac headers don't need to be public as all the functionality can be
provided by the base class
2017-12-09 19:32:31 +00:00
Tim-Philipp Müller
84249c6f55 gl: cocoa: sprinkle some GST_EXPORT
Undefined symbols for architecture x86_64:
  "_gst_gl_context_cocoa_get_type", referenced from:
      __create_layer in libgstopengl_la-caopengllayersink.o

Might need some more in other headers, but first need to
clarify what exactly should be exported, there are some
inconsistencies (installed header files vs. funcs in docs).
2017-12-09 19:32:31 +00:00
Jan Schmidt
a4834c4352 viv-fb: Don't destroy the native FB display
It causes crashes in applications because the result of
fbGetDisplay() might be in use elsewhere in the application
and Vivante doesn't seem to do any refcounting
2017-12-09 19:32:31 +00:00
Jan Schmidt
7d1f3db884 Revert "gl: Use GstGLDisplayEGL directly instead of creating a GstGLDisplayVIVFb subclass"
This reverts commit 47fd4d391e.

This patch is incorrect. It doesn't actually compile, and causes a crash
because the viv-fb window implementation needs a native EGL handle
to pass to fbCreateWindow, but the GstGLDisplayEGL handleis actually
an EGLDisplay now (and gets cast to the wrong type)
2017-12-09 19:32:31 +00:00
Tim-Philipp Müller
4e2ede5e6d meson: remove outdated comment in build file 2017-12-09 19:32:31 +00:00
Edward Hervey
5915f45e27 all: Fix left-shift undefined behaviour
Cast to the target type before shifting (or use macro if available)
2017-12-09 19:32:31 +00:00
Matthew Waters
5345acac54 glbasefilter: actually indicate start internally
Otherwise when we stop, the necessary stop functions will not be called
and things may be leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=788280
2017-12-09 19:32:30 +00:00
Matthew Waters
a534d8d74c gl/shader: allow setting non-square matrices as uniforms on gles platforms
It is possible with GLES3
2017-12-09 19:32:30 +00:00
Matthew Waters
fab729c61f gl/query: split tests and fix some corresponding issues in usage 2017-12-09 19:32:30 +00:00
Jérôme Laheurte
247e232ec4 Use value instead of version macro when testing for mac OS version
https://bugzilla.gnome.org/show_bug.cgi?id=788404
2017-12-09 19:32:30 +00:00
Cassandra Rommel
2ed379c732 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-12-09 19:32:30 +00:00
Justin Kim
5b35e2339a glcontext_egl: Add gstglwindow header
Otherwise, compiler complains implicit function declaration warning.

https://bugzilla.gnome.org/show_bug.cgi?id=788413
2017-12-09 19:32:30 +00:00
Ponnam Srinivas
e686f1b628 glfilter: Unmap video frame in error case
https://bugzilla.gnome.org/show_bug.cgi?id=788194
2017-12-09 19:32:30 +00:00
Haihua Hu
c33fc416b2 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-12-09 19:32:30 +00:00
Haihua Hu
8ef4a7ddaf 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-12-09 19:32:30 +00:00
Nicolas Dufresne
707385690d 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-12-09 19:32:30 +00:00
Matthew Waters
a5aff145a2 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-12-09 19:32:30 +00:00
Matthew Waters
143f9abf49 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-12-09 19:32:30 +00:00
Matthew Waters
ed7d0c48f6 gl: fix build for ios/win32/android after 2fd84a6c
Some missing GL includes.
2017-12-09 19:32:30 +00:00
Tim-Philipp Müller
ccb27e7317 gl: install new glfuncs.h header 2017-12-09 19:32:30 +00:00
Matthew Waters
66bdef894a gl/meson: add build for the vivante fb backend 2017-12-09 19:32:30 +00:00
Matthew Waters
e15f116de2 gl/meson: detect valid configuration from enabled apis/platform/winsys 2017-12-09 19:32:30 +00:00
Matthew Waters
00498d2b30 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-12-09 19:32:30 +00:00
Matthew Waters
21252d450c 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-12-09 19:32:30 +00:00
Philippe Normand
0214f4fb55 gl/cocoa: fix build after commit 2fd84a6c 2017-12-09 19:32:30 +00:00
Julien Isorce
4952fdd956 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-12-09 19:32:29 +00:00
Tim-Philipp Müller
b6e65172fe gl: fix build
Include private headers for parent class debug categories.
2017-12-09 19:32:29 +00:00
Tim-Philipp Müller
62069a9dc6 gl: add missing new header files
https://bugzilla.gnome.org/show_bug.cgi?id=786170
2017-12-09 19:32:29 +00:00
Tim-Philipp Müller
1ddde50048 gl: make some debug categories private
They weren't supposed to be public.

https://bugzilla.gnome.org/show_bug.cgi?id=786170
2017-12-09 19:32:29 +00:00
Tim-Philipp Müller
4be04f8315 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-12-09 19:32:29 +00:00
Tim-Philipp Müller
150511d931 gl: sprinkle more GST_EXPORT 2017-12-09 19:32:29 +00:00
Tim-Philipp Müller
fbb62097e7 gl, wayland: mark more declared functions with GST_EXPORT 2017-12-09 19:32:29 +00:00
Julien Isorce
a50c09ac26 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-12-09 19:32:29 +00:00
Matthew Waters
5c4b47e615 gl: document missing GstGLShader functions 2017-12-09 19:32:29 +00:00
Matthew Waters
82cf1b9c71 gl/docs: some documentation updates
Add some missing/incomplete docs
2017-12-09 19:32:29 +00:00
Matthew Waters
3200e2f00d gl/docs: correctly name our objects in the documentation GstGl -> GstGL 2017-12-09 19:32:29 +00:00
Matthew Waters
99f9bb5612 gl/docs: document GstGLFormat enum 2017-12-09 19:32:29 +00:00
Tim-Philipp Müller
d6766ec881 gl: fix g-i annotations for glframebuffer
gstglframebuffer.c:176: Error: GstGL: annotations not supported for tag "Since:".
2017-12-09 19:32:29 +00:00
Alessandro Decina
b299f70dcf meson: specify fallback for libgmodule_dep
Fixes build with glib built as a subproject.
2017-12-09 19:32:29 +00:00
Edward Hervey
79d5b5151b 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-12-09 19:32:29 +00:00
Philippe Normand
28a2734184 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-12-09 19:32:29 +00:00
Matthew Waters
d75eb628d6 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-12-09 19:32:29 +00:00
Matthew Waters
b7698b1613 gl/window/x11: implement set_render_rectangle support
https://bugzilla.gnome.org/show_bug.cgi?id=782959
2017-12-09 19:32:29 +00:00
Jan Schmidt
76bf415a96 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-12-09 19:32:29 +00:00
Jan Schmidt
79f52a4943 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-12-09 19:32:29 +00:00
Julien Isorce
575c7bca40 glupload: add GST_CAPS_FEATURE_MEMORY_DMABUF
Insert before SystemMemory to advice upstream elements that it is
preferable for them to push dmabuf with the caps feature.

Examples:

/* Discard memory:DMABuf caps feature */
GST_GL_PLATFORM=egl GST_GL_API=gles2 GST_GL_WINDOW=x11 gst-launch-1.0 \
    filesrc location=test.mp4 ! qtdemux ! h264parse ! vaapih264dec ! \
    capsfilter caps="video/x-raw(memory:SystemMemory)" ! glimagesink

/* Force memory:DMABuf caps feature. */
GST_GL_PLATFORM=egl GST_GL_API=gles2 GST_GL_WINDOW=x11 gst-launch-1.0 \
    filesrc location=test.mp4 ! qtdemux ! h264parse ! vaapih264dec ! \
    capsfilter caps="video/x-raw(memory:DMABuf)" ! glimagesink

/* Auto select memory:DMABuf caps feature.  */
GST_GL_PLATFORM=egl GST_GL_API=gles2 GST_GL_WINDOW=x11 gst-launch-1.0 \
    filesrc location=test.mp4 ! qtdemux ! h264parse ! vaapih264dec ! \
    glimagesink

https://bugzilla.gnome.org/show_bug.cgi?id=774649
2017-12-09 19:32:29 +00:00
Matthew Waters
715639f78c gl: reset gl->DrawBuffer to the necessary values
GL_COLOR_ATTACHMENT0 when a framebuffer is bound
GL_BACK if no framebuffer is bound

https://bugzilla.gnome.org/show_bug.cgi?id=784210
2017-12-09 19:32:29 +00:00
Hyunjun Ko
402d805c90 glmemory: reset the draw buffer to GL_BACK
The draw buffer should be reset to GL_BACK since the framebuffer is already
unbound.

https://bugzilla.gnome.org/show_bug.cgi?id=784210
2017-12-09 19:32:29 +00:00
Nicolas Dufresne
92537b1364 meson: Re-add pkg-config support for bcm_host
Now we just fallback to find_library for Rasbian jessy and older.

https://bugzilla.gnome.org/show_bug.cgi?id=784026
2017-12-09 19:32:29 +00:00
Guillaume Desmottes
581161ecd7 gl: meson: use cc.find_library() to detect 'bcm_host'
On the raspberry pi no pkg-config file is provided for the bcm_host
library. We are using AC_CHECK_LIB to detect this lib with autotools,
cc.find_library() library is a closer meson equivalent.

https://bugzilla.gnome.org/show_bug.cgi?id=784026
2017-12-09 19:32:28 +00:00
Sebastian Dröge
70715b5181 gl/cocoa: Put gstglwindow_cocoa.h into noinst_HEADERS again
And remove gstgldisplay_cocoa.h instead, which got moved to the
installed headers earlier.
2017-12-09 19:32:28 +00:00
Sebastian Dröge
59db0ee4e1 glupload: Fix DirectVIV uploader for formats with a single plane
We have to pass the "height" as height = vmeta->offset[1] / width to the
API, which of course does not work well for formats with only a single
plane. Use the whole memory size instead of the offset in that case.
2017-12-09 19:32:28 +00:00
Jeremy Hiatt
4511b34e00 glutils: Fix GValue leak in gst_gl_value_set_texture_target_from_mask() 2017-12-09 19:32:28 +00:00
Sebastian Dröge
0572c41c28 gl: Fix indentation 2017-12-09 19:32:28 +00:00
Sebastian Dröge
4cac59d222 glframebuffer: #define GL_READ_FRAMEBUFFER / GL_DRAW_FRAMEBUFFER if not defined yet
Just like we do elsewhere already.
2017-12-09 19:32:28 +00:00
Haihua Hu
ea6bed111b glformat: fix the usage of GST_GL_RGB565
GL_RGB565 is sized internal glformat, the corresponding glformat
should be GL_RGB and type is GL_UNSIGNED_SHORT_565. Otherwise will
return GL_INVALID_ENUM when creating texture.

https://bugzilla.gnome.org/show_bug.cgi?id=783066
2017-12-09 19:32:28 +00:00
Haihua Hu
2fc05e90d8 glframebuffer: check frame buffer status need use specific fbo target
https://bugzilla.gnome.org/show_bug.cgi?id=783065
2017-12-09 19:32:28 +00:00
Carlos Rafael Giani
cdd4f4532c gl/viv-fb: Fix user-choice string comparisons
https://bugzilla.gnome.org/show_bug.cgi?id=782921
2017-12-09 19:32:28 +00:00
Tim-Philipp Müller
70e2b4b416 gl: x11: fix compiler warning 2017-12-09 19:32:28 +00:00
Matthew Waters
4c75bab70d glcontext: add public swap_buffers function
That simply calls the implementation
2017-12-09 19:32:28 +00:00
fvanzile
178bbc253d glcontext: keep a ref to the active thread
With the macOS/iOS implementations, the active thread can change
multiple times over the life of a pipeline which would expose a race in
the thread tracking.

Fix by taking a ref on the active thread while the context is active.

https://bugzilla.gnome.org/show_bug.cgi?id=779202
2017-12-09 19:32:28 +00:00
Josep Torra
ffb9559849 cocoa: fix a recently introduced typo
Fixes gstgldisplay_cocoa.m:175:26: error: use of undeclared identifier 'singletone'.
2017-12-09 19:32:28 +00:00
Josep Torra
88a4d06735 cocoa: fix macOS 10.12 deprecation warnings
Add #defines to allow older versions of macOS to use the new constant names.
2017-12-09 19:32:28 +00:00
Haihua Hu
479b95205f glformat: Add missing GST_GL_RGB565 in some switch statement
https://bugzilla.gnome.org/show_bug.cgi?id=782736
2017-12-09 19:32:28 +00:00
Sebastian Dröge
f32e8bc4b2 cocoa: Install gstgldisplay_cocoa.h
It's needed by e.g. qmlglsink.
2017-12-09 19:32:28 +00:00
Sebastian Dröge
a9a05c01a9 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-12-09 19:32:28 +00:00
Nicolas Dufresne
e004cfd6fe 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-12-09 19:32:27 +00:00