Edward Hervey [Wed, 30 Nov 2022 08:26:48 +0000 (09:26 +0100)]
uridecodebin3: Always store pending buffering messages
Fixes #1586
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3487>
Víctor Manuel Jáquez Leal [Fri, 2 Dec 2022 06:03:30 +0000 (07:03 +0100)]
vajpegdec: Reenable element negotiation.
negotiation vmethod were overwritten by vabasedec, leading to errors.
This was a regression of commit
b6538e0560.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3509>
Edward Hervey [Thu, 1 Dec 2022 07:16:45 +0000 (08:16 +0100)]
gstinfo: Optimize color escape code creation
When coloring is in use, those escape codes are going to be created many times
for almost all debug lines.
Don't create plenty of temporary allocations, and instead build the escape code
ourselves statically
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3498>
Johan Sternerup [Thu, 1 Dec 2022 12:28:16 +0000 (13:28 +0100)]
webrtc: Fix possible use-after-free of GstWebRTCICETransport
Because of the asynchronous resolving of mDNS ICE candidates it is
possible that GstWebRTCICE outlives webrtcbin. This in turn prolongs
the lifetime of the GstWebRTCNiceStream objects via refs in
nice_stream_map. Thus the GstWebRTCICETransport objects held in
GstWebRTCNiceStream may be invalid at the time they are accessed by
the _on_candidate_gathering_done() callback since GstWebRTCNiceStream
doesn't take a reference to them. Doing so would create a circular
reference, so instead this commit introduces weak references to the
transport objects and then we can check if the objects are valid before
accessing them.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3502>
Aleksandr Slobodeniuk [Thu, 1 Dec 2022 09:34:10 +0000 (10:34 +0100)]
rtspsrc: fix seek event leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3500>
Victor Manuel Jaquez Leal [Mon, 28 Nov 2022 19:42:29 +0000 (20:42 +0100)]
va: Handle input caps change.
Update output caps if it's notified by baseclass
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3328
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>
Victor Manuel Jaquez Leal [Sun, 27 Nov 2022 12:00:20 +0000 (13:00 +0100)]
vaav1dec: Use gst_va_base_dec_set_output_state().
And even that vaav1dec doesn't use vabasedec negotiate vmethod, it should align
with the new scheme of using base's width & height for surface size and
output_info structure for downstream display size negotiation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 10:45:52 +0000 (11:45 +0100)]
vavp9dec: Use gst_va_base_dec_set_output_state().
As this element reopen the internal decoder differently, it only uses the helper
function to negotiate.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>
Victor Manuel Jaquez Leal [Mon, 28 Nov 2022 18:31:57 +0000 (19:31 +0100)]
vampeg2dec: Streams are progressive by default.
By initializating progressive, then interlaced streams are detected correctly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 08:11:39 +0000 (09:11 +0100)]
va: Add and use common decode negotiate vmethod.
This vmethod can be used by decoders with the same VA decoder reopen logic:
same profile, chroma, width and height.
Also a new public method called gst_va_base_dec_set_output_state() with the
common GStreamer code for setting the output state, which is always called by
the negotiate vmethod.
In order to do this refactoring, new variables in vabasedec have to be populated
by the decoders:
* width and height define the resolution set in VA decoder. In the case of H264
would be de coded_width and codec_height, or max_width and max_height in AV1.
* output_info is the downstream video info used for negotiation in
gst_va_base_dec_set_output_state().
* input_state, from codec parent class shall be also held by vabasedec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>
Víctor Manuel Jáquez Leal [Thu, 24 Nov 2022 12:52:59 +0000 (13:52 +0100)]
vaav1dec: Use gst_va_base_dec_prepare_output_frame().
And simplify a bit the code flow.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>
Víctor Manuel Jáquez Leal [Thu, 24 Nov 2022 12:15:04 +0000 (13:15 +0100)]
va: Add and use gst_va_base_dec_prepare_output_frame().
This helper will do downstream negotiation and later will
allocate the output frame.
H265 and AV1 decoders don't use this approach since their output
frame allocation is different.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>
Víctor Manuel Jáquez Leal [Wed, 23 Nov 2022 17:29:58 +0000 (18:29 +0100)]
va: Remove last_ret error handling in decoders.
It was used in the early development of the base classes. Now it
shouldn't be needed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>
Víctor Manuel Jáquez Leal [Wed, 23 Nov 2022 17:14:30 +0000 (18:14 +0100)]
va: Add and use gst_va_base_dec_process_output().
This function will copy the frame, if it's needed, and will apply buffer flags.
The function is used by all the decoders.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3480>
He Junyan [Thu, 1 Dec 2022 14:50:30 +0000 (22:50 +0800)]
va: Fix the caps memory leak by gst_va_pool_new_with_config().
The gst_va_pool_new_with_config() will ref the caps, and so we need
to unref after that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3503>
Víctor Manuel Jáquez Leal [Wed, 30 Nov 2022 12:33:49 +0000 (13:33 +0100)]
va: Add render node name in non-first devices.
There could be multi-GPU setups where the non-first has more
entrypoints than the first one, and the elements names are not
homogeneous, leading to pipeline building error.
This patch add the render node in the elements names when they belong
to the non-first device.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3491>
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 20:02:00 +0000 (21:02 +0100)]
vafilter: Increase the caps for HDR.
As they might be other medatadata types.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3473>
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 19:48:45 +0000 (20:48 +0100)]
vafilter: Increase the number of 3DLUT caps to 16.
To fix the warning on Alderlake
vafilter gstvafilter.c:534:gst_va_filter_ensure_filters:<vafilter0>
vaQueryVideoProcFiltersCaps: list argument exceeds maximum number
Increase the number of caps to 16 as vadumpcaps does.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3473>
Bo Elmgreen [Wed, 30 Nov 2022 13:32:52 +0000 (14:32 +0100)]
qt: deactivate context if fill_info fails
Now the OpenGL context is deactivated if call to gst_gl_context_fill_info()
fails in gst_qt_get_gl_wrapcontext(), preventing that the context is left
activated, which could lead to invalid memory reads.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3492>
Sebastian Dröge [Tue, 8 Mar 2022 14:05:17 +0000 (16:05 +0200)]
av{aud,vid}dec: Report decoding errors to the base class
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1889>
Pawel Stawicki [Mon, 28 Nov 2022 22:26:50 +0000 (22:26 +0000)]
v4l2: Fix SIGSEGV on 'change state' during 'format change'
Ensure all access to v4l2object->pool imply taking a lock and a hard ref on the pool
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3481>
Edward Hervey [Wed, 30 Nov 2022 08:59:09 +0000 (09:59 +0100)]
gst-inspect: Don't leak list
Just iterate the list instead of trying to be smart...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3497>
Víctor Manuel Jáquez Leal [Tue, 15 Nov 2022 05:58:14 +0000 (06:58 +0100)]
example: vaenc-dynamic-reconfigure: Support H265.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>
He Junyan [Wed, 4 May 2022 02:42:59 +0000 (10:42 +0800)]
va: Add H265 SCC profile support.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>
He Junyan [Mon, 2 May 2022 15:14:32 +0000 (23:14 +0800)]
va: Add extended formats support such as 10/12 bits, 4:2:2 and 4:4:4.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>
He Junyan [Mon, 25 Apr 2022 07:49:31 +0000 (15:49 +0800)]
va: enable multi tile support for H265 encoder.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>
He Junyan [Thu, 2 Jun 2022 13:18:16 +0000 (21:18 +0800)]
va: enable vah265lpenc for low power mode H265 encoder.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>
He Junyan [Mon, 18 Apr 2022 14:36:09 +0000 (22:36 +0800)]
va: Add the low-delay-b frame support for H265.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>
He Junyan [Wed, 6 Apr 2022 09:06:20 +0000 (17:06 +0800)]
va: Add prediction direction attribute support for H265 encoder.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>
He Junyan [Fri, 25 Mar 2022 13:55:28 +0000 (21:55 +0800)]
va: Register and enable and the vah265enc plugin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>
He Junyan [Fri, 25 Mar 2022 13:54:30 +0000 (21:54 +0800)]
va: Implement the vah265enc plugin for va HEVC encoding.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2036>
Vivia Nikolaidou [Wed, 30 Nov 2022 18:48:28 +0000 (20:48 +0200)]
opusdec: Use proper guint/guint8 type conversion
Do not cast, that might yield wrong results.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494>
Vivia Nikolaidou [Wed, 30 Nov 2022 18:47:11 +0000 (20:47 +0200)]
opusdec: Negotiate default to 2 channels
In that place, dec->n_channels can still theoretically be 0. Default to
2 in that case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494>
Vivia Nikolaidou [Wed, 30 Nov 2022 18:46:05 +0000 (20:46 +0200)]
opusenc: Reverse channel order in template caps
We want to make it so that we prefer a higher, not lower, number of
channels. Otherwise, this pipeline would convert from 2 to 1 channels:
gst-launch-1.0 audiotestsrc ! audio/x-raw,channels=2 ! opusenc ! queue ! opusdec ! queue ! opusenc ! fakesink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494>
Philippe Normand [Thu, 24 Nov 2022 17:39:50 +0000 (17:39 +0000)]
avviddec: Report flow error when decoder refused packet
In cases where an invalid input packet is submitted to the decoder we emit a
warning but reporting the flow error upstream would also be useful. This came up
with a case were the application interacts directly with the decoder, using a
mechanism similar to GstHarness.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3463>
Philippe Normand [Mon, 28 Nov 2022 16:05:16 +0000 (16:05 +0000)]
audiodecoder: Make data processing errors non-fatal by default
The previous default value of `max-errors` was too small and would potentially trigger the
decoder to emit errors too often for most cases.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3478>
Philippe Normand [Wed, 30 Nov 2022 10:27:27 +0000 (10:27 +0000)]
videodecoder: Make data processing errors non-fatal by default
The previous default value of `max-errors` was too small and would potentially trigger the
decoder to emit errors too often for most cases.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3478>
Sebastian Dröge [Tue, 29 Nov 2022 12:02:55 +0000 (14:02 +0200)]
sdpmessage: Annotate SDP message parameters for `parse_uri()` and `parse_buffer()` correctly
They are not actually `out` parameters but must be allocated and
initialized to a valid SDP message by the caller. Just allocating them
without initialization will cause memory corruptions because the
functions will try to clear/append to the existing SDP message.
As such they should be just marked as `transfer none`.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1605
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3484>
Seungha Yang [Mon, 28 Nov 2022 17:22:50 +0000 (02:22 +0900)]
mfvideosrc: Fix buffer leak
The allocated buffer should be released
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3479>
Seungha Yang [Mon, 28 Nov 2022 17:10:42 +0000 (02:10 +0900)]
mediafoundation: Chain up from GObject::constructed
... so that GstTracer can trace it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3479>
Seungha Yang [Mon, 28 Nov 2022 17:06:11 +0000 (02:06 +0900)]
d3d11: Use correct ref/unref methods
Those objects are GstObject subclasses
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3479>
Ignacio Casal Quinteiro [Mon, 28 Nov 2022 09:19:20 +0000 (10:19 +0100)]
sdp: use g_strdup instead of strdup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3475>
Nicolas Dufresne [Fri, 25 Nov 2022 15:01:06 +0000 (10:01 -0500)]
glimagesink: Fix render rect assertion
Whenever the surface is resized before the stream is negotiated, we endup
with an assertion in libgstvideo.
gst_video_center_rect: assertion 'src->h != 0' failed
This fixes it, by following the style aready in place, which is to ensure
surfaces have a minimum size of 1x1.
Fixes #1139
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3467>
Tim-Philipp Müller [Sat, 26 Nov 2022 08:23:59 +0000 (09:23 +0100)]
audioconvert, audioresample, audiofilter: fix divide by 0 for input buffer without caps
gst-launch-1.0 audiotestsrc ! udpsink host=127.0.0.1
gst-launch-1.0 udpsrc ! audioconvert ! autoaudiosink
would crash with a floating point exception when clipping the input
buffer owing to a division by zero because no caps event was received.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3469>
Seungha Yang [Fri, 25 Nov 2022 11:19:22 +0000 (20:19 +0900)]
win32ipcvideosrc: Fix property name and enum value mismatch
Make them consistent
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3465>
Seungha Yang [Fri, 25 Nov 2022 11:14:43 +0000 (20:14 +0900)]
win32ipcvideosrc: Protect pipe from flush thread
The pipe object must be protected against GstBaseSrc::unlock()
thread.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3465>
He Junyan [Fri, 25 Nov 2022 10:38:27 +0000 (18:38 +0800)]
h264parser: Fix a typo in pred_weight_table parsing.
When setting default values, the reference list number of l1 is wrong.
Fix: https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/issues/336
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3464>
Ma, Mingyang [Tue, 22 Nov 2022 09:01:37 +0000 (17:01 +0800)]
msdkdec: Update decoding pts
Update frame pts before calling gst_video_decoder_finish_frame, or frames may be lost when transcoding in specific stream
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3449>
Xavier Claessens [Fri, 16 Sep 2022 12:28:49 +0000 (08:28 -0400)]
Install meson from git when MESON_COMMIT variable is set
When starting manually a CI pipeline with MESON_COMMIT variable defined,
install the specified version of Meson. This can be used to help the
Meson project smoke testing RC releases or investigate eventual
regressions.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3036>
Seungha Yang [Fri, 18 Nov 2022 17:56:27 +0000 (02:56 +0900)]
win32ipc: Add WIN32 shared memory videosrc/sink elements
Windows supports various IPC methods but that's completely
different form that of *nix from implementation point of view.
So, instead of adding shared memory functionality to existing
shm plugin, new WIN32 shared memory source/sink elements
are implemented in this commit.
Each videosink (server) and videosrc (client) pair will communicate
using WIN32 named pipe and thus user should configure unique/proper
pipe name to them (e.g., \\.\pipe\MyPipeName).
Once connection is established, videosink will create named shared memory
object per frame and client will be able to consume the object
(i.e., memory mapped file handle) without additional copy operation.
Note that implementations under "protocol" directory are almost
pure C/C++ with WIN32 APIs except for a few defines and debug functions.
So, applications can take only the protocol part so that the application
can send/receive shared-memory object from/to the other end
even if it's not an actual GStreamer element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3441>
Matt Crane [Tue, 22 Nov 2022 16:32:57 +0000 (11:32 -0500)]
rtpsession: Support disabling late adjustment of ntp-64 header ext
Currently in rtp_session_send_rtp(), the existing ntp-64 RTP header
extension timestamp is updated with the actual NTP time before sending
the packet. However, there are some circumstances where we would like
to preserve the original timestamp obtained from reference timestamp
buffer metadata.
This commit provides the ability to configure whether or not to update
the ntp-64 header extension timestamp with the actual NTP time via the
update-ntp64-header-ext boolean property. The property is also exposed
via rtpbin. Default property value of TRUE will preserve existing
behavior (update ntp-64 header ext with actual NTP time).
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1580
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3451>
Matthew Waters [Thu, 6 Oct 2022 06:08:54 +0000 (17:08 +1100)]
add new plugin for Qt 6 rendering inside a QML scene
- Based heavily on the existing Qt5 integration however:
- The sharing of OpenGL resources is slightly different
- The integration with the scengraph is a bit different
- Wayland, XCB and KMS have been smoke tested. Android, MacOS/iOS,
Windows may or may not work.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3281>
Jan Lorenz [Wed, 23 Nov 2022 13:35:07 +0000 (14:35 +0100)]
mfvideosrc: check HRESULT of CreateClassEnumerator correctly
Fixes a crash during direct show device enumeration
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1599
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3460>
Elliot Chen [Mon, 21 Nov 2022 07:35:58 +0000 (15:35 +0800)]
v4l2: bypass check some transfer types in colorimetry
v4l2 will report fail for some streams whose colorimetry value such as 2:4:8:3.
Can bypass check these transfer types in colorimetry to avoid error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3440>
Edward Hervey [Fri, 12 Aug 2022 15:25:28 +0000 (17:25 +0200)]
docs/design: Add document detailing the new gapless/instant-uri changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>
Edward Hervey [Tue, 9 Aug 2022 08:26:00 +0000 (10:26 +0200)]
uridecodebin3: propagate about-to-finish for new inputs
If the pending next urisourcebin is already draining, make sure we propagate it
when activating it.
Fixes gapless playback of small entries
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1588
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>
Edward Hervey [Wed, 10 Aug 2022 14:52:23 +0000 (16:52 +0200)]
uridecodebin3: Remove old fixme
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>
Edward Hervey [Tue, 9 Aug 2022 14:31:26 +0000 (16:31 +0200)]
(uri)decodebin3: Ensure group-id consistency
Make sure that group-id of a given play item are made consistent from the
start (sources) and all the way through the output.
This ensures that we can reliably detect that we have switched to the next play
item on the output of decodebin3 (and we can therefore properly free/release it)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>
Edward Hervey [Tue, 9 Aug 2022 08:42:22 +0000 (10:42 +0200)]
uridecodebin3: Fix shutdown procedures in probe
When shutting down, we want to remove the urisourcebin blocking probes ... but
we also want to propagate a GST_FLOW_FLUSHING upstream (and not
GST_FLOW_NOT_LINKED) to make the upstream task gracefully stop instead of
posting an error message.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>
Edward Hervey [Fri, 5 Aug 2022 14:58:08 +0000 (16:58 +0200)]
decodebin3: Properly reset when going back to READY
Clear the remaining stream-related fields when going from PAUSED to READY, and
use when disposing.
Fixes various issues when re-using decodebin3/playbin3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>
Edward Hervey [Fri, 5 Aug 2022 08:37:23 +0000 (10:37 +0200)]
decodebin3: Don't output bogus GST_MESSAGE_STREAMS_SELECTED
When `is_selection_done` is called, it checks that all the requested streams are
present in the active stream list ...
... except there could very well be a (about to be removed) stream from the
previous selection present.
Therefore filter the list of streams we add to the message by the streams which
are actually requested.
Fixes issues when switching between different stream types (ex: video-only to
audio-only).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>
Johan Sternerup [Thu, 27 Oct 2022 15:30:28 +0000 (17:30 +0200)]
Use the correct SSRC(s) when routing a RTCB FB FIR
Previously we tried to route an incoming RTCP FB FIR to the correct ssrc
using the "media source" component of the RTCP FB message. However,
according to RFC5104 (section 4.3.1.2) the "media source" SHALL be set
to 0. Instead the ssrc(s) in use are propagated via the FCI data. Now
a specific GstForceKeyUnit event is sent for every ssrc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3292>
Jan Schmidt [Wed, 23 Nov 2022 05:37:40 +0000 (16:37 +1100)]
rtpsource: Track the seqnum for senders
RTP source statistics are tracked for local senders by
treating them as a receiver of their own outbound packets.
Accordingly, track the highest packet seqnum so that the
packets-lost calculation generates a sensible number instead
of always reporting -$number_of_packets_sent
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3454>
Jan Schmidt [Tue, 22 Nov 2022 10:57:16 +0000 (21:57 +1100)]
adaptivedemux2: Add GStreamer to the deps list
Explicitly dep on GStreamer so as not to accidentally
link to the system version in a git build
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3453>
Nicolas Dufresne [Tue, 22 Nov 2022 20:27:38 +0000 (15:27 -0500)]
kmssink: Fix compilation without kernel headers
There was a drm/drm_mode.h included added recently, drm/ is usually
referencing the linux kernel header, but we only requires the libdrm
headers to be installed. On top of this, including drm_mode.h is never
needed as its already included by drm.h.
Fixes #1596
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3452>
Daniel Morin [Thu, 10 Nov 2022 13:50:35 +0000 (08:50 -0500)]
onnx: Update to OnnxRT >= 1.13.1 API
- Replace deprecated methods
- Add a check on ORT version we are compatible with.
- Add clarification to the example given.
- Add the url to retrieve the model mentioned in the example.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3388>
He Junyan [Tue, 22 Nov 2022 08:42:26 +0000 (16:42 +0800)]
h265parse: Add the missing timestamp when splitting a frame.
When splitting a frame, the gst_buffer_copy_region() does not copy
the timestamp correctly for sub frames when the offset is not 0.
We still need those timestamps for each output sub frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3448>
He Junyan [Tue, 22 Nov 2022 07:50:44 +0000 (15:50 +0800)]
h264parse: Add the missing timestamp when splitting a frame.
When splitting a frame, the gst_buffer_copy_region() does not copy
the timestamp correctly for sub frames when the offset is not 0.
We still need those timestamps for each output sub frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3448>
Sebastian Dröge [Mon, 21 Nov 2022 17:40:35 +0000 (19:40 +0200)]
dvbsubenc: Write Display Definition Segment if a non-default width/height is used
Otherwise it can't be rendered by dvbsuboverlay or ffmpeg at least.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3446>
Vivia Nikolaidou [Mon, 24 Oct 2022 15:02:27 +0000 (18:02 +0300)]
inputselector: Add drop-backwards property
When sync-streams=true, drop backwards buffers on pad switch.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3256>
Vivia Nikolaidou [Mon, 24 Oct 2022 13:49:47 +0000 (16:49 +0300)]
inputselector: Fix waiting on sync-mode=clock
Basically copy over what clocksync does, but taking into account that we
have multiple upstream latencies.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3256>
Seungha Yang [Thu, 27 Oct 2022 15:06:23 +0000 (00:06 +0900)]
av1dec: Demote rank to secondary
cerbero does not build this plugin for now, and there's altanative
dav1ddec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3287>
Jan Alexander Steffens (heftig) [Tue, 15 Nov 2022 10:56:35 +0000 (11:56 +0100)]
rtspsrc: Don't replace 404 errors with "no auth protocol found"
When getting a "404 Not Found" response from the DESCRIBE request, the
source produced a "No supported authentication protocol was found" error
instead of passing on the 404, which was confusing.
Only produce this error message when we're handling a response of "401
Unauthorized" without a compatible WWW-Authenticate header.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3414>
Mengkejiergeli Ba [Mon, 14 Nov 2022 07:59:37 +0000 (15:59 +0800)]
vaapipostproc: Fix the negotiation failure of some formats
This patch fixes issue https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1565
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3399>
Bill Hofmann [Fri, 18 Nov 2022 21:32:10 +0000 (13:32 -0800)]
kmssink: add HDR10 infoframe support
If stream has HDR10 metadata and HDMI device EDID supports it, this patch
will set the DRM properties accordingly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3303>
Bill Hofmann [Mon, 21 Nov 2022 20:48:49 +0000 (15:48 -0500)]
kmssink: Add skip-vsync property
The legacy emulation in DRM/KMS drivers badly interact with GStreamer and
may cause the framerate to be halved. With this property, users can disable
vsync (which is handled internally by the emulation) in order to regain the
full framerate.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3303>
Edward Hervey [Mon, 21 Nov 2022 16:24:38 +0000 (17:24 +0100)]
adaptivedemux2: Don't leak caps in debug statements
Instead just directly use the stream object (which will report the caps)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>
Edward Hervey [Mon, 21 Nov 2022 16:23:44 +0000 (17:23 +0100)]
adaptivedemux2: Don't leak tags
If we got them from GstStream, we should unref them when done
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>
Edward Hervey [Mon, 21 Nov 2022 16:23:10 +0000 (17:23 +0100)]
adaptivedemux: Use gst_clear_tag_list_where applicable
Clearer and ensures fields are reset
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>
Edward Hervey [Mon, 21 Nov 2022 14:12:26 +0000 (15:12 +0100)]
oggdemux: Don't leak pending seek event
Make sure any pending seek event is released when going back down to READY.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>
Edward Hervey [Mon, 21 Nov 2022 14:11:21 +0000 (15:11 +0100)]
rtspsrc: Don't leak sticky events
We have incremented the reference 2 lines above, and
gst_pad_store_sticky_event() does not take a reference, therefore release it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>
Edward Hervey [Mon, 21 Nov 2022 14:10:35 +0000 (15:10 +0100)]
parsebin: Don't leak parsepad list on shutdown
Free it as it is down in other cases
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>
Sebastian Dröge [Mon, 21 Nov 2022 16:47:50 +0000 (18:47 +0200)]
textrender: Don't pass plaintext as pango markup to Pango
Otherwise e.g. & in the text will cause Pango to complain about invalid
markup and render the text incorrectly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3445>
Sebastian Dröge [Mon, 21 Nov 2022 16:43:54 +0000 (18:43 +0200)]
textrender: Don't blindly forward all events
Use gst_pad_event_default(), which does the right thing by default.
Especially it does not forward text/x-plain caps downstream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3445>
Jan Schmidt [Fri, 18 Nov 2022 15:04:13 +0000 (02:04 +1100)]
event: Add transfer none annotation to gst_event_new_stream_collection()
Update the documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3387>
Jan Schmidt [Tue, 15 Nov 2022 10:42:34 +0000 (21:42 +1100)]
adaptivedemux2: Fix sticky event storage.
Use the new gst_event_type_to_sticky_ordering() method to retrieve
the order that sticky events should be sent / stored in, instead
of assuming it's the event type value.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3387>
Jan Schmidt [Fri, 11 Nov 2022 11:57:38 +0000 (22:57 +1100)]
pad: Fix sticky event ordering for instant-rate-change
The event type for instant-rate-change events was poorly chosen,
leading to them being re-sent too late and even after EOS.
Add a mechanism in GstPad for the sticky event order to be
different to the value of the event type to fix that up.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3387>
Seungha Yang [Thu, 17 Nov 2022 17:06:51 +0000 (02:06 +0900)]
av1decoder: Clear highest_spatial_layer per sequence header
Clear the value to default zero, indicating that no spatial scalability
layer is used.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>
Seungha Yang [Thu, 17 Nov 2022 16:59:55 +0000 (01:59 +0900)]
av1decoder: Don't error out by dropped OBU
OBU can be dropped if the current layer is not in selected operation
point
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>
Seungha Yang [Thu, 17 Nov 2022 16:49:43 +0000 (01:49 +0900)]
av1decoder: Fix wrong spatial layer validation
Highest spatial id and temporal id is independent, and should not drop
temporal enhance layer by the previous condition. Note that
the decision for dropping OBU based on operation point is being
handled in gst_av1_parser_identify_one_obu() already.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1585
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>
Seungha Yang [Thu, 17 Nov 2022 16:43:26 +0000 (01:43 +0900)]
av1parser: Don't print warning for expected OBU drop
Dropping an OBU which is not in selected operation point is an
expected condition.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>
Seungha Yang [Thu, 17 Nov 2022 16:41:33 +0000 (01:41 +0900)]
av1parser: Remove impossible condition
unsigned integer cannot be negative
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3430>
Célestin Marot [Fri, 18 Nov 2022 15:57:16 +0000 (16:57 +0100)]
fakesrc: avoid time overflow with datarate
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3433>
Jan Schmidt [Sat, 19 Nov 2022 08:22:17 +0000 (19:22 +1100)]
webrtcbin: Remove queue after rtpfunnel
The original BUNDLE support commit placed a queue after the
rtpfunnel that combines streams, but I don't see a good reason for
it. It has default settings, so if network output is slow might
accidentally store up to 1 second of pending data, increasing
latency.
Remove it in favour of doing any necessary buffering before
webrtcbin. If it turns out that there is a reason for it to
exist, the limits should probably be configurable and small.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3437>
Jan Schmidt [Sat, 19 Nov 2022 08:50:38 +0000 (19:50 +1100)]
examples/sendrecv: Remove extra unref of webrtcbin
The code now constructs webrtcbin with a floating ref and then
gives it to the pipeline. The extra unref is one too many.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3436>
Matt Crane [Wed, 16 Nov 2022 16:47:54 +0000 (11:47 -0500)]
rtpbasedepayload: Drop redundant reference timestamp buffer meta in RTP depayloaders
Currently, when rtspsrc property add-reference-timestamp-metadata=true,
a downstream rtph264depay element will attach multiple copies of the
same GstReferenceTimestampMeta to the depayloaded media buffers. This
can have signficant performance impacts further downstream in a pipeline
like the following:
rtspsrc add-reference-timestamp-metadata=true ! rtph264depay ! h264parse ! ... ! rtph264pay ! ...
For example, if there are 10 packet buffers for a frame of RTP H.264
video, each of those packet buffers will contain the same reference
timestamp meta. The rtph264depay element will then attach all 10
metadata to the depayloaded frame. And then later when we payload the
frame buffer again for proxying, we now have 10 more buffers each with
10 instance of the same metadata. Allocating/deallocating 100+ instances
of metadata @ 30fps for multiple streams has a pretty large performance
impact.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1578
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3431>
Jan Schmidt [Fri, 18 Nov 2022 17:42:56 +0000 (04:42 +1100)]
webrtc: Improve GstWebRTCStatsType docstring
Fix a typo of peer-connectiion -> peer-connection
Add a link to the w3c RTCStats type for a description
of what each statistics type is.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3434>
Jan Schmidt [Fri, 18 Nov 2022 17:42:20 +0000 (04:42 +1100)]
webrtcbin: Fix a typo in debug log
transceiever -> transceiver
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3434>
Jan Schmidt [Fri, 18 Nov 2022 17:37:00 +0000 (04:37 +1100)]
examples/webrtc: Configure payload types
MR 2398 broke the webrtc sendrecv example
by not configuring the payload types, so both audio and video streams
get sent on payload 96.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3434>
Seungha Yang [Sat, 12 Nov 2022 18:07:54 +0000 (03:07 +0900)]
qsv: Promote encoder rank to PRIMARY on Windows
QSV is very well integrated with GstD3D11 infrastructure on Windows,
and this is the recommended H/W encoder element over the MediaFoundation
plugins on Intel GPU system.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3393>