| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
| |
|
|
|
|
|
|
|
| |
Memory layout of XvImage might be different from that of GstVideoInfo.
If so, the image size, stride, and offset would be wrongly informed.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/677
|
| |
|
|
|
|
|
|
|
|
| |
The matrices were in the wrong order.
Instead of the conversion matrix being
_ XYZ_TO_RGB_output * RGB_TO_XYZ_input * input_RGB
It was
_ RGB_TO_XYZ_input * XYZ_TO_RGB_output * input_RGB
|
|
|
|
|
|
|
|
| |
To support runtime audio samplerate change, re-calculate next target offset
per caps. Calculating the next buffer offset using the previous
offset seems to be tricky and rounding error prone.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/693
|
|
|
|
|
|
| |
This reverts commit 4fa850e3e6c039000fc7f648de238af6c2278469.
The commit would break an constant rate audio stream with gap.
|
|
|
|
|
|
| |
This function might be revisited with different channel position mapping
while audio source goes into play so the reorder flag needs to be reset
before the checks happen.
|
|
|
|
|
|
|
|
| |
Instead initialize the map infos, etc to NULL like gst_buffer_map()
would be doing on a zero-sized buffer.
This fixes a crash in audioresample if the first output buffer would
contain zero samples.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously this would've only set discont=TRUE and then for all future
buffers simply returned immediately.
Instead we also need to
a) drain previous input until its buffer time
b) update next_ts and base_ts accordingly for the gap
c) actually store the new buffer after the gap so it can be used in
the future and so the old buffer before the gap is gone
Also update the unit test accordingly so that it actually tests for this
behaviour. Previously it only tested that after the gap we got no output
at all.
|
|
|
|
|
| |
Without this, sinks will not be notified about size changes or even the
initial size and would render at 0x0.
|
| |
|
|
|
|
|
|
|
| |
interlacing
So we can also use them for interlaced content and speed up scaling a
bit.
|
|
|
|
|
|
|
|
|
|
| |
gst_video_scaler_2d()
We need to provide twice as many lines as usual to the scaling function
as every second lines would be skipped.
Without this we read from random memory and produce colorful output and
crashes.
|
|
|
|
|
|
|
| |
interlaced planar formats
They will mix lines from the top and bottom field and by that
effectively deinterlace the video, badly.
|
|
|
|
|
|
| |
Without this, scaling e.g. interlaced UYVY causes corrupted output with
lines as follows: f1 f1 f2 f2, i.e. two lines of each field and only
then the other field.
|
|
|
|
|
|
|
|
|
|
| |
The watch->messages_bytes is not decreased when the write operation
from the backlog is only partly successfull.
This commit decreases the watch->messages_bytes for the successfully
sent messages.
Fixes #679
|
|
|
|
|
|
|
|
|
| |
When checking the behaviour of live seeking on audiomixer or
adder we don't *really* need real audio devices. audiotestsrc
in live mode is enough to test the behaviour of those elements.
Also avoids people repeatedly wasting hours trying to figure out
whether that failing behaviour is due to their code or not.
|
| |
|
|
|
|
| |
Makes CineForm-in-AVI work.
|
|
|
|
|
|
|
|
|
| |
This is done by reusing `gst_gl_memory_setup_buffer` avoiding to
duplicate code.
Without a VideoMeta, mapping those buffers lead to GstBuffer mapping the
buffer in system memory even when specifying the GL flags (through the
buffer merging mechanism) making the result totally broken.
|
|
|
|
|
|
|
|
| |
Due to the use of {set/get}-element_private methods being used to store
the GstSyncStream in the src and sink pads, and the racey nature of pad
destruction, there are numerous ways we can be bitten by race conditions
in the stream synchronizer. Fix that by tying the pads toghether with
references.
|
|
|
|
|
|
| |
Equvalant to https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/258
When debug enabled, the debug string might be broken on Windows.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
The "field-order" is related for all interlace_mode modes except the
"progressive" mode. So instead of or'ing each mode we can use the
already supported GST_VIDEO_INFO_IS_INTERLACED macro.
|
| |
|
|
|
|
|
|
|
|
| |
If the remainder is not evenly divisable by 4, we'd miss the check
for zero and continue the loop until crashing. Change the branch
to take into account negatives as well.
This more closely matches the SSE loop.
|
|
|
|
|
|
| |
Also free the GstEGLImage struct allocated by g_new0.
Fixes #661
|
|
|
|
|
|
|
|
| |
Make more flexible. There is an extra
gethostbyname2_r@@GLIBC_2.2.5 (getXXbyYY_r.c:217)
in the trace on the build bots (F30).
Fixes the -base and -good valgrind jobs on the 1.16 branch CI.
|
|
|
|
|
|
|
|
|
|
|
| |
(dec->priv->ctx.caps)' failed
Matroskademux will send gap event when lag of video and audio is over 3 seconds.
audiodecoder needs to handle gap event and set default output caps.
Only audio info is set, while output caps is ignored. This cause the assertion failed.
Need to fill output caps in gst_audio_decoder_negotiate_default_caps() with
negotiated caps to avoid critical info printed when check it later.
|
|
|
|
| |
Otherwise introspection may fail because wayland-client.h cannot be found.
|
|
|
|
|
|
|
|
| |
The caps and thus the video info have preference. If the field order is
set in there then it applies to all frames.
This works around issues where the tff field order is only set in the
caps but not additionally in the buffer flags.
|
|
|
|
|
|
| |
The #extention must come before 'precision highp float;'.
Closes: #650
|
|
|
|
| |
Follow-up to !310 and helps with backport commits like !360
|
|
|
|
|
|
|
|
| |
This came up in the case where v4l2 sets caps with colorimetry=NULL, and
then tries to parse back the colorimetry, causing a crash in
gst_video_get_colorimetry() because of g_str_equal(). We fix this by
making sure the only caller of the function never calls it with a null
colorimetry string.
|
|
|
|
| |
Also drop some deadcode #defines.
|
|
|
|
|
| |
Previously we were checking offset 1 twice, but the second check
should've been for offset 2.
|
|
|
|
|
|
|
|
|
|
| |
Commit c71dd72b "gl/wayland: fix glib mainloop integration" was overeager
in removing the poll result test from the check function. This caused
dispatch to be called even if no new events are available on the
Wayland connection, which in turn would wake up the glib mainloop,
causing effectively a tight loop without ever blocking on the poll.
Fixes #603
|
| |
|
|
|
|
| |
One for convert pads and one for normal sink pads.
|
|
|
|
|
|
| |
GstVideoAggregatorConvertPad is used
Otherwise assume that we can at least support any framerate.
|
|
|
|
|
|
|
|
| |
into account when calculating allow sink caps
While we can convert between all formats apart from the rate, we
actually need to make sure that we comply with a) the rate of the first
configured pad and b) also all the allowed rates from downstream.
|
|
|
|
| |
assume that we can actually convert
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We were previously only fixating the rate in the getcaps
implementation when downstream was requiring a discrete value,
causing negotiation to fail when upstream was capable of rate
conversion, but not made aware that it had to occur.
Instead of fixating the rate, we can simply update our sink
template caps with whatever GValue the downstream caps are holding
as their rate field.
Allows negotiation to successfully complete with pipelines such as:
audiotestsrc ! audio/x-raw, rate=48000 ! audioresample ! audiomixer name=m ! \
audio/x-raw, rate={800, 1000} ! autoaudiosink \
audiotestsrc ! audio/x-raw, rate=44100 ! audioresample ! m.
|
| |
|
|
|
|
|
|
|
|
| |
Body_offset mean that so much data have been written.
Without this patch n_vectors somtimes becomes one more than it should
and then there will be an vector that have a random size causing
writev_bytes to cause a "Bad address" error.
|
|
|
|
|
| |
A comment is not sufficient because this will break when
cherry-picking or backporting commits.
|
|
|
|
|
| |
If we fail to process the gap event we need to unref the event or
we end up with a leak.
|