platform/upstream/gstreamer.git
13 months agod3d11decoder: Fix crash on negotiate() when decoder is not configured
Seungha Yang [Tue, 26 Sep 2023 16:12:01 +0000 (01:12 +0900)]
d3d11decoder: Fix crash on negotiate() when decoder is not configured

The negotiate() can be called by GstVideoDecoder baseclass on GAP event,
and decoder helper object might not be configured at the time
when negotiate() is called.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5401>

13 months agov4l2videodec: Correctly free caps to avoid memory leak
Hou Qi [Fri, 22 Sep 2023 07:57:28 +0000 (16:57 +0900)]
v4l2videodec: Correctly free caps to avoid memory leak

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5388>

13 months agortspconnection: Ignore trailing whitespace in headers
Eric [Thu, 21 Sep 2023 12:12:47 +0000 (08:12 -0400)]
rtspconnection: Ignore trailing whitespace in headers

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5382>

13 months agovideo-scaler, audio-resampler: downgrade 'can't find exact taps' to debug
Michiel Westerbeek [Wed, 20 Sep 2023 14:07:35 +0000 (16:07 +0200)]
video-scaler, audio-resampler: downgrade 'can't find exact taps' to debug

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5381>

13 months agoBack to development
Tim-Philipp Müller [Wed, 20 Sep 2023 18:41:00 +0000 (19:41 +0100)]
Back to development

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5371>

13 months agoRelease 1.22.6
Tim-Philipp Müller [Wed, 20 Sep 2023 17:10:57 +0000 (18:10 +0100)]
Release 1.22.6

13 months agomxfdemux: Check number of channels for AES3 audio
Sebastian Dröge [Thu, 10 Aug 2023 12:47:03 +0000 (15:47 +0300)]
mxfdemux: Check number of channels for AES3 audio

Only up to 8 channels are allowed and using a higher number would cause
integer overflows when copying the data, and lead to out of bound
writes.

Also check that each buffer is at least 4 bytes long to avoid another
overflow.

Fixes ZDI-CAN-21661, CVE-2023-40475

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2897

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5365>

13 months agomxfdemux: Fix integer overflow causing out of bounds writes when handling invalid...
Sebastian Dröge [Thu, 10 Aug 2023 12:45:01 +0000 (15:45 +0300)]
mxfdemux: Fix integer overflow causing out of bounds writes when handling invalid uncompressed video

Check ahead of time when parsing the track information whether
width, height and bpp are valid and usable without overflows.

Fixes ZDI-CAN-21660, CVE-2023-40474

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2896

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5365>

13 months agoh265parser: Fix possible overflow using max_sub_layers_minus1
Nicolas Dufresne [Wed, 9 Aug 2023 16:49:19 +0000 (12:49 -0400)]
h265parser: Fix possible overflow using max_sub_layers_minus1

This fixes a possible overflow that can be triggered by an invalid value of
max_sub_layers_minus1 being set in the bitstream. The bitstream uses 3 bits,
but the allowed range is 0 to 6 only.

Fixes ZDI-CAN-21768, CVE-2023-40476

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2895

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5366>

13 months agowaylandsink: Fix cropping for video with non-square aspect ratio
Hugues Fruchet [Mon, 11 Sep 2023 16:12:28 +0000 (18:12 +0200)]
waylandsink: Fix cropping for video with non-square aspect ratio

Padding of unaligned content is still visible at right with some aspect-ratio.
Fix this by giving the original content resolution to wp_viewport_set_source()
instead of pixel aspect ratio scaled one.

Fixes !5259

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5360>

13 months agopulsedeviceprovider: fix incorrect usage of GST_ELEMENT_ERROR
Olivier Blin [Tue, 19 Sep 2023 07:14:31 +0000 (09:14 +0200)]
pulsedeviceprovider: fix incorrect usage of GST_ELEMENT_ERROR

The provider is not a GStreamer element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5354>

13 months agoh264decoder: Update latency dynamically
Seungha Yang [Wed, 13 Sep 2023 16:18:59 +0000 (01:18 +0900)]
h264decoder: Update latency dynamically

The actual number of reorder frames is unknown
unless frame reordering is disabled
(e.g., POC type 2 or constrained-* profiles).
Also derived maximum DPB size or max_num_reorder_frames in VUI
is not the upper bound of output delay.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2702
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5341>

13 months agoapplemedia: Also fix inconsistent pixel format definition for NV12
L. E. Segovia [Wed, 16 Aug 2023 13:43:56 +0000 (13:43 +0000)]
applemedia: Also fix inconsistent pixel format definition for NV12

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5203>

13 months agoapplemedia: Fix pixel format for I420
L. E. Segovia [Tue, 15 Aug 2023 21:45:56 +0000 (21:45 +0000)]
applemedia: Fix pixel format for I420

In Intel Macs, using full range 8-bit 4:2:0 YCbCr results in a failure on
initialization. I've validated this to be the correct pixel format with FFmpeg:

https://github.com/FFmpeg/FFmpeg/blob/8653dcaf7d665b15b40ea9a560c8171b0914a882/libavutil/hwcontext_videotoolbox.c#L45

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5203>

13 months agova: Fix in error logs functions mismatches
Víctor Manuel Jáquez Leal [Thu, 24 Aug 2023 10:12:09 +0000 (12:12 +0200)]
va: Fix in error logs functions mismatches

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5340>

13 months agoandroidmedia/enc: handle codec-data before popping GstVideoCodecFrames
Matthew Waters [Fri, 15 Sep 2023 01:06:52 +0000 (11:06 +1000)]
androidmedia/enc: handle codec-data before popping GstVideoCodecFrames

Issue is that when amc was producing a codec-data buffer, a
GstVideoCodecFrame was being popped off the internal queue.  This meant
that the codec-data was being associated with the first input frame and
the second (first encoded buffer) output buffer with the second input
frame.  At the end (assuming one input produces one output which seems
to hold in my testing and how the encoder is currently implemented)
there would be an input frame missing and would be pushed without any
timing information.  This would lead to e.g. muxers rejecting the buffer
without PTS and failing to mux.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5335>

13 months agoandroidmedia/enc: add fixme log about partial frames
Matthew Waters [Fri, 15 Sep 2023 01:06:07 +0000 (11:06 +1000)]
androidmedia/enc: add fixme log about partial frames

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5335>

13 months agoav1parser: Fix segmentation params update
Seungha Yang [Fri, 15 Sep 2023 18:13:33 +0000 (03:13 +0900)]
av1parser: Fix segmentation params update

Even if the segmentation feature value is not updated,
the parsed "segmentation_update_map" and "segmentation_temporal_update"
values should not be cleared as it's referenced during lower
level bitstream parsing. Also, don't use assert() in parser
unless it's clearly impossible condition.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5336>

13 months agortmp2: Allow NULL flash version, omitting the field
Jan Alexander Steffens (heftig) [Thu, 24 Aug 2023 15:40:42 +0000 (17:40 +0200)]
rtmp2: Allow NULL flash version, omitting the field

rtmpsink omits it by default. Allow us to do the same.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5248>

13 months agoandroidmedia: fix hevc codec profile registration
Thomas Schneider [Tue, 5 Sep 2023 12:15:04 +0000 (14:15 +0200)]
androidmedia: fix hevc codec profile registration

Fix the codec registration logic such that all supported
profiles are available instead of just the first in the
list.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5313>

13 months agov4l2: object: Handle video helper return value
Nicolas Dufresne [Tue, 5 Sep 2023 20:56:44 +0000 (16:56 -0400)]
v4l2: object: Handle video helper return value

gst_video_info_set_interlaced_format() can return an error if the
width/height causes integer overflow. Handle this case, so that we can
fail cleanly. This has been experienced while testing an in-progress
driver.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5319>

13 months agov4l2: bufferpool: Avoid warnings on empty last buffer
Nicolas Dufresne [Tue, 5 Sep 2023 20:51:24 +0000 (16:51 -0400)]
v4l2: bufferpool: Avoid warnings on empty last buffer

Some drivers will push an buffer flagged LAST but empty. In decoder
case, this results in an "producing too many buffer" warning, even
though the result is entirely correct. Detect this case in order to
signal EOS earlier and avoid this warning.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5319>

13 months agov4l2: bufferpool: Do not resize compressed buffer
Nicolas Dufresne [Tue, 5 Sep 2023 20:15:19 +0000 (16:15 -0400)]
v4l2: bufferpool: Do not resize compressed buffer

Avoid resizing compressed buffer to their maximum size. This fixes a
regression that caused valid but very large streams to be generated.

Fixes #2953

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5319>

13 months agortpjitterbuffer: Avoid integer overflow in max saveable packets calculation with...
Sebastian Dröge [Thu, 7 Sep 2023 14:23:37 +0000 (17:23 +0300)]
rtpjitterbuffer: Avoid integer overflow in max saveable packets calculation with negative offset

The timestamp offset can be negative, and it can be a bigger negative
number than the latency introduced by the rtpjitterbuffer so the overall
timeout offset can be negative.

Using the negative offset for calculating how many packets can still
arrive in time when encountering a lost packet in an equidistant stream
would then overflow and instead of considering fewer packets lost a lot
more packets are considered lost.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5318>

13 months agocodecparsers: Fix MPEG-1 aspect ratio table
Akihiro Sagawa [Sun, 3 Sep 2023 13:21:30 +0000 (13:21 +0000)]
codecparsers: Fix MPEG-1 aspect ratio table

The values defined in ISO/IEC 11172-2 are different from those used so far.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5300>

13 months agomacos-bison: Update to 3.8.2 and add an ARM64 build
Nirbheek Chauhan [Wed, 30 Aug 2023 10:56:07 +0000 (16:26 +0530)]
macos-bison: Update to 3.8.2 and add an ARM64 build

Also includes a shell script to build bison and match pycodestyle.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5299>

13 months agowaylandsink: Crop surfaces to their display width height
Nicolas Dufresne [Tue, 29 Aug 2023 18:55:03 +0000 (14:55 -0400)]
waylandsink: Crop surfaces to their display width height

Setting the surface source rectangle has been omitted so far. As a side effect
surface created with padded width/height are being scaled down. Fix this using
the viewporter source rectangle configuration. This can later be enhanced
to support crop meta.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5298>

13 months agod3d11convert: Passthrough allocation query on same caps
Seungha Yang [Mon, 28 Aug 2023 11:58:22 +0000 (20:58 +0900)]
d3d11convert: Passthrough allocation query on same caps

Since d3d11convert and its variant elements does not enable basetransform's
passthrough, passthrough allocation query needs to be handled
manually in order to respect downstream element's min/max buffer
requirement.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5297>

14 months agosdp: fix wrong error message for missing clock-rate in caps
Stephan Seitz [Sat, 26 Aug 2023 13:12:05 +0000 (15:12 +0200)]
sdp: fix wrong error message for missing clock-rate in caps

When using `gst_sdp_media_set_media_from_caps` on `application/x-rtp` caps
without `clock-rate` it wrongly reports missing payload type even if `payload`
is present in the caps.

This seems to be a copy&paste error from the error message for missing payload
type.

When using payload=10, both `clock-rate` and some other media properties are
defined by the RTP standard so I was wondering whether I could omit `clock-rate`
and was confused about the error message.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5252>

14 months agonvencoder: Fix negotiation error when interlace-mode is unspecified
Seungha Yang [Wed, 23 Aug 2023 10:27:43 +0000 (19:27 +0900)]
nvencoder: Fix negotiation error when interlace-mode is unspecified

Use GST_PAD_SET_ACCEPT_INTERSECT() to accept caps without interlace-mode
field

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5240>

14 months agowin32ipc: Fix pipe handle leak
Seungha Yang [Wed, 23 Aug 2023 09:07:31 +0000 (18:07 +0900)]
win32ipc: Fix pipe handle leak

Named pipe handle must be closed if it's no longer needed

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2923
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5231>

14 months agoh265parse: Allow partially broken hvcC data
Seungha Yang [Mon, 21 Aug 2023 17:57:24 +0000 (02:57 +0900)]
h265parse: Allow partially broken hvcC data

Ignores parsing error on the last nalu of the array if the nalu type
is not VPS/SPS/PPS

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2905
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5220>

14 months agov4l2object: clear format lists if source change event is received
Ming Qian [Tue, 22 Aug 2023 01:57:14 +0000 (09:57 +0800)]
v4l2object: clear format lists if source change event is received

If decoder notify a source change event when the capture format is
changed, not the resolution changed.

then gst_v4l2_object_acquire_format will retuen false due to
unsupported format.

we need to clear the format lists in the source change flow,
and reenumerate format list

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5223>

14 months agov4l2: allocator: Don't close foreign dmabuf
Nicolas Dufresne [Tue, 25 Jul 2023 19:14:11 +0000 (15:14 -0400)]
v4l2: allocator: Don't close foreign dmabuf

Imported dmabuf are not being duped, so they should never be closed. Instead,
we ensure their live time by having strong reference on their original
buffer. This should fix potential flickering due to dmabuf being closed
too early.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5217>

14 months agoaudio: Make sure to stop ringbuffer on error
Jan Schmidt [Fri, 18 Aug 2023 15:00:16 +0000 (01:00 +1000)]
audio: Make sure to stop ringbuffer on error

Add gst_audio_ring_buffer_set_errored() that will mark the
ringbuffer as errored only if it is currently started or paused,
so gst_audio_ringbuffer_stop() can be sure that the error
state means that the ringbuffer was started and needs stop called.

Fixes a crash with osxaudiosrc if the source element posts
an error, because the ringbuffer would not get stopped and CoreAudio
would continue trying to do callbacks.

Also, anywhere that modifies the ringbuffer state, make sure to
use atomic operations, to guarantee their visibility

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5216>

14 months agomdns: Fix a crash on context error
Jan Schmidt [Fri, 18 Aug 2023 08:21:18 +0000 (18:21 +1000)]
mdns: Fix a crash on context error

Make sure not to free the microdns provider context until the
device provider asks it to stop. Fixes a crash if there is
an error (such as MDNS port being busy) that makes the
mdns listener exit early.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5207>

14 months agotools: gst-inspect: print action signals as emit_by_name() invocations
Tim-Philipp Müller [Tue, 28 Mar 2023 18:58:30 +0000 (19:58 +0100)]
tools: gst-inspect: print action signals as emit_by_name() invocations

It's quite confusing to print a function callback signature for
action signals when people need to do a g_signal_by_name() invocation
in order to use this feature. Requires too much background knowledge
about how GObject works under the hood to make sense of that.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5206>

14 months agotools: gst-inspect: prettify type names for strings
Tim-Philipp Müller [Wed, 29 Mar 2023 15:46:43 +0000 (16:46 +0100)]
tools: gst-inspect: prettify type names for strings

'gchararray' and 'GStrv' are not types used anywhere else
and are just confusing. Map that to 'const gchar *' and 'gchar *'
etc. depending on context.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5206>

14 months agotools: gst-inspect: add vertical spacing between properties and signals
Tim-Philipp Müller [Tue, 28 Mar 2023 18:56:14 +0000 (19:56 +0100)]
tools: gst-inspect: add vertical spacing between properties and signals

Makes it easier to read and less squashed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5206>

14 months agotools: Disable fault signal handlers in gst-launch/gst-validate on macOS
Piotr Brzeziński [Tue, 15 Aug 2023 14:01:28 +0000 (16:01 +0200)]
tools: Disable fault signal handlers in gst-launch/gst-validate on macOS

By default, macOS attempts to run lldb against a misbehaving process to handle the crash. This does not play well
with the SISEGV/SIGQUIT handler we add in gst-launch/gst-validate. The 'spinning' mechanism causes the lldb
and debugserver processes ran by macOS to misbehave, taking 100% CPU and rendering both themselves and the GStreamer
instance frozen and very hard to effectively kill. macOS's Activity Monitor is also unusable while this is happening.

This patch takes the quickest possible solution of just disabling those signal handlers entirely on macOS.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5201>

14 months agortmp2sink: fix crash if message conversion failed
Guillaume Desmottes [Fri, 18 Aug 2023 07:27:36 +0000 (09:27 +0200)]
rtmp2sink: fix crash if message conversion failed

The message pointer is not set so we can't display it in logs.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5202>

14 months agoqt: Unbreak build with qt-egl enabled but viv_fb missing
Jan Alexander Steffens (heftig) [Thu, 20 Jul 2023 17:13:36 +0000 (19:13 +0200)]
qt: Unbreak build with qt-egl enabled but viv_fb missing

Avoids an error message when the feature is explicitly enabled:

    ERROR: Feature qt-egl cannot be enabled: gstreamer-gl-viv_fb-1.0 is required

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5200>

14 months agosdpmessage: Parse zero clock-rate as default
Olivier Crête [Wed, 9 Aug 2023 21:35:39 +0000 (17:35 -0400)]
sdpmessage: Parse zero clock-rate as default

It seems there is at least one broken RTSP server out there that returns a clock-rate of 0.
Let's just ignore it and use the default in that case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5199>

14 months agogstadaptivedemux: fix memory leak
Wang Chuan [Mon, 7 Aug 2023 06:18:21 +0000 (14:18 +0800)]
gstadaptivedemux: fix memory leak

GstQuery leaks when using invalid url

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5156>

14 months agohlssink2: Always use forward slash separator
Seungha Yang [Mon, 7 Aug 2023 16:29:40 +0000 (01:29 +0900)]
hlssink2: Always use forward slash separator

g_build_filename() will insert back slash on Windows, and resulting
playlist will contain media segment path with back slash if
"playlist-root" property is specified

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5161>

14 months agoaudiolatency: Fix event refcounting bug handling latency events
Jan Schmidt [Fri, 4 Aug 2023 15:39:29 +0000 (01:39 +1000)]
audiolatency: Fix event refcounting bug handling latency events

Fix a refcounting bug introduced in
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5146
If upstream returns FALSE when processing a latency event, it will
be unreffed an extra time

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5152>

14 months agoaudiolatency: Forward latency query and event upstream
Jan Schmidt [Fri, 4 Aug 2023 07:25:26 +0000 (17:25 +1000)]
audiolatency: Forward latency query and event upstream

Make sure the pipeline still configures the latency that it would configure
if audiolatency was not in the pipeline.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5152>

14 months agomeson: Fix searching of qt5/qt6 tools with qmake
Nirbheek Chauhan [Fri, 4 Aug 2023 09:41:05 +0000 (15:11 +0530)]
meson: Fix searching of qt5/qt6 tools with qmake

If the pkg-config files are broken, we want to ensure that qmake is
used. This can easily happen on macOS with the official Qt binaries.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5149>

14 months agoandroidmedia: Add more null checks (of env) to JNI utilities
Ryan Pavlik [Wed, 19 Jul 2023 23:08:32 +0000 (18:08 -0500)]
androidmedia: Add more null checks (of env) to JNI utilities

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5142>

14 months agoqtdemux: Fix premature EOS when some files are played in push mode
Alicia Boya García [Wed, 12 Jul 2023 10:37:34 +0000 (12:37 +0200)]
qtdemux: Fix premature EOS when some files are played in push mode

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2771

This EOS branch exists so that if a seek with a stop is made, qtdemux
stops accepting bytes from the sink after the entire requested playback
range is demuxed, as otherwise we could keep download content that is
not being used.

This patch fixes two flaws that were present in that EOS check:

1) A comparison was made between track time and movie time without conversion.
This made the check trigger early in files with edit lists. This patch fixes
this by converting the track PTS to movie PTS (stream time) for the check.

2) To avoid sending a EOS prematurely when the segment stop is within a GOP and
B-frames are present, the check for EOS should only be done for keyframes. I
gather this was already the intention with the existing code, but because it
used `stream->on_keyframe` instead of the local variable `keyframe` the old
code was checking if the *previous* frame was a keyframe.

It's interesting to note that these two flaws in the old code mask each other
in most cases: the track PTS will have reached the movie end PTS, but EOS would
only be sent if the previous frame was a keyframe. A simple case where they
wouldn't mask each other, reproducing the bug, is a sequence of 3 frame GOPs
with structure I-B-P.

The following validateflow tests have been added to future-proof the
fix:

 * validate.test.mp4.qtdemux_ibpibp_non_frag_pull.default
 * validate.test.mp4.qtdemux_ibpibp_non_frag_push.default

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5114>

14 months agotranscodebin: Fixes for upstream selectable support
Philippe Normand [Sat, 22 Jul 2023 09:42:39 +0000 (10:42 +0100)]
transcodebin: Fixes for upstream selectable support

The upstream selectable query was not performed in all situations where we
handle the stream-start event. This could potentially lead to unlinked pads
between decodebin3 and encodebin later on.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5141>

15 months agoandroidmedia: Add more null checks to JNI utilities
Ryan Pavlik [Wed, 19 Jul 2023 23:08:32 +0000 (18:08 -0500)]
androidmedia: Add more null checks to JNI utilities

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5136>

15 months agoandroidmedia: Fix typo
Ryan Pavlik [Fri, 28 Jul 2023 19:02:22 +0000 (14:02 -0500)]
androidmedia: Fix typo

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5136>

15 months agoandroidmedia: Clear err if we don't have an optional camera field/constant
Ryan Pavlik [Wed, 19 Jul 2023 23:08:16 +0000 (18:08 -0500)]
androidmedia: Clear err if we don't have an optional camera field/constant

Fixes startup on devices where those fields/constants are not found.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5136>

15 months agowebrtc: Fix docs for create-data-channel action signal
Ryan Pavlik [Wed, 26 Jul 2023 21:45:18 +0000 (16:45 -0500)]
webrtc: Fix docs for create-data-channel action signal

Initial line of the doc comment was incorrect, so the nicely written
docs were not being extracted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5134>

15 months agodecodebin3: Ensure the slot is unlinked before linking to decoder
Philippe Normand [Tue, 1 Aug 2023 14:14:29 +0000 (15:14 +0100)]
decodebin3: Ensure the slot is unlinked before linking to decoder

When switching from a raw stream to an encoded stream we need to make sure the
slot is unlinked, there is code in place for this but it wasn't triggered
because the slot being reconfigured wasn't advertised as linked beforehand.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5133>

15 months agov4l2: Fix support for left and top padding
Nicolas Dufresne [Thu, 22 Jun 2023 14:10:43 +0000 (10:10 -0400)]
v4l2: Fix support for left and top padding

In the current implementation, we support for most pixel format left
and top padding by changing the offset in the video meta. Though, to
align driver bytesused to the offset, we recalculate the offset, which
removed the modification we did before.

Instead, save the plane size, and truncate the driver reported bytesused
to the expected size, which ensures that the offsets still match. This
should also fix issues were the buffer size ended up bigger then the
pool size due to driver introduced padding.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5132>

15 months agovideoflip: fix concurrent access when modifying the tag list
Guillaume Desmottes [Tue, 25 Jul 2023 13:15:58 +0000 (15:15 +0200)]
videoflip: fix concurrent access when modifying the tag list

We were checking if the tag list is writable, but it may actually be
shared through the same event (tee upstream or multiple consumers).

Fix a bug where multiple branches have a videoflip element checking the
taglist. The first one was changing the orientation back to rotate-0
which was resetting the other instances.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5099>

15 months agoqtdemux: attach cbcs crypt info at the right moment
Xabier Rodriguez Calvar [Fri, 21 Jul 2023 10:48:08 +0000 (12:48 +0200)]
qtdemux: attach cbcs crypt info at the right moment

Before it was always added but that can cause issues when the stream begins
unencrypted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5096>

15 months agomeson: Ensure that soup plugin is built on Windows
Nirbheek Chauhan [Fri, 14 Jul 2023 02:58:10 +0000 (08:28 +0530)]
meson: Ensure that soup plugin is built on Windows

The libpsl subproject wasn't building successfully and CI didn't
notice because:

1. The plugin wasn't explicitly enabled
2. Even when the plugin is explicitly enabled, the dep is not required
   at build time when not building a static plugin

So fix all of these issues.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4890>

15 months agolibpsl.wrap: Fix MSYS2 build failure
Nirbheek Chauhan [Wed, 12 Jul 2023 07:11:23 +0000 (12:41 +0530)]
libpsl.wrap: Fix MSYS2 build failure

Also switch from git repo to tarball.

https://github.com/rockdaboot/libpsl/pull/211

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4890>

15 months agoci: use meson 1.1.1 in the 1.22 branch Windows CI
Tim-Philipp Müller [Thu, 26 Jan 2023 20:42:41 +0000 (21:42 +0100)]
ci: use meson 1.1.1 in the 1.22 branch Windows CI

We need diff_files support for Meson wraps on the Windows
CI for the libpsl wrap which is only available since
Meson 0.63.

We leave the Fedora Meson version on 0.62 so that we
still cover that too since it's our minimum requirement.

Only the image prepare script is updated for now, but the
image tag is not bumped on purpose, since the 1.22 branch
has very low activity and building and uploading/distributing
a new image is fairly expensive. For now we just update the
meson version in the Windows jobs directly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4890>

15 months agolibxml2: update to 2.10.3-4
Stéphane Cerveau [Tue, 20 Jun 2023 10:31:40 +0000 (11:31 +0100)]
libxml2: update to 2.10.3-4

The previous version was failing to configure due to
```
"Dependencies must be external dependencies"
```
on zlib

Fixed by https://github.com/mesonbuild/wrapdb/pull/865/files

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4890>

15 months agowrap: add libpsl patch to fix win build
Stéphane Cerveau [Mon, 19 Jun 2023 15:12:22 +0000 (17:12 +0200)]
wrap: add libpsl patch to fix win build

These patches are necessary for Windows build since
0.21.2

See
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4890

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4890>

15 months agowrap: update libpsl to 0.21.2
Stéphane Cerveau [Fri, 16 Jun 2023 08:58:53 +0000 (10:58 +0200)]
wrap: update libpsl to 0.21.2

On macos, the build is failing with 0.21.1,
a patch has been landed to fix the issue, see

https://github.com/rockdaboot/libpsl/pull/166

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4890>

15 months agodecodebin3: avoid identity, sinkpad, parsebin leakage when reset input
Haihua Hu [Thu, 18 May 2023 08:08:03 +0000 (16:08 +0800)]
decodebin3: avoid identity, sinkpad, parsebin leakage when reset input

when reset_input, need remove identity/parsebin from decodebin3
when release_pad, need call free or reset input if collection
didn't change

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5086>

15 months agoBack to development
Tim-Philipp Müller [Thu, 20 Jul 2023 15:57:47 +0000 (16:57 +0100)]
Back to development

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5082>

15 months agoRelease 1.22.5
Tim-Philipp Müller [Thu, 20 Jul 2023 14:22:48 +0000 (15:22 +0100)]
Release 1.22.5

15 months agovideo: add extensive tests for gst_video_time_code_is_valid()
Ruslan Khamidullin [Tue, 18 Jul 2023 01:25:47 +0000 (01:25 +0000)]
video: add extensive tests for gst_video_time_code_is_valid()

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5061>

15 months agovideo: accept timecode of 119.88 (120/1.001) FPS
Ruslan Khamidullin [Wed, 12 Jul 2023 22:45:28 +0000 (22:45 +0000)]
video: accept timecode of 119.88 (120/1.001) FPS

The drop-frame rules are specified in “SMPTE ST 12-3:2016” and are
consistent with the traditional ones:



To minimize fractional time deviation from real time, the first two
super-frame numbers (00 and 01) shall be omitted from the count at the
start of each minute except minutes 00, 10, 20, 30, 40, and 50. Thus the
first eight frame numbers (0 through 7) are omitted from the count at
the start of each minute except minutes 00, 10, 20, 30, 40, and 50.


Where “super-frame” is a group of 4 frames for 120 FPS.

Fixes #2797

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5061>

15 months agovideo: timecode: Add support for framerates lower than 1fps
Sebastian Dröge [Mon, 10 Apr 2023 09:54:51 +0000 (12:54 +0300)]
video: timecode: Add support for framerates lower than 1fps

These are not explicitly defined but the existing calculations can be
extended to also cover that case by inverting them to avoid floating
point calculations.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2465

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5074>

15 months agormdemux: Check for integer overflow when calculation audio packet size
Sebastian Dröge [Fri, 7 Jul 2023 07:08:21 +0000 (10:08 +0300)]
rmdemux: Check for integer overflow when calculation audio packet size

Fixes ZDI-CAN-21444
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2782

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5073>

15 months agormdemux: Use GST_LOG_OBJECT instead of GST_LOG
Sebastian Dröge [Fri, 7 Jul 2023 07:08:03 +0000 (10:08 +0300)]
rmdemux: Use GST_LOG_OBJECT instead of GST_LOG

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5073>

15 months agormdemux: Check that enough SIPR audio data is available when copying
Sebastian Dröge [Fri, 7 Jul 2023 07:00:19 +0000 (10:00 +0300)]
rmdemux: Check that enough SIPR audio data is available when copying

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5073>

15 months agormdemux: Check for integer overflows when calculating the size of SIPR audio buffers
Sebastian Dröge [Fri, 7 Jul 2023 06:59:20 +0000 (09:59 +0300)]
rmdemux: Check for integer overflows when calculating the size of SIPR audio buffers

Fixes ZDI-CAN-21443
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2782

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5073>

15 months agormdemux: Use GST_LOG_OBJECT instead of GST_LOG
Sebastian Dröge [Fri, 7 Jul 2023 06:59:04 +0000 (09:59 +0300)]
rmdemux: Use GST_LOG_OBJECT instead of GST_LOG

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5073>

15 months agodecodebin3: Prevent a critical warning when reassigning output slots
Philippe Normand [Tue, 18 Jul 2023 14:15:40 +0000 (15:15 +0100)]
decodebin3: Prevent a critical warning when reassigning output slots

Do not attempt to send a streams-selected message when reassigning
an output slot in case upstream signalled that it is handling stream selection.
In this case decodebin3 doesn't keep track of stream
collections (`dbin->collection` is NULL).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5069>

15 months agodecodebin3: Fix slot input linking when the associated stream has changed
Philippe Normand [Mon, 17 Jul 2023 14:23:35 +0000 (15:23 +0100)]
decodebin3: Fix slot input linking when the associated stream has changed

Setting the input field on the empty slot prevents future linking of it and will
result in flow errors later on.

This was observed in WebKit's MediaStream source element, when it changes the
caps on one of its associated streams, from an encoded format to a raw video
format. The associated stream-id on the sticky stream-start event doesn´t
change, but the element creates a new GstStream with a different ID and sets it
on the stream-start event. Stream parsing is disabled in urisourcebin, so
decodebin3 handles the parsing. Without this patch we would end-up with unlinked
pads in decodebin3 after switching to the raw video format.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5067>

15 months agoquery: Add a quark for SELECTABLE query type
Philippe Normand [Mon, 17 Jul 2023 14:18:39 +0000 (15:18 +0100)]
query: Add a quark for SELECTABLE query type

So that `gst_query_type_get_name()` won't return "unknown" for this type.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5067>

15 months agourisourcebin: Set source element to READY before querying it
Edward Hervey [Tue, 31 Jan 2023 15:12:17 +0000 (16:12 +0100)]
urisourcebin: Set source element to READY before querying it

Generating the source element is done when urisourcebin is doing the READY to
PAUSED state change, so it is reasonable to set the new source element to that
state.

This also allows detecting early failures with backing libraries or
hardware (checks done in NULL->READY).

Finally it makes more sense to have an element in READY when attempting to query
information from it (such as SCHEDULING queries or probing live-ness).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5058>

15 months agohlsdemux2: Don't set a referer when updating playlists
Edward Hervey [Wed, 15 Feb 2023 16:32:39 +0000 (17:32 +0100)]
hlsdemux2: Don't set a referer when updating playlists

In the same way we don't for regular playlists in the base class.

If there is a referer specified by the app/user, the downloadhelper will set it
accordingly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5057>

15 months agoadaptivedemux2: Don't blindly set the main manifest URI as referer
Edward Hervey [Wed, 15 Feb 2023 17:06:36 +0000 (18:06 +0100)]
adaptivedemux2: Don't blindly set the main manifest URI as referer

There's no guarantee it will *actually* be the URI which refered to what we are
downloading. It could be a stream URI or anything else.

Instead of putting something wrong, put no (specific) referer as a better choice

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5057>

15 months agovideodecoder: fix segfault copying buffer metas
Andoni Morales Alastruey [Wed, 21 Jun 2023 11:45:13 +0000 (13:45 +0200)]
videodecoder: fix segfault copying buffer metas

The current implementation copies metas without checking if the buffer
is writable.

The operation that needs to be done, replacing the input buffer and
copying the metas, is only part of that process. We create a new function
that does both.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5054>

15 months agoges: validate: Use correct types when getting structure values
Doug Nazar [Sat, 1 May 2021 20:52:22 +0000 (16:52 -0400)]
ges: validate: Use correct types when getting structure values

From https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/247

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5055>

15 months agoges: tests: Use correct variable types when setting properties
Doug Nazar [Sat, 1 May 2021 20:50:11 +0000 (16:50 -0400)]
ges: tests: Use correct variable types when setting properties

From https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/247

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5055>

15 months agojpegparse: Warn only malformed data in APP data.
Víctor Manuel Jáquez Leal [Sun, 19 Feb 2023 09:41:51 +0000 (10:41 +0100)]
jpegparse: Warn only malformed data in APP data.

It's only malformed data in APP when its length is less than 6 chars,
because it should have at least an id string. Otherwise, if the id string
is not handled, no warning is raised, only a debug message noticing it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5053>

15 months agojpegparse: Parse AVI1 tag in app0.
Víctor Manuel Jáquez Leal [Wed, 15 Feb 2023 18:02:35 +0000 (19:02 +0100)]
jpegparse: Parse AVI1 tag in app0.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5053>

15 months agova: jpegdecoder: Do not check SOS state when parsing DRI marker.
He Junyan [Sun, 12 Feb 2023 08:11:34 +0000 (16:11 +0800)]
va: jpegdecoder: Do not check SOS state when parsing DRI marker.

According to spec, the JPEG_MARKER_DRI(Restart interval definition)
marker can come before the SOS marker. So we should not check the SOS
state when parsing the DRI marker.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5053>

15 months agogtk: Fix critical caused by pointer movement when stream is getting ready
Bastien Nocera [Tue, 11 Jul 2023 15:00:57 +0000 (17:00 +0200)]
gtk: Fix critical caused by pointer movement when stream is getting ready

This check fixes a critical warning that can happen when a pointer motion
happens and the video doesn't have its width/height information available.

GStreamer-Video-CRITICAL **: gst_video_center_rect: assertion 'src->h != 0' failed

 #0  g_logv (log_domain=0x7ffff705e176 "GStreamer-Video", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>) at ../../../../Projects/jhbuild/glib/glib/gmessages.c:1422
 #1  0x00007ffff7e1a81d in g_log (log_domain=<optimized out>, log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7ffff7e77a9d "%s: assertion '%s' failed") at ../../../../Projects/jhbuild/glib/glib/gmessages.c:1460
 #2  0x00007ffff7e1b749 in g_return_if_fail_warning (log_domain=<optimized out>, pretty_function=<optimized out>, expression=<optimized out>) at ../../../../Projects/jhbuild/glib/glib/gmessages.c:2930
 #3  0x00007ffff701d90b in gst_video_sink_center_rect (src=..., dst=..., result=result@entry=0x7fffffffc6d0, scaling=scaling@entry=1) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-base/gst-libs/gst/video/gstvideosink.c:105
 #4  0x00007fffe5652dbb in _fit_stream_to_allocated_size (result=0x7fffffffc6d0, allocation=0x7fffffffc6c0, base_widget=0x9396f0) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gtkgstbasewidget.c:326
 #5  gtk_gst_base_widget_display_size_to_stream_size (base_widget=base_widget@entry=0x9396f0, x=1207.7109375, y=811.84765625, stream_x=stream_x@entry=0x7fffffffc720, stream_y=stream_y@entry=0x7fffffffc728) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gtkgstbasewidget.c:344
 #6  0x00007fffe5651a4b in gst_gtk_base_sink_navigation_send_event (navigation=0x5ff990, event=0x178a730) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gstgtkbasesink.c:340
 #7  0x00007fffe5652432 in gtk_gst_base_widget_motion_event (widget=<optimized out>, event=event@entry=0x1f14b60) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gtkgstbasewidget.c:404

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5051>

15 months agov4l2videoenc: remove empty sink_query
Michael Tretter [Thu, 13 Jul 2023 14:27:05 +0000 (16:27 +0200)]
v4l2videoenc: remove empty sink_query

The sink_query() function simply calls the sink_query() function of the parent
videoencoder class. Remove the override to simply directly call the parent's
function.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5036>

15 months agov4l2videoenc: replace custom QUERY_CAPS handling with getcaps callback
Michael Tretter [Thu, 13 Jul 2023 14:16:44 +0000 (16:16 +0200)]
v4l2videoenc: replace custom QUERY_CAPS handling with getcaps callback

The videoencoder base class uses getcaps() to ask a subclass for the caps in its
sink_query_default() implementation.

Replace the custom handling of the QUERY_CAPS in the v4l2videoenc with an
implementation of getcaps() that returns the caps that are supported by the
v4l2videoenc to return these caps in the query.

This getcaps() implementation also calls the provided proxy_getcaps(), which
sends a caps query to downstream. This fixes the v4l2videoenc element to respect
limits of downstream elements in a sink query.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5036>

15 months agovaapidecode,vaapipostproc: Disable DMAbuf from caps negotiation
Víctor Manuel Jáquez Leal [Fri, 20 May 2022 07:59:58 +0000 (09:59 +0200)]
vaapidecode,vaapipostproc: Disable DMAbuf from caps negotiation

Given the amount of complains about artifacts when negotiating dmabuf
given incompatible drm-formats, and that there's no enough bandwidth
for a proper and quick fix in gstreamer-vaapi, this patch disables,
from decoders and postprocessor, the DMABuf caps feature.

For those who needs DMABuf can use the va elements in -bad, increasing
their ranking for autoplugging by using the environment variable
GST_PLUGIN_FEATURE_RANK=vah264dec:MAX, for example.

This can be considered a first step to the deprecation of
gstreamer-vaapi in favor of the va plugin in -bad.

Fixes: #1137
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5029>

15 months agodecodebin3: Remove spurious input locking during parsebin reconfiguration
Philippe Normand [Wed, 12 Jul 2023 16:08:32 +0000 (17:08 +0100)]
decodebin3: Remove spurious input locking during parsebin reconfiguration

Commit 22917b140ffac5208eff173321fa7cdad8976cca added extra locks in
`reset_input_parsebin()` but all call sites of that function already take the
input lock.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5025>

15 months agogl: Take into account viv-fb vs. viv_fb naming in meson scripts
Carlos Rafael Giani [Tue, 11 Jul 2023 19:41:46 +0000 (21:41 +0200)]
gl: Take into account viv-fb vs. viv_fb naming in meson scripts

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4959>

15 months agogl: provide a pkg-config/gir file for the viv-fb backend
Matthew Waters [Tue, 16 May 2023 11:24:44 +0000 (21:24 +1000)]
gl: provide a pkg-config/gir file for the viv-fb backend

Required to be able to generate coherent bindings for window system
specific APIs due to limitations in gobject-introspection.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4959>

15 months agogl: don't install the viv-fb window header file
Matthew Waters [Tue, 16 May 2023 12:09:48 +0000 (22:09 +1000)]
gl: don't install the viv-fb window header file

It is not needed at all by any external implementations and should not
be exposed to the outside world.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4959>

15 months agogl: Separate viv direct texture checks from viv-fb winsys check
Carlos Rafael Giani [Fri, 30 Jun 2023 11:53:19 +0000 (13:53 +0200)]
gl: Separate viv direct texture checks from viv-fb winsys check

Vivante direct textures do not depend on the viv-fb windowing system.
Decouple these two to be able to use direct textures even when viv-fb
is not enabled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4959>

15 months agomeson: Install viv-fb GL headers, needed by i.MX
Nirbheek Chauhan [Wed, 8 Mar 2023 18:55:51 +0000 (00:25 +0530)]
meson: Install viv-fb GL headers, needed by i.MX

Needed by qmlglsink at build time to allocate a viv-fb display.

Without this, the GL fastpath doesn't work, and performance is really
bad.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4959>

15 months agotaglist, plugins: fix compiler warnings with GLib >= 2.76
Tim-Philipp Müller [Sun, 26 Mar 2023 15:40:28 +0000 (16:40 +0100)]
taglist, plugins: fix compiler warnings with GLib >= 2.76

Fix compiler warnings about not using the return value when
freeing the GString segment with g_string_free(.., FALSE):

    ignoring return value of ‘g_string_free_and_steal’ declared with attribute ‘warn_unused_result’

which we get with newer GLib versions. These were all harmless.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5015>

15 months agod3d11bufferpool: Fix heavy CPU usage in case of fixed-size pool
Seungha Yang [Mon, 26 Jun 2023 20:09:49 +0000 (05:09 +0900)]
d3d11bufferpool: Fix heavy CPU usage in case of fixed-size pool

There's no reason to release GstMemory manually at all.
If we do release GstMemory, corresponding GstBuffer will be
discarded by GstBufferPool baseclass because the size is changed
to zero.

Actual cause of heavy CPU usage in case of fixed-size pool
(i.e., decoder output buffer pool) and if we remove GstMemory from
GstBuffer is that GstBufferPool baseclass is doing busy wait in acquire_buffer()
for some reason. That needs to be investigated though, discarding
and re-alloc every GstBuffer is not ideal already.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4943>