Jan Schmidt
f3b8f1d5b0
qmlglsrc: Handle HiDPI scaling
...
When calculating the capture framebuffer size, include
any device scaling applied to the rendered framebuffer
Fixes only capturing part of the window when there is
a global scale factor.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3622 >
2023-01-31 12:21:27 +00:00
Jan Schmidt
64ec73f313
qmlglsrc: Unmap buffer before adding sync meta
...
Adding a sync meta to a GstBuffer requires that it
be writable. Mapping the buffer with the video frame API
holds an extra ref on the buffer, so unmap before
trying to modify it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3622 >
2023-01-31 12:21:27 +00:00
Jan Schmidt
d43ef0165e
qmlglsrc: Stop when basesrc calls unlock()
...
Instead of stopping capture when the state changes,
handle other cases of basesrc stopping capture by - such
as handling an EOS event - by implementing an unlock()
method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3622 >
2023-01-31 12:21:27 +00:00
Seungha Yang
19238bdc6f
mpegpsdemux: Ignore DTS if PTS < DTS
...
It's possibly timestamp rollover case. But PTS < DTS is already
invalid case anyway.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3834 >
2023-01-28 12:58:00 +00:00
Seungha Yang
1f45b0e7e3
wasapi2src: Fix loopback capture on Windows 10 Anniversary Update
...
... or older. Work around an OS bug that loopback capture
device doesn't notify event.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1738
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3809 >
2023-01-26 16:07:43 +00:00
Pawel Stawicki
d8bef5c7e7
v4l2h264dec: Fix Raspberry Pi4 will not play video in application
...
Ensure object v4l2object->pool will be released by
correctly releasing the temporary thread-safety lock
Fixes issue #1729
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3795 >
2023-01-26 03:55:49 +00:00
Sebastian Dröge
7905628f32
gst: Fix gst_type_find_peek() return value annotation
...
It's not possible to annotate a in-parameter for a return value array as
the array length. Both are assumed to have the same direction and the
current annotation causes the size parameter to be considered an out
parameter.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3794 >
2023-01-26 03:19:46 +00:00
Sebastian Dröge
b6a400ae6b
sdp: Fix gst_mikey_payload_key_data_set_interval() array length annotation
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1744
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3794 >
2023-01-26 03:19:46 +00:00
Mathieu Duponchelle
f08994583f
redenc: fix setting of extension ID for twcc
...
1 was previously hardcoded in, and the bug went under the radar because
webrtcsink hardcodes the number too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3793 >
2023-01-26 02:49:50 +00:00
Edward Hervey
54697df6e3
multiqueue: Handle use-interleave latency live pipelines
...
Due to the dynamic nature of multiqueue, when `use-interleave` is used we can't
report a maximum tolerated latency (when queried) since it is calculated
dynamically.
When in such live pipelines, we need to make sure multiqueue can handle the
lowest global latency (provided by this event). Failure to do that would
result in not providing enough buffering for a realtime pipeline.
Fixes #1732
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3792 >
2023-01-26 02:18:48 +00:00
Sebastian Dröge
a70935782e
avvidenc: Don't take ffmpeg timestamps verbatim but only use them to calculate DTS
...
The ffmpeg timestamps are inaccurate and only in framerate granularity.
To avoid generating inaccurate output timestamps, especially with
variable framerate streams, only use the ffmpeg timestamps for
calculating the DTS.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1544
again.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3791 >
2023-01-26 01:28:23 +00:00
Sebastian Dröge
ceecd4717d
Revert "avvidenc: Set timebase in the ffmpeg context to nanoseconds and set framerate"
...
This reverts commit 50db59449e
.
This broke the MPEG-1 video encoder as it requires the framerate to be
used for the timebase.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1734
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3791 >
2023-01-26 01:28:23 +00:00
F. Duncanh
82ad60e905
plugins-base/tests/check/meson.build: add omitted Wayland dependence
...
SUSE places Wayland include files in /usr/include/wayland, and needs
a Cflag added to wayland_client_deps by pkg-config, which is added to
gl_winsys_deps: add this as a dependency in gstgl_dep to fix issue.
Fixes #1607
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3768 >
2023-01-22 18:53:36 +00:00
Tim-Philipp Müller
42b8214538
gst-plugins-ugly: update translations
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1575
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3764 >
2023-01-21 11:16:01 +00:00
Tim-Philipp Müller
8b32e0f57a
gst-plugins-bad: update translations
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3764 >
2023-01-21 11:15:58 +00:00
Tim-Philipp Müller
d7bc595acd
gst-plugins-good: update translations
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3764 >
2023-01-21 11:15:53 +00:00
Tim-Philipp Müller
4b43b06093
gst-plugins-base: update translations
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3764 >
2023-01-21 11:15:49 +00:00
Tim-Philipp Müller
bddfb98353
gstreamer: update translations
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3764 >
2023-01-21 11:15:45 +00:00
Sebastian Dröge
44532db218
matroska: Add stream-format = (string) obu-stream
to AV1 caps
...
Anything else is not allowed in Matroska/WebM.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3741 >
2023-01-19 19:54:01 +02:00
Sebastian Dröge
c03a6d0ea2
isomp4: Add stream-format = (string) obu-stream
to AV1 caps
...
Anything else is not allowed in MP4.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3741 >
2023-01-19 19:54:01 +02:00
Jan Alexander Steffens (heftig)
e5ddd94da6
input-selector: Take the object lock while iterating sinkpads
...
Otherwise we can race with pad removal and crash from use-after-free.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1717
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3747 >
2023-01-18 19:48:53 +00:00
Sebastian Dröge
2c503a8d7d
avvidenc: Offset PTS to zero to fix bitrate control
...
Otherwise ffmpeg's rate control algorithm will not work correctly as
it is based on the absolute PTS values.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/91
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3727 >
2023-01-13 20:28:09 +00:00
Seungha Yang
af97e98315
d3d11memory: Fix potential crash in GstD3D11PoolAllocator
...
Allocator object can be the final refcount holder, when a GstD3D11Memory
is being released. Do unref allocator once there's no more
remaining operation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3726 >
2023-01-13 19:33:56 +00:00
Seungha Yang
230ecf3cd9
d3d11memory: Remove GstD3D11PoolAllocator::dispose
...
Clear GstD3D11Device object in finalize method as well
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3726 >
2023-01-13 19:33:56 +00:00
Rodrigo Bernardes
fe90b08d2f
dvbbasebin: don't rely on g_key_file_get_(integer|uint64) return
...
instead check if an error was returned, and fail if any
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3701 >
2023-01-10 01:55:35 +00:00
Olivier Crête
2544c7cb78
webrtc examples: Force regular non-MULTIOPUS
...
Using MULTIOPUS breaks with most browsers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3685 >
2023-01-05 10:18:40 +00:00
Olivier Crête
45b4bca877
webrtc-unidirectional: Avoid critical
...
Don't unref the parameter passed to a signal, it's always owned by
the caller. Fixes a GLib critical.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3685 >
2023-01-04 20:05:29 +00:00
Sebastian Dröge
965e6086d0
ges: gst_bin_add() is transfer floating
so wrappers around it are too
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3684 >
2023-01-04 18:50:01 +00:00
Mathieu Duponchelle
903289613b
qtmux: For video with N/1001 framerates use N as timescale instead of centiframes
...
This is recommended by various specifications for such framerates, while
for integer framerates we continue using centiframes to allow for some
more accuracy.
Using N means that no rounding error accumulates, eventually leading to
outputting a packet with a different duration.
Some tools such as MediaInfo determine that a stream is variable
framerate if any packet has a different duration than the others, and
there is no reason I can see for not using the full 4 bytes of
resolution that the mp4 timescale offers.
Example problematic pipeline:
```
videotestsrc num-buffers=5001 ! video/x-raw,framerate=60000/1001,width=320,height=240 ! \
videoconvert ! x264enc bitrate=80000 speed-preset=1 tune=zerolatency ! h264parse ! \
video/x-h264,profile=high-10 ! mp4mux ! filesink location="result2.mp4"
```
This results in a media file that MediaInfo detects as variable
framerate because the 5000th packet has duration 99 instead of 100.
With this patch, the timescale is 60000 and all packets have duration
1001.
Related issue for context: https://bugzilla.gnome.org/show_bug.cgi?id=769041
Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3683 >
2023-01-04 18:01:50 +00:00
Sebastian Dröge
49dccf42b6
avvidenc: Set timebase in the ffmpeg context to nanoseconds and set framerate
...
As we now actually use the timestamps from ffmpeg for timestamping the
output we would lose a lot of accuracy if the framerate is used.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1544
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3679 >
2023-01-04 17:19:37 +00:00
Olivier Crête
7cb4f36c42
srt: Avoid crash on unknown option
...
Use the correct field that is null instead of the struct value which
never is.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3682 >
2023-01-04 15:23:15 +00:00
Tim-Philipp Müller
32d11fdaf4
subprojects: libffi: pin to meson-3.2.9999.4 tag
...
In case we want to change the 'meson' branch over
to the re-done meson port based on upstream libffi
in future.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3669 >
2023-01-02 00:35:56 +00:00
Sebastian Dröge
ce7bc581f1
gl: Mark gst_gl_context_new_wrapped()
return value as nullable
...
If a GL context is requested for which no API support is compiled in
then `NULL` is returned.
Also remove a useless `NULL` check: `g_object_new()` can't possibly
return `NULL`, ever.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3668 >
2023-01-02 00:05:30 +00:00
Nirbheek Chauhan
996b9ebd9e
meson: Add gstreamer-gl-1.0 pkgconfig vars to internal dependency
...
So we can fetch gl_winsys, gl_platforms, etc directly using
gst_gl_dep.get_variable() when building gstreamer as a subproject, or
when building gst-plugins-rs's gtk4 plugin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3667 >
2023-01-01 23:32:49 +00:00
Philippe Normand
9aa8393e06
tests: gstelement: Fix test_add_pad_while_paused flakiness
...
`gst_element_remove_pad()` doesn't automatically deactivate the pad, it has to
be done explicitly beforehand, otherwise the pad task might be left dangling,
exposed to undefined behaviour.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3651 >
2022-12-28 19:02:42 +01:00
Alicia Boya García
ebe44034c1
gstelement: fix deadlock in gst_element_add_pad() when >=PAUSED
...
gst_element_add_pad() is supposed to activate the pad if the element
state is >= PAUSED and the pad is not already active.
Unfortunately, before this patch, the activation was performed while the
element lock was still taken, which ended causing a deadlock in
gst_pad_start_task() as it attempted to post `stream-status` message in
the element, which also requires the element lock.
Elements could work around this bug by activating the pad manually
before adding it to the element.
This patch fixes the problem by performing pad activation only after the
element lock has been released.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3651 >
2022-12-28 13:16:33 +01:00
Seungha Yang
e2f30cd947
gtkbasesink: Fix widget leak
...
gst_gtk_base_sink_get_widget() will increase refcount and it should
be released after use
Fixing regression introduced by the commit
941c0e81dd
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3650 >
2022-12-28 11:46:14 +01:00
Yatin Maan
7cf130801b
aom: av1enc: Ensure that input pts is strictly increasing
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3649 >
2022-12-27 22:42:56 +01:00
Yatin Maan
ab7b1c8d62
aom: av1enc: Fix pts unit
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3649 >
2022-12-27 22:42:49 +01:00
Seungha Yang
d5086a1091
rtspsrc: Fix string leak
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3648 >
2022-12-27 21:43:02 +01:00
Seungha Yang
620974352d
rtptimerqueue: Fix memory leak
...
Should chain up to parent's finalize
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3648 >
2022-12-27 21:43:02 +01:00
Tim-Philipp Müller
8bee905f95
ci: validate: don't --check-bugs in 1.20 branch
...
Any issues fixed may only have been fixed in the main branch.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3647 >
2022-12-27 21:06:08 +01:00
Sebastian Dröge
ccd582c332
bin: Fix race conditions in tests
...
The latency messages are non-deterministic and can arrive before/after
async-done or during state-changes as they are posted by e.g. sinks from
their streaming thread but bins are finishing asynchronous state changes
from a secondary helper thread.
To solve this, expect latency messages at any time and assert that we
receive one at some point during the test.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3647 >
2022-12-27 20:38:37 +01:00
He Junyan
78d1f5d026
va: Delay the VAProcPipelineCaps query after context created.
...
The VAAPI vaQueryVideoProcPipelineCaps() requires the context as the
parameter. So far, we always pass VA_INVALID_ID and it can succeed.
But the API does not say that and in theory, a valid context is required.
Now the new platform really needs a valid context and so we have to
delay that query until the context is created.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3620 >
2022-12-22 02:29:46 +00:00
Matthias Fuchs
10fee807b9
qmlglsrc: Fix deadlock when stopping
...
This fix makes sure that streaming thread stops waiting when the
qmlglsrc element transitions from playing to paused.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3619 >
2022-12-22 01:57:36 +00:00
Tim-Philipp Müller
4a99827d4c
Back to development
2022-12-20 00:39:36 +00:00
Tim-Philipp Müller
f7806a854a
Release 1.20.5
2022-12-19 23:34:46 +00:00
Tim-Philipp Müller
554efedd44
Update ChangeLogs for 1.20.5
2022-12-19 23:34:34 +00:00
Philipp Zabel
18cae8c9b4
videoscale: fix valid_tags NULL-terminated array of strings
...
The valid_tags array of strings must be NULL-terminated,
as it is passed to the g_strv_contains() function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3604 >
2022-12-19 14:37:16 +00:00
Edward Hervey
f9c2df6f9a
mpegts: Always clear packetizer on DISCONT push mode
...
If a discontinuity is detected in push mode, we need to clear the cached section
observations since they might have potentially changed.
This was only done properly when operating with TIME segments (dvb, udp,
adaptive demuxers, ...) but not with BYTE segments (such as with custom app/fd
sources).
We still don't want to flush out the PCR observations, since this might be
needed for seeking in push-based BYTE sources.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1650
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3600 >
2022-12-19 10:16:43 +00:00