Sebastian Dröge
42f5873eeb
souphttpsrc: Don't use the source element after setup from the session thread
...
The source element might be gone already if the session is shared with
other source elements.
As a consequence, do all logging via the session object instead of using
the source element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594 >
2022-01-28 15:41:54 +02:00
Sebastian Dröge
080d85b19a
souphttpsrc: Don't abort all pending operations on the session if shutting down a source with a shared session
...
Only do it for a non-shared session. Other sources would otherwise get
their requests cancelled unexpectedly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594 >
2022-01-28 15:31:55 +02:00
Sebastian Dröge
499e0acd43
souphttpsrc: Don't set boolean to FALSE right after checking that it is FALSE
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594 >
2022-01-28 15:31:25 +02:00
Sebastian Dröge
165be69017
souphttpsrc: soup_session_new_with_options() can't fail with NULL
...
So don't check for it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1594 >
2022-01-28 15:30:56 +02:00
Daniel Kolesa
0bcefa7350
soup: move libsoup session into its own thread
...
Starting with libsoup3, there is no attempt to handle thread safety
inside the library, and it was never considered fully safe before
either. Therefore, move all session handling into its own thread.
The libsoup thread has its own context and main loop. When some
request is made or a response needs to be read, an idle source
is created to issue that; the gstreamer thread issuing that waits
for that to be complete. There is a per-src condition variable to
deal with that.
Since the thread/loop needs to be longer-lived than the soup
session itself, a wrapper object is provided to contain them. The
soup session only has a single reference, owned by the wrapper
object.
It is no longer possible to force an external session, since this
does not seem to be used anywhere within gstreamer and would be
tricky to implement; this is because one would not have to provide
just a session, but also the complete thread arrangement made in
the same way as the system currently does internally, in order to
be safe.
Messages are still built gstreamer-side. It is safe to do so until
the message is sent on the session. Headers are also processed on
the gstreamer side, which should likewise be safe.
All requests as well as reads on the libsoup thread are issued
asynchronously. That allows libsoup to schedule things with as
little blocking as possible, and means that concurrent access
to the session is possible, when sharing the session.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/947
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1555 >
2022-01-28 08:49:09 +00:00
Philippe Normand
0b6df00606
soup: Reintroduce compile-time libsoup dependency for static builds
...
On Android (especially) and for static builds in general it is safer to link
against libsoup and have the dynamic custom loading disabled. For those cases we
can safely assume the application will use either libsoup2 or libsoup3 and not
both.
Fixes #939
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1536 >
2022-01-21 07:23:33 +00:00
Philippe Normand
a44a1bf193
soup: Initialize debug category before use
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1536 >
2022-01-21 07:23:33 +00:00
Philippe Normand
d764b6c4f2
soup: Fix return types for a couple VTable functions
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1536 >
2022-01-21 07:23:33 +00:00
Nirbheek Chauhan
23cc02d7c3
meson: Build cairo subproject when unavailable on the system
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/952
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1523 >
2022-01-21 06:34:33 +00:00
Bastien Nocera
c63365c80f
gtk: Add "video-aspect-ratio-override" property
...
Allow front-ends to override the pixel aspect ratio found inside the
video file itself, or most likely, missing from the video file.
This is a long-standing feature of totem.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137 >
2022-01-12 13:27:31 +00:00
Bastien Nocera
522be6cf7c
gtk: Remove _update_par() forward declaration
...
No functional changes.
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137/diffs#note_1102782
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137 >
2022-01-12 13:27:31 +00:00
Bastien Nocera
6f677a8993
gtk: Mark properties as changeable in the PLAYING state
...
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137#note_1102789
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137 >
2022-01-12 13:27:31 +00:00
Bastien Nocera
5dfe92a579
gtk: Fix "pixel-aspect-ratio" property range
...
Fix the arguments passed to gst_param_spec_fraction in the incorrect
order.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137 >
2022-01-12 13:27:31 +00:00
Bastien Nocera
488d29eb41
gtk: Rename display pixel aspect ratio related constants
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137 >
2022-01-12 13:27:31 +00:00
Bastien Nocera
17130de754
gtk: Make "pixel-aspect-ratio" changes immediate
...
Schedule a resize when the display's pixel aspect ratio has changed, if
one isn't already scheduled.
Closes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/883
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1137 >
2022-01-12 13:27:31 +00:00
Florian Zwoch
3e680d8d5d
aatv: Fixes for rain-mode
...
Some rain-mode properties tried to read float from int value.
Initialize rain after setting rain-mode. Rain was non-functional if
width/height were left at default values.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1459 >
2021-12-20 09:28:50 +00:00
Guillaume Desmottes
2aa2477208
jpegdec: only allow conversions from RGB
...
libjpeg-turbo only supports converting from RGB to other RGB formats.
Fix runtime error when trying to convert from a YUV format for example.
Fix #916
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1421 >
2021-12-06 16:52:38 +00:00
Jean Felder
f8bc5e89fd
id3v2mux: Map GST_TAG_MUSICBRAINZ_RELEASETRACKID
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1342 >
2021-11-22 09:57:16 +00:00
Jean Felder
941e1b8343
id3v2mux: Map GST_TAG_MUSICBRAINZ_RELEASEGROUPID
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1342 >
2021-11-22 09:57:16 +00:00
Tobias Reineke
9e2f679ae1
shout2: Add compatibility for libshout >= 2.4.2
...
In libshout >=2.4.2 shout_open() can return SHOUTERR_RETRY in addition
to SHOUTERR_BUSY.
The nonblocking example in libshout fixes the problem in a similar
way, as mentioned by the author in this issue:
https://gitlab.xiph.org/xiph/icecast-libshout/-/issues/2316
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/848
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1363 >
2021-11-19 04:23:35 +05:30
Matthew Waters
55e04d129f
qmlglsink: fix another resize case
...
If qt asks us to redraw before we have both set a buffer and caps we
would attempt to use the new caps with the old buffer which could result
in bad things happening.
Only update caps from new_caps once the buffer has actually been set.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1346 >
2021-11-17 03:08:14 +00:00
Tim-Philipp Müller
972615cf22
docs: fix unnecessary ampersand, < and > escaping in code blocks
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1340 >
2021-11-12 11:39:19 +00:00
Matthew Waters
d2fd5f1534
qmlsink: support caps changes better
...
We need to hold onto the last buffer until the next buffer arrives.
Before, if a caps change comes we would remove the currently rendering
buffer. if Qt asks use to render something, we would render the dummy
black texture.
Fixes a period of black output when upstream is e.g. changing resolution
as in hls adaptive bitrate scenarios.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1338 >
2021-11-12 07:17:17 +00:00
Zhao, Gang
5ac1a12927
vpxdec: Skip check of key frame when open GOP
...
Valid stream [1] might has no key frame.
Fixed: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/890
[1] https://storage.googleapis.com/downloads.webmproject.org/test_data/libvpx/vp90-2-16-intra-only.webm
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1316 >
2021-11-08 19:42:47 +00:00
Thibault Saunier
e94e60c342
lame:meson: Avoid using fallback when we could use system install
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1176 >
2021-10-17 01:59:35 -03:00
Thibault Saunier
f60af61bb7
meson: Support building lame as subproject
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1068 >
2021-10-16 00:43:10 +00:00
Philippe Normand
8b553d5b32
soup-stub: Gate G_URI_FLAGS_SCHEME_NORMALIZE behind glib version check
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1138 >
2021-10-13 19:24:02 +00:00
Bastien Nocera
e1271c0d9c
gtkglsink: Avoid assertion when applying "auto" rotation method
...
Guard against the orientation not coming from an inexistant tag, nor
from the application (rotation set to "auto") which caused an assertion.
When the application requests the auto rotation method, make sure it is
resolved to a rotation that's applicable.
ERROR:gstreamer/subprojects/gst-plugins-good/ext/gtk/gtkgstglwidget.c:745:gtk_gst_gl_widget_set_rotate_method: code should not be reached
Fixes: 103ceb853a
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1134 >
2021-10-13 09:16:32 +00:00
Philippe Normand
c3455def2e
soup: Runtime compatibility support for libsoup2 and libsoup3
...
The src and sink elements no longer link against libsoup. It is now loaded at
runtime. If any version is resident already, it is used. Otherwise we first try
to load libsoup3 and if it's not found we fallback to libsoup2.
For the unit-tests, we now build one version of the test unit file per libsoup
version found. So if both libsoup2 and libsoup3 are available on the host, the
CI will cover them both.
Based on initial patch by Daniel Kolesa <dkolesa@igalia.com> and
Patrick Griffis <pgriffis@igalia.com>.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1044 >
2021-10-13 08:32:25 +00:00
Bastien Nocera
9e5b6830cd
gtksink: Fetch the default "widget" value in the docs
...
There's really no interesting "widget" value that could be shown in the
docs, so use the GST_PARAM_DOC_SHOW_DEFAULT flag to avoid showing
another value.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1088 >
2021-10-12 20:27:34 +00:00
Bastien Nocera
b0d4996380
gtksink: Avoid errors fetching widget property
...
Avoid errors when fetching the "widget" property and GTK initialisation
fails, such as when running in a non-graphical environment.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1088 >
2021-10-12 20:27:34 +00:00
Olivier Crête
941c0e81dd
gtksink: Return reference to GtkWidget in the acquire function
...
This should ensure thread safety.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1088 >
2021-10-12 20:27:34 +00:00
Olivier Crête
103ceb853a
gtkglsink: Add rotate-method property
...
This mostly just takes code out of glimagesink and applies it here.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1088 >
2021-10-12 20:27:34 +00:00
Nirbheek Chauhan
e24e366952
libsoup: Bump to 2.74 to fix gssapi build failure on macOS
...
See: https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/255
We also need to disable sysprof by default because it only builds on
native Linux. If someone really wants it, they can enable the option
on the command-line by passing -Dlibsoup:sysprof=enabled
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1114 >
2021-10-12 12:22:31 +05:30
Marek Vasut
e6d83d8f96
jpegdec: Support libjpeg-turbo colorspace conversion
...
The libjpeg-turbo has a built-in support for performing colorspace
conversion. The performance of this conversion is much better than
doing the same separately using videoconvert. Implement support for
this conversion to RGBx/xRGB/BGRx/xBGR formats. Other formats can
be easily added later.
- The decoding of various pixel formats can be tested and compared to
non-libjpeg-turbo decoding as follows:
for gfmt in {RGB,BGR}{,x} x{RGB,BGR} ; do
echo "$gfmt"
gst-launch-1.0 -q \
videotestsrc pattern=colors ! \
video/x-raw,format=${gfmt} ! \
fakesink dump=true | \
head -n 200 | tail -n 1
gst-launch-1.0 -q --gst-plugin-path=build/ext/jpeg/ \
videotestsrc pattern=colors ! \
video/x-raw,format=${gfmt} ! \
jpegenc ! \
jpegdec ! \
video/x-raw,format=${gfmt} ! \
fakesink dump=true | \
head -n 200 | tail -n 1
done
Result looks as follows, i.e. comparable:
RGB
00000c70 (0x7f7736fbdd10): 05 33 19 05 33 26 05 33 33 05 33 40 05 33 4c 05 .3..3&.33.3@.3L.
00000c70 (0x7f389e8f7d10): 05 32 17 04 32 22 04 32 31 04 32 3e 04 32 4a 04 .2..2".21.2>.2J.
RGBx
00000c70 (0x7f79efd0ad10): cc 07 22 ff d9 07 22 ff e6 07 22 ff f3 07 22 ff .."..."..."...".
00000c70 (0x7fb6989f3d10): cd 06 22 00 d9 06 22 00 e6 06 22 00 f4 06 22 00 .."..."..."...".
BGR
00000c70 (0x7fa0a6c42d10): 05 0c 33 05 19 33 05 26 33 05 33 33 05 40 33 05 ..3..3.&3.33.@3.
00000c70 (0x7fc74165fd10): 05 08 32 04 17 32 04 22 32 04 31 32 04 3e 32 04 ..2..2."2.12.>2.
BGRx
00000c70 (0x7fbf399f1d10): 22 07 cc ff 22 07 d9 ff 22 07 e6 ff 22 07 f3 ff "..."..."..."...
00000c70 (0x7f50e3d1cd10): 22 06 cd 00 22 06 d9 00 22 06 e6 00 22 06 f4 00 "..."..."..."...
xRGB
00000c70 (0x7f0b950a2d10): ff cc 07 22 ff d9 07 22 ff e6 07 22 ff f3 07 22 ..."..."..."..."
00000c70 (0x7f4416b8dd10): 00 cd 06 22 00 d9 06 22 00 e6 06 22 00 f4 06 22 ..."..."..."..."
xBGR
00000c70 (0x7f237d74dd10): ff 22 07 cc ff 22 07 d9 ff 22 07 e6 ff 22 07 f3 ."..."..."..."..
00000c70 (0x7f095547dd10): 00 22 06 cd 00 22 06 d9 00 22 06 e6 00 22 06 f4 ."..."..."..."..
^^ ^^ ^^ ^^
Notice how the alpha channel is set to arbitrary value in case of the
libjpeg-turbo decoding into RGBx/BGRx/xRGB/xBGR pixel formats. This is
documented in libjpeg-turbo README.md as follows:
"
When using the RGBX, BGRX, XBGR, and XRGB colorspaces during decompression, the
X byte is undefined, and in order to ensure the best performance, libjpeg-turbo
can set that byte to whatever value it wishes.
"
- The interlaced num_fields=2 mjpeg stream can be generated and
tested as follows (this does require mjpegtools):
$ gst-launch-1.0 videotestsrc num-buffers=10 ! jpegenc ! multifilesink location=in%04d.jpg
$ jpeg2yuv -f 25 -I t -L 0 -j in%04d.jpg | yuv2lav -f avi -o result.avi
...
$ gst-launch-1.0 --gst-plugin-path=build/ext/jpeg/ filesrc location=result.avi ! \
avidemux ! jpegdec ! video/x-raw,format=RGBx ! videoconvert ! autovideosink
Signed-off-by: Marek Vasut <marex@denx.de>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1091 >
2021-10-07 12:40:29 +00:00
Thibault Saunier
5ff769d731
Move files from gst-plugins-good into the "subprojects/gst-plugins-good/" subdir
2021-09-24 16:13:50 -03:00