Changes of Revision 8

gstreamer-plugins-bad-codecs.changes Changed
x
 
1
@@ -1,4 +1,9 @@
2
 -------------------------------------------------------------------
3
+Wed Oct 26 13:32:09 UTC 2022 - Bjørn Lie <zaitor@opensuse.org>
4
+
5
+- Update to version 1.20.4
6
+
7
+-------------------------------------------------------------------
8
 Sat Jun 25 13:49:39 UTC 2022 - Bjørn Lie <zaitor@opensuse.org>
9
 
10
 - Update to version 1.20.3
11
gstreamer-plugins-bad-codecs.spec Changed
10
 
1
@@ -7,7 +7,7 @@
2
 %define _version 1.20.0
3
 
4
 Name:           gstreamer-plugins-bad-codecs
5
-Version:        1.20.3
6
+Version:        1.20.4
7
 Release:        0
8
 Summary:        Codecs/plugins for gstreamer-plugins-bad
9
 License:        LGPL-2.1-or-later
10
gst-plugins-bad-1.20.3.tar.xz/ChangeLog -> gst-plugins-bad-1.20.4.tar.xz/ChangeLog Changed
201
 
1
@@ -1,7 +1,387 @@
2
+=== release 1.20.4 ===
3
+
4
+2022-10-12 16:39:47 +0100  Tim-Philipp Müller <tim@centricular.com>
5
+
6
+   * NEWS:
7
+   * RELEASE:
8
+   * gst-plugins-bad.doap:
9
+   * meson.build:
10
+     Release 1.20.4
11
+
12
+2022-10-12 16:39:40 +0100  Tim-Philipp Müller <tim@centricular.com>
13
+
14
+   * ChangeLog:
15
+     Update ChangeLogs for 1.20.4
16
+
17
+2022-08-08 23:37:11 +0900  Seungha Yang <seungha@centricular.com>
18
+
19
+   * gst/mxf/mxfaes-bwf.c:
20
+     mxfdemux: Always calculate BlockAlign of raw audio
21
+     Workaround for nBlockAlign and nBitsPerSample mismatch. Always
22
+     use the formula described in the specification for BlockAlign value
23
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3149>
24
+
25
+2022-09-14 00:58:37 +0900  Seungha Yang <seungha@centricular.com>
26
+
27
+   * sys/nvcodec/gstnvdec.c:
28
+     nvdec: Fix for HEVC decoding when coded resolution is larger than display resolution
29
+     As documented in the SDK header, we should set coded width/height
30
+     values to the corresponding decoder configuration option,
31
+     instead of display resolution
32
+     Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1438
33
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3143>
34
+
35
+2022-09-22 22:39:31 +0900  Sangchul Lee <sc11.lee@samsung.com>
36
+
37
+   * ext/webrtc/gstwebrtcbin.c:
38
+     webrtcbin: Fix pointer dereference before null check
39
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3133>
40
+
41
+2022-10-05 15:59:03 +0900  Sangchul Lee <sc11.lee@samsung.com>
42
+
43
+   * ext/webrtc/gstwebrtcice.c:
44
+     webrtc/nice: Make sure to return NULL when validating turn server fails
45
+     It affects 'add-turn-server' signal action and 'turn-server' property
46
+     of webrtcbin.
47
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3124>
48
+
49
+2022-09-20 23:31:45 +0300  Mart Raudsepp <mart@leio.tech>
50
+
51
+   * gst/mpegtsdemux/mpegtsbase.c:
52
+     tsdemux: Don't trigger a program change when falling back to ignore-pcr behaviour
53
+     Since commit a79a756b79aa1675e we could change to ignore-pcr automatically at 500ms
54
+     into a live stream when no PCR is seen by then. However the stream counting in
55
+     program change detection was wrongly considering ignore-pcr programs to have a
56
+     separate PCR PID, even though we are actually ignoring the PCR PID completely,
57
+     resulting in an erroneous program switch getting triggered from the different
58
+     stream count. This in turn would send an EOS and switch out the pads for what
59
+     actually is still the same program, while we intended to simply apply a
60
+     workaround for broken encoders.
61
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3089>
62
+
63
+2022-03-25 14:25:02 +1100  Andrew Pritchard <andrew@vivi.io>
64
+
65
+   * sys/androidmedia/jni/gstamcsurfacetexture-jni.c:
66
+     Fix GstAmcSurfaceTexture segfault Check that `self` and `self->callback` are defined. `self` can be set to `NULL` in `remove_listener`, and `self->callback` can be set to `NULL` inside `gst_amc_surface_texture_jni_set_on_frame_available_callback`. This can cause a segfault since the Java object can outlive the C object, and call the callback after `remove_listener` is called.
67
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3056>
68
+
69
+2022-08-25 14:24:25 +0200  Piotr Brzeziński <piotr@centricular.com>
70
+
71
+   * sys/applemedia/avfvideosrc.m:
72
+     avfvideosrc: Fix wrong default framerate value
73
+     Current default G_MAXINT is not a correct value under any circumstances.
74
+     This creates an issue with screen capture, during which we currently do
75
+     not get any framerate info causing G_MAXINT to show up, where elements
76
+     downstream can possibly misbehave - for example, `vtenc` causes
77
+     a kernel panic.
78
+     Replace with 30/1 to avoid such scenarios.
79
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2946>
80
+
81
+2022-08-20 16:15:15 +0100  Philippe Normand <philn@igalia.com>
82
+
83
+   * ext/openh264/gstopenh264dec.cpp:
84
+   * ext/openh264/gstopenh264enc.cpp:
85
+     openh264: Register debug categories earlier
86
+     Otherwise the GST_ERROR message logged in case of ABI mismatch would be done on
87
+     an uninitialized category.
88
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2924>
89
+
90
+2022-08-20 16:57:27 +0100  Philippe Normand <philn@igalia.com>
91
+
92
+   * ext/openh264/gstopenh264enc.cpp:
93
+     openh264enc: Fix constrained-high encoding
94
+     constrained-high is high without B-frames, there is no EProfileIdc for this, so
95
+     assume high instead of hitting an assert down the line.
96
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2921>
97
+
98
+2022-08-14 22:31:29 -0400  Daniel Morin <daniel.morin@collabora.com>
99
+
100
+   * gst-libs/gst/play/gstplay-media-info.h:
101
+   * gst-libs/gst/play/gstplay-signal-adapter.h:
102
+   * gst-libs/gst/play/gstplay-video-overlay-video-renderer.h:
103
+   * gst-libs/gst/play/gstplay-video-renderer.h:
104
+   * gst-libs/gst/play/gstplay-visualization.h:
105
+     gst-play: missing cleanup for g_autoptr
106
+     Without this change cleanup function for g_autoptr is not defined for
107
+     GstPlayMediaInfo, GstPlaySignalAdapter, GstPlayVideoRenderer,
108
+     GstPlayVideoOverlayVideoRenderer and GstPlayVisualization. Cleanup
109
+     function was defined in gstplay.h, but missing in other header files.
110
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2904>
111
+
112
+2022-08-13 12:24:37 +0300  Sebastian Dröge <sebastian@centricular.com>
113
+
114
+   * gst-libs/gst/player/gstplayer-media-info.c:
115
+     player: Don't leak wrapped video info
116
+     Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1373
117
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2881>
118
+
119
+2022-08-13 11:50:20 +0300  Sebastian Dröge <sebastian@centricular.com>
120
+
121
+   * gst-libs/gst/play/gstplay.c:
122
+     play: Make ownership of video-sink clearer in combination with floating references
123
+     And correctly handle the case of VideoRenderer::create_video_sink() not
124
+     actually returning a floating reference, which might be tricky for some
125
+     bindings.
126
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2881>
127
+
128
+2022-08-13 11:49:08 +0300  Sebastian Dröge <sebastian@centricular.com>
129
+
130
+   * gst-libs/gst/play/gstplay.c:
131
+     play: Fix object construction
132
+     Ideally new() functions should simply call g_object_new() and not much
133
+     else, so let's do that here and handle all the construction properly in
134
+     a GObject way.
135
+     Now a play object created via g_object_new() is actually usable.
136
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2881>
137
+
138
+2022-08-13 11:39:59 +0300  Sebastian Dröge <sebastian@centricular.com>
139
+
140
+   * gst-libs/gst/player/gstplayer.c:
141
+     player: Fix object construction
142
+     Ideally new() functions should simply call g_object_new() and not much
143
+     else, so let's do that here and handle all the construction properly in
144
+     a GObject way.
145
+     Now a player object created via g_object_new() is actually usable.
146
+     In addition, also fix the video-renderer property so that reading it
147
+     returns an object of the correct type.
148
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2881>
149
+
150
+2022-08-13 11:30:35 +0300  Sebastian Dröge <sebastian@centricular.com>
151
+
152
+   * gst-libs/gst/player/gstplayer.c:
153
+     player: Release signal adapter on finalize
154
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2881>
155
+
156
+2022-08-12 18:24:41 +0300  Matthias Clasen <mclasen@redhat.com>
157
+
158
+   * gst-libs/gst/player/gstplayer.c:
159
+     gstplayer: Plug a memory leak
160
+     This was showing up as a memory leak in GTK's
161
+     gstreamer media backend:
162
+     40 bytes in 1 blocks are definitely lost in loss record 18,487 of 40,868
163
+     at 0x484586F: malloc (vg_replace_malloc.c:381)
164
+     by 0x50D5278: g_malloc (gmem.c:125)
165
+     by 0x50EDBA5: g_slice_alloc (gslice.c:1072)
166
+     by 0x50EFBCC: g_slice_alloc0 (gslice.c:1098)
167
+     by 0x51F2F45: g_type_create_instance (gtype.c:1911)
168
+     by 0x51DAE37: g_object_new_internal (gobject.c:2011)
169
+     by 0x51DC080: g_object_new_with_properties (gobject.c:2181)
170
+     by 0x51DCB20: g_object_new (gobject.c:1821)
171
+     by 0x9855F86: UnknownInlinedFun (gstplayer-wrapped-video-renderer.c:109)
172
+     by 0x9855F86: gst_player_new (gstplayer.c:579)
173
+     Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1374
174
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2876>
175
+
176
+2022-07-30 02:29:49 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
177
+
178
+   * ext/sctp/usrsctp/meson.build:
179
+     meson: Don't pass -Werror to vendored code
180
+     Do it the correct way with libusrsctp -- override the option so that
181
+     it's done in a compiler-agnostic and future-proof way.
182
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2818>
183
+
184
+2022-05-25 18:40:30 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
185
+
186
+   * gst/rtmp2/gstrtmp2locationhandler.c:
187
+   * gst/rtmp2/rtmp/rtmpclient.c:
188
+     rtsp+rtmp: Forward warning added to tls-validation-flags to our users
189
+     With the 2.72 release, glib-networking developers have decided that
190
+     TLS certificate validation cannot be implemented correctly by them, so
191
+     they've deprecated it.
192
+     In a nutshell: a cert can have several validation errors, but there
193
+     are no guarantees that the TLS backend will return all those errors,
194
+     and things are made even more complicated by the fact that the list of
195
+     errors might refer to certs that are added for backwards-compat and
196
+     won't actually be used by the TLS library.
197
+     Our best option is to ignore the deprecation and pass the warning onto
198
+     users so they can make an appropriate security decision regarding
199
+     this.
200
+     We can't deprecate the tls-validation-flags property because it is
201
gst-plugins-bad-1.20.3.tar.xz/NEWS -> gst-plugins-bad-1.20.4.tar.xz/NEWS Changed
201
 
1
@@ -2,13 +2,13 @@
2
 
3
 GStreamer 1.20.0 was originally released on 3 February 2022.
4
 
5
-The latest bug-fix release in the 1.20 series is 1.20.3 and was released
6
-on 15 June 2022.
7
+The latest bug-fix release in the 1.20 series is 1.20.4 and was released
8
+on 12 October 2022.
9
 
10
 See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
11
 version of this document.
12
 
13
-Last updated: Monday 15 June 2022, 17:00 UTC (log)
14
+Last updated: Wednesday 12 October 2022, 15:00 UTC (log)
15
 
16
 Introduction
17
 
18
@@ -757,7 +757,8 @@
19
 
20
 -   matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
21
     (i.e. stream-format avc3 and hev1) which allows on-the-fly
22
-    profile/level/resolution changes.
23
+    profile/level changes, and from 1.20.4 onwards also resolution
24
+    changes.
25
 
26
 -   matroskamux: new "cluster-timestamp-offset" property, useful for use
27
     cases where the container timestamps should map to some absolute
28
@@ -909,7 +910,7 @@
29
 -   vp8enc: finish support for temporal scalability: two new properties
30
     ("temporal-scalability-layer-flags",
31
     "temporal-scalability-layer-sync-flags") and a unit change on the
32
-    "temporal-scalability-target-bitrate" property (now expects bps);
33
+    "temporal-scalability-target-bitrate” property (now expects bps);
34
     also make temporal scalability details available to RTP payloaders
35
     as buffer metadata.
36
 
37
@@ -1754,7 +1755,7 @@
38
     names of internal elements anyway.
39
 
40
 -   The vp8enc element now expects bps (bits per second) for the
41
-    "temporal-scalability-target-bitrate" property, which is consistent
42
+    "temporal-scalability-target-bitrate” property, which is consistent
43
     with the "target-bitrate" property. Since additional configuration
44
     is required with modern libvpx to make temporal scaling work anyway,
45
     chances are that very few people will have been using this property
46
@@ -2503,15 +2504,293 @@
47
 -   List of Merge Requests applied in 1.20.3
48
 -   List of Issues fixed in 1.20.3
49
 
50
+1.20.4
51
+
52
+The fourth 1.20 bug-fix release (1.20.4) was released on 12 October
53
+2022.
54
+
55
+This release only contains bugfixes and it should be safe to upgrade
56
+from 1.20.x.
57
+
58
+Highlighted bugfixes in 1.20.4
59
+
60
+-   avaudiodec: fix playback issue with WMA files, would throw an error
61
+    at EOS with FFmpeg 5.x
62
+-   Fix deadlock when loading gst-editing-services plugin
63
+-   Fix input buffering capacity in live mode for aggregator,
64
+    video/audio aggregator subclasses, muxers
65
+-   glimagesink: fix crash on Android
66
+-   subtitle handling and subtitle overlay fixes
67
+-   matroska-mux: allow width + height changes for avc3|hev1|vp8|vp9
68
+-   rtspsrc: fix control url handling for spec compliant servers and add
69
+    fallback for incompliant servers
70
+-   WebRTC fixes
71
+-   RTP retransmission fixes
72
+-   video: fixes for formats with 4x subsampling and horizontal co-sited
73
+    chroma (Y41B, YUV9, YVU9 and IYU9)
74
+-   macOS build and packaging fixes, in particular fix finding of gio
75
+    modules on macOS for https/TLS support
76
+-   Performance improvements
77
+-   Miscellaneous bug fixes, memory leak fixes, and other stability and
78
+    reliability improvements
79
+
80
+gstreamer
81
+
82
+-   buffer: drop parent meta in deep copy/foreach_metadata
83
+-   devicemonitor: Use a sync bus handler for the provider to avoid
84
+    accumulating all messages until the provider is stopped
85
+-   element: Fix requesting of pads with string templates
86
+-   gst: Protect initialization state with a recursive mutex
87
+-   gst: add missing define guard for build without gstreamer debug
88
+    logging support
89
+-   gst_init: Initialize static plugins just before dynamic plugins
90
+-   info: Parse “NONE” as a valid level name
91
+-   meta: Set the parent refcount of the GstStructure correctly
92
+-   pluginloader: Don’t hang on short reads/writes
93
+-   tracers: leaks: fix potentially invalid memory access when trying to
94
+    detect object type
95
+-   tracers: leaks: fix object-refings.class flags
96
+-   uri: When setting the same string again do nothing
97
+-   value: Don’t loop forever when serializing invalid flag
98
+
99
+Base Libraries
100
+
101
+-   aggregator: fix input buffering in live mode (was too low before in
102
+    many cases)
103
+-   aggregator: fix reversed active/flushing arguments in debug log
104
+    output
105
+-   aggregator: Reset EOS flag after receiving a stream-start event
106
+
107
+Core Elements
108
+
109
+-   queue2: Hold the lock when modifying sinkresult
110
+-   queue2: Fix deadlock when deactivate is called in pull mode
111
+
112
+gst-plugins-base
113
+
114
+-   decodebin3: fix mutex leaks
115
+-   decodebin3: Fix memory issues with active selection list
116
+-   decodebin3, uridecodebin3, urisourcebin: Event handling fixes
117
+-   decodebin3: fix EOS event sequence
118
+-   parsebin: Avoid crash with unknown streams
119
+-   parsebin: SIGSEGV during HLS stream using souphttpsrc
120
+-   glimagesink: only allow setting the GL display/context if it is a
121
+    valid value
122
+-   glimagesink: segfault on android devices
123
+-   gstgl: Fix several memory leaks in macOS
124
+-   opusenc: improve inband-fec property documentation
125
+-   playsink: Hold a reference to the soft volume element
126
+-   pbutils: descriptions: fix gst_pb_utils_get_caps_description_flags()
127
+-   rtspurl: Use gst_uri_join_strings() in
128
+    gst_rtsp_url_get_request_uri_with_control() instead of a
129
+    hand-crafted, wrong version
130
+-   rtspconnection: protect cancellable by a mutex
131
+-   sdpmessage: Don’t set SDP medias from caps without
132
+    media/payload/clock-rate fields
133
+-   samiparse: fix handling of self-closing tags
134
+-   ssaparse: include required system headers for isspace() and sscanf()
135
+    functions
136
+-   subparse: fix crash when parsing invalid timestamps in mpl2
137
+-   subparse fixes
138
+-   textoverlay: Don’t miscalculate text running times
139
+-   videoaggregator: always convert when user provides converter-config
140
+-   video: Fix scaling in 4x horizontal co-sited chroma (Y41B, YUV9,
141
+    YVU9 and IYU9)
142
+-   xmptag: register musicbrainz tags during init to fix critical in
143
+    jpegparse
144
+-   xvimagesink: fix image leaks in error code path
145
+-   tests: skip unit tests for dependency-less elements that have been
146
+    disabled
147
+
148
+Tools
149
+
150
+-   No changes
151
+
152
+gst-plugins-good
153
+
154
+-   alpha: fix stride issue when out buffer has padding on right
155
+-   isoff: Fix earliest pts field parse issue
156
+-   matroska-mux: allow width + height changes for avc3|hev1|vp8|vp9
157
+-   qt: Fix another instance of Qt/GStreamer both defining GLsync
158
+    differently
159
+-   qtdemux: Avoid crash on reconfiguring.
160
+-   qtdemux: guard against timestamp calculation overflow in gap event
161
+    loop
162
+-   qtdemux: Don’t use invalid values from failed trex parsing
163
+-   qtdemux: possible endless loop
164
+-   rtpjitterbuffer: Only unschedule timers for late packets if they’re
165
+    not RTX packets and only once
166
+-   rtpjitterbuffer: remove lost timer for out of order packets
167
+-   rtspsrc: SETUP generates 400 Bad Request
168
+-   rtspsrc: Retry SETUP with non-compliant URL resolution on “Bad
169
+    Request” and “Not found”
170
+-   rtpst2022-1-fecenc: Drain column packets on EOS
171
+-   rtpvp8depay: If configured to wait for keyframes after packet loss,
172
+    also do that if incomplete frames are detected
173
+-   splitmuxsink: Don’t crash on EOS without buffer
174
+-   splitmuxsrc: Stop pad task before cleanup
175
+-   splitmuxsrc: don’t consider unlinked pads when deactivating part
176
+-   soup: libsoup3 makes audio streaming stop
177
+-   v4l2: fix critical when unreferencign buffer with no data
178
+-   v4l2bufferpool: Fix debug trace
179
+-   v4l2object: Add support for Apple’s full-range bt709 colorspace
180
+    variant 1:3:5:1
181
+-   v4l2videocodec: workaround for failure to fully drain frames
182
+    preceding MIDSTREAM renegotiation
183
+-   v4l2allocator: Fix invalid imported dmabuf fd
184
+-   videoflip: Fix caps negotiation when method is selected
185
+-   build failure trying to build jack examples
186
+-   examples: don’t try and build jack examples if jack was disabled
187
+-   tests: skip unit tests for dependency-less elements that have been
188
+    disabled
189
+
190
+gst-plugins-bad
191
+
192
+-   amcvideodec: fix GstAmcSurfaceTexture segfault
193
+-   audiobuffersplit: Fix drift that was introduced by wrong
194
+    calculations in gapless mode
195
+-   avfvideosrc: Fix wrong default framerate value
196
+-   audiovisualizer: fix buffer mapping to not increase refcount
197
+-   d3d11decoder: Check 16K resolution support
198
+-   d3d11videosink: Fix for force-aspect-ratio setting when rendering on
199
+    shared texture
200
+-   mxfdemux: Always calculate BlockAlign of raw audio to work around
201
gst-plugins-bad-1.20.3.tar.xz/RELEASE -> gst-plugins-bad-1.20.4.tar.xz/RELEASE Changed
7
 
1
@@ -1,4 +1,4 @@
2
-This is GStreamer gst-plugins-bad 1.20.3.
3
+This is GStreamer gst-plugins-bad 1.20.4.
4
 
5
 The GStreamer team is thrilled to announce a new major feature release
6
 of your favourite cross-platform multimedia framework!
7
gst-plugins-bad-1.20.3.tar.xz/ext/dtls/gstdtlscertificate.c -> gst-plugins-bad-1.20.4.tar.xz/ext/dtls/gstdtlscertificate.c Changed
57
 
1
@@ -221,14 +221,24 @@
2
 #if OPENSSL_VERSION_NUMBER < 0x10100001L
3
   rsa = RSA_generate_key (2048, RSA_F4, NULL, NULL);
4
 #else
5
+  /*
6
+   * OpenSSL 3.0 deprecated all low-level APIs, so we need to rewrite this code
7
+   * to get rid of the warnings. The porting guide explicitly recommends
8
+   * disabling the warnings if this is not feasible, so let's do that for now:
9
+   * https://wiki.openssl.org/index.php/OpenSSL_3.0#Upgrading_to_OpenSSL_3.0_from_OpenSSL_1.1.1
10
+   */
11
+  G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
12
   rsa = RSA_new ();
13
+  G_GNUC_END_IGNORE_DEPRECATIONS;
14
   if (rsa != NULL) {
15
     BIGNUM *e = BN_new ();
16
+    G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
17
     if (e == NULL || !BN_set_word (e, RSA_F4)
18
         || !RSA_generate_key_ex (rsa, 2048, e, NULL)) {
19
       RSA_free (rsa);
20
       rsa = NULL;
21
     }
22
+    G_GNUC_END_IGNORE_DEPRECATIONS;
23
     if (e)
24
       BN_free (e);
25
   }
26
@@ -236,16 +246,20 @@
27
 
28
   if (!rsa) {
29
     GST_WARNING_OBJECT (self, "failed to generate RSA");
30
+    G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
31
     EVP_PKEY_free (priv->private_key);
32
+    G_GNUC_END_IGNORE_DEPRECATIONS;
33
     priv->private_key = NULL;
34
     X509_free (priv->x509);
35
     priv->x509 = NULL;
36
     return;
37
   }
38
 
39
+  G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
40
   if (!EVP_PKEY_assign_RSA (priv->private_key, rsa)) {
41
     GST_WARNING_OBJECT (self, "failed to assign RSA");
42
     RSA_free (rsa);
43
+    G_GNUC_END_IGNORE_DEPRECATIONS;
44
     rsa = NULL;
45
     EVP_PKEY_free (priv->private_key);
46
     priv->private_key = NULL;
47
@@ -259,7 +273,9 @@
48
 
49
   /* Set a random 64 bit integer as serial number */
50
   serial_number = BN_new ();
51
+  G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
52
   BN_pseudo_rand (serial_number, 64, 0, 0);
53
+  G_GNUC_END_IGNORE_DEPRECATIONS;
54
   asn1_serial_number = X509_get_serialNumber (priv->x509);
55
   BN_to_ASN1_INTEGER (serial_number, asn1_serial_number);
56
   BN_free (serial_number);
57
gst-plugins-bad-1.20.3.tar.xz/ext/openh264/gstopenh264dec.cpp -> gst-plugins-bad-1.20.4.tar.xz/ext/openh264/gstopenh264dec.cpp Changed
28
 
1
@@ -86,10 +86,7 @@
2
 
3
 /* class initialization */
4
 
5
-G_DEFINE_TYPE_WITH_CODE (GstOpenh264Dec, gst_openh264dec,
6
-    GST_TYPE_VIDEO_DECODER,
7
-    GST_DEBUG_CATEGORY_INIT (gst_openh264dec_debug_category, "openh264dec", 0,
8
-        "debug category for openh264dec element"));
9
+G_DEFINE_TYPE (GstOpenh264Dec, gst_openh264dec, GST_TYPE_VIDEO_DECODER);
10
 GST_ELEMENT_REGISTER_DEFINE_CUSTOM (openh264dec, openh264dec_element_init);
11
 
12
 static void
13
@@ -455,10 +452,12 @@
14
 static gboolean
15
 openh264dec_element_init (GstPlugin * plugin)
16
 {
17
+  GST_DEBUG_CATEGORY_INIT (gst_openh264dec_debug_category, "openh264dec", 0,
18
+      "debug category for openh264dec element");
19
   if (openh264_element_init (plugin))
20
     return gst_element_register (plugin, "openh264dec", GST_RANK_MARGINAL,
21
         GST_TYPE_OPENH264DEC);
22
 
23
- GST_ERROR ("Incorrect library version loaded, expecting %s", g_strCodecVer);
24
- return FALSE;
25
+  GST_ERROR ("Incorrect library version loaded, expecting %s", g_strCodecVer);
26
+  return FALSE;
27
 }
28
gst-plugins-bad-1.20.3.tar.xz/ext/openh264/gstopenh264enc.cpp -> gst-plugins-bad-1.20.4.tar.xz/ext/openh264/gstopenh264enc.cpp Changed
49
 
1
@@ -234,10 +234,7 @@
2
 /* class initialization */
3
 
4
 G_DEFINE_TYPE_WITH_CODE (GstOpenh264Enc, gst_openh264enc,
5
-    GST_TYPE_VIDEO_ENCODER,
6
-    G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL);
7
-    GST_DEBUG_CATEGORY_INIT (gst_openh264enc_debug_category, "openh264enc", 0,
8
-        "debug category for openh264enc element"));
9
+    GST_TYPE_VIDEO_ENCODER, G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL));
10
 GST_ELEMENT_REGISTER_DEFINE_CUSTOM (openh264enc, openh264enc_element_init);
11
 
12
 static void
13
@@ -711,11 +708,12 @@
14
 
15
   gst_structure_set (s, "profile", G_TYPE_STRING, profile, NULL);
16
   if (!g_strcmp0 (profile, "constrained-baseline") ||
17
-       !g_strcmp0 (profile, "baseline"))
18
+      !g_strcmp0 (profile, "baseline"))
19
     return PRO_BASELINE;
20
-   else if (!g_strcmp0 (profile, "main"))
21
+  else if (!g_strcmp0 (profile, "main"))
22
     return PRO_MAIN;
23
-   else if (!g_strcmp0 (profile, "high"))
24
+  else if (!g_strcmp0 (profile, "high") ||
25
+      !g_strcmp0 (profile, "constrained-high"))
26
     return PRO_HIGH;
27
 
28
   g_assert_not_reached ();
29
@@ -1056,13 +1054,16 @@
30
 
31
   return GST_FLOW_OK;
32
 }
33
+
34
 static gboolean
35
 openh264enc_element_init (GstPlugin * plugin)
36
 {
37
+  GST_DEBUG_CATEGORY_INIT (gst_openh264enc_debug_category, "openh264enc", 0,
38
+      "debug category for openh264enc element");
39
   if (openh264_element_init (plugin))
40
     return gst_element_register (plugin, "openh264enc", GST_RANK_MARGINAL,
41
-                                 GST_TYPE_OPENH264ENC);
42
+        GST_TYPE_OPENH264ENC);
43
 
44
- GST_ERROR ("Incorrect library version loaded, expecting %s", g_strCodecVer);
45
- return FALSE;
46
+  GST_ERROR ("Incorrect library version loaded, expecting %s", g_strCodecVer);
47
+  return FALSE;
48
 }
49
gst-plugins-bad-1.20.3.tar.xz/ext/openmpt/gstopenmptdec.c -> gst-plugins-bad-1.20.4.tar.xz/ext/openmpt/gstopenmptdec.c Changed
16
 
1
@@ -562,8 +562,14 @@
2
    * need to query it here, *before* any openmpt_module_select_subsong()
3
    * calls are done */
4
   {
5
+
6
+#if OPENMPT_API_VERSION_AT_LEAST(0,5,0)
7
+    gchar const *subsong_cstr =
8
+        openmpt_module_ctl_get_text (openmpt_dec->mod, "subsong");
9
+#else
10
     gchar const *subsong_cstr =
11
         openmpt_module_ctl_get (openmpt_dec->mod, "subsong");
12
+#endif
13
     gchar *endptr;
14
 
15
     if (subsong_cstr != NULL) {
16
gst-plugins-bad-1.20.3.tar.xz/ext/opus/gstopusheader.h -> gst-plugins-bad-1.20.4.tar.xz/ext/opus/gstopusheader.h Changed
12
 
1
@@ -26,6 +26,10 @@
2
 
3
 G_BEGIN_DECLS
4
 
5
+#define gst_opus_header_is_header gst_opusparse_header_is_header
6
+#define gst_opus_header_is_id_header gst_opusparse_header_is_id_header
7
+#define gst_opus_header_is_comment_header gst_opusparse_header_is_comment_header
8
+
9
 extern gboolean gst_opus_header_is_header (GstBuffer * buf,
10
     const char *magic, guint magic_size);
11
 extern gboolean gst_opus_header_is_id_header (GstBuffer * buf);
12
gst-plugins-bad-1.20.3.tar.xz/ext/sctp/usrsctp/meson.build -> gst-plugins-bad-1.20.4.tar.xz/ext/sctp/usrsctp/meson.build Changed
17
 
1
@@ -31,7 +31,6 @@
2
         '-Wno-missing-declarations',
3
         '-Wno-old-style-definition',
4
         '-Wno-redundant-decls',
5
-        '-Wno-error',
6
     )
7
 endif
8
 
9
@@ -170,6 +169,7 @@
10
     c_args: compile_args,
11
     dependencies: dependencies,
12
     include_directories: include_dirs,
13
+    override_options: 'werror=false',
14
     install: false)
15
 
16
 # Declare dependency
17
gst-plugins-bad-1.20.3.tar.xz/ext/webrtc/gstwebrtcbin.c -> gst-plugins-bad-1.20.4.tar.xz/ext/webrtc/gstwebrtcbin.c Changed
72
 
1
@@ -488,8 +488,10 @@
2
       direction, "template", template, NULL);
3
   gst_object_unref (template);
4
 
5
-  gst_pad_set_event_function (GST_PAD (pad), gst_webrtcbin_sink_event);
6
-  gst_pad_set_query_function (GST_PAD (pad), gst_webrtcbin_sink_query);
7
+  if (direction == GST_PAD_SINK) {
8
+    gst_pad_set_event_function (GST_PAD (pad), gst_webrtcbin_sink_event);
9
+    gst_pad_set_query_function (GST_PAD (pad), gst_webrtcbin_sink_query);
10
+  }
11
 
12
   gst_pad_add_probe (GST_PAD (pad), GST_PAD_PROBE_TYPE_BUFFER |
13
       GST_PAD_PROBE_TYPE_BUFFER_LIST, webrtc_bin_pad_buffer_cb, NULL, NULL);
14
@@ -3085,7 +3087,15 @@
15
 
16
     /* this only looks at the first structure so we loop over the given caps
17
      * and add each structure inside it piecemeal */
18
-    gst_sdp_media_set_media_from_caps (format, media);
19
+    if (gst_sdp_media_set_media_from_caps (format, media) != GST_SDP_OK) {
20
+      GST_ERROR_OBJECT (webrtc,
21
+          "Failed to build media from caps %" GST_PTR_FORMAT
22
+          " for transceiver %" GST_PTR_FORMAT, format, trans);
23
+      gst_caps_unref (caps);
24
+      gst_caps_unref (format);
25
+      gst_structure_free (extmap);
26
+      return FALSE;
27
+    }
28
 
29
     gst_caps_unref (format);
30
   }
31
@@ -4125,7 +4135,13 @@
32
         }
33
       }
34
 
35
-      gst_sdp_media_set_media_from_caps (answer_caps, media);
36
+      if (gst_sdp_media_set_media_from_caps (answer_caps, media) != GST_SDP_OK) {
37
+        GST_WARNING_OBJECT (webrtc,
38
+            "Could not build media from caps %" GST_PTR_FORMAT, answer_caps);
39
+        gst_clear_caps (&answer_caps);
40
+        gst_clear_caps (&offer_caps);
41
+        goto rejected;
42
+      }
43
 
44
       _get_rtx_target_pt_and_ssrc_from_caps (answer_caps, &target_pt,
45
           &target_ssrc);
46
@@ -5746,6 +5762,12 @@
47
         continue;
48
       }
49
 
50
+      if (!pad->trans) {
51
+        GST_LOG_OBJECT (pad, "doesn't have a transceiver");
52
+        tmp = tmp->next;
53
+        continue;
54
+      }
55
+
56
       if (pad->trans->mline >= gst_sdp_message_medias_len (sd->sdp->sdp)) {
57
         GST_DEBUG_OBJECT (pad, "not mentioned in this description. Skipping");
58
         tmp = tmp->next;
59
@@ -5761,12 +5783,6 @@
60
         tmp = tmp->next;
61
         continue;
62
       }
63
-
64
-      if (!pad->trans) {
65
-        GST_LOG_OBJECT (pad, "doesn't have a transceiver");
66
-        tmp = tmp->next;
67
-        continue;
68
-      }
69
 
70
       new_dir = pad->trans->direction;
71
       if (new_dir != GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDONLY &&
72
gst-plugins-bad-1.20.3.tar.xz/ext/webrtc/gstwebrtcice.c -> gst-plugins-bad-1.20.4.tar.xz/ext/webrtc/gstwebrtcice.c Changed
22
 
1
@@ -928,12 +928,19 @@
2
     }
3
   }
4
 
5
-out:
6
   g_list_free (keys);
7
   g_free (user);
8
   g_free (pass);
9
 
10
   return uri;
11
+
12
+out:
13
+  g_list_free (keys);
14
+  g_free (user);
15
+  g_free (pass);
16
+  gst_uri_unref (uri);
17
+
18
+  return NULL;
19
 }
20
 
21
 void
22
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay-media-info.h -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay-media-info.h Changed
12
 
1
@@ -215,6 +215,10 @@
2
 typedef struct _GstPlayMediaInfo GstPlayMediaInfo;
3
 typedef struct _GstPlayMediaInfoClass GstPlayMediaInfoClass;
4
 
5
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
6
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPlayMediaInfo, g_object_unref)
7
+#endif
8
+
9
 GST_PLAY_API
10
 GType         gst_play_media_info_get_type (void);
11
 
12
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay-signal-adapter.h -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay-signal-adapter.h Changed
12
 
1
@@ -39,6 +39,10 @@
2
  */
3
 #define GST_PLAY_SIGNAL_ADAPTER_CAST(obj)        ((GstPlaySignalAdapter*)(obj))
4
 
5
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
6
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPlaySignalAdapter, g_object_unref)
7
+#endif
8
+
9
 GST_PLAY_API
10
 GType                  gst_play_signal_adapter_get_type               (void);
11
 
12
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay-video-overlay-video-renderer.h -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay-video-overlay-video-renderer.h Changed
12
 
1
@@ -48,6 +48,10 @@
2
  */
3
 #define GST_PLAY_VIDEO_OVERLAY_VIDEO_RENDERER_CAST(obj)        ((GstPlayVideoOverlayVideoRenderer*)(obj))
4
 
5
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
6
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPlayVideoOverlayVideoRenderer, g_object_unref)
7
+#endif
8
+
9
 GST_PLAY_API
10
 GType gst_play_video_overlay_video_renderer_get_type (void);
11
 
12
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay-video-renderer.h -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay-video-renderer.h Changed
12
 
1
@@ -49,6 +49,10 @@
2
   GstElement * (*create_video_sink) (GstPlayVideoRenderer * self, GstPlay * play);
3
 };
4
 
5
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
6
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPlayVideoRenderer, g_object_unref)
7
+#endif
8
+
9
 GST_PLAY_API
10
 GType        gst_play_video_renderer_get_type       (void);
11
 
12
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay-visualization.h -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay-visualization.h Changed
12
 
1
@@ -56,6 +56,10 @@
2
 GST_PLAY_API
3
 void                      gst_play_visualizations_free (GstPlayVisualization **viss);
4
 
5
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
6
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPlayVisualization, gst_play_visualization_free)
7
+#endif
8
+
9
 G_END_DECLS
10
 
11
 #endif /* __GST_PLAY_VISUALIZATION_H__ */
12
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay.c -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay.c Changed
71
 
1
@@ -212,6 +212,8 @@
2
 
3
 static gpointer gst_play_main (gpointer data);
4
 
5
+static void gst_play_set_playbin_video_sink (GstPlay * self);
6
+
7
 static void gst_play_seek_internal_locked (GstPlay * self);
8
 static void gst_play_stop_internal (GstPlay * self, gboolean transient);
9
 static gboolean gst_play_pause_internal (gpointer user_data);
10
@@ -509,6 +511,8 @@
11
   self->thread = g_thread_new ("GstPlay", gst_play_main, self);
12
   while (!self->loop || !g_main_loop_is_running (self->loop))
13
     g_cond_wait (&self->cond, &self->lock);
14
+
15
+  gst_play_set_playbin_video_sink (self);
16
   g_mutex_unlock (&self->lock);
17
 
18
   G_OBJECT_CLASS (parent_class)->constructed (object);
19
@@ -594,11 +598,16 @@
20
 {
21
   GstElement *video_sink = NULL;
22
 
23
-  if (self->video_renderer != NULL)
24
+  if (self->video_renderer != NULL) {
25
     video_sink =
26
         gst_play_video_renderer_create_video_sink (self->video_renderer, self);
27
-  if (video_sink)
28
+  }
29
+
30
+  if (video_sink) {
31
+    gst_object_ref_sink (video_sink);
32
     g_object_set (self->playbin, "video-sink", video_sink, NULL);
33
+    gst_object_unref (video_sink);
34
+  }
35
 }
36
 
37
 static void
38
@@ -612,7 +621,14 @@
39
       g_mutex_lock (&self->lock);
40
       g_clear_object (&self->video_renderer);
41
       self->video_renderer = g_value_dup_object (value);
42
-      gst_play_set_playbin_video_sink (self);
43
+
44
+      // When the video_renderer is a GstPlayerWrappedVideoRenderer it cannot be set
45
+      // at construction time because it requires a valid pipeline which is created
46
+      // only after GstPlay has been constructed. That is why the video renderer is
47
+      // set *after* GstPlay has been constructed.
48
+      if (self->thread) {
49
+        gst_play_set_playbin_video_sink (self);
50
+      }
51
       g_mutex_unlock (&self->lock);
52
       break;
53
     case PROP_URI:{
54
@@ -2648,15 +2664,8 @@
55
 
56
   g_once (&once, gst_play_init_once, NULL);
57
 
58
-  self = g_object_new (GST_TYPE_PLAY, NULL);
59
+  self = g_object_new (GST_TYPE_PLAY, "video-renderer", video_renderer, NULL);
60
 
61
-  // When the video_renderer is a GstPlayerWrappedVideoRenderer it cannot be set
62
-  // at construction time because it requires a valid pipeline which is created
63
-  // only after GstPlay has been constructed. That is why the video renderer is
64
-  // set *after* GstPlay has been constructed.
65
-  if (video_renderer != NULL) {
66
-    g_object_set (self, "video-renderer", video_renderer, NULL);
67
-  }
68
   gst_object_ref_sink (self);
69
 
70
   if (video_renderer)
71
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/player/gstplayer-media-info.c -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/player/gstplayer-media-info.c Changed
24
 
1
@@ -149,9 +149,21 @@
2
 }
3
 
4
 static void
5
+gst_player_video_info_finalize (GObject * object)
6
+{
7
+  GstPlayerVideoInfo *info = GST_PLAYER_VIDEO_INFO (object);
8
+
9
+  g_clear_object (&info->info);
10
+
11
+  G_OBJECT_CLASS (gst_player_video_info_parent_class)->finalize (object);
12
+}
13
+
14
+static void
15
 gst_player_video_info_class_init (G_GNUC_UNUSED GstPlayerVideoInfoClass * klass)
16
 {
17
-  /* nothing to do here */
18
+  GObjectClass *gobject_class = (GObjectClass *) klass;
19
+
20
+  gobject_class->finalize = gst_player_video_info_finalize;
21
 }
22
 
23
 /**
24
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/player/gstplayer.c -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/player/gstplayer.c Changed
176
 
1
@@ -157,6 +157,7 @@
2
 
3
   /* legacy */
4
   GstPlayerSignalDispatcher *signal_dispatcher;
5
+  GstPlayerVideoRenderer *video_renderer;
6
 };
7
 
8
 struct _GstPlayerClass
9
@@ -175,11 +176,12 @@
10
     const GValue * value, GParamSpec * pspec);
11
 static void gst_player_get_property (GObject * object, guint prop_id,
12
     GValue * value, GParamSpec * pspec);
13
+static void gst_player_constructed (GObject * object);
14
 
15
 static void
16
-gst_player_init (G_GNUC_UNUSED GstPlayer * self)
17
+gst_player_init (GstPlayer * self)
18
 {
19
-
20
+  self->play = gst_play_new (NULL);
21
 }
22
 
23
 static void
24
@@ -207,12 +209,13 @@
25
   gobject_class->set_property = gst_player_set_property;
26
   gobject_class->get_property = gst_player_get_property;
27
   gobject_class->finalize = gst_player_finalize;
28
+  gobject_class->constructed = gst_player_constructed;
29
 
30
   param_specsPROP_VIDEO_RENDERER =
31
       g_param_spec_object ("video-renderer",
32
       "Video Renderer", "Video renderer to use for rendering videos",
33
       GST_TYPE_PLAYER_VIDEO_RENDERER,
34
-      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
35
+      G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
36
 
37
   param_specsPROP_SIGNAL_DISPATCHER =
38
       g_param_spec_object ("signal-dispatcher",
39
@@ -377,6 +380,10 @@
40
 
41
   if (self->signal_dispatcher)
42
     g_object_unref (self->signal_dispatcher);
43
+  if (self->video_renderer)
44
+    g_object_unref (self->video_renderer);
45
+  if (self->signal_adapter)
46
+    g_object_unref (self->signal_adapter);
47
   if (self->play)
48
     gst_object_unref (self->play);
49
 
50
@@ -393,6 +400,9 @@
51
     case PROP_SIGNAL_DISPATCHER:
52
       self->signal_dispatcher = g_value_dup_object (value);
53
       break;
54
+    case PROP_VIDEO_RENDERER:
55
+      self->video_renderer = g_value_dup_object (value);
56
+      break;
57
     default:
58
       g_object_set_property (G_OBJECT (self->play),
59
           g_param_spec_get_name (pspec), value);
60
@@ -407,6 +417,9 @@
61
   GstPlayer *self = GST_PLAYER (object);
62
 
63
   switch (prop_id) {
64
+    case PROP_VIDEO_RENDERER:
65
+      g_value_set_object (value, self->video_renderer);
66
+      break;
67
     case PROP_MEDIA_INFO:
68
       g_value_take_object (value, gst_player_get_media_info (self));
69
       break;
70
@@ -544,47 +557,27 @@
71
   g_signal_emit (self, signalsSIGNAL_SEEK_DONE, 0, time);
72
 }
73
 
74
-/**
75
- * gst_player_new:
76
- * @video_renderer: (transfer full) (allow-none): GstPlayerVideoRenderer to use
77
- * @signal_dispatcher: (transfer full) (allow-none): GstPlayerSignalDispatcher to use
78
- *
79
- * Creates a new #GstPlayer instance that uses @signal_dispatcher to dispatch
80
- * signals to some event loop system, or emits signals directly if NULL is
81
- * passed. See gst_player_g_main_context_signal_dispatcher_new().
82
- *
83
- * Video is going to be rendered by @video_renderer, or if %NULL is provided
84
- * no special video set up will be done and some default handling will be
85
- * performed.
86
- *
87
- * Returns: (transfer full): a new #GstPlayer instance
88
- */
89
-GstPlayer *
90
-gst_player_new (GstPlayerVideoRenderer * video_renderer,
91
-    GstPlayerSignalDispatcher * signal_dispatcher)
92
+static void
93
+gst_player_constructed (GObject * object)
94
 {
95
-  static GOnce once = G_ONCE_INIT;
96
-  GstPlayer *self;
97
+  GstPlayer *self = GST_PLAYER (object);
98
   GstPlayerVideoRenderer *renderer = NULL;
99
 
100
-  g_once (&once, gst_player_init_once, NULL);
101
-
102
-  self =
103
-      g_object_new (GST_TYPE_PLAYER, "signal-dispatcher", signal_dispatcher,
104
-      NULL);
105
-
106
-  self->play = gst_play_new (NULL);
107
+  G_OBJECT_CLASS (parent_class)->constructed (object);
108
 
109
-  if (video_renderer != NULL) {
110
-    renderer = gst_player_wrapped_video_renderer_new (video_renderer, self);
111
+  if (self->video_renderer != NULL) {
112
+    renderer =
113
+        gst_player_wrapped_video_renderer_new (self->video_renderer, self);
114
     g_object_set (self->play, "video-renderer",
115
         GST_PLAY_VIDEO_RENDERER (renderer), NULL);
116
+    g_object_unref (renderer);
117
   }
118
 
119
-  if (signal_dispatcher != NULL) {
120
+  if (self->signal_dispatcher != NULL) {
121
     GMainContext *context = NULL;
122
 
123
-    g_object_get (signal_dispatcher, "application-context", &context, NULL);
124
+    g_object_get (self->signal_dispatcher, "application-context", &context,
125
+        NULL);
126
     self->signal_adapter =
127
         gst_play_signal_adapter_new_with_main_context (self->play, context);
128
     g_main_context_unref (context);
129
@@ -592,8 +585,6 @@
130
     self->signal_adapter = gst_play_signal_adapter_new (self->play);
131
   }
132
 
133
-  gst_object_ref_sink (self);
134
-
135
   g_signal_connect (self->signal_adapter, "uri-loaded",
136
       G_CALLBACK (uri_loaded_cb), self);
137
   g_signal_connect (self->signal_adapter, "position-updated",
138
@@ -619,6 +610,37 @@
139
       self);
140
   g_signal_connect (self->signal_adapter, "seek-done",
141
       G_CALLBACK (seek_done_cb), self);
142
+}
143
+
144
+/**
145
+ * gst_player_new:
146
+ * @video_renderer: (transfer full) (allow-none): GstPlayerVideoRenderer to use
147
+ * @signal_dispatcher: (transfer full) (allow-none): GstPlayerSignalDispatcher to use
148
+ *
149
+ * Creates a new #GstPlayer instance that uses @signal_dispatcher to dispatch
150
+ * signals to some event loop system, or emits signals directly if NULL is
151
+ * passed. See gst_player_g_main_context_signal_dispatcher_new().
152
+ *
153
+ * Video is going to be rendered by @video_renderer, or if %NULL is provided
154
+ * no special video set up will be done and some default handling will be
155
+ * performed.
156
+ *
157
+ * Returns: (transfer full): a new #GstPlayer instance
158
+ */
159
+GstPlayer *
160
+gst_player_new (GstPlayerVideoRenderer * video_renderer,
161
+    GstPlayerSignalDispatcher * signal_dispatcher)
162
+{
163
+  static GOnce once = G_ONCE_INIT;
164
+  GstPlayer *self;
165
+
166
+  g_once (&once, gst_player_init_once, NULL);
167
+
168
+  self =
169
+      g_object_new (GST_TYPE_PLAYER, "signal-dispatcher", signal_dispatcher,
170
+      "video-renderer", video_renderer, NULL);
171
+
172
+  gst_object_ref_sink (self);
173
 
174
   if (video_renderer)
175
     g_object_unref (video_renderer);
176
gst-plugins-bad-1.20.3.tar.xz/gst-plugins-bad.doap -> gst-plugins-bad-1.20.4.tar.xz/gst-plugins-bad.doap Changed
18
 
1
@@ -35,6 +35,16 @@
2
 
3
  <release>
4
   <Version>
5
+   <revision>1.20.4</revision>
6
+   <branch>1.20</branch>
7
+   <name></name>
8
+   <created>2022-10-12</created>
9
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.20.4.tar.xz" />
10
+  </Version>
11
+ </release>
12
+
13
+ <release>
14
+  <Version>
15
    <revision>1.20.3</revision>
16
    <branch>1.20</branch>
17
    <name></name>
18
gst-plugins-bad-1.20.3.tar.xz/gst/audiobuffersplit/gstaudiobuffersplit.c -> gst-plugins-bad-1.20.4.tar.xz/gst/audiobuffersplit/gstaudiobuffersplit.c Changed
154
 
1
@@ -540,84 +540,81 @@
2
         avail_samples, GST_SECOND, rate * self->in_segment.rate);
3
   }
4
 
5
-  if (self->gapless) {
6
-    if (self->current_offset != -1) {
7
-      GST_DEBUG_OBJECT (self,
8
-          "Got discont in gapless mode: Current running time %" GST_TIME_FORMAT
9
-          ", current end running time %" GST_TIME_FORMAT
10
-          ", running time after discont %" GST_TIME_FORMAT,
11
-          GST_TIME_ARGS (current_rt),
12
-          GST_TIME_ARGS (current_rt_end), GST_TIME_ARGS (input_rt));
13
+  if (self->gapless && self->current_offset != -1) {
14
+    GST_DEBUG_OBJECT (self,
15
+        "Got discont in gapless mode: Current running time %" GST_TIME_FORMAT
16
+        ", current end running time %" GST_TIME_FORMAT
17
+        ", running time after discont %" GST_TIME_FORMAT,
18
+        GST_TIME_ARGS (current_rt),
19
+        GST_TIME_ARGS (current_rt_end), GST_TIME_ARGS (input_rt));
20
 
21
-      new_offset =
22
-          gst_util_uint64_scale (current_rt - self->resync_rt,
23
-          rate * ABS (self->in_segment.rate), GST_SECOND);
24
-      if (current_rt < self->resync_rt) {
25
-        guint64 drop_samples;
26
+    new_offset =
27
+        gst_util_uint64_scale (input_rt - self->resync_rt,
28
+        rate * ABS (self->in_segment.rate), GST_SECOND);
29
+    if (input_rt < self->resync_rt) {
30
+      guint64 drop_samples;
31
 
32
-        new_offset =
33
-            gst_util_uint64_scale (self->resync_rt -
34
-            current_rt, rate * ABS (self->in_segment.rate), GST_SECOND);
35
-        drop_samples = self->current_offset + avail_samples + new_offset;
36
+      new_offset =
37
+          gst_util_uint64_scale (self->resync_rt -
38
+          input_rt, rate * ABS (self->in_segment.rate), GST_SECOND);
39
+      drop_samples = self->current_offset + avail_samples + new_offset;
40
 
41
+      GST_DEBUG_OBJECT (self,
42
+          "Dropping %" G_GUINT64_FORMAT " samples (%" GST_TIME_FORMAT ")",
43
+          drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
44
+                  GST_SECOND, rate)));
45
+      self->drop_samples = drop_samples;
46
+      discont = FALSE;
47
+    } else if (new_offset > self->current_offset + avail_samples) {
48
+      guint64 silence_samples =
49
+          new_offset - (self->current_offset + avail_samples);
50
+      const GstAudioFormatInfo *info = gst_audio_format_get_info (format);
51
+      GstClockTime silence_time =
52
+          gst_util_uint64_scale (silence_samples, GST_SECOND, rate);
53
+
54
+      if (silence_time > self->max_silence_time) {
55
         GST_DEBUG_OBJECT (self,
56
-            "Dropping %" G_GUINT64_FORMAT " samples (%" GST_TIME_FORMAT ")",
57
-            drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
58
-                    GST_SECOND, rate)));
59
-        discont = FALSE;
60
-      } else if (new_offset > self->current_offset + avail_samples) {
61
-        guint64 silence_samples =
62
-            new_offset - (self->current_offset + avail_samples);
63
-        const GstAudioFormatInfo *info = gst_audio_format_get_info (format);
64
-        GstClockTime silence_time =
65
-            gst_util_uint64_scale (silence_samples, GST_SECOND, rate);
66
-
67
-        if (silence_time > self->max_silence_time) {
68
-          GST_DEBUG_OBJECT (self,
69
-              "Not inserting %" G_GUINT64_FORMAT " samples of silence (%"
70
-              GST_TIME_FORMAT " exceeds maximum %" GST_TIME_FORMAT ")",
71
-              silence_samples, GST_TIME_ARGS (silence_time),
72
-              GST_TIME_ARGS (self->max_silence_time));
73
-        } else {
74
-          GST_DEBUG_OBJECT (self,
75
-              "Inserting %" G_GUINT64_FORMAT " samples of silence (%"
76
-              GST_TIME_FORMAT ")", silence_samples,
77
-              GST_TIME_ARGS (silence_time));
78
-
79
-          /* Insert silence buffers to fill the gap in 1s chunks */
80
-          while (silence_samples > 0) {
81
-            guint n_samples = MIN (silence_samples, rate);
82
-            GstBuffer *silence;
83
-            GstMapInfo map;
84
-
85
-            silence = gst_buffer_new_and_alloc (n_samples * bpf);
86
-            GST_BUFFER_FLAG_SET (silence, GST_BUFFER_FLAG_GAP);
87
-            gst_buffer_map (silence, &map, GST_MAP_WRITE);
88
-            gst_audio_format_info_fill_silence (info, map.data, map.size);
89
-            gst_buffer_unmap (silence, &map);
90
-
91
-            gst_adapter_push (self->adapter, silence);
92
-            ret =
93
-                gst_audio_buffer_split_output (self, FALSE, rate, bpf,
94
-                samples_per_buffer);
95
-            if (ret != GST_FLOW_OK)
96
-              return ret;
97
-
98
-            silence_samples -= n_samples;
99
-          }
100
-          discont = FALSE;
101
-        }
102
-      } else if (new_offset < self->current_offset + avail_samples) {
103
-        guint64 drop_samples =
104
-            self->current_offset + avail_samples - new_offset;
105
-
106
+            "Not inserting %" G_GUINT64_FORMAT " samples of silence (%"
107
+            GST_TIME_FORMAT " exceeds maximum %" GST_TIME_FORMAT ")",
108
+            silence_samples, GST_TIME_ARGS (silence_time),
109
+            GST_TIME_ARGS (self->max_silence_time));
110
+      } else {
111
         GST_DEBUG_OBJECT (self,
112
-            "Dropping %" G_GUINT64_FORMAT " samples (%" GST_TIME_FORMAT ")",
113
-            drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
114
-                    GST_SECOND, rate)));
115
-        self->drop_samples = drop_samples;
116
+            "Inserting %" G_GUINT64_FORMAT " samples of silence (%"
117
+            GST_TIME_FORMAT ")", silence_samples, GST_TIME_ARGS (silence_time));
118
+
119
+        /* Insert silence buffers to fill the gap in 1s chunks */
120
+        while (silence_samples > 0) {
121
+          guint n_samples = MIN (silence_samples, rate);
122
+          GstBuffer *silence;
123
+          GstMapInfo map;
124
+
125
+          silence = gst_buffer_new_and_alloc (n_samples * bpf);
126
+          GST_BUFFER_FLAG_SET (silence, GST_BUFFER_FLAG_GAP);
127
+          gst_buffer_map (silence, &map, GST_MAP_WRITE);
128
+          gst_audio_format_info_fill_silence (info, map.data, map.size);
129
+          gst_buffer_unmap (silence, &map);
130
+
131
+          gst_adapter_push (self->adapter, silence);
132
+          ret =
133
+              gst_audio_buffer_split_output (self, FALSE, rate, bpf,
134
+              samples_per_buffer);
135
+          if (ret != GST_FLOW_OK)
136
+            return ret;
137
+
138
+          silence_samples -= n_samples;
139
+        }
140
         discont = FALSE;
141
       }
142
+    } else if (new_offset < self->current_offset + avail_samples) {
143
+      guint64 drop_samples = self->current_offset + avail_samples - new_offset;
144
+
145
+      GST_DEBUG_OBJECT (self,
146
+          "Dropping %" G_GUINT64_FORMAT " samples (%" GST_TIME_FORMAT ")",
147
+          drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
148
+                  GST_SECOND, rate)));
149
+      self->drop_samples = drop_samples;
150
+      discont = FALSE;
151
     }
152
   }
153
 
154
gst-plugins-bad-1.20.3.tar.xz/gst/mpegtsdemux/mpegtsbase.c -> gst-plugins-bad-1.20.4.tar.xz/gst/mpegtsdemux/mpegtsbase.c Changed
12
 
1
@@ -853,8 +853,8 @@
2
       sawpcrpid = TRUE;
3
   }
4
 
5
-  /* If the pcr is not shared with an existing stream, we'll have one extra stream */
6
-  if (!sawpcrpid)
7
+  /* If we have a PCR PID and the pcr is not shared with an existing stream, we'll have one extra stream */
8
+  if (!sawpcrpid && !base->ignore_pcr)
9
     nbstreams += 1;
10
 
11
   if (nbstreams != g_list_length (oldprogram->stream_list)) {
12
gst-plugins-bad-1.20.3.tar.xz/gst/mxf/mxfaes-bwf.c -> gst-plugins-bad-1.20.4.tar.xz/gst/mxf/mxfaes-bwf.c Changed
40
 
1
@@ -1270,12 +1270,13 @@
2
       GST_ERROR ("Invalid descriptor");
3
       return NULL;
4
     }
5
-    if (wa_descriptor && wa_descriptor->block_align != 0)
6
-      block_align = wa_descriptor->block_align;
7
-    else
8
-      block_align =
9
-          (GST_ROUND_UP_8 (descriptor->quantization_bits) *
10
-          descriptor->channel_count) / 8;
11
+
12
+    /* XXX: block align value can be carried via audio essential descriptor but
13
+     * there are some files with broken block align value.
14
+     * Calculates the value always */
15
+    block_align =
16
+        (GST_ROUND_UP_8 (descriptor->quantization_bits) *
17
+        descriptor->channel_count) / 8;
18
 
19
     audio_format =
20
         gst_audio_format_build_integer (block_align !=
21
@@ -1302,12 +1303,12 @@
22
       return NULL;
23
     }
24
 
25
-    if (wa_descriptor && wa_descriptor->block_align != 0)
26
-      block_align = wa_descriptor->block_align;
27
-    else
28
-      block_align =
29
-          (GST_ROUND_UP_8 (descriptor->quantization_bits) *
30
-          descriptor->channel_count) / 8;
31
+    /* XXX: block align value can be carried via audio essential descriptor but
32
+     * there are some files with broken block align value.
33
+     * Calculates the value always */
34
+    block_align =
35
+        (GST_ROUND_UP_8 (descriptor->quantization_bits) *
36
+        descriptor->channel_count) / 8;
37
 
38
     audio_format =
39
         gst_audio_format_build_integer (block_align !=
40
gst-plugins-bad-1.20.3.tar.xz/gst/proxy/gstproxysink.c -> gst-plugins-bad-1.20.4.tar.xz/gst/proxy/gstproxysink.c Changed
177
 
1
@@ -57,6 +57,7 @@
2
 GST_ELEMENT_REGISTER_DEFINE (proxysink, "proxysink", GST_RANK_NONE,
3
     GST_TYPE_PROXY_SINK);
4
 
5
+static void gst_proxy_sink_dispose (GObject * object);
6
 static gboolean gst_proxy_sink_sink_query (GstPad * pad, GstObject * parent,
7
     GstQuery * query);
8
 static GstFlowReturn gst_proxy_sink_sink_chain (GstPad * pad,
9
@@ -76,10 +77,13 @@
10
 static void
11
 gst_proxy_sink_class_init (GstProxySinkClass * klass)
12
 {
13
-  GstElementClass *gstelement_class = (GstElementClass *) klass;
14
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
15
+  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
16
 
17
   GST_DEBUG_CATEGORY_INIT (gst_proxy_sink_debug, "proxysink", 0, "proxy sink");
18
 
19
+  object_class->dispose = gst_proxy_sink_dispose;
20
+
21
   gstelement_class->change_state = gst_proxy_sink_change_state;
22
   gstelement_class->send_event = gst_proxy_sink_send_event;
23
   gstelement_class->query = gst_proxy_sink_query;
24
@@ -109,6 +113,16 @@
25
   GST_OBJECT_FLAG_SET (self, GST_ELEMENT_FLAG_SINK);
26
 }
27
 
28
+static void
29
+gst_proxy_sink_dispose (GObject * object)
30
+{
31
+  GstProxySink *self = GST_PROXY_SINK (object);
32
+
33
+  g_weak_ref_clear (&self->proxysrc);
34
+
35
+  G_OBJECT_CLASS (parent_class)->dispose (object);
36
+}
37
+
38
 static GstStateChangeReturn
39
 gst_proxy_sink_change_state (GstElement * element, GstStateChange transition)
40
 {
41
@@ -120,6 +134,8 @@
42
   switch (transition) {
43
     case GST_STATE_CHANGE_READY_TO_PAUSED:
44
       self->pending_sticky_events = FALSE;
45
+      self->sent_stream_start = FALSE;
46
+      self->sent_caps = FALSE;
47
       break;
48
     default:
49
       break;
50
@@ -180,6 +196,7 @@
51
 
52
 typedef struct
53
 {
54
+  GstProxySink *self;
55
   GstPad *otherpad;
56
   GstFlowReturn ret;
57
 } CopyStickyEventsData;
58
@@ -189,12 +206,46 @@
59
     gpointer user_data)
60
 {
61
   CopyStickyEventsData *data = user_data;
62
+  GstProxySink *self = data->self;
63
 
64
   data->ret = gst_pad_store_sticky_event (data->otherpad, *event);
65
+  switch (GST_EVENT_TYPE (*event)) {
66
+    case GST_EVENT_STREAM_START:
67
+      if (data->ret != GST_FLOW_OK)
68
+        self->sent_stream_start = FALSE;
69
+      else
70
+        self->sent_stream_start = TRUE;
71
+      break;
72
+    case GST_EVENT_CAPS:
73
+      if (data->ret != GST_FLOW_OK)
74
+        self->sent_caps = FALSE;
75
+      else
76
+        self->sent_caps = TRUE;
77
+      break;
78
+    default:
79
+      break;
80
+  }
81
 
82
   return data->ret == GST_FLOW_OK;
83
 }
84
 
85
+static void
86
+gst_proxy_sink_send_sticky_events (GstProxySink * self, GstPad * pad,
87
+    GstPad * otherpad)
88
+{
89
+  if (self->pending_sticky_events || !self->sent_stream_start ||
90
+      !self->sent_caps) {
91
+    CopyStickyEventsData data;
92
+
93
+    data.self = self;
94
+    data.otherpad = otherpad;
95
+    data.ret = GST_FLOW_OK;
96
+
97
+    gst_pad_sticky_events_foreach (pad, copy_sticky_events, &data);
98
+    self->pending_sticky_events = data.ret != GST_FLOW_OK;
99
+  }
100
+}
101
+
102
 static gboolean
103
 gst_proxy_sink_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
104
 {
105
@@ -202,10 +253,11 @@
106
   GstProxySrc *src;
107
   gboolean ret = FALSE;
108
   gboolean sticky = GST_EVENT_IS_STICKY (event);
109
+  GstEventType event_type = GST_EVENT_TYPE (event);
110
 
111
   GST_LOG_OBJECT (pad, "Got %s event", GST_EVENT_TYPE_NAME (event));
112
 
113
-  if (GST_EVENT_TYPE (event) == GST_EVENT_FLUSH_STOP)
114
+  if (event_type == GST_EVENT_FLUSH_STOP)
115
     self->pending_sticky_events = FALSE;
116
 
117
   src = g_weak_ref_get (&self->proxysrc);
118
@@ -213,17 +265,24 @@
119
     GstPad *srcpad;
120
     srcpad = gst_proxy_src_get_internal_srcpad (src);
121
 
122
-    if (sticky && self->pending_sticky_events) {
123
-      CopyStickyEventsData data = { srcpad, GST_FLOW_OK };
124
-
125
-      gst_pad_sticky_events_foreach (pad, copy_sticky_events, &data);
126
-      self->pending_sticky_events = data.ret != GST_FLOW_OK;
127
-    }
128
+    if (sticky)
129
+      gst_proxy_sink_send_sticky_events (self, pad, srcpad);
130
 
131
     ret = gst_pad_push_event (srcpad, event);
132
     gst_object_unref (srcpad);
133
     gst_object_unref (src);
134
 
135
+    switch (event_type) {
136
+      case GST_EVENT_STREAM_START:
137
+        self->sent_stream_start = ret;
138
+        break;
139
+      case GST_EVENT_CAPS:
140
+        self->sent_caps = ret;
141
+        break;
142
+      default:
143
+        break;
144
+    }
145
+
146
     if (!ret && sticky) {
147
       self->pending_sticky_events = TRUE;
148
       ret = TRUE;
149
@@ -250,12 +309,7 @@
150
     GstPad *srcpad;
151
     srcpad = gst_proxy_src_get_internal_srcpad (src);
152
 
153
-    if (self->pending_sticky_events) {
154
-      CopyStickyEventsData data = { srcpad, GST_FLOW_OK };
155
-
156
-      gst_pad_sticky_events_foreach (pad, copy_sticky_events, &data);
157
-      self->pending_sticky_events = data.ret != GST_FLOW_OK;
158
-    }
159
+    gst_proxy_sink_send_sticky_events (self, pad, srcpad);
160
 
161
     ret = gst_pad_push (srcpad, buffer);
162
     gst_object_unref (srcpad);
163
@@ -286,12 +340,7 @@
164
     GstPad *srcpad;
165
     srcpad = gst_proxy_src_get_internal_srcpad (src);
166
 
167
-    if (self->pending_sticky_events) {
168
-      CopyStickyEventsData data = { srcpad, GST_FLOW_OK };
169
-
170
-      gst_pad_sticky_events_foreach (pad, copy_sticky_events, &data);
171
-      self->pending_sticky_events = data.ret != GST_FLOW_OK;
172
-    }
173
+    gst_proxy_sink_send_sticky_events (self, pad, srcpad);
174
 
175
     ret = gst_pad_push_list (srcpad, list);
176
     gst_object_unref (srcpad);
177
gst-plugins-bad-1.20.3.tar.xz/gst/proxy/gstproxysink.h -> gst-plugins-bad-1.20.4.tar.xz/gst/proxy/gstproxysink.h Changed
10
 
1
@@ -48,6 +48,8 @@
2
 
3
   /* Whether there are sticky events pending */
4
   gboolean pending_sticky_events;
5
+  gboolean sent_stream_start;
6
+  gboolean sent_caps;
7
 };
8
 
9
 struct _GstProxySinkClass {
10
gst-plugins-bad-1.20.3.tar.xz/gst/rtmp2/gstrtmp2locationhandler.c -> gst-plugins-bad-1.20.4.tar.xz/gst/rtmp2/gstrtmp2locationhandler.c Changed
24
 
1
@@ -84,6 +84,22 @@
2
   g_object_interface_install_property (iface, g_param_spec_uint ("timeout",
3
           "Timeout", "RTMP timeout in seconds", 0, G_MAXUINT, DEFAULT_TIMEOUT,
4
           G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
5
+  /**
6
+   * GstRtmpLocationHandler::tls-validation-flags:
7
+   *
8
+   * TLS certificate validation flags used to validate server
9
+   * certificate.
10
+   *
11
+   * GLib guarantees that if certificate verification fails, at least one
12
+   * error will be set, but it does not guarantee that all possible errors
13
+   * will be set. Accordingly, you may not safely decide to ignore any
14
+   * particular type of error.
15
+   *
16
+   * For example, it would be incorrect to mask %G_TLS_CERTIFICATE_EXPIRED if
17
+   * you want to allow expired certificates, because this could potentially be
18
+   * the only error flag set even if other problems exist with the
19
+   * certificate.
20
+   */
21
   g_object_interface_install_property (iface,
22
       g_param_spec_flags ("tls-validation-flags", "TLS validation flags",
23
           "TLS validation flags to use", G_TYPE_TLS_CERTIFICATE_FLAGS,
24
gst-plugins-bad-1.20.3.tar.xz/gst/rtmp2/rtmp/rtmpclient.c -> gst-plugins-bad-1.20.4.tar.xz/gst/rtmp2/rtmp/rtmpclient.c Changed
12
 
1
@@ -426,8 +426,10 @@
2
       GST_DEBUG ("Configuring TLS, validation flags 0x%02x",
3
           data->location.tls_flags);
4
       g_socket_client_set_tls (socket_client, TRUE);
5
+      G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
6
       g_socket_client_set_tls_validation_flags (socket_client,
7
           data->location.tls_flags);
8
+      G_GNUC_END_IGNORE_DEPRECATIONS;
9
       break;
10
 
11
     default:
12
gst-plugins-bad-1.20.3.tar.xz/meson.build -> gst-plugins-bad-1.20.4.tar.xz/meson.build Changed
16
 
1
@@ -1,5 +1,5 @@
2
 project('gst-plugins-bad', 'c', 'cpp',
3
-  version : '1.20.3',
4
+  version : '1.20.4',
5
   meson_version : '>= 0.59',
6
   default_options :  'warning_level=1',
7
                       'buildtype=debugoptimized' )
8
@@ -219,7 +219,6 @@
9
 
10
 warning_c_flags = 
11
   '-Wmissing-prototypes',
12
-  '-Wdeclaration-after-statement',
13
   '-Wold-style-definition',
14
 
15
 
16
gst-plugins-bad-1.20.3.tar.xz/po/gst-plugins-bad-1.0.pot -> gst-plugins-bad-1.20.4.tar.xz/po/gst-plugins-bad-1.0.pot Changed
10
 
1
@@ -8,7 +8,7 @@
2
 msgstr ""
3
 "Project-Id-Version: gst-plugins-bad-1.0\n"
4
 "Report-Msgid-Bugs-To: \n"
5
-"POT-Creation-Date: 2022-06-15 23:37+0100\n"
6
+"POT-Creation-Date: 2022-10-12 16:40+0100\n"
7
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
 "Language-Team: LANGUAGE <LL@li.org>\n"
10
gst-plugins-bad-1.20.3.tar.xz/sys/androidmedia/jni/gstamcsurfacetexture-jni.c -> gst-plugins-bad-1.20.4.tar.xz/sys/androidmedia/jni/gstamcsurfacetexture-jni.c Changed
10
 
1
@@ -243,6 +243,8 @@
2
     long long context, jobject surfaceTexture)
3
 {
4
   GstAmcSurfaceTextureJNI *self = JLONG_TO_GPOINTER (context);
5
+  if (!self || !self->callback)
6
+    return;
7
 
8
   self->callback (GST_AMC_SURFACE_TEXTURE (self), self->user_data);
9
 }
10
gst-plugins-bad-1.20.3.tar.xz/sys/applemedia/avfvideosrc.m -> gst-plugins-bad-1.20.4.tar.xz/sys/applemedia/avfvideosrc.m Changed
10
 
1
@@ -1089,7 +1089,7 @@
2
   /* crank up to 11. This is what the presets do, but we don't use the presets
3
    * in ios >= 7.0 */
4
   gst_structure_fixate_field_nearest_int (structure, "height", G_MAXINT);
5
-  gst_structure_fixate_field_nearest_fraction (structure, "framerate", G_MAXINT, 1);
6
+  gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
7
 
8
   return gst_caps_fixate (new_caps);
9
 }
10
gst-plugins-bad-1.20.3.tar.xz/sys/d3d11/gstd3d11decoder.h -> gst-plugins-bad-1.20.4.tar.xz/sys/d3d11/gstd3d11decoder.h Changed
10
 
1
@@ -120,7 +120,7 @@
2
 
3
 static const GstDXVAResolution gst_dxva_resolutions = {
4
   {1920, 1088}, {2560, 1440}, {3840, 2160}, {4096, 2160},
5
-  {7680, 4320}, {8192, 4320}
6
+  {7680, 4320}, {8192, 4320}, {15360, 8640}, {16384, 8640}
7
 };
8
 
9
 gboolean          gst_d3d11_decoder_util_is_legacy_device (GstD3D11Device * device);
10
gst-plugins-bad-1.20.3.tar.xz/sys/d3d11/gstd3d11videosink.cpp -> gst-plugins-bad-1.20.4.tar.xz/sys/d3d11/gstd3d11videosink.cpp Changed
18
 
1
@@ -733,7 +733,7 @@
2
     GST_INFO_OBJECT (self,
3
         "Create dummy window for rendering on shared texture");
4
     self->window = gst_d3d11_window_dummy_new (self->device);
5
-    return TRUE;
6
+    goto done;
7
   }
8
 
9
   if (!self->window_id)
10
@@ -782,6 +782,7 @@
11
       break;
12
   }
13
 
14
+done:
15
   if (!self->window) {
16
     GST_ERROR_OBJECT (self, "Cannot create d3d11window");
17
     return FALSE;
18
gst-plugins-bad-1.20.3.tar.xz/sys/nvcodec/gstnvdec.c -> gst-plugins-bad-1.20.4.tar.xz/sys/nvcodec/gstnvdec.c Changed
12
 
1
@@ -527,8 +527,8 @@
2
     }
3
 
4
     GST_DEBUG_OBJECT (nvdec, "creating decoder");
5
-    create_info.ulWidth = width;
6
-    create_info.ulHeight = height;
7
+    create_info.ulWidth = format->coded_width;
8
+    create_info.ulHeight = format->coded_height;
9
     create_info.ulNumDecodeSurfaces = nvdec->num_decode_surface;
10
     create_info.CodecType = format->codec;
11
     create_info.ChromaFormat = format->chroma_format;
12
gst-plugins-bad-1.20.3.tar.xz/sys/va/gstvaallocator.c -> gst-plugins-bad-1.20.4.tar.xz/sys/va/gstvaallocator.c Changed
57
 
1
@@ -513,6 +513,7 @@
2
   VASurfaceID surface;
3
   guint32 i, fourcc, rt_format, export_flags;
4
   GDestroyNotify buffer_destroy = NULL;
5
+  gsize object_offset4;
6
 
7
   g_return_val_if_fail (GST_IS_VA_DMABUF_ALLOCATOR (allocator), FALSE);
8
 
9
@@ -588,11 +589,19 @@
10
 
11
   for (i = 0; i < desc.num_objects; i++) {
12
     gint fd = desc.objectsi.fd;
13
-    gsize size = desc.objectsi.size > 0 ?
14
-        desc.objectsi.size : _get_fd_size (fd);
15
+    /* don't rely on prime descriptor reported size since gallium drivers report
16
+     * different values */
17
+    gsize size = _get_fd_size (fd);
18
     GstMemory *mem = gst_dmabuf_allocator_alloc (allocator, fd, size);
19
     guint64 *drm_mod = g_new (guint64, 1);
20
 
21
+    if (size != desc.objectsi.size) {
22
+      GST_WARNING_OBJECT (self, "driver bug: fd size (%" G_GSIZE_FORMAT
23
+          ") differs from object descriptor size (%" G_GUINT32_FORMAT ")",
24
+          size, desc.objectsi.size);
25
+    }
26
+
27
+    object_offseti = gst_buffer_get_size (buffer);
28
     gst_buffer_append_memory (buffer, mem);
29
     buf->memsi = mem;
30
 
31
@@ -615,18 +624,22 @@
32
         drm_mod, g_free);
33
 
34
     if (G_UNLIKELY (info))
35
-      GST_VIDEO_INFO_SIZE (info) += size;
36
+      GST_VIDEO_INFO_PLANE_OFFSET (info, i) = GST_VIDEO_INFO_SIZE (info);
37
 
38
     GST_LOG_OBJECT (self, "buffer %p: new dmabuf %d / surface %#x %dx%d "
39
         "size %" G_GSIZE_FORMAT " drm mod %#lx", buffer, fd, surface,
40
         GST_VIDEO_INFO_WIDTH (&self->info), GST_VIDEO_INFO_HEIGHT (&self->info),
41
-        GST_VIDEO_INFO_SIZE (&self->info), *drm_mod);
42
+        size, *drm_mod);
43
   }
44
 
45
   if (G_UNLIKELY (info)) {
46
+    GST_VIDEO_INFO_SIZE (info) = gst_buffer_get_size (buffer);
47
+
48
     for (i = 0; i < desc.num_layers; i++) {
49
       g_assert (desc.layersi.num_planes == 1);
50
-      GST_VIDEO_INFO_PLANE_OFFSET (info, i) = desc.layersi.offset0;
51
+      GST_VIDEO_INFO_PLANE_OFFSET (info, i) =
52
+          object_offsetdesc.layersi.object_index0 +
53
+          desc.layersi.offset0;
54
       GST_VIDEO_INFO_PLANE_STRIDE (info, i) = desc.layersi.pitch0;
55
     }
56
   } else {
57
gst-plugins-bad-1.20.3.tar.xz/sys/va/gstvah265dec.c -> gst-plugins-bad-1.20.4.tar.xz/sys/va/gstvah265dec.c Changed
11
 
1
@@ -315,6 +315,9 @@
2
   GstVaH265Dec *self = GST_VA_H265_DEC (decoder);
3
   guint8 i;
4
 
5
+  if (!picture)
6
+    return 0xFF;
7
+
8
   for (i = 0; i < 15; i++) {
9
     VAPictureHEVC *ref_va_pic = &self->pic_param.base.ReferenceFramesi;
10
 
11
gst-plugins-bad-1.20.3.tar.xz/sys/wasapi/gstwasapiutil.c -> gst-plugins-bad-1.20.4.tar.xz/sys/wasapi/gstwasapiutil.c Changed
92
 
1
@@ -82,6 +82,72 @@
2
   {0xa7, 0xbf, 0xad, 0xdc, 0xa7, 0xc2, 0x60, 0xe2}
3
 };
4
 
5
+/* Desktop only defines */
6
+#ifndef KSAUDIO_SPEAKER_MONO
7
+#define KSAUDIO_SPEAKER_MONO            (SPEAKER_FRONT_CENTER)
8
+#endif
9
+#ifndef KSAUDIO_SPEAKER_1POINT1
10
+#define KSAUDIO_SPEAKER_1POINT1         (SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY)
11
+#endif
12
+#ifndef KSAUDIO_SPEAKER_STEREO
13
+#define KSAUDIO_SPEAKER_STEREO          (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
14
+#endif
15
+#ifndef KSAUDIO_SPEAKER_2POINT1
16
+#define KSAUDIO_SPEAKER_2POINT1         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_LOW_FREQUENCY)
17
+#endif
18
+#ifndef KSAUDIO_SPEAKER_3POINT0
19
+#define KSAUDIO_SPEAKER_3POINT0         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER)
20
+#endif
21
+#ifndef KSAUDIO_SPEAKER_3POINT1
22
+#define KSAUDIO_SPEAKER_3POINT1         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
23
+                                         SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY)
24
+#endif
25
+#ifndef KSAUDIO_SPEAKER_QUAD
26
+#define KSAUDIO_SPEAKER_QUAD            (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
27
+                                         SPEAKER_BACK_LEFT  | SPEAKER_BACK_RIGHT)
28
+#endif
29
+#define KSAUDIO_SPEAKER_SURROUND        (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
30
+                                         SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
31
+#ifndef KSAUDIO_SPEAKER_5POINT0
32
+#define KSAUDIO_SPEAKER_5POINT0         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | \
33
+                                         SPEAKER_SIDE_LEFT  | SPEAKER_SIDE_RIGHT)
34
+#endif
35
+#define KSAUDIO_SPEAKER_5POINT1         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
36
+                                         SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
37
+                                         SPEAKER_BACK_LEFT  | SPEAKER_BACK_RIGHT)
38
+#ifndef KSAUDIO_SPEAKER_7POINT0
39
+#define KSAUDIO_SPEAKER_7POINT0         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | \
40
+                                         SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
41
+                                         SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
42
+#endif
43
+#ifndef KSAUDIO_SPEAKER_7POINT1
44
+#define KSAUDIO_SPEAKER_7POINT1         (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
45
+                                         SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
46
+                                         SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
47
+                                         SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
48
+#endif
49
+
50
+static DWORD default_ch_masks = {
51
+  0,
52
+  KSAUDIO_SPEAKER_MONO,
53
+  /* 2ch */
54
+  KSAUDIO_SPEAKER_STEREO,
55
+  /* 2.1ch */
56
+  /* KSAUDIO_SPEAKER_3POINT0 ? */
57
+  KSAUDIO_SPEAKER_2POINT1,
58
+  /* 4ch */
59
+  /* KSAUDIO_SPEAKER_3POINT1 or KSAUDIO_SPEAKER_SURROUND ? */
60
+  KSAUDIO_SPEAKER_QUAD,
61
+  /* 5ch */
62
+  KSAUDIO_SPEAKER_5POINT0,
63
+  /* 5.1ch */
64
+  KSAUDIO_SPEAKER_5POINT1,
65
+  /* 7ch */
66
+  KSAUDIO_SPEAKER_7POINT0,
67
+  /* 7.1ch */
68
+  KSAUDIO_SPEAKER_7POINT1,
69
+};
70
+
71
 /* *INDENT-OFF* */
72
 static struct
73
 {
74
@@ -705,6 +771,17 @@
75
   DWORD dwChannelMask = format->dwChannelMask;
76
   GstAudioChannelPosition *pos = NULL;
77
 
78
+  if (nChannels > 2 && !dwChannelMask) {
79
+    GST_WARNING ("Unknown channel mask value for %d channel stream", nChannels);
80
+
81
+    if (nChannels >= G_N_ELEMENTS (default_ch_masks)) {
82
+      GST_ERROR ("Too many channels %d", nChannels);
83
+      return 0;
84
+    }
85
+
86
+    dwChannelMask = default_ch_masksnChannels;
87
+  }
88
+
89
   pos = g_new (GstAudioChannelPosition, nChannels);
90
   gst_wasapi_util_channel_position_all_none (nChannels, pos);
91
 
92
gst-plugins-bad-1.20.3.tar.xz/sys/wasapi2/gstwasapi2ringbuffer.cpp -> gst-plugins-bad-1.20.4.tar.xz/sys/wasapi2/gstwasapi2ringbuffer.cpp Changed
19
 
1
@@ -1381,7 +1381,7 @@
2
   if (buf->volume_object)
3
     hr = buf->volume_object->SetMute (mute, nullptr);
4
   else
5
-    buf->volume_changed = TRUE;
6
+    buf->mute_changed = TRUE;
7
   g_mutex_unlock (&buf->volume_lock);
8
 
9
   return S_OK;
10
@@ -1421,7 +1421,7 @@
11
   if (buf->volume_object)
12
     hr = buf->volume_object->SetMasterVolume (volume, nullptr);
13
   else
14
-    buf->mute_changed = TRUE;
15
+    buf->volume_changed = TRUE;
16
   g_mutex_unlock (&buf->volume_lock);
17
 
18
   return hr;
19
gst-plugins-bad-1.20.4.tar.xz/tests/check/elements/proxysink.c Added
112
 
1
@@ -0,0 +1,110 @@
2
+/* GStreamer
3
+ * Copyright (C) 2022 Seungha Yang <seungha@centricular.com>
4
+ *
5
+ * This library is free software; you can redistribute it and/or
6
+ * modify it under the terms of the GNU Library General Public
7
+ * License as published by the Free Software Foundation; either
8
+ * version 2 of the License, or (at your option) any later version.
9
+ *
10
+ * This library is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13
+ * Library General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Library General Public
16
+ * License along with this library; if not, write to the
17
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
18
+ * Boston, MA 02110-1301, USA.
19
+ */
20
+
21
+#ifdef HAVE_CONFIG_H
22
+#include "config.h"
23
+#endif
24
+
25
+#include <gst/gst.h>
26
+#include <gst/check/gstcheck.h>
27
+#include <gst/check/gstharness.h>
28
+
29
+GST_START_TEST (test_flush_before_buffer)
30
+{
31
+  GstElement *sink, *src;
32
+  GstHarness *h_in;
33
+  GstHarness *h_out;
34
+  GstEvent *event;
35
+  GstSegment segment;
36
+  GstCaps *caps;
37
+  GstBuffer *buf;
38
+
39
+  sink = gst_element_factory_make ("proxysink", NULL);
40
+  src = gst_element_factory_make ("proxysrc", NULL);
41
+
42
+  g_object_set (src, "proxysink", sink, NULL);
43
+
44
+  h_in = gst_harness_new_with_element (sink, "sink", NULL);
45
+  h_out = gst_harness_new_with_element (src, NULL, "src");
46
+  gst_object_unref (sink);
47
+  gst_object_unref (src);
48
+
49
+  /* Activate only input side first, then push sticky events
50
+   * without buffer */
51
+  gst_harness_play (h_in);
52
+
53
+  event = gst_event_new_stream_start ("proxy-test-stream-start");
54
+  fail_unless (gst_harness_push_event (h_in, event));
55
+
56
+  caps = gst_caps_from_string ("foo/bar");
57
+  event = gst_event_new_caps (caps);
58
+  gst_caps_unref (caps);
59
+  fail_unless (gst_harness_push_event (h_in, event));
60
+
61
+  gst_segment_init (&segment, GST_FORMAT_TIME);
62
+  event = gst_event_new_segment (&segment);
63
+  fail_unless (gst_harness_push_event (h_in, event));
64
+
65
+  /* Now activate output side, sticky event and buffers should be
66
+   * serialized */
67
+  gst_harness_play (h_out);
68
+
69
+  event = gst_event_new_flush_start ();
70
+  fail_unless (gst_harness_push_event (h_in, event));
71
+
72
+  event = gst_event_new_flush_stop (TRUE);
73
+  fail_unless (gst_harness_push_event (h_in, event));
74
+
75
+  event = gst_event_new_segment (&segment);
76
+  fail_unless (gst_harness_push_event (h_in, event));
77
+
78
+  buf = gst_buffer_new_and_alloc (4);
79
+  GST_BUFFER_PTS (buf) = 0;
80
+  GST_BUFFER_DTS (buf) = 0;
81
+
82
+  /* There must be no critical warning regarding
83
+   * sticky-event and buffer flow order*/
84
+  fail_unless_equals_int (gst_harness_push (h_in, buf), GST_FLOW_OK);
85
+
86
+  event = gst_event_new_eos ();
87
+  fail_unless (gst_harness_push_event (h_in, event));
88
+
89
+  /* make sure everything has been forwarded */
90
+  fail_unless (gst_harness_pull_until_eos (h_out, &buf));
91
+  gst_buffer_unref (buf);
92
+
93
+  gst_harness_teardown (h_in);
94
+  gst_harness_teardown (h_out);
95
+}
96
+
97
+GST_END_TEST;
98
+
99
+static Suite *
100
+proxysink_suite (void)
101
+{
102
+  Suite *s = suite_create ("proxysink");
103
+  TCase *tc_basic = tcase_create ("general");
104
+
105
+  suite_add_tcase (s, tc_basic);
106
+  tcase_add_test (tc_basic, test_flush_before_buffer);
107
+
108
+  return s;
109
+}
110
+
111
+GST_CHECK_MAIN (proxysink);
112
gst-plugins-bad-1.20.3.tar.xz/tests/check/meson.build -> gst-plugins-bad-1.20.4.tar.xz/tests/check/meson.build Changed
82
 
1
@@ -23,49 +23,48 @@
2
 base_tests = 
3
   'elements/aesenc.c', not aes_dep.found(), aes_dep,
4
   'elements/aesdec.c', not aes_dep.found(), aes_dep,
5
-  'elements/aiffparse.c',
6
-  'elements/asfmux.c',
7
-  'elements/autoconvert.c',
8
-  'elements/autovideoconvert.c',
9
-  'elements/avwait.c',
10
-  'elements/camerabin.c',
11
+  'elements/aiffparse.c', get_option('aiff').disabled(),
12
+  'elements/asfmux.c', get_option('asfmux').disabled(),
13
+  'elements/autoconvert.c', get_option('autoconvert').disabled(),
14
+  'elements/autovideoconvert.c', get_option('autoconvert').disabled(),
15
+  'elements/avwait.c', get_option('timecode').disabled(),
16
+  'elements/camerabin.c', get_option('camerabin2').disabled(),
17
   'elements/ccconverter.c', not closedcaption_dep.found(), gstvideo_dep,
18
   'elements/cccombiner.c', not closedcaption_dep.found(), ,
19
   'elements/ccextractor.c', not closedcaption_dep.found(), ,
20
   'elements/cudaconvert.c', false, gmodule_dep, gstgl_dep,
21
   'elements/cudafilter.c', false, gmodule_dep, gstgl_dep,
22
   'elements/d3d11colorconvert.c', host_machine.system() != 'windows', ,
23
-  'elements/gdpdepay.c',
24
-  'elements/gdppay.c',
25
+  'elements/gdpdepay.c', get_option('gdp').disabled(),
26
+  'elements/gdppay.c', get_option('gdp').disabled(),
27
   'elements/h263parse.c', false, libparser_dep, gstcodecparsers_dep,
28
   'elements/h264parse.c', false, libparser_dep, gstcodecparsers_dep,
29
   'elements/h265parse.c', false, libparser_dep, gstcodecparsers_dep,
30
   'elements/hlsdemux_m3u8.c', not hls_dep.found(), hls_dep,
31
-  'elements/id3mux.c',
32
-  'elements/interlace.c',
33
+  'elements/id3mux.c', get_option('id3tag').disabled(),
34
+  'elements/interlace.c', get_option('interlace').disabled(),
35
   'elements/jpeg2000parse.c', false, libparser_dep, gstcodecparsers_dep,
36
   'elements/line21.c', not closedcaption_dep.found(), ,
37
   'elements/mfvideosrc.c', host_machine.system() != 'windows', ,
38
-  'elements/mpegtsdemux.c', false, gstmpegts_dep,
39
-  'elements/mpegtsmux.c', false, gstmpegts_dep,
40
+  'elements/mpegtsdemux.c', get_option('mpegtsdemux').disabled(), gstmpegts_dep,
41
+  'elements/mpegtsmux.c', get_option('mpegtsmux').disabled(), gstmpegts_dep,
42
   'elements/mpeg4videoparse.c', false, libparser_dep, gstcodecparsers_dep,
43
   'elements/mpegvideoparse.c', false, libparser_dep, gstcodecparsers_dep,
44
   'elements/msdkh264enc.c', not have_msdk, msdk_dep,
45
-  'elements/mxfdemux.c',
46
-  'elements/mxfmux.c',
47
-  'elements/nvenc.c', false, gmodule_dep, gstgl_dep,
48
-  'elements/nvdec.c', not gstgl_dep.found(), gmodule_dep, gstgl_dep,
49
+  'elements/mxfdemux.c', get_option('mxf').disabled(),
50
+  'elements/mxfmux.c', get_option('mxf').disabled(),
51
   'elements/svthevcenc.c', not svthevcenc_dep.found(), svthevcenc_dep,
52
    'elements/openjpeg.c', not openjpeg_dep.found(), openjpeg_dep,
53
   'elements/pcapparse.c', false, libparser_dep,
54
-  'elements/pnm.c',
55
+  'elements/pnm.c', get_option('pnm').disabled(),
56
+  'elements/proxysink.c', get_option('proxy').disabled(),
57
   'elements/ristrtpext.c',
58
-  'elements/rtponvifparse.c',
59
-  'elements/rtponviftimestamp.c',
60
-  'elements/rtpsrc.c',
61
-  'elements/rtpsink.c',
62
-  'elements/switchbin.c',
63
-  'elements/videoframe-audiolevel.c',
64
+  'elements/rtponvifparse.c', get_option('onvif').disabled(),
65
+  'elements/rtponviftimestamp.c', get_option('onvif').disabled(),
66
+  'elements/rtpsrc.c', get_option('rtp').disabled(),
67
+  'elements/rtpsink.c', get_option('rtp').disabled(),
68
+  'elements/switchbin.c', get_option('switchbin').disabled(),
69
+  'elements/videoframe-audiolevel.c', get_option('videoframe_audiolevel').disabled(),
70
   'elements/viewfinderbin.c',
71
   'elements/vp9parse.c', false, gstcodecparsers_dep,
72
   'elements/av1parse.c', false, gstcodecparsers_dep,
73
@@ -109,7 +108,7 @@
74
     'elements/avtpcvfdepay.c', not avtp_dep.found(), avtp_dep,
75
     'elements/avtpsink.c', not avtp_dep.found(), avtp_dep,
76
     'elements/avtpsrc.c', not avtp_dep.found(), avtp_dep,
77
-    'elements/clockselect.c',
78
+    'elements/clockselect.c', get_option('debugutils').disabled(),
79
     'elements/curlhttpsink.c', not curl_dep.found(), curl_dep,
80
     'elements/curlhttpsrc.c', not curl_dep.found(), curl_dep, gio_dep,
81
     'elements/curlfilesink.c',
82