| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1744
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3794>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
framerate"
This reverts commit 50db59449e9cdb637c5f0c1b7c5dccd582fac4ee.
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1575
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3764>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3764>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3764>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3764>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3764>
|
|
|
|
|
|
| |
Anything else is not allowed in Matroska/WebM.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3741>
|
|
|
|
|
|
| |
Anything else is not allowed in MP4.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3741>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Clear GstD3D11Device object in finalize method as well
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3726>
|
|
|
|
|
|
| |
instead check if an error was returned, and fail if any
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3701>
|
|
|
|
|
|
| |
Using MULTIOPUS breaks with most browsers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3685>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3684>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
`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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
gst_gtk_base_sink_get_widget() will increase refcount and it should
be released after use
Fixing regression introduced by the commit
941c0e81ddf5c0ad6a9fac59b1d6bf7723025434
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3650>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3649>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3649>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3648>
|
|
|
|
|
|
| |
Should chain up to parent's finalize
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3648>
|
|
|
|
|
|
| |
Any issues fixed may only have been fixed in the main branch.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3647>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
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>
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
decodedad might have their name changed when exposing, causing a race when
trying to get their name without taking a lock. Just use GST_PTR_POINTER in
debug statements instead
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3597>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3597>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3597>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3597>
|
|
|
|
|
|
|
|
| |
* Don't leak the mainloop
* Don't leak temporary strings
* Don't leak id when searching in hash table
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3597>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3597>
|