Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gstreamer-plugins-bad for
openSUSE:Factory checked in at 2021-01-20 18:23:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-bad (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.28504 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-bad"
Wed Jan 20 18:23:54 2021 rev:111 rq:864320 version:1.18.3
Changes:
--------
---
/work/SRC/openSUSE:Factory/gstreamer-plugins-bad/gstreamer-plugins-bad.changes
2020-12-22 11:25:41.640733432 +0100
+++
/work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.28504/gstreamer-plugins-bad.changes
2021-01-20 18:24:37.263361824 +0100
@@ -1,0 +2,21 @@
+Sat Jan 16 19:31:47 UTC 2021 - Bj??rn Lie <[email protected]>
+
+- Update to version 1.18.3:
+ + assrender: fix mutex handling in certain flushing/error
+ situations
+ + dvbsuboverlay: Add support for dynamic resolution update
+ + dashsink: fix critical log of dynamic pipeline
+ + d3d11shader: Fix ID3DBlob object leak
+ + d3d11videosink: Prepare window once streaming started
+ + decklinkaudiosrc: Fix duration of the first audio frame after
+ each discont
+ + intervideosrc: fix negotiation of interlaced caps
+ + msdk:
+ - Needn't close mfx session when failed, fixes double free /
+ potential crash
+ - Check GstMsdkContext instead of mfxSession instance
+ + srt: fix locking when retrieving stats
+ + rtmp2src: fix leaks when connection is cancelled during startup
+ or connection fails
+
+-------------------------------------------------------------------
Old:
----
gst-plugins-bad-1.18.2.tar.xz
New:
----
gst-plugins-bad-1.18.3.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-plugins-bad.spec ++++++
--- /var/tmp/diff_new_pack.90WnFF/_old 2021-01-20 18:24:38.199362517 +0100
+++ /var/tmp/diff_new_pack.90WnFF/_new 2021-01-20 18:24:38.203362520 +0100
@@ -1,7 +1,7 @@
#
# spec file for package gstreamer-plugins-bad
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -28,7 +28,7 @@
%bcond_with faad
Name: gstreamer-plugins-bad
-Version: 1.18.2
+Version: 1.18.3
Release: 0
Summary: GStreamer Streaming-Media Framework Plug-Ins
License: LGPL-2.1-or-later
++++++ _service ++++++
--- /var/tmp/diff_new_pack.90WnFF/_old 2021-01-20 18:24:38.227362537 +0100
+++ /var/tmp/diff_new_pack.90WnFF/_new 2021-01-20 18:24:38.227362537 +0100
@@ -9,7 +9,7 @@
<!--
<param name="changesgenerate">enable</param>
-->
- <param name="revision">1.18.2</param>
+ <param name="revision">1.18.3</param>
<param name="scm">git</param>
</service>
<service name="recompress" mode="disabled">
++++++ gst-plugins-bad-1.18.2.tar.xz -> gst-plugins-bad-1.18.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/ChangeLog
new/gst-plugins-bad-1.18.3/ChangeLog
--- old/gst-plugins-bad-1.18.2/ChangeLog 2020-12-06 14:24:12.000000000
+0100
+++ new/gst-plugins-bad-1.18.3/ChangeLog 2021-01-13 22:11:24.000000000
+0100
@@ -1,3 +1,146 @@
+=== release 1.18.3 ===
+
+2021-01-13 21:11:22 +0000 Tim-Philipp M??ller <[email protected]>
+
+ * ChangeLog:
+ * NEWS:
+ * RELEASE:
+ * gst-plugins-bad.doap:
+ * meson.build:
+ Release 1.18.3
+
+2020-12-21 14:06:53 +0530 Raju Babannavar <[email protected]>
+
+ * gst/dvbsuboverlay/dvb-sub.c:
+ dvbsuboverlay: Add support for dynamic resolution update.
+ Fixes
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1487
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1954>
+
+2020-12-16 18:32:25 +0200 Sebastian Dr??ge <[email protected]>
+
+ * sys/decklink/gstdecklinkaudiosrc.cpp:
+ decklinkaudiosrc: Fix duration of the first audio frame after each
discont
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1891>
+
+2020-12-30 22:52:01 +0800 Haihua Hu <[email protected]>
+
+ * ext/dash/gstdashsink.c:
+ * ext/dash/gstmpdrootnode.c:
+ dashsink: fix critical log when exit dynamic pipeline
+ availability-start-time and publish-time shared the same
+ GstDateTime object, this object will be unref twice and
+ cause reference count issue. Should use g_value_dup_boxed()
+ to copy this object.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1932>
+
+2020-12-29 09:41:05 +0800 Haihao Xiang <[email protected]>
+
+ * sys/msdk/gstmsdkcontext.c:
+ msdk: needn't close mfx session when failed
+ Otherwise we will get double free issue because mfx session is closed
in
+ finalize. See
+
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1867#note_739346
+ for the double free issue.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1927>
+
+2020-12-10 11:11:04 +0800 Haihao Xiang <[email protected]>
+
+ * sys/msdk/gstmsdkcontext.c:
+ * sys/msdk/msdk.c:
+ msdk: check GstMsdkContext instead of mfxSession instance
+ When creating a GstMsdkContext instance, it also creates a mfxSession
+ instance, so we may check GstMsdkContext instead of mfxSession
instance
+ to make sure MSDK is available. In addition, according to MSDK doc
[1],
+ MFXVideoCORE_SetHandle function should be executed before any actual
+ usage of library including queries, otherwise the behavior is
+ unexpected, so we should call MFXVideoCORE_QueryPlatform after
+ MFXVideoCORE_SetHandle on Linux
+ [1]
https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#working-with-va-api-applications
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1921>
+
+2020-12-28 04:33:11 +0900 Seungha Yang <[email protected]>
+
+ * sys/d3d11/gstd3d11shader.c:
+ d3d11shader: Fix ID3DBlob object leak
+ Even if HLSL compiler was able to compile our shader code,
D3DCompile()
+ might return ID3DBlob object for compile warnings and the object
+ should be released.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1922>
+
+2020-12-29 13:15:10 +0200 Sebastian Dr??ge <[email protected]>
+
+ * ext/assrender/gstassrender.c:
+ assrender: Don't try unlocking unlocked mutex
+ When flushing right at the beginning of the video chain function or
+ when failing negotiation at the top of the function, the assrender
mutex
+ would be unlocked without being previously locked.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1923>
+
+2020-12-20 22:12:44 +0900 Seungha Yang <[email protected]>
+
+ * sys/d3d11/gstd3d11videosink.c:
+ d3d11videosink: Prepare window once streaming started
+ ... instead of READY state. READY state is too early for setting
+ overlay window handle especially playbin/playsink scenario
+ since playsink will set given overlay handle on videosink once
+ READY state change of videosink is ensured.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1905>
+
+2020-12-10 15:37:14 +0800 Lim Siew Hoon <[email protected]>
+
+ * gst/inter/gstintervideosrc.c:
+ intervideosrc: fix negotiation of interlaced caps
+ In 1.0 the field in caps is called "interlace-mode", not "interlaced".
+ Fixes #1480
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1878>
+
+2020-12-07 14:54:28 +0100 Jan Alexander Steffens (heftig)
<[email protected]>
+
+ * ext/srt/gstsrtobject.c:
+ srt: Don't take object lock calling gst_srt_object_get_stats
+ This function takes the sock lock. This can result in a deadlock when
+ another thread holding the sock lock is trying to take the object
lock.
+ Thread A (Holds object lock, wants sock lock):
+ #2 gst_srt_object_get_stats at
gst-plugins-bad/ext/srt/gstsrtobject.c:1753
+ #3 gst_srt_object_get_property_helper at
gst-plugins-bad/ext/srt/gstsrtobject.c:409
+ #4 gst_srt_sink_get_property at
gst-plugins-bad/ext/srt/gstsrtsink.c:95
+ #5 g_object_get_property from libgobject-2.0.so.0
+ Thread B (Holds sock lock, wants object lock):
+ #2 gst_element_post_message_default at
gstreamer/gst/gstelement.c:2069
+ #3 gst_element_post_message at gstreamer/gst/gstelement.c:2123
+ #4 gst_element_message_full_with_details at
gstreamer/gst/gstelement.c:2259
+ #5 gst_element_message_full at gstreamer/gst/gstelement.c:2298
+ #6 gst_srt_object_send_headers at
gst-plugins-bad/ext/srt/gstsrtobject.c:1407
+ #7 gst_srt_object_send_headers at
gst-plugins-bad/ext/srt/gstsrtobject.c:1444
+ #8 gst_srt_object_write_to_callers at
gst-plugins-bad/ext/srt/gstsrtobject.c:1444
+ #9 gst_srt_object_write at
gst-plugins-bad/ext/srt/gstsrtobject.c:1598
+ #10 gst_srt_sink_render at gst-plugins-bad/ext/srt/gstsrtsink.c:179
+ Fixes d2d00e07acc2b1ab1ae5a728ef5dc33c9dee7869.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1863>
+
+2020-12-04 17:02:00 +1100 Matthew Waters <[email protected]>
+
+ * gst/rtmp2/rtmp/rtmpclient.c:
+ * gst/rtmp2/rtmp/rtmpconnection.c:
+ * gst/rtmp2/rtmp/rtmpconnection.h:
+ rtmp2/connection: pass the parent cancellable down to the connection
+ Otherwise, when rtpm2src cancels an inflight operation that has a
queued
+ message stored, then the rtmp connection operation is not stopped.
+ If the cancellation occurs during rtmp connection start up, then
+ rtpm2src does not have any way of accessing the connection object as
it
+ has not been returned yet. As a result, rtpm2src will cancel, the
+ connection will still be processing things and the
+ GMainContext/GMainLoop associated with the outstanding operation will
be
+ destroyed. All outstanding operations and the rtmpconnection object
will
+ therefore be leaked in this case.
+ Fixes:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1425
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1865>
+
+2020-12-06 23:57:01 +0000 Tim-Philipp M??ller <[email protected]>
+
+ * meson.build:
+ Back to development
+
=== release 1.18.2 ===
2020-12-06 13:24:10 +0000 Tim-Philipp M??ller <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/NEWS
new/gst-plugins-bad-1.18.3/NEWS
--- old/gst-plugins-bad-1.18.2/NEWS 2020-12-06 14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/NEWS 2021-01-13 22:11:24.000000000 +0100
@@ -2,13 +2,13 @@
GStreamer 1.18.0 was originally released on 8 September 2020.
-The latest bug-fix release in the 1.18 series is 1.18.2 and was released
-on 6 December 2020.
+The latest bug-fix release in the 1.18 series is 1.18.3 and was released
+on 13 January 2021.
See https://gstreamer.freedesktop.org/releases/1.18/ for the latest
version of this document.
-Last updated: Monday 26 October 2020, 11:00 UTC (log)
+Last updated: Wednesday 13 January 2021, 20:00 UTC (log)
Introduction
@@ -2576,6 +2576,147 @@
- List of Merge Requests applied in 1.18.2
- List of Issues fixed in 1.18.2
+1.18.3
+
+The third 1.18 bug-fix release (1.18.3) was released on 13 January 2021.
+
+This release only contains bugfixes and it should be safe to update from
+1.18.x.
+
+Highlighted bugfixes in 1.18.3
+
+- fix ogg playback regression for ogg files that also have ID3 or APE
+ tags
+- compositor: fix artefacts and invalid memory access when blending
+ subsampled formats
+- exported mini object ref/unref/copy functions for use in bindings
+ such as gstreamer-sharp
+- Add support for Apple silicon (M1) to cerbero package builder
+- Ship RIST plugin in binary packages
+- various stability, performance and reliability improvements
+- memory leak fixes
+- build fixes
+
+gstreamer
+
+- gst: Add non-inline ref/unref/copy/replace methods for various mini
+ objects (buffer, bufferlist, caps, context, event, memory, message,
+ promise, query, sample, taglist, uri) for use in bindings such as
+ gstreamer-sharp
+- harness: don???t use GST_DEBUG_OBJECT with GstHarness which is not a
+ GObject
+
+gst-plugins-base
+
+- audiorate: Make buffer writable before changing its metadata
+- compositor: fix blending of subsampled components
+- decodebin3: When reconfiguring a slot make sure that the ghostpad is
+ unlinked
+- decodebin3: Release selection lock when pushing EOS
+- encodebasebin: Ensure that parsers are compatible with selected
+ encoders
+- tagdemux: resize and trim buffer in place to fix interaction with
+ oggdemux
+- videoaggregator: Pop out old buffers on timeout
+- video-blend: fix blending 8-bit and 16-bit frames together
+- appsrc: fix signal documentation
+- gl: document some GL caps specifics
+- libvisual: workaround clang compiler warning
+
+gst-plugins-good
+
+- deinterlace: fix build of assembly optimisations on macOS
+- splitmuxsink: Avoid deadlock when releasing a pad from a running
+ muxer
+- splitmuxsink: fix bogus fragment split
+- v4l2object: Map correct video format for RGBA
+- videoflip: fix possible crash when changing video-direction/method
+ while running
+
+gst-plugins-bad
+
+- assrender: fix mutex handling in certain flushing/error situations
+- dvbsuboverlay: Add support for dynamic resolution update
+- dashsink: fix critical log of dynamic pipeline
+- d3d11shader: Fix ID3DBlob object leak
+- d3d11videosink: Prepare window once streaming started
+- decklinkaudiosrc: Fix duration of the first audio frame after each
+ discont
+- intervideosrc: fix negotiation of interlaced caps
+- msdk: needn???t close mfx session when failed, fixes double free /
+ potential crash
+- msdk: check GstMsdkContext instead of mfxSession instance
+- srt: fix locking when retrieving stats
+- rtmp2src: fix leaks when connection is cancelled during startup or
+ connection fails
+
+gst-plugins-ugly
+
+- no changes
+
+gst-libav
+
+- avauddec: Drain decoder on decoding failure, fixes timestamps after
+ decoding errors
+
+gst-rtsp-server
+
+- rtsp-media: Only count senders when counting blocked streams
+- rtsp-client: Only unref client watch context on finalize, to avoid
+ deadlock
+
+gstreamer-vaapi
+
+- no changes
+
+gstreamer-sharp
+
+- no changes
+
+gst-omx
+
+- no changes
+
+gst-python
+
+- no changes
+
+gst-editing-services
+
+- launch: Ensure to add required ref to profiles from project
+- tests: fix meson test env setup to make sure we use the right
+ gst-plugin-scanner
+
+gst-integration-testsuites
+
+- no changes
+
+gst-build
+
+- meson: Update zlib.wrap to use wrapdb instead of github fork
+
+Cerbero build tool and packaging changes in 1.18.3
+
+- Add support for Apple silicon
+- Build and ship RIST plugin
+
+Contributors to 1.18.3
+
+Andoni Morales Alastruey, Edward Hervey, Haihao Xiang, Haihua Hu, Hou
+Qi, Ignacio Casal Quinteiro, Jakub Adam, Jan Alexander Steffens
+(heftig), Jan Schmidt, Jordan Petridis, Lawrence Troup, Lim Siew Hoon,
+Mathieu Duponchelle, Matthew Waters, Nicolas Dufresne, Raju Babannavar,
+Sebastian Dr??ge, Seungha Yang, Thibault Saunier, Tim-Philipp M??ller,
+Tobias Ronge, Vivia Nikolaidou,
+
+??? and many others who have contributed bug reports, translations, sent
+suggestions or helped testing. Thank you all!
+
+List of merge requests and issues fixed in 1.18.3
+
+- List of Merge Requests applied in 1.18.3
+- List of Issues fixed in 1.18.3
+
Schedule for 1.20
Our next major feature release will be 1.20, and 1.19 will be the
@@ -2583,8 +2724,9 @@
development of 1.19/1.20 will happen in the git master branch.
The plan for the 1.20 development cycle is yet to be confirmed, but it
-is now expected that feature freeze will take place some time in January
-2021, with the first 1.20 stable release around February/March 2021.
+is now expected that feature freeze will take place some time in
+January/February 2021, with the first 1.20 stable release hopefully
+around February/March 2021.
1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12,
1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/RELEASE
new/gst-plugins-bad-1.18.3/RELEASE
--- old/gst-plugins-bad-1.18.2/RELEASE 2020-12-06 14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/RELEASE 2021-01-13 22:11:24.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-bad 1.18.2.
+This is GStreamer gst-plugins-bad 1.18.3.
The GStreamer team is thrilled to announce a new major feature release
of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/ext/assrender/gstassrender.c
new/gst-plugins-bad-1.18.3/ext/assrender/gstassrender.c
--- old/gst-plugins-bad-1.18.2/ext/assrender/gstassrender.c 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/ext/assrender/gstassrender.c 2021-01-13
22:11:24.000000000 +0100
@@ -1171,7 +1171,7 @@
if (!gst_ass_render_negotiate (render, NULL)) {
gst_pad_mark_reconfigure (render->srcpad);
if (GST_PAD_IS_FLUSHING (render->srcpad))
- goto flushing;
+ goto flushing_no_unlock;
else
goto not_negotiated;
}
@@ -1443,7 +1443,6 @@
}
not_negotiated:
{
- GST_ASS_RENDER_UNLOCK (render);
GST_DEBUG_OBJECT (render, "not negotiated");
gst_buffer_unref (buffer);
return GST_FLOW_NOT_NEGOTIATED;
@@ -1451,6 +1450,9 @@
flushing:
{
GST_ASS_RENDER_UNLOCK (render);
+ }
+flushing_no_unlock:
+ {
GST_DEBUG_OBJECT (render, "flushing, discarding buffer");
gst_buffer_unref (buffer);
return GST_FLOW_FLUSHING;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/ext/dash/gstdashsink.c
new/gst-plugins-bad-1.18.3/ext/dash/gstdashsink.c
--- old/gst-plugins-bad-1.18.2/ext/dash/gstdashsink.c 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/ext/dash/gstdashsink.c 2021-01-13
22:11:24.000000000 +0100
@@ -584,6 +584,7 @@
gst_mpd_client_set_root_node (sink->mpd_client,
"type", GST_MPD_FILE_TYPE_DYNAMIC,
"availability-start-time", now, "publish-time", now, NULL);
+ gst_date_time_unref (now);
}
if (sink->minimum_update_period)
gst_mpd_client_set_root_node (sink->mpd_client,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/ext/dash/gstmpdrootnode.c
new/gst-plugins-bad-1.18.3/ext/dash/gstmpdrootnode.c
--- old/gst-plugins-bad-1.18.2/ext/dash/gstmpdrootnode.c 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/ext/dash/gstmpdrootnode.c 2021-01-13
22:11:24.000000000 +0100
@@ -83,17 +83,17 @@
case PROP_MPD_ROOT_AVAILABILTY_START_TIME:
if (self->availabilityStartTime)
gst_date_time_unref (self->availabilityStartTime);
- self->availabilityStartTime = g_value_get_boxed (value);
+ self->availabilityStartTime = g_value_dup_boxed (value);
break;
case PROP_MPD_ROOT_AVAILABILTY_END_TIME:
if (self->availabilityEndTime)
gst_date_time_unref (self->availabilityEndTime);
- self->availabilityEndTime = g_value_get_boxed (value);
+ self->availabilityEndTime = g_value_dup_boxed (value);
break;
case PROP_MPD_ROOT_PUBLISH_TIME:
if (self->publishTime)
gst_date_time_unref (self->publishTime);
- self->publishTime = g_value_get_boxed (value);
+ self->publishTime = g_value_dup_boxed (value);
break;
case PROP_MPD_ROOT_MEDIA_PRESENTATION_DURATION:
self->mediaPresentationDuration = g_value_get_uint64 (value);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/ext/srt/gstsrtobject.c
new/gst-plugins-bad-1.18.3/ext/srt/gstsrtobject.c
--- old/gst-plugins-bad-1.18.2/ext/srt/gstsrtobject.c 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/ext/srt/gstsrtobject.c 2021-01-13
22:11:24.000000000 +0100
@@ -362,84 +362,99 @@
gst_srt_object_get_property_helper (GstSRTObject * srtobject,
guint prop_id, GValue * value, GParamSpec * pspec)
{
- GST_OBJECT_LOCK (srtobject->element);
-
switch (prop_id) {
case PROP_URI:
+ GST_OBJECT_LOCK (srtobject->element);
g_value_take_string (value, gst_uri_to_string (srtobject->uri));
+ GST_OBJECT_UNLOCK (srtobject->element);
break;
case PROP_MODE:{
GstSRTConnectionMode v;
+
+ GST_OBJECT_LOCK (srtobject->element);
if (!gst_structure_get_enum (srtobject->parameters, "mode",
GST_TYPE_SRT_CONNECTION_MODE, (gint *) & v)) {
GST_WARNING_OBJECT (srtobject->element, "Failed to get 'mode'");
v = GST_SRT_CONNECTION_MODE_NONE;
}
g_value_set_enum (value, v);
+ GST_OBJECT_UNLOCK (srtobject->element);
break;
}
case PROP_LOCALADDRESS:
+ GST_OBJECT_LOCK (srtobject->element);
g_value_set_string (value,
gst_structure_get_string (srtobject->parameters, "localaddress"));
+ GST_OBJECT_UNLOCK (srtobject->element);
break;
case PROP_LOCALPORT:{
guint v;
+
+ GST_OBJECT_LOCK (srtobject->element);
if (!gst_structure_get_uint (srtobject->parameters, "localport", &v)) {
GST_WARNING_OBJECT (srtobject->element, "Failed to get 'localport'");
v = GST_SRT_DEFAULT_PORT;
}
g_value_set_uint (value, v);
+ GST_OBJECT_UNLOCK (srtobject->element);
break;
}
case PROP_PBKEYLEN:{
GstSRTKeyLength v;
+
+ GST_OBJECT_LOCK (srtobject->element);
if (!gst_structure_get_enum (srtobject->parameters, "pbkeylen",
GST_TYPE_SRT_KEY_LENGTH, (gint *) & v)) {
GST_WARNING_OBJECT (srtobject->element, "Failed to get 'pbkeylen'");
v = GST_SRT_KEY_LENGTH_NO_KEY;
}
g_value_set_enum (value, v);
+ GST_OBJECT_UNLOCK (srtobject->element);
break;
}
case PROP_POLL_TIMEOUT:{
gint v;
+
+ GST_OBJECT_LOCK (srtobject->element);
if (!gst_structure_get_int (srtobject->parameters, "poll-timeout", &v)) {
GST_WARNING_OBJECT (srtobject->element, "Failed to get
'poll-timeout'");
v = GST_SRT_DEFAULT_POLL_TIMEOUT;
}
g_value_set_int (value, v);
+ GST_OBJECT_UNLOCK (srtobject->element);
break;
}
case PROP_LATENCY:{
gint v;
+
+ GST_OBJECT_LOCK (srtobject->element);
if (!gst_structure_get_int (srtobject->parameters, "latency", &v)) {
GST_WARNING_OBJECT (srtobject->element, "Failed to get 'latency'");
v = GST_SRT_DEFAULT_LATENCY;
}
g_value_set_int (value, v);
+ GST_OBJECT_UNLOCK (srtobject->element);
break;
}
case PROP_STATS:
g_value_take_boxed (value, gst_srt_object_get_stats (srtobject));
break;
case PROP_WAIT_FOR_CONNECTION:
+ GST_OBJECT_LOCK (srtobject->element);
g_value_set_boolean (value, srtobject->wait_for_connection);
+ GST_OBJECT_UNLOCK (srtobject->element);
break;
- case PROP_STREAMID:{
+ case PROP_STREAMID:
+ GST_OBJECT_LOCK (srtobject->element);
g_value_set_string (value,
gst_structure_get_string (srtobject->parameters, "streamid"));
+ GST_OBJECT_UNLOCK (srtobject->element);
break;
- }
default:
- goto err;
+ return FALSE;
}
- GST_OBJECT_UNLOCK (srtobject->element);
return TRUE;
-
-err:
- GST_OBJECT_UNLOCK (srtobject->element);
- return FALSE;
}
void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/gst/dvbsuboverlay/dvb-sub.c
new/gst-plugins-bad-1.18.3/gst/dvbsuboverlay/dvb-sub.c
--- old/gst-plugins-bad-1.18.2/gst/dvbsuboverlay/dvb-sub.c 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/gst/dvbsuboverlay/dvb-sub.c 2021-01-13
22:11:24.000000000 +0100
@@ -1139,6 +1139,7 @@
gint buf_size)
{
int dds_version, info_byte;
+ int display_width, display_height;
if (buf_size < 5)
return -1;
@@ -1146,14 +1147,23 @@
info_byte = *buf++;
dds_version = info_byte >> 4;
+ display_width = GST_READ_UINT16_BE (buf) + 1;
+ buf += 2;
+ display_height = GST_READ_UINT16_BE (buf) + 1;
+ buf += 2;
+
+ if ((display_width != dvb_sub->display_def.display_width)
+ || (display_height != dvb_sub->display_def.display_height)) {
+ dvb_sub->display_def.display_width = display_width;
+ dvb_sub->display_def.display_height = display_height;
+
+ dvb_sub->display_def.version = -1;
+ }
+
if (dvb_sub->display_def.version == dds_version)
return 0; /* already have this display definition
version */
dvb_sub->display_def.version = dds_version;
- dvb_sub->display_def.display_width = GST_READ_UINT16_BE (buf) + 1;
- buf += 2;
- dvb_sub->display_def.display_height = GST_READ_UINT16_BE (buf) + 1;
- buf += 2;
dvb_sub->display_def.window_flag = info_byte & 1 << 3;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/gst/inter/gstintervideosrc.c
new/gst-plugins-bad-1.18.3/gst/inter/gstintervideosrc.c
--- old/gst-plugins-bad-1.18.2/gst/inter/gstintervideosrc.c 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/gst/inter/gstintervideosrc.c 2021-01-13
22:11:24.000000000 +0100
@@ -498,8 +498,9 @@
if (gst_structure_has_field (structure, "chroma-site"))
gst_structure_fixate_field_string (structure, "chroma-site", "mpeg2");
- if (gst_structure_has_field (structure, "interlaced"))
- gst_structure_fixate_field_boolean (structure, "interlaced", FALSE);
+ if (gst_structure_has_field (structure, "interlace-mode"))
+ gst_structure_fixate_field_string (structure, "interlace-mode",
+ "progressive");
return caps;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/gst/rtmp2/rtmp/rtmpclient.c
new/gst-plugins-bad-1.18.3/gst/rtmp2/rtmp/rtmpclient.c
--- old/gst-plugins-bad-1.18.2/gst/rtmp2/rtmp/rtmpclient.c 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/gst/rtmp2/rtmp/rtmpclient.c 2021-01-13
22:11:24.000000000 +0100
@@ -499,7 +499,8 @@
return;
}
- data->connection = gst_rtmp_connection_new (socket_connection);
+ data->connection = gst_rtmp_connection_new (socket_connection,
+ g_task_get_cancellable (task));
data->error_handler_id = g_signal_connect (data->connection,
"error", G_CALLBACK (connection_error), task);
@@ -510,8 +511,9 @@
connection_error (GstRtmpConnection * connection, gpointer user_data)
{
GTask *task = user_data;
- g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_FAILED,
- "error during connection attempt");
+ if (!g_task_had_error (task))
+ g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "error during connection attempt");
}
static gchar *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.18.2/gst/rtmp2/rtmp/rtmpconnection.c
new/gst-plugins-bad-1.18.3/gst/rtmp2/rtmp/rtmpconnection.c
--- old/gst-plugins-bad-1.18.2/gst/rtmp2/rtmp/rtmpconnection.c 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/gst/rtmp2/rtmp/rtmpconnection.c 2021-01-13
22:11:24.000000000 +0100
@@ -251,7 +251,6 @@
static void
gst_rtmp_connection_init (GstRtmpConnection * rtmpconnection)
{
- rtmpconnection->cancellable = g_cancellable_new ();
rtmpconnection->output_queue =
g_async_queue_new_full ((GDestroyNotify) gst_buffer_unref);
rtmpconnection->input_streams = gst_rtmp_chunk_streams_new ();
@@ -334,11 +333,16 @@
}
GstRtmpConnection *
-gst_rtmp_connection_new (GSocketConnection * connection)
+gst_rtmp_connection_new (GSocketConnection * connection,
+ GCancellable * cancellable)
{
GstRtmpConnection *sc;
sc = g_object_new (GST_TYPE_RTMP_CONNECTION, NULL);
+ if (cancellable)
+ sc->cancellable = g_object_ref (cancellable);
+ else
+ sc->cancellable = g_cancellable_new ();
gst_rtmp_connection_set_socket_connection (sc, connection);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.18.2/gst/rtmp2/rtmp/rtmpconnection.h
new/gst-plugins-bad-1.18.3/gst/rtmp2/rtmp/rtmpconnection.h
--- old/gst-plugins-bad-1.18.2/gst/rtmp2/rtmp/rtmpconnection.h 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/gst/rtmp2/rtmp/rtmpconnection.h 2021-01-13
22:11:24.000000000 +0100
@@ -51,7 +51,7 @@
GType gst_rtmp_connection_get_type (void);
-GstRtmpConnection *gst_rtmp_connection_new (GSocketConnection * connection);
+GstRtmpConnection *gst_rtmp_connection_new (GSocketConnection * connection,
GCancellable * cancellable);
GSocket *gst_rtmp_connection_get_socket (GstRtmpConnection * connection);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/gst-plugins-bad.doap
new/gst-plugins-bad-1.18.3/gst-plugins-bad.doap
--- old/gst-plugins-bad-1.18.2/gst-plugins-bad.doap 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/gst-plugins-bad.doap 2021-01-13
22:11:24.000000000 +0100
@@ -35,6 +35,16 @@
<release>
<Version>
+ <revision>1.18.3</revision>
+ <branch>1.18</branch>
+ <name></name>
+ <created>2021-01-13</created>
+ <file-release
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.18.3.tar.xz"
/>
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.18.2</revision>
<branch>1.18</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/meson.build
new/gst-plugins-bad-1.18.3/meson.build
--- old/gst-plugins-bad-1.18.2/meson.build 2020-12-06 14:24:12.000000000
+0100
+++ new/gst-plugins-bad-1.18.3/meson.build 2021-01-13 22:11:24.000000000
+0100
@@ -1,5 +1,5 @@
project('gst-plugins-bad', 'c', 'cpp',
- version : '1.18.2',
+ version : '1.18.3',
meson_version : '>= 0.49',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/sys/d3d11/gstd3d11shader.c
new/gst-plugins-bad-1.18.3/sys/d3d11/gstd3d11shader.c
--- old/gst-plugins-bad-1.18.2/sys/d3d11/gstd3d11shader.c 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/sys/d3d11/gstd3d11shader.c 2021-01-13
22:11:24.000000000 +0100
@@ -132,6 +132,13 @@
return NULL;
}
+ if (error) {
+ const gchar *err = ID3D10Blob_GetBufferPointer (error);
+
+ GST_WARNING ("HLSL compiler warnings:\n%s", GST_STR_NULL (err));
+ ID3D10Blob_Release (error);
+ }
+
return ret;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/sys/d3d11/gstd3d11videosink.c
new/gst-plugins-bad-1.18.3/sys/d3d11/gstd3d11videosink.c
--- old/gst-plugins-bad-1.18.2/sys/d3d11/gstd3d11videosink.c 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/sys/d3d11/gstd3d11videosink.c 2021-01-13
22:11:24.000000000 +0100
@@ -94,6 +94,7 @@
static GstFlowReturn
gst_d3d11_video_sink_show_frame (GstVideoSink * sink, GstBuffer * buf);
+static gboolean gst_d3d11_video_sink_prepare_window (GstD3D11VideoSink * self);
#define gst_d3d11_video_sink_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstD3D11VideoSink, gst_d3d11_video_sink,
@@ -319,6 +320,9 @@
GST_DEBUG_OBJECT (self, "set caps %" GST_PTR_FORMAT, caps);
+ if (!gst_d3d11_video_sink_prepare_window (self))
+ goto no_window;
+
if (!gst_video_info_from_caps (&self->info, caps))
goto invalid_format;
@@ -459,6 +463,12 @@
"Could not locate image format from caps %" GST_PTR_FORMAT, caps);
return FALSE;
}
+no_window:
+ {
+ GST_ELEMENT_ERROR (sink, RESOURCE, NOT_FOUND, (NULL),
+ ("Failed to open window."));
+ return FALSE;
+ }
no_disp_ratio:
{
GST_ELEMENT_ERROR (sink, CORE, NEGOTIATION, (NULL),
@@ -500,7 +510,6 @@
{
GstD3D11VideoSink *self = GST_D3D11_VIDEO_SINK (sink);
gboolean is_hardware = TRUE;
- GstD3D11WindowNativeType window_type = GST_D3D11_WINDOW_NATIVE_TYPE_HWND;
GST_DEBUG_OBJECT (self, "Start");
@@ -510,6 +519,25 @@
return FALSE;
}
+ g_object_get (self->device, "hardware", &is_hardware, NULL);
+ if (!is_hardware) {
+ GST_WARNING_OBJECT (self, "D3D11 device is running on software emulation");
+ self->can_convert = FALSE;
+ } else {
+ self->can_convert = TRUE;
+ }
+
+ return TRUE;
+}
+
+static gboolean
+gst_d3d11_video_sink_prepare_window (GstD3D11VideoSink * self)
+{
+ GstD3D11WindowNativeType window_type = GST_D3D11_WINDOW_NATIVE_TYPE_HWND;
+
+ if (self->window)
+ return TRUE;
+
if (!self->window_id)
gst_video_overlay_prepare_window_handle (GST_VIDEO_OVERLAY (self));
@@ -518,6 +546,8 @@
gst_d3d11_window_get_native_type_from_handle (self->window_id);
if (window_type != GST_D3D11_WINDOW_NATIVE_TYPE_NONE) {
+ GST_DEBUG_OBJECT (self, "Have window handle %" G_GUINTPTR_FORMAT,
+ self->window_id);
gst_video_overlay_got_window_handle (GST_VIDEO_OVERLAY (self),
self->window_id);
}
@@ -554,7 +584,7 @@
}
if (!self->window) {
- GST_ERROR_OBJECT (sink, "Cannot create d3d11window");
+ GST_ERROR_OBJECT (self, "Cannot create d3d11window");
return FALSE;
}
@@ -571,15 +601,6 @@
g_signal_connect (self->window, "mouse-event",
G_CALLBACK (gst_d3d11_video_mouse_key_event), self);
- g_object_get (self->device, "hardware", &is_hardware, NULL);
-
- if (!is_hardware) {
- GST_WARNING_OBJECT (self, "D3D11 device is running on software emulation");
- self->can_convert = FALSE;
- } else {
- self->can_convert = TRUE;
- }
-
return TRUE;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.18.2/sys/decklink/gstdecklinkaudiosrc.cpp
new/gst-plugins-bad-1.18.3/sys/decklink/gstdecklinkaudiosrc.cpp
--- old/gst-plugins-bad-1.18.2/sys/decklink/gstdecklinkaudiosrc.cpp
2020-12-06 14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/sys/decklink/gstdecklinkaudiosrc.cpp
2021-01-13 22:11:24.000000000 +0100
@@ -632,6 +632,8 @@
// Convert to the sample numbers
start_offset =
gst_util_uint64_scale (start_time, self->info.rate, GST_SECOND);
+ // Convert back to round down to a sample multiple and get rid of rounding
errors
+ start_time = gst_util_uint64_scale (start_offset, GST_SECOND,
self->info.rate);
end_offset = start_offset + sample_count;
end_time = gst_util_uint64_scale_int (end_offset, GST_SECOND,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/sys/msdk/gstmsdkcontext.c
new/gst-plugins-bad-1.18.3/sys/msdk/gstmsdkcontext.c
--- old/gst-plugins-bad-1.18.2/sys/msdk/gstmsdkcontext.c 2020-12-06
14:24:12.000000000 +0100
+++ new/gst-plugins-bad-1.18.3/sys/msdk/gstmsdkcontext.c 2021-01-13
22:11:24.000000000 +0100
@@ -178,6 +178,7 @@
gst_msdk_context_open (GstMsdkContext * context, gboolean hardware,
GstMsdkContextJobType job_type)
{
+ mfxU16 codename;
GstMsdkContextPrivate *priv = context->priv;
priv->job_type = job_type;
@@ -196,10 +197,16 @@
}
#endif
+ codename = msdk_get_platform_codename (priv->session);
+
+ if (codename != MFX_PLATFORM_UNKNOWN)
+ GST_INFO ("Detected MFX platform with device code %d", codename);
+ else
+ GST_WARNING ("Unknown MFX platform");
+
return TRUE;
failed:
- msdk_close_session (priv->session);
return FALSE;
}
@@ -359,7 +366,6 @@
(!(_req->Type & MFX_MEMTYPE_EXPORT_FRAME) &&
_req->Info.Width <= cached_resp->request.Info.Width &&
_req->Info.Height <= cached_resp->request.Info.Height))
-
return TRUE;
return FALSE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.2/sys/msdk/msdk.c
new/gst-plugins-bad-1.18.3/sys/msdk/msdk.c
--- old/gst-plugins-bad-1.18.2/sys/msdk/msdk.c 2020-12-06 14:24:12.000000000
+0100
+++ new/gst-plugins-bad-1.18.3/sys/msdk/msdk.c 2021-01-13 22:11:24.000000000
+0100
@@ -191,7 +191,6 @@
};
mfxIMPL implementation;
mfxStatus status;
- mfxU16 codename;
static const gchar *implementation_names[] = {
"AUTO", "SOFTWARE", "HARDWARE", "AUTO_ANY", "HARDWARE_ANY", "HARDWARE2",
@@ -218,13 +217,6 @@
goto failed;
}
- codename = msdk_get_platform_codename (session);
-
- if (codename != MFX_PLATFORM_UNKNOWN)
- GST_INFO ("Detected MFX platform with device code %d", codename);
- else
- GST_WARNING ("Unknown MFX platform");
-
GST_INFO ("MFX implementation: 0x%04x (%s)", implementation,
implementation_names[MFX_IMPL_BASETYPE (implementation)]);
GST_INFO ("MFX version: %d.%d", version.Major, version.Minor);
@@ -239,12 +231,14 @@
gboolean
msdk_is_available (void)
{
- mfxSession session = msdk_open_session (MFX_IMPL_HARDWARE_ANY);
- if (!session) {
+ /* Make sure we can create GstMsdkContext instance (the job type is not used
actually) */
+ GstMsdkContext *msdk_context = gst_msdk_context_new (1,
GST_MSDK_JOB_DECODER);
+
+ if (!msdk_context) {
return FALSE;
}
- msdk_close_session (session);
+ gst_object_unref (msdk_context);
return TRUE;
}