Commit graph

3259 commits

Author SHA1 Message Date
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