Overview

Request 5619 (accepted)

New stable release

Submit package home:zait...sentials / gstreamer...d-codecs to package Essentials / gstreamer-plugins-bad-codecs

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
389
 
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
+     very useful when connecting to RTSP cameras that will never get
202
+     updates to fix certificate errors.
203
+     Relevant upstream merge requests / issues:
204
+     https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2214
205
+     https://gitlab.gnome.org/GNOME/glib-networking/-/issues/179
206
+     https://gitlab.gnome.org/GNOME/glib-networking/-/merge_requests/193
207
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2818>
208
+
209
+2022-05-25 16:03:22 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
210
+
211
+   * ext/dtls/gstdtlscertificate.c:
212
+     dtls: Disable OpenSSL 3.0 deprecation warnings for now
213
+     Fedora 36 ships with OpenSSL 3.0, which deprecates all low-level APIs,
214
+     so this code needs to be rewritten. There is no easy fix in the
215
+     porting guide, and it recommends disabling the warnings if you can't
216
+     use the high-level API.
217
+     https://wiki.openssl.org/index.php/OpenSSL_3.0#Upgrading_to_OpenSSL_3.0_from_OpenSSL_1.1.1
218
+     Here's the replacement API:
219
+     https://www.openssl.org/docs/man3.0/man7/migration_guide.html#Deprecated-low-level-object-creation
220
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2818>
221
+
222
+2022-07-29 02:36:40 +0900  Seungha Yang <seungha@centricular.com>
223
+
224
+   * sys/wasapi2/gstwasapi2ringbuffer.cpp:
225
+     wasapi2: Fix initial mute/volume setting
226
+     Fix up volume/mute change flag setting
227
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2817>
228
+
229
+2022-07-21 16:11:03 +0300  Sebastian Dröge <sebastian@centricular.com>
230
+
231
+   * gst/audiobuffersplit/gstaudiobuffersplit.c:
232
+     audiobuffersplit: Actually store number of samples to drop in gapless mode
233
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2783>
234
+
235
+2022-07-21 16:10:18 +0300  Sebastian Dröge <sebastian@centricular.com>
236
+
237
+   * gst/audiobuffersplit/gstaudiobuffersplit.c:
238
+     audiobuffersplit: Use input running time for comparison instead of the currently tracked running time
239
+     Otherwise gapless mode would do completely wrong calculations on
240
+     discontinuities and cause input/output to drift slowly.
241
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2783>
242
+
243
+2022-07-21 13:38:22 +0300  Sebastian Dröge <sebastian@centricular.com>
244
+
245
+   * gst/audiobuffersplit/gstaudiobuffersplit.c:
246
+     audiobuffersplit: Combine two if expressions to reduce indentation
247
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2783>
248
+
249
+2022-07-06 16:14:13 +0300  Jordan Petridis <jordan@centricular.com>
250
+
251
+   * ext/openmpt/gstopenmptdec.c:
252
+     openmpt: update from now deprecated api
253
+     https://lib.openmpt.org/doc/classopenmpt_1_1module.html#ab2695af0baa274054f5687741fa7c05b
254
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2779>
255
+
256
+2022-06-30 11:04:29 +0200  Ignazio Pillai <ignazp@amazon.com>
257
+
258
+   * sys/wasapi/gstwasapiutil.c:
259
+     wasapi: Implement default audio channel mask
260
+     Some multichannel capture devices does not provide a channel mask value
261
+     which will result in a pipeline failure due to the empty channel mask.
262
+     Implemented the same fix used for wasapi2
263
+     Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1204
264
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2714>
265
+
266
+2022-07-07 02:17:56 +0900  Seungha Yang <seungha@centricular.com>
267
+
268
+   * gst/proxy/gstproxysink.c:
269
+     proxysink: Fix GstProxySrc leak
270
+     Clear weak pointer to peer src when disposing.
271
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2774>
272
+
273
+2022-07-06 03:14:25 +0900  Seungha Yang <seungha@centricular.com>
274
+
275
+   * gst/proxy/gstproxysink.c:
276
+   * gst/proxy/gstproxysink.h:
277
+   * tests/check/elements/proxysink.c:
278
+   * tests/check/meson.build:
279
+     proxysink: Make sure stream-start and caps events are forwarded
280
+     There might be a sequence of event and buffer flow:
281
+     - Got stream-start/caps/segment events
282
+     - Got flush events
283
+     - And then buffers with a new segment event
284
+     In the above case, stream-start and caps event might not be reached to
285
+     peer proxysrc if peer proxysrc is not ready to receive them.
286
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2774>
287
+
288
+2022-06-30 09:09:02 +0300  Sebastian Dröge <sebastian@centricular.com>
289
+
290
+   * ext/webrtc/gstwebrtcbin.c:
291
+     webrtcbin: Reject caps that are not valid for creating an SDP media.
292
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2705>
293
+
294
+2022-06-29 10:55:13 +0100  Tim-Philipp Müller <tim@centricular.com>
295
+
296
+   * meson.build:
297
+     coding style: allow declarations after statement
298
+     See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1243/
299
+     and https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/78
300
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2702>
301
+
302
+2022-06-28 17:40:56 +0900  Seungha Yang <seungha@centricular.com>
303
+
304
+   * sys/d3d11/gstd3d11videosink.cpp:
305
+     d3d11videosink: Fix for force-aspect-ratio setting when rendering on shared texture
306
+     Set specified force-aspect-ratio value on window object
307
+     in case of shared texture rendering as well
308
+     Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1304
309
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2701>
310
+
311
+2022-06-25 19:50:10 +0100  Tim-Philipp Müller <tim@centricular.com>
312
+
313
+   * tests/check/meson.build:
314
+     tests: skip unit tests for dependency-less elements that have been disabled
315
+     Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1136
316
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2672>
317
+
318
+2022-06-28 01:29:06 +0100  Tim-Philipp Müller <tim@centricular.com>
319
+
320
+   * ext/opus/gstopusheader.h:
321
+     dv, opusparse: fix duplicate symbols in static build
322
+     Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1262
323
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2673>
324
+
325
+2022-06-23 14:31:10 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
326
+
327
+   * sys/va/gstvaallocator.c:
328
+     va: allocator: Use always lseek to get dmabuf size.
329
+     Gallium drivers historically have reported strange dmabuf sizes, from always
330
+     zero to the whole frame (multiple fds). The simplest solution is to use lseek
331
+     SEEK_END to get the prime descriptor size.
332
+     Also the allocator raises a warning if both values differ in order to report
333
+     it to driver.
334
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2657>
335
+
336
+2022-06-08 09:02:52 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
337
+
338
+   * sys/va/gstvaallocator.c:
339
+     va: allocator: Fix translation of VADRMPRIMESurfaceDescriptor
340
+     VADRMPRIMESurfaceDescriptor structure describes the offsets from the
341
+     point of view of the specific handle (DMABuf). While GstVideoInfo
342
+     (and the meta) describes offsets from the point of the view of the
343
+     GstBuffer, an aggregate of all the GstMemory (1 per handle).
344
+     This changes combined with Mesa Fix(https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16813)
345
+     fixes decoding failure with AMD driver.
346
+     Fixes #1223
347
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2657>
348
+
349
+2022-03-24 21:39:30 +0800  He Junyan <junyan.he@intel.com>
350
+
351
+   * sys/va/gstvah265dec.c:
352
+     va: h265dec: Fix a crash because of missing reference frame.
353
+     Some problematic H265 stream may miss the reference frame in the DPB,
354
+     and get some message like: "No short term reference picture for xxx".
355
+     So there may be empty entries in ref_pic_list0/1 when passing to
356
+     decode_slice() function of sub class. We need to check the NULL pointer.
357
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2647>
358
+
359
+2022-06-18 04:05:53 +0900  Seungha Yang <seungha@centricular.com>
360
+
361
+   * sys/d3d11/gstd3d11decoder.h:
362
+     d3d11decoder: Check 16K resolution support
363
+     16K decoding is supported by some GPUs
364
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2633>
365
+
366
+2022-06-15 15:06:20 -0400  Olivier Crête <olivier.crete@collabora.com>
367
+
368
+   * ext/webrtc/gstwebrtcbin.c:
369
+     webrtcbin: Limit sink query to sink pads
370
+     This allows the reception of streams that don't exactly match
371
+     the codec preferences. In particular, the ssrc in the codec preferences
372
+     is local sender SSRC, the other side is expected to send a different SSRC.
373
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2632>
374
+
375
+2022-06-16 00:59:00 +0100  Tim-Philipp Müller <tim@centricular.com>
376
+
377
+   * meson.build:
378
+     Back to development
379
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2619>
380
+
381
 === release 1.20.3 ===
382
 
383
 2022-06-15 23:36:18 +0100  Tim-Philipp Müller <tim@centricular.com>
384
 
385
+   * ChangeLog:
386
    * NEWS:
387
    * RELEASE:
388
    * gst-plugins-bad.doap:
389
gst-plugins-bad-1.20.3.tar.xz/NEWS -> gst-plugins-bad-1.20.4.tar.xz/NEWS Changed
343
 
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
+    files with broken BlockAlign field in the headers
202
+-   nvdec: Fix for HEVC decoding when coded resolution is larger than
203
+    display resolution
204
+-   openh264: Register debug categories earlier
205
+-   openh264enc: Fix constrained-high encoding
206
+-   openmpt: update from now deprecated api
207
+-   GstPlay: missing cleanup for g_autoptr
208
+-   player/play: Fix object construction and various leaks
209
+-   player: Plug a memory leak
210
+-   proxysink: Make sure stream-start and caps events are forwarded, and
211
+    fix memory leak
212
+-   tsdemux: Don’t trigger a program change when falling back to
213
+    ignore-pcr behaviour
214
+-   va: allocator: Fix translation of VADRMPRIMESurfaceDescriptor
215
+-   va: h265dec: Fix a crash because of missing reference frame.
216
+-   vah265dec: Decoder segfaults on seek
217
+-   wasapi: Implement default audio channel mask
218
+-   wasapi2: Fix initial mute/volume setting
219
+-   webrtcbin: Limit sink query to sink pads
220
+-   webrtcbin: Fix pointer dereference before null check
221
+-   webrtc: Make sure to return NULL when validating TURN server fails
222
+-   tests: skip unit tests for dependency-less elements that have been
223
+    disabled
224
+
225
+gst-plugins-ugly
226
+
227
+-   tests: skip unit tests for dependency-less elements that have been
228
+    disabled
229
+
230
+gst-libav
231
+
232
+-   avauddec: fix regression with WMA files, would throw an error at EOS
233
+-   avauddec: fix unnecessary reconfiguration if the audio layout isn’t
234
+    specified
235
+-   libav: Fix for APNG encoder property registration
236
+-   Failure to decode end of WMA file
237
+
238
+gst-rtsp-server
239
+
240
+-   gst-rtsp-server: Fix pushing backlog to client
241
+-   rtsp-server: stream: Don’t loop forever if binding to the multicast
242
+    address fails
243
+
244
+gstreamer-vaapi
245
+
246
+-   vaapi: Handle when no encoders/decoders available.
247
+-   vaapi: Crash in gst_vaapidecode_class_init() when no
248
+    decoders/encoders available
249
+
250
+gstreamer-sharp
251
+
252
+-   No changes
253
+
254
+gst-omx
255
+
256
+-   No changes
257
+
258
+gst-python
259
+
260
+-   python: Do not call gst_init when it is already is_initialized
261
+
262
+gst-editing-services
263
+
264
+-   Deadlock in ges because of recursive gst_init() call
265
+-   ges/gstframepositioner: don’t create one compositor per frame meta
266
+-   nle: clear seek event properly
267
+
268
+gst-examples:
269
+
270
+-   examples/webrtc/signalling: Fix compatibility with Python 3.10
271
+
272
+Development build environment + gst-full build
273
+
274
+-   build: Fix some compiler warnings by upgrading wraps
275
+-   dv, opusparse: fix duplicate symbols in static build
276
+-   Fix fedora 36 warnings - OpenSSL 3.0 deprecations + GLib 2.72
277
+    tls-validation deprecations
278
+-   Various macOS build fixes
279
+-   meson: Improve certifi documentation on macOS
280
+
281
+Cerbero build tool and packaging changes in 1.20.4
282
+
283
+-   Add Ubuntu 22.04 Jammy Jellyfish
284
+-   Add gst-rtsp-server library to the macOS framework
285
+-   cerbero: Quick fix for gen-cache breakage
286
+-   macos: Fix the install_name for the GStreamer framework
287
+-   Download using powershell on Windows and rework download func
288
+-   macos: Add arm64 to the metadata for the installer
289
+-   cerbero: Allow building on Linux ARM64
290
+-   pkg-config.recipe: Add to core platform files list
291
+-   git: Fix issue with last security patch
292
+-   distros: Fix CentOS allowance
293
+-   cerbero: Print working directory for commands that are run
294
+-   cerbero: Fix license property usage example
295
+-   Fix issue getting distro_version in Debian Bookworm
296
+-   glib: Fix gio modules loading on macOS
297
+-   cmake: Fix macOS ARM64 -> x86_64 cross-compilation
298
+-   Fix logo display in macOS installer
299
+-   openssl.recipe: Fix segfault on latest macOS
300
+-   msvc: Fix for broken CRT linking at application project because of
301
+    MSVCRT linking
302
+-   cerbero: Do not add rpaths that already exist on macOS
303
+-   android: fix build with android gradle plugin 7.2
304
+-   macOS framework is unusable starting from 1.18.0
305
+
306
+Contributors to 1.20.4
307
+
308
+Adrian Fiergolski, Aleksandr Slobodeniuk, Andoni Morales Alastruey,
309
+Andrew Pritchard, Bruce Liang, Corentin Damman, Daniel Morin, Edward
310
+Hervey, Elliot Chen, Fabian Orccon, fduncanh, Guillaume Desmottes,
311
+Haihua Hu, He Junyan, Ignazio Pillai, James Cowgill, James Hilliard, Jan
312
+Alexander Steffens (heftig), Jan Schmidt, Jianhui Dai, Jonas Danielsson,
313
+Jordan Petridis, Khem Raj, Krystian Wojtas, Martin Dørum, Mart Raudsepp,
314
+Mathieu Duponchelle, Matthew Waters, Matthias Clasen, Nicolas Dufresne,
315
+Nirbheek Chauhan, Olivier Crête, Paweł Stawicki, Philippe Normand,
316
+Philipp Zabel, Piotr Brzeziński, Rafael Caricio, Rafael Sobral, Raul
317
+Tambre, Ruben Gonzalez, Sangchul Lee, Sebastian Dröge, Seungha Yang,
318
+Stéphane Cerveau, Thibault Saunier, Tim-Philipp Müller, Tristan
319
+Matthews, Víctor Manuel Jáquez Leal, Xavier Claessens, Zhiyuan Liu,
320
+
321
+… and many others who have contributed bug reports, translations, sent
322
+suggestions or helped testing. Thank you all!
323
+
324
+List of merge requests and issues fixed in 1.20.4
325
+
326
+-   List of Merge Requests applied in 1.20.4
327
+-   List of Issues fixed in 1.20.4
328
+
329
 Schedule for 1.22
330
 
331
 Our next major feature release will be 1.22, and 1.21 will be the
332
 unstable development version leading up to the stable 1.22 release. The
333
 development of 1.21/1.22 will happen in the git main branch.
334
 
335
-The plan for the 1.22 development cycle is yet to be confirmed. Assuming
336
-no major project-wide reorganisations in the 1.22 cycle we might try and
337
-aim for a release around August 2022.
338
+The plan for the 1.22 development cycle is now confirmed, and we aim for
339
+a 1.22.0 release in December 2022.
340
 
341
 1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
342
 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
343
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
Refresh

No build results available

Refresh

No rpmlint results available

Request History
Bjørn Lie's avatar

zaitor created request over 2 years ago

New stable release


Bjørn Lie's avatar

zaitor accepted request over 2 years ago

Xin