Commit graph

3364 commits

Author SHA1 Message Date
Tim-Philipp Müller
8c8b788f73 shout2: advertise documentation caps properly
shout2send caps depend on what the libshout2
version in question supports, but the
documentation caps should always be the same.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/635>
2020-06-19 10:32:45 +01:00
Guillaume Desmottes
27ced4c8e6 pulse: fix discovery of newly added devices
Fix regression introduced in 7bc5e28d85
preventing the device provider to send the device-added message for new
devices.
By early returning the patch was discarding add/remove events.

Fix #735

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/626>
2020-06-18 14:05:42 +00:00
Matthew Waters
6fba2e3dd3 qt/gloverlay: reset OpenGL state after Qt drawing
Reset to the original OpenGL state as required by the GStreamer OpenGL
API contract.  Fixes output with a glimagesink element downstream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/623>
2020-06-12 07:23:19 +00:00
Matthew Waters
ffe4d09efc qt/gloverlay: reset current OpenGL context after Qt
Qt may replace the drawable with its own which breaks output if Qt is
not displaying the resulting video as used with e.g. glimagesink.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/623>
2020-06-12 07:23:19 +00:00
Mathieu Duponchelle
f63299ff2f plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:42:25 +02:00
Mikhail Fludkov
7b390a8bbd vpxenc: Add new bit-per-pixel property to select a better "default" bitrate
As part of this also change the default bitrate value to 0. The default
value was 256000 previously. In reality, if the property was not set the
bitrate value would be scaled according to the resolution which is not
very intuitive behavior. It is better to use 0 for this purpose. Now
together with newly introduced property "bits-per-pixel" 0 means to
assign the bitrate according to resolution/framerate.

The default bitrates are now
 - 1.2Mbps for VP8 720p@30fps
 - 0.8Mbps for VP9 720p@30fps
and scaled accordingly for different resolutions/framerates.

Previously the default bitrate was also not scaled according to the
framerate but only took the resolution into account.

This also fixes the side effect of setting bitrate to 0. Previously
encoder would not produce any data at all.

Addition from Sebastian Dröge <sebastian@centricular.com> to assume
30fps if no framerate is given in the caps instead of not calculating
any bitrate at all.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/611>
2020-06-04 20:14:03 +00:00
Mathieu Duponchelle
37c619f995 plugins: Use gst_type_mark_as_plugin_api() for all non-element plugin types 2020-06-03 22:44:09 -04:00
Stian Selnes
44e4de43da vpxdec: Check that output width and height != 0
For VP8 it's possible to signal width or height to be 0, but it does
not make sense to do so. For VP9 it's impossible. Hence, we most
likely have a corrupt stream. Trying to negotiate caps downstream with
either width or height as 0 will fail with something like

gst_video_decoder_negotiate_default: assertion 'GST_VIDEO_INFO_WIDTH (&state->info) != 0' failed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/610>
2020-06-02 23:59:20 +03:00
Seungha Yang
1b8df15b78 speex: Fix crash on Windows caused by cross-CRT issue
Use speex_header_free() to free memory which was allocated by
library. Cross-CRT issue should not happen on 1.17 Cerbero build
but might happen custom build or so.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/606>
2020-05-29 00:54:10 +09:00
Matthew Waters
8a8c8afc86 qtoverlay: add the root item as a property
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/595>
2020-05-20 19:37:32 +00:00
Raul Tambre
37c1b1e13f qtglrenderer.cc: Fix compiling
46bfb7d247 fixed a format warning without checking if it actually compiled.
toUtf8() returns QByteArray so we need to assign it to a temporary variable to be able to get the raw string data from it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/593>
2020-05-15 19:20:45 +03:00
Raul Tambre
46bfb7d247 qtglrenderer.cc: Fix -Wformat-security warning
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/592>
2020-05-15 06:07:25 +00:00
Nirbheek Chauhan
fbd4afc64c meson: Pass native: false to add_languages()
This is needed for cross-compiling without a build machine compiler
available. The option was added in 0.54, but we only need this in
Cerbero and it doesn't break older versions so it should be ok.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/589>
2020-05-13 19:25:33 +05:30
Nirbheek Chauhan
553ac050f0 meson: Make C++ compiler detection not be automagic
It is now controlled by the qt5 and/or taglib options. We won't
silently fail to build taglib now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/587>
2020-05-12 04:33:43 +05:30
Nirbheek Chauhan
d67a658daf meson: Fix gstgl checks for qt and gtk
Also rename from build_ to have_, which is more accurate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/587>
2020-05-12 04:32:01 +05:30
Nirbheek Chauhan
2ecba800bf meson: Revamp qt5qml plugin and example build code
Stricter and simpler. For example, now we properly error out when
gstreamer-gl-1.0 was not found when the qt5 plugin is enabled or when
a C++ compiler is not enabled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/587>
2020-05-12 04:30:13 +05:30
nian.yan
1944564d76 jpegenc: remove meta copy in jpegenc
GstVideoEncoder takes care of the Meta copy, so there is no need in
jpegenc

Fixes http://gstreamer-devel.966125.n4.nabble.com/jpegenc-copy-GstMeta-twice-tt4693981.html

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/576>
2020-05-06 08:38:46 +00:00
Matthew Waters
7f6fb07f85 qt/x11: also pass the window for gstgl -> qt context
Removes this warning from Qt:

QGLXContext: Multiple configs for FBConfig ID -1
QSGContext::initialize: depth buffer support missing, expect rendering errors

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/575>
2020-04-27 18:19:31 +10:00
Matthew Waters
05108c2898 qt: perform surface creation in the main thread
As is required when creating a QWindow instance set out in the Qt
documentation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/575>
2020-04-27 18:19:31 +10:00
Sebastian Dröge
3fdfd54b02 gdkpixbufoverlay: Use GST_VIDEO_OVERLAY_COMPOSITION_BLEND_FORMATS for the supported formats
We don't do any blending by ourselves since a while now.

Note that this is a regression in "supported" formats: previously
ARGB64 was supported, for example, but in practice it caused blending to
not take place at all.
2020-03-27 08:55:45 +00:00
Matthew Waters
8be5c780bb qmlgloverlay: fix usage without an qmlglsink in the pipeline
Without a qmlglsink, we need to retrieve the window system display
ourselves rather than relying solely on qmlglsink to have priority on
the choice of display.
2020-03-24 10:24:36 +00:00
Matthew Waters
6397d2f910 qmlgloverlay: don't leak resources freed on a different GL thread
deleting a QOpenGLFrameBufferObject needs to occur on the same thread it
was created on in order to actually free the relevant resources
immediately.  Otherwise, they will be queued for deletion and not freed
until the associated QOpenGLContext is destroyed.
2020-03-23 14:05:18 +11:00
Matthew Waters
818dde2e02 qt: reorganize include defines 2020-03-20 21:23:03 +00:00
Dmitriy Purgin
40a82104ea gstqmlgl: Link to opengl32.lib on MinGW 2020-03-20 06:25:28 +00:00
Matthew Waters
7a25fb5b08 qt: add a qml overlay filter element [part 2]
It takes a qml scene description and renders it using a possible input
stream.

Currently supported on GLX and WGL.

Follow up to (as that MR had an old version of the commit):
- https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/475
- 4778d7166a: qt: add a qml overlay filter element
2020-03-19 17:26:54 +11:00
Matthew Waters
4778d7166a qt: add a qml overlay filter element
It takes a qml scene description and renders it using a possible input
stream.

Currently supported on GLX and WGL.
2020-03-18 11:22:39 +00:00
Matthew Waters
21acf312f0 qt: don't always activate/deactivate our GstGLContext
Techincally it is enough to activate at the beginning and then forget.
2020-03-18 11:22:39 +00:00
Matthew Waters
a1f53b4f46 qmlglsink: propagate the context up the the application
Allows the application to be notified of the OpenGL context creation.
2020-03-18 11:22:39 +00:00
Matthew Waters
5e9f80c79a qtitem: fix leak of caps 2020-03-18 11:22:39 +00:00
Niels De Graef
4f4997a935 wavpack: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
34a934d8d4 vpx: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
5406208f0d twolame: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
58d74f0ec5 taglib: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
e5c9538d2a speex: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
e6c3a524ce soup: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
5ccd5659c4 shout2: Use G_DECLARE_FINAL_TYPE 2020-03-16 12:35:42 +01:00
Niels De Graef
59ac993a91 raw1394: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
91c55bd920 qt: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
a9ff9fe94e pulse: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
0da5b42bcc mpg123: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
45d7dfedb8 libpng: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
2cf28f3021 libcaca: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
0811b8d719 lame: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
f4841754ec jack: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
9f494290d5 gtk: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
e45a13ca2b gdk_pixbuf: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
9fa9ea2162 flax: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
51448ea5f1 dv: Use G_DECLARE_FINAL_TYPE 2020-03-16 09:20:07 +01:00
Niels De Graef
5bd3fcf726 cairo: Use G_DECLARE_FINAL_TYPE 2020-03-12 19:24:57 +01:00
Niels De Graef
9ad65fa60b aalib: Use G_DECLARE_FINAL_TYPE 2020-03-12 19:22:21 +01:00
Sebastian Dröge
fc3bb4c549 jpegdec: Configure JPEG chroma-siting for YUV formats 2020-03-09 21:34:08 +02:00
Milian Wolff
3e0d557744 qmlgl: ensure Qt defines GLsync to fix compile on some platforms
By explictly including QtGui/qopengl.h we force the code path that
defines GLsync in the Qt-specific way. Without that, some platforms
failed to compile the qmlgl plugin, since neither Qt nor gstreamer
defined GLsync then, leading to e.g.:

```
make[4]: Entering directory '/.../gst-plugins-good-1.16.1/ext/qt'
  CXX      libgstqmlgl_la-qtitem.lo
In file included from gstqtgl.h:32,
                 from qtitem.h:27,
                 from qtitem.cc:28:
/.../usr/include/gstreamer-1.0/
gst/gl/gstglfuncs.h:93:17: error: expected identifier before ‘*’ token
   ret (GSTGLAPI *name) args;
                 ^
/.../usr/include/gstreamer-1.0/
gst/gl/glprototypes/sync.h:27:1: note: in expansion of macro
‘GST_GL_EXT_FUNCTION’
 GST_GL_EXT_FUNCTION (GLsync, FenceSync,
 ^~~~~~~~~~~~~~~~~~~
```
2020-03-05 03:21:48 +00:00
Jake Barnes
2ffb52499f souphttpsrc: Fix cookies property
Disable session sharing and cookie jar when cookies property is set.

The cookie jar actually replaces or removes any existing Cookie header
set on the message, so the cookies property was effectively being
ignored. There doesn't appear to be a way to inject the cookies into the
jar without having to specify matching domains etc., so it's not
possible to simulate the old behaviour of unconditionally sending the
cookies with all messages, besides simply disabling the cookie jar.
2020-02-21 08:56:10 +00:00
Julien Isorce
88ce7397fc vp8enc/vp8enc: set 1 for the default value of VP8E_SET_STATIC_THRESHOLD
In Google webrtc, the setting VP8E_SET_STATIC_THRESHOLD is set to 1
(except when the content is known to be static very often in which
case it is set to 100, i.e. when sharing screen with Google Hangouts).

The cpu usage drops a lot when using 1 for above setting because it
allows the encoder to skip static/low content blocks. The current
0 default value uses too much cpu and confuses the user regarding
the cpu usage expectations. User expects vp8enc to use low cpu by
default.

Documentation of VP8E_SET_STATIC_THRESHOLD:
  https://github.com/webmproject/libvpx/blob/master/vpx/vp8cx.h#L188

chromium/webrtc:
  b484ec0082/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc (822)

Closes #58
2020-01-28 02:41:50 +00:00
Nicolas Dufresne
83e9d4f70d jpegdec: Check return value of gst_buffer_map()
Without this check, the element will crash instead of returning an
error.
2020-01-27 22:59:34 +00:00
Eric Marks
d6961235e8 aasink & cacasink: add filter aatv & cacatv
Add transform filter capabilities to aasink and cacasink in the form of new elements aatv and cacatv.
2019-12-28 23:01:19 +00:00
Stéphane Cerveau
b928517f1e good: use of g_value_dup_string
Use helper method to get string from GValue.
2019-12-20 09:30:26 +00:00
Philipp Zabel
c47a585052 qmlglsink: fix build on EGL platform without X11 headers
If Mesa is built without X11 headers, building against Mesa EGL headers
requires a dependency on egl.pc, to define MESA_EGL_NO_X11_HEADERS.
This fixes a build error when compiling ext/qt/gstqtglutility.cc:

  In file included from /usr/include/EGL/egl.h:39,
                   from /usr/include/gstreamer-1.0/gst/gl/egl/gstegl.h:44,
                   from ../gst-plugins-good-1.16.1/ext/qt/gstqtglutility.cc:43:
  /usr/include/EGL/eglplatform.h:124:10: fatal error: X11/Xlib.h: No such file or directory
2019-12-04 22:38:49 +00:00
Seungha Yang
4333774c2c vp9dec: Fix broken 4:4:4 8bits decoding
VPX_IMG_FMT_I444 pixel format with sRGB colorspace means
GBR data.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/651
2019-11-29 21:42:47 +00:00
Scott Kanowitz
7606c0eb7c jpegdec: Fix incorrect logic in EOI tag detection
This change fixes the reversed logic in the EOI tag detection
code.
2019-11-17 18:22:25 +00:00
Niels De Graef
7cf4ab6229 Don't pass default GLib marshallers for signals
By passing `NULL` to `g_signal_new` instead of a marshaller, GLib will
actually internally optimize the signal (if the marshaller is available
in GLib itself) by also setting the valist marshaller. This makes the
signal emission a bit more performant than the regular marshalling,
which still needs to box into `GValue` and call libffi in case of a
generic marshaller.

Note that for custom marshallers, one would use
`g_signal_set_va_marshaller()` with the valist marshaller instead.
2019-11-17 15:32:30 +00:00
Michael Olbrich
0b25487cd1 jpegdec: don't overwrite the last valid line
If the the height is not a multiple of the macro block size then the memory
of the last line is reused for all extra lines. This is no problem if the
last line is duplicated properly. However, if the extra lines are not
initialized properly during encoding, then the last visible line is
overwritten with undefined data.
Use a extra buffer to avoid this problem.
2019-11-10 11:24:40 +01:00
Nirbheek Chauhan
212d0ca3cb vpx: Error out if enabled and no features found
Seee: https://gitlab.freedesktop.org/gstreamer/cerbero/issues/200
2019-11-05 21:42:12 +05:30
Matthew Waters
ae80fa4731 qmlglsrc: read from the back buffer when use-default-fbo = TRUE
glReadBuffer(GL_COLOR_ATTACHMENT0) on the default framebuffer (0) is
invalid GL API usage and would result in a GL error being thrown.
2019-10-25 22:09:20 +11:00
Matthew Waters
7f1e1d0d9d qmlglsrc: fix vertical flip matrix
Some time ago libgstgl defined the majorness of matrices it uses.
The majorness used by qmlglsrc was incompatible with the libgstgl.
2019-10-25 22:09:20 +11:00
Tim-Philipp Müller
c9a47c0c8d Remove autotools build system 2019-10-14 11:04:18 +01:00
Aaron Boxer
46989dca96 documentation: fix a number of typos 2019-10-05 22:38:11 +00:00
Matthew Waters
0017115494 vpx: fix macos werror build
../ext/vpx/gstvpxenc.c:1723:49: error: format specifies type 'long' but the argument has type 'vpx_codec_pts_t' (aka 'long long') [-Werror,-Wformat]
          ", gst frame pts: %" G_GINT64_FORMAT, pkt->data.frame.pts, pts);
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:1065:96: note: expanded from macro 'GST_TRACE_OBJECT'
#define GST_TRACE_OBJECT(obj,...)       GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_TRACE,   obj,  __VA_ARGS__)
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:646:31: note: expanded from macro 'GST_CAT_LEVEL_LOG'
        (GObject *) (object), __VA_ARGS__);                             \
                              ^~~~~~~~~~~
../ext/vpx/gstvpxenc.c:1723:70: error: format specifies type 'long' but the argument has type 'vpx_codec_pts_t' (aka 'long long') [-Werror,-Wformat]
          ", gst frame pts: %" G_GINT64_FORMAT, pkt->data.frame.pts, pts);
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:1065:96: note: expanded from macro 'GST_TRACE_OBJECT'
#define GST_TRACE_OBJECT(obj,...)       GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_TRACE,   obj,  __VA_ARGS__)
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:646:31: note: expanded from macro 'GST_CAT_LEVEL_LOG'
        (GObject *) (object), __VA_ARGS__);                             \
                              ^~~~~~~~~~~
2019-08-30 14:12:29 +10:00
Mathieu Duponchelle
3429ddde38 docstrings: port ulinks to markdown links 2019-08-23 18:56:01 +02:00
Seungha Yang
53dc1da870 souphttpsrc: Fix incompatible type build warning
gstsouphttpsrc.c(2191): warning C4133:
  '=': incompatible types - from 'guint (__cdecl *)(GType)' to 'GstURIType (__cdecl *)(GType)'
2019-08-21 15:20:56 +00:00
Tim-Philipp Müller
61bd613de3 vpx: bump libvpx requirement to 1.5.0
Was released in Nov 2015.
2019-08-19 11:09:47 +01:00
Tim-Philipp Müller
e40ba71824 vpx: avoid confusing meson configure output when checking for vpx versions
Used to print:
|Run-time dependency vpx found: YES 1.7.0
|Message: libvpx provides VP8 encoder interface (vpx_codec_vp8_cx_algo)
|Message: libvpx provides VP8 decoder interface (vpx_codec_vp8_dx_algo)
|Message: libvpx provides VP9 encoder interface (vpx_codec_vp9_cx_algo)
|Message: libvpx provides VP9 decoder interface (vpx_codec_vp9_dx_algo)
|Dependency vpx found: YES (cached)
|Dependency vpx found: NO found '1.7.0' but need: '>=1.8.0'
|Run-time dependency vpx found: NO (tried pkgconfig and cmake)

We can check the version of the found dep in a way that
doesn't produce this confusing output.
2019-08-19 11:09:19 +01:00
Robert Tiemann
3c4add469e souphttpsrc: Log any error returned by soup_session_send() 2019-08-07 07:32:09 +00:00
Guillaume Desmottes
5c4292b019 gtkglsink: fix crash when widget is resized after element destruction
Prevent _size_changed_cb() to be called after gtkglsink has been finalized.

Fix #632
2019-07-26 08:25:45 +00:00
Sebastian Dröge
4911ac38ac jpegdec: Don't dereference NULL input state if we have no caps in TIME segments
Simply assume that the JPEG frame is not going to be interlaced instead
of crashing.
2019-07-25 15:08:54 +03:00
Thibault Saunier
dbd5d5b2a5 pulse-device: Hide the alsa device provider if we provide alsa devices 2019-06-04 16:06:57 +00:00
Mathieu Duponchelle
f554369ed5 doc: remove xml from comments 2019-05-29 22:20:40 +02:00
Tim-Philipp Müller
bf14759477 dv, gtk, qt, osxaudio, osxvideo, waveform: add to plugins list
Makes sure the paths for these plugins are included in the
uninstalled plugin paths list. And also for the docs.

Fixes #604
2019-05-29 14:56:37 +00:00
Mathieu Duponchelle
d704790519 doc: fix element section documentations
Element sections were not rendered anymore after the hotdoc
port, fixing this revealed a few incorrect links.
2019-05-25 16:57:31 +02:00
Sebastian Dröge
041a988100 aasink: Generate pkg-config file for the plugin 2019-05-23 12:38:06 +03:00
Thibault Saunier
38c5ba90b3 doc: Fix some docstrings 2019-05-13 17:00:00 -04:00
Thibault Saunier
af01988534 doc: Port documentation to hotdoc 2019-05-13 11:34:56 -04:00
Thibault Saunier
0a6a62aa76 docs: Port all docstring to gtk-doc markdown 2019-05-13 10:24:40 -04:00
okuoku
05089a7092 jack: Use jack_free(3) to release ports
Port objects acquired with jack_get_ports() need to be freed with
jack_free(3), not stdlib free().

On Windows, Jack may be linked against different libc than GStreamer
libraries so free()ing port objects directly might cause crash because
of libc mismatch.
2019-04-24 02:38:32 +09:00
Benjamin Sigonneau
0375e53225 qmlglsink: fix compilation with Qt >= 5.5 on Windows
As of Qt >= 5.5, qmake do not link to opengl32 by default anymore. This commit adds opengl32.lib to the .pro
file so that the plugin can be build using QtCreator on Windows.
2019-04-18 17:14:18 +02:00
Nirbheek Chauhan
e40072630c meson: Build qt plugin in C++11 mode explicitly
This works implicitly most of the time, but we need to set it
explicitly for building with Android.
2019-04-17 15:48:26 +05:30
Nicolas Dufresne
bac8c00b85 shout2: Fix leak on error in start 2019-04-05 14:53:09 +00:00
Nirbheek Chauhan
f23724b8a6 meson: Only ensure that moc is available on Linux
On other OSes, it's not possible to have qmake or the qt5 pkg-config
files and not have moc, and `moc` will not be in `PATH`, so this only
causes problems.
2019-04-01 18:20:28 +05:30
Julian Bouzas
2ebdd70c21 flac: report latency in flacenc and flacdec
The FLAC specification states that the data is processed in blocks, regardless of the number of channels. Thus, The latency can be calculated using the blocksize and rate. For example a 1 second block sampled at 44.1KHz has a blocksize of 44100
2019-03-25 15:14:32 +01:00
Antonio Ospite
2dfe228740 docs: fix typos s/recieve/receive/ 2019-03-07 12:41:40 +01:00
Matthew Waters
7f95a809e9 gtkgl: Also try retrieving an EGL context from Gdk with X11
Some embedded platforms will use EGL instead of GLX within the X11
ecosystem.
2019-03-05 15:26:45 +11:00
Thibault Saunier
263dfae6d5 pulse: Post DEVICE_CHANGED on modification 2019-02-08 22:02:13 +00:00
Thibault Saunier
7bc5e28d85 pulse: Mark default devices as "default" 2019-02-08 22:02:13 +00:00
Jan Alexander Steffens (heftig)
b6e6f1ae73 vpx: Fix build against libvpx 1.8
The deprecated debug visualizer was removed.
2019-02-07 11:17:39 +00:00
Arun Raghavan
f0bdec32c1 pulsesink: Deal with not being able to convert a format to caps
It is possible that PulseAudio adds formats that are not yet supported
in pulsesink, and in those cases, we want to gracefully skip them rather
than cause an assert on a NULL caps.
2019-02-06 15:33:31 +05:30
Matthew Waters
c92dcf513d qmlgl: Fix opengl header guard changes again
Reapply 3d708a5bfa in the correct place
after the iOS additions.
2019-02-05 15:27:49 +11:00
Nirbheek Chauhan
d677e635fc meson: qmlgl plugin iOS definitions
Tested with cross-ios-arm64 and cross-ios-x86, since those two are the
only archs shipped with the official Qt binaries.
2019-02-01 14:28:18 +05:30
Nirbheek Chauhan
0de89c0dbe qt: Don't define GLsync inside gstglfuncs.h
This was originally added for fixing conflicting definitions between
Android and Qt, but times have changed and now this breaks the build
on iOS:

 [...]/OpenGLES.framework/Headers/ES3/gl.h:1006:48: error: unknown type name 'gst_qt_GLsync'
 GL_API void           GL_APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)   OPENGLES_DEPRECATED(ios(7.0, 12.0), tvos(9.0, 12.0));
                                               ^
 ../ext/qt/gstqtgl.h:49:16: note: expanded from macro 'GLsync'
 #define GLsync gst_qt_GLsync
                ^
 6 errors generated.

Instead, we simply avoid defining GLsync ourselves if we're using Qt.
2019-02-01 14:28:18 +05:30
Nirbheek Chauhan
1bdec4d055 meson: Fix indentation in qt plugin and add a FIXME comment 2019-02-01 14:28:18 +05:30
Mathieu Duponchelle
869e45d19c gdkpixbufdec: always output a TIME segment
It makes no sense for a decoder to output a BYTES segment, and
many elements one would plug downstream of a video decoder assume
the segments they receive are in TIME format, for example this fixes:

gst-validate-1.0 filesrc location=opacity01.svg ! gdkpixbufdec ! \
videobalance ! videoconvert ! fakesink

In that case, videobalance was emitting an assertion when trying to
call gst_object_sync_values()
2019-01-29 18:46:25 +00:00
Nirbheek Chauhan
e9b5e78c9e meson: Add macOS definitions for qmlgl plugin
Tested with Cerbero.
2019-01-29 12:19:37 +05:30
Nirbheek Chauhan
8f9ca07756 meson: Fix building of qmlgl plugin on Android
Needs gnustl for C++ STL support, which is the GNU STL on Android API
19 and older, and is a wrapper for the llvm-libc++ STL on newer APIs.

QtGui C++ templates use GL functions, so GLESv2 is needed at link time
2019-01-29 12:19:37 +05:30
Xavier Claessens
aaa7c60b52 Meson: fallback to libsoup subproject 2019-01-23 21:05:10 +00:00
George Kiagiadakis
0a1d048ee3 qmlgl: add README.md with information on building for non-linux platforms with qmake 2019-01-21 11:55:50 +02:00
George Kiagiadakis
f09807fc3d qmlgl: meson: fix theoretical support for building for android
The android code path is slightly different than the EGLFS one,
so I added previously a HAVE_QT_ANDROID define for use with qmake.
Here I also add it in meson, although I expect nobody will ever use
meson to build this, as it's complicated.
2019-01-21 11:55:50 +02:00
George Kiagiadakis
eab642b1c3 qmlgl: qmake: add support for MacOS target 2019-01-21 11:55:50 +02:00
George Kiagiadakis
66d0c41161 qmlgl: qmake: remove cerbero's include dir from the include path
pkg-config should do it's job here, this is unnecessary and implies using cerbero
2019-01-21 11:55:50 +02:00
George Kiagiadakis
e279903857 qmlgl: qualify Qt includes with their module and remove module include dir from the .pro file
it is perfectly legal to use the <module/class> style of includes with Qt
and it avoids the need for having the module's include dir in the include path
2019-01-21 11:55:50 +02:00
George Kiagiadakis
584c5afbe5 qmlgl: qmake: don't link against QtWidgets, it's not used 2019-01-21 11:55:50 +02:00
George Kiagiadakis
d75284cd83 qmlgl: qmake: fix building for android 2019-01-21 11:55:50 +02:00
Nirbheek Chauhan
00f14f34b5 meson: Generate pkg-config file for qmlgl plugin 2019-01-18 21:11:25 +00:00
Arun Raghavan
f5bb377a78 pulse: Fix format info to caps conversion for PCM 2019-01-18 11:06:38 +00:00
Arun Raghavan
4e9a8e5883 Revert "pulsesrc: Move to extended stream API"
This reverts commit 4d67d1bd16.

Using the extended API for the capture path depends on a fix in
PulseAudio
(https://gitlab.freedesktop.org/pulseaudio/pulseaudio/merge_requests/49).

Until then, let's go back to the standard API.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/552
2019-01-18 11:06:38 +00:00
Nirbheek Chauhan
9ece93dbd8 meson: Search for qmake-qt5 before qmake
The canonical name for the binary is qmake-qt5, and qmake is the
generic name that can also be a qt4 qmake.
2019-01-18 14:41:14 +05:30
Sebastian Dröge
db0eca886f gtk/gl: Only unbind buffers/vertex attrib arrays if we can't directly bind the vertex array to 0
Binding the vertex array to 0 will unbind everything else already.

In the previous order older versions of the Intel GL driver caused
errors to be printed for every single call when disabling the vertex
attrib arrays after binding the vertex array to 0.
2019-01-16 14:11:44 +02:00
Arun Raghavan
4d67d1bd16 pulsesrc: Move to extended stream API
This is needed as a precursor to allowing capture of IEC61937
formats. We now also need to include the channel map while converting
format info to caps so that a correct channel mask is generated for
pulsesrc's caps.
2019-01-10 09:16:02 +00:00
Marc-André Lureau
8b155d7188 pulsesrc: fix checking for invalid stream index
PA_INVALID_INDEX, the default value, is unfortunately !0.

Setting the volume before the stream is created will put the ring
buffer in error state. Unfortunately, that's what spice-gtk does.
2019-01-07 11:54:24 +04:00
Nicola Murino
1081a2ee50 souphttpsrc: check difference in time from the last socket read before changing blocksize
If the pipeline consumes the data slower than the available network speed,
for example because sync=true, is useless to increase the blocksize and
reading in too big blocksizes can cause the connection to time out

Closes #463
2018-12-17 19:27:48 +01:00
Edward Hervey
3d708a5bfa qtgl: Handle OPENGL header guard changes
In 2018 khronos changed the gl header guards. If we don't detect
this properly we would end up with plenty of symbol redifinition
(since we would be importing twice the "same" header).

Instead detect if the "newer" header was already included and if
so define the "old" define to avoid this situation

Fixes #523
2018-12-17 10:51:50 +01:00
Jochen Henneberg
88a6832b2a flacdec: Use new channel count for audio info 2018-12-14 09:22:33 +00:00
Jochen Henneberg
d74f964407 flacdec: Caps may have changed on FLAC metadata change
If the decoder signals metadata change we need to update the output
format and negotiate with downstream elements.
2018-12-14 09:22:33 +00:00
Jochen Henneberg
a5d71c597d flacdec: Reset decoder on set_format()
Any call to set_format() could mean that the stream type changed so we
reset the decoder and mark got_headers FALSE.
2018-12-14 09:22:33 +00:00
Sebastian Dröge
172d14acef cairooverlay: Optimize premultiplication/unpremultiplication loops
Pull in video frame fields into local variables. Without this the
compiler must assume that they could've changed on every use and read
them from memory again.

This reduces the inner loop from 6 memory reads per pixels to 4, and the
number of writes stays at 3.
2018-12-07 17:22:39 +00:00
Arun Raghavan
a24ef929a4 pulse: Expose the correct max rate that we support
PulseAudio defines PA_RATE_MAX as the maximum sampling rate that it
supports. We were previously exposing a maximum rate of INT_MAX, which
is incorrect, but worked because nothing was really using a rate greater
than 384000 kHz.

While playing DSD data, we hit a case where there might be very high
sample rates (>1MHz), and pulsesink fails during stream creation with
such streams because it erroneously advertises that it supports such
rates.

Since PA_RATE_MAX is #define'd to (8*48000U), we can't just use it in
the caps string. Instead, we fix up the rate to what we actually support
whenever we use our macro caps.
2018-11-19 21:28:25 +05:30
Sebastian Dröge
a766dce53d cairooverlay: Don't map input buffers if we just attach the overlay as meta
https://bugzilla.gnome.org/show_bug.cgi?id=797091
2018-10-03 23:20:10 +03:00
Sebastian Dröge
10446bd371 cairooverlay: Add overlay as meta to the buffers if we can
This requires that downstream supports it and
draw-on-transparent-surface is enabled.

https://bugzilla.gnome.org/show_bug.cgi?id=797091
2018-10-03 23:20:10 +03:00
Sebastian Dröge
f1c5a22a7a cairooverlay: Pre-multiply and un-premultiply alpha in case of ARGB32
Cairo expects pre-multiplied alpha, we work on un-premultiplied alpha.

https://bugzilla.gnome.org/show_bug.cgi?id=797091
2018-10-03 23:20:10 +03:00
Sebastian Dröge
9844bdbf7a cairooverlay: Add property for drawing on a transparent surface and then blending
This allows us to use the GstVideoOverlayComposition API and correctly
handle pre-multiplied alpha, while also only doing the alpha conversion
once instead of twice for the whole frame.

At a later point we can attach the meta to the buffer instead of
blending ourselves if downstream supports that.

https://bugzilla.gnome.org/show_bug.cgi?id=797091
2018-10-03 23:20:10 +03:00
Nirbheek Chauhan
3da5144bbe meson: Explicitly pass -DWIN32 while building speex
The speex headers assume that WIN32 will always be defined when
building on Windows, but this is only true by default on MinGW.
Always set it explicitly.
2018-09-07 18:51:17 +05:30
Nirbheek Chauhan
6720da07cf meson: Don't skip plugins that don't build with MSVC
We now have options for all plugins, so we will just disable these in
the cerbero recipe instead. These require external deps, so they won't
affect gst-build either.
2018-09-05 20:15:57 +05:30
Nirbheek Chauhan
c0ff8a036a mpg123: Remove ssize_t fallback, not needed anymore
The mpg123 headers now contain a definition for ssize_t and building
with MSVC fails because of a redefinition for ssize_t
2018-09-04 12:39:19 +05:30
Tim-Philipp Müller
8305cb2995 meson: find libjpeg via pkg-config
This effectively (but optionally) requires libjpeg-turbo which
ships with a .pc file and is what pretty much everyone these days
uses anyway for libjpeg, so shouldn't be a problem hopefully.

https://bugzilla.gnome.org/show_bug.cgi?id=796947
2018-08-18 21:01:52 +01:00
Nirbheek Chauhan
cebe940c12 meson: Rename caca option to libcaca
All options must match the plugin directory name.
2018-08-17 20:05:25 +05:30
Matthew Waters
319171b162 qt: Ensure GL headers are included
Otherwise there may be no valid typedef of GLsync.

...
/usr/include/gstreamer-1.0/gst/gl/gstglfuncs.h:93:24: note: in definition of macro 'GST_GL_EXT_FUNCTION'
   ret (GSTGLAPI *name) args;
                        ^~~~
/usr/include/gstreamer-1.0/gst/gl/glprototypes/sync.h:33:23: error: 'GLsync' has not been declared
                      (GLsync sync))
                       ^~~~~~
...

https://bugzilla.gnome.org/show_bug.cgi?id=796879
2018-08-01 12:11:04 +10:00
Nirbheek Chauhan
8f807477eb meson: Add feature options for all plugins
Checks for GL, Qt5, and C++ are still automagic. FIXMEs have been
added for these so they can be fixed later.

https://bugzilla.gnome.org/show_bug.cgi?id=795107
2018-07-27 18:42:54 +05:30
Iñigo Huguet
b03df1abf8 qmlgl: Fix conflicting declaration of type GLsync for non-android
https://bugzilla.gnome.org/show_bug.cgi?id=796821
2018-07-18 13:57:23 +10:00
Tim-Philipp Müller
238a37295c Update for g_type_class_add_private() deprecation in recent GLib
https://gitlab.gnome.org/GNOME/glib/merge_requests/7
2018-06-23 23:44:19 +02:00
Edward Hervey
8842d51ff8 souphttpsrc: Protect input stream with lock
This was the last remaining place where modifying/unreffing the
input stream was not protected by the lock

https://bugzilla.gnome.org/show_bug.cgi?id=796639
2018-06-20 10:05:35 +02:00
Matthew Waters
ee046864d8 qt: also check for un-suffixed moc
e.g. Qt windows installer doesn't have suffixes
2018-06-07 14:28:37 +10:00
Andre McCurdy
f9b7e2ab85 id3v2mux: ensure valid sentinal for gst_structure_get()
gst_structure_get() is declared with G_GNUC_NULL_TERMINATED, ie
__attribute__((__sentinel__)), which means gcc will generate a
warning if the last parameter passed to the function is not NULL
(where a valid NULL in this context is defined as zero with any
pointer type).

The C code callers to gst_structure_get() within gst-plugins-good
use the C NULL definition (ie ((void*)0)), which is a valid sentinel.

However gstid3v2mux.cc uses the C++ NULL definition (ie 0L), which
is not a valid sentinel without an explicit cast to a pointer type.

Upstream-Status: Pending

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
2018-05-19 11:26:14 +02:00
Andre McCurdy
07abf5d60f raw1394: avoid including <sys/poll.h> directly
Note from Edward Hervey: Patch from git.yoctoproject.org

musl libc generates warnings if <sys/poll.h> is included directly.

Upstream-Status: Pending

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
2018-05-19 11:22:39 +02:00
Xavier Claessens
edd9c8f6b8 Meson: Generate pc file for all plugins in good
https://bugzilla.gnome.org/show_bug.cgi?id=794568
2018-04-25 11:07:06 +01:00
Thibault Saunier
1914b9d4e2 jpegenc: Accept sof-marker=4
sof-marker is 4 when input is in the RGB colorspace.

https://bugzilla.gnome.org/show_bug.cgi?id=795463
2018-04-23 07:55:30 -03:00
Matthew Waters
ca67a460ee meson: add build files for the qml plugin
Tested on linux with X11/wayland and semi-tested on Windows.

Windows crashes on item destruction however this is better than nothing.

Fix up some win32 build issues on the way with mismatched {} and
G_STMT_{START,END}
2018-04-15 23:49:57 +10:00
Carlos Rafael Giani
56a1eb65e2 qt: Get EGL native display from QPA if platform header is available
https://bugzilla.gnome.org/show_bug.cgi?id=792378
2018-03-22 09:58:52 +02:00
Arnaud Bonatti
b348ddfded gtk: fix compiler warning with recent glib
https://bugzilla.gnome.org/show_bug.cgi?id=793688
2018-02-21 11:35:39 +00:00
Matthew Waters
ff7d14a384 qt: don't use libEGL functions when we don't link to libEGL
Use the provided wrapper available from libgstgl.

https://bugzilla.gnome.org/show_bug.cgi?id=793547
2018-02-21 11:35:33 +11:00
Tim-Philipp Müller
072c070e6c docs: remove pointless Since: 0.10.x markers 2018-02-15 00:58:38 +00:00
Tim-Philipp Müller
bbab8f79ad qt: hook up to build
https://bugzilla.gnome.org/show_bug.cgi?id=754094
2018-02-12 18:40:10 +00:00
Tim-Philipp Müller
6c75e6c5e0 Move qt plugin from -bad
https://bugzilla.gnome.org/show_bug.cgi?id=754094
2018-02-12 18:13:17 +00:00