Changes of Revision 28

gstreamer-plugins-ugly-codecs.changes Changed
x
 
1
@@ -1,4 +1,9 @@
2
 -------------------------------------------------------------------
3
+Wed Mar 12 19:33:05 UTC 2025 - Bjørn Lie <zaitor@opensuse.org>
4
+
5
+- Update to version 1.26.0
6
+
7
+-------------------------------------------------------------------
8
 Mon Feb  3 09:26:26 UTC 2025 - Bjørn Lie <zaitor@opensuse.org>
9
 
10
 - Update to version 1.24.12
11
gstreamer-plugins-ugly-codecs.spec Changed
14
 
1
@@ -4,10 +4,10 @@
2
 
3
 %define _name gst-plugins-ugly
4
 %define gst_branch 1.0
5
-%define _version 1.24.0
6
+%define _version 1.26.0
7
 
8
 Name:           gstreamer-plugins-ugly-codecs
9
-Version:        1.24.12
10
+Version:        1.26.0
11
 Release:        0
12
 Summary:        Codecs/plugins for gstreamer-plugins-ugly
13
 License:        LGPL-2.1-or-later
14
_service Changed
11
 
1
@@ -2,7 +2,7 @@
2
   <service name="download_url">
3
     <param name="host">gstreamer.freedesktop.org</param>
4
     <param name="protocol">https</param>
5
-    <param name="path">/src/gst-plugins-ugly/gst-plugins-ugly-1.24.12.tar.xz</param>
6
+    <param name="path">/src/gst-plugins-ugly/gst-plugins-ugly-1.26.0.tar.xz</param>
7
   </service>
8
   <service name="set_version" mode="buildtime"/>
9
 </services>
10
\ No newline at end of file
11
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ChangeLog -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ChangeLog Changed
679
 
1
@@ -1,527 +1,240 @@
2
-=== release 1.24.12 ===
3
+=== release 1.26.0 ===
4
 
5
-2025-01-29 20:12:29 +0000  Tim-Philipp Müller <tim@centricular.com>
6
-
7
-   * NEWS:
8
-   * RELEASE:
9
-   * gst-plugins-ugly.doap:
10
-   * meson.build:
11
-     Release 1.24.12
12
-
13
-2025-01-23 20:55:15 +1100  Brad Hards <bradh@frogmouth.net>
14
-
15
-   * ext/x264/gstx264enc.c:
16
-     x264enc: switch to GstByteWriter
17
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8360>
18
-
19
-2025-01-16 17:16:53 +1100  Brad Hards <bradh@frogmouth.net>
20
-
21
-   * ext/x264/gstx264enc.c:
22
-     x264enc: add missing data to AvcDecoderConfigurationRecord
23
-     This adds the data required in AVCDecoderConfigurationRecord for
24
-     higher profile (High variants) configurations - everything in the if(...) {...} part
25
-     of ISO/IEC 14496-15:2024 Section 5.3.2.1.2. (or 5.3.3.1.2 in the 2019 version).
26
-     Resolves an error flagged by ComplianceWarden when muxing this into ISOBMFF.
27
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8360>
28
-
29
-2025-01-06 20:11:58 +0000  Tim-Philipp Müller <tim@centricular.com>
30
-
31
-   * meson.build:
32
-     Back to development after 1.24.11
33
-
34
-=== release 1.24.11 ===
35
-
36
-2025-01-06 19:48:08 +0000  Tim-Philipp Müller <tim@centricular.com>
37
+2025-03-11 20:14:44 +0000  Tim-Philipp Müller <tim@centricular.com>
38
 
39
    * NEWS:
40
+   * README.md:
41
    * RELEASE:
42
    * gst-plugins-ugly.doap:
43
    * meson.build:
44
-     Release 1.24.11
45
+     Release 1.26.0
46
 
47
-2024-12-03 23:39:54 +0000  Tim-Philipp Müller <tim@centricular.com>
48
+2025-02-23 23:52:57 +0000  Tim-Philipp Müller <tim@centricular.com>
49
 
50
    * meson.build:
51
-     Back to development after 1.24.10
52
+     Back to development after 1.25.90
53
 
54
-=== release 1.24.10 ===
55
+=== release 1.25.90 ===
56
 
57
-2024-12-03 23:29:07 +0000  Tim-Philipp Müller <tim@centricular.com>
58
+2025-02-23 23:44:10 +0000  Tim-Philipp Müller <tim@centricular.com>
59
 
60
    * NEWS:
61
    * RELEASE:
62
    * gst-plugins-ugly.doap:
63
    * meson.build:
64
-     Release 1.24.10
65
+     Release 1.25.90
66
 
67
-2024-11-03 17:37:09 +0000  Tim-Philipp Müller <tim@centricular.com>
68
+2025-02-23 16:56:31 +0000  Tim-Philipp Müller <tim@centricular.com>
69
 
70
-   * po/es.po:
71
    * po/hr.po:
72
-   * po/ro.po:
73
+   * po/pt_BR.po:
74
      gst-plugins-ugly: update translations
75
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7820>
76
-
77
-2024-10-30 20:40:12 +0000  Tim-Philipp Müller <tim@centricular.com>
78
-
79
-   * meson.build:
80
-     Back to development after 1.24.9
81
-
82
-=== release 1.24.9 ===
83
-
84
-2024-10-30 20:33:30 +0000  Tim-Philipp Müller <tim@centricular.com>
85
-
86
-   * NEWS:
87
-   * RELEASE:
88
-   * gst-plugins-ugly.doap:
89
-   * meson.build:
90
-     Release 1.24.9
91
-
92
-2024-09-19 12:12:53 +0200  Tim-Philipp Müller <tim@centricular.com>
93
-
94
-   * meson.build:
95
-     Back to development after 1.24.8
96
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7549>
97
-
98
-=== release 1.24.8 ===
99
-
100
-2024-09-19 12:01:21 +0200  Tim-Philipp Müller <tim@centricular.com>
101
-
102
-   * NEWS:
103
-   * RELEASE:
104
-   * gst-plugins-ugly.doap:
105
-   * meson.build:
106
-     Release 1.24.8
107
-
108
-2024-08-21 12:33:28 +0100  Tim-Philipp Müller <tim@centricular.com>
109
-
110
-   * meson.build:
111
-     Back to development after 1.24.7
112
 
113
-=== release 1.24.7 ===
114
-
115
-2024-08-21 12:25:15 +0100  Tim-Philipp Müller <tim@centricular.com>
116
-
117
-   * NEWS:
118
-   * RELEASE:
119
-   * gst-plugins-ugly.doap:
120
-   * meson.build:
121
-     Release 1.24.7
122
-
123
-2024-07-29 16:48:02 +0100  Tim-Philipp Müller <tim@centricular.com>
124
+2025-02-09 17:47:32 +0000  Tim-Philipp Müller <tim@centricular.com>
125
 
126
    * meson.build:
127
-     Back to development after 1.24.6
128
+     Back to development after 1.25.50
129
 
130
-=== release 1.24.6 ===
131
+=== release 1.25.50 ===
132
 
133
-2024-07-29 16:41:37 +0100  Tim-Philipp Müller <tim@centricular.com>
134
+2025-02-09 17:35:17 +0000  Tim-Philipp Müller <tim@centricular.com>
135
 
136
    * NEWS:
137
    * RELEASE:
138
    * gst-plugins-ugly.doap:
139
    * meson.build:
140
-     Release 1.24.6
141
-
142
-2024-07-22 09:29:52 +0200  Sebastian Gross <sgross@emlix.com>
143
-
144
-   * gst/asfdemux/gstasfdemux.c:
145
-     asfdemux: Be more lenient towards malformed header
146
-     VLC counts METADATA as 1 even if the specification states you must not.
147
-     This leads to asfdemux failing since there are no bytes left when asfdemux
148
-     tries to extract the "last" header.
149
-     Do not fail hard in this case and try to proceed when everything else went
150
-     fine.
151
-     So at least gst-discoverer will see what's in the file.
152
-     Closes #3684
153
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7216>
154
-
155
-2024-06-20 13:02:19 +0100  Tim-Philipp Müller <tim@centricular.com>
156
-
157
-   * meson.build:
158
-     Back to development after 1.24.5
159
-
160
-=== release 1.24.5 ===
161
+     Release 1.25.50
162
 
163
-2024-06-20 12:54:15 +0100  Tim-Philipp Müller <tim@centricular.com>
164
+2024-06-11 17:46:11 +0200  Ruben Gonzalez <rgonzalez@fluendo.com>
165
 
166
-   * NEWS:
167
-   * RELEASE:
168
-   * gst-plugins-ugly.doap:
169
    * meson.build:
170
-     Release 1.24.5
171
-
172
-2024-05-29 13:51:27 +0300  Tim-Philipp Müller <tim@centricular.com>
173
-
174
-   * meson.build:
175
-     Back to development after 1.24.4
176
-
177
-=== release 1.24.4 ===
178
-
179
-2024-05-29 13:44:50 +0300  Tim-Philipp Müller <tim@centricular.com>
180
-
181
-   * NEWS:
182
-   * RELEASE:
183
-   * gst-plugins-ugly.doap:
184
-   * meson.build:
185
-     Release 1.24.4
186
-
187
-2024-04-30 00:36:59 +0100  Tim-Philipp Müller <tim@centricular.com>
188
-
189
-   * meson.build:
190
-     Back to development after 1.24.3
191
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6772>
192
-
193
-=== release 1.24.3 ===
194
-
195
-2024-04-30 00:15:23 +0100  Tim-Philipp Müller <tim@centricular.com>
196
-
197
-   * NEWS:
198
-   * RELEASE:
199
-   * gst-plugins-ugly.doap:
200
-   * meson.build:
201
-     Release 1.24.3
202
-
203
-2024-04-10 00:04:02 +0100  Tim-Philipp Müller <tim@centricular.com>
204
-
205
-   * meson.build:
206
-     Back to development after 1.24.2
207
-
208
-=== release 1.24.2 ===
209
-
210
-2024-04-09 21:48:55 +0100  Tim-Philipp Müller <tim@centricular.com>
211
+     meson: use nls option to ENABLE_NLS
212
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7017>
213
 
214
-   * NEWS:
215
-   * RELEASE:
216
-   * gst-plugins-ugly.doap:
217
-   * meson.build:
218
-     Release 1.24.2
219
-
220
-2024-03-22 01:38:06 +0100  Tim-Philipp Müller <tim@centricular.com>
221
-
222
-   * meson.build:
223
-     Back to development
224
-
225
-=== release 1.24.1 ===
226
-
227
-2024-03-21 21:47:53 +0100  Tim-Philipp Müller <tim@centricular.com>
228
-
229
-   * NEWS:
230
-   * RELEASE:
231
-   * gst-plugins-ugly.doap:
232
-   * meson.build:
233
-     Release 1.24.1
234
-
235
-2024-03-05 13:45:27 +0000  Tim-Philipp Müller <tim@centricular.com>
236
-
237
-   * meson.build:
238
-     Back to development
239
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6264>
240
-
241
-=== release 1.24.0 ===
242
+2025-01-23 20:55:15 +1100  Brad Hards <bradh@frogmouth.net>
243
 
244
-2024-03-04 23:51:42 +0000  Tim-Philipp Müller <tim@centricular.com>
245
+   * ext/x264/gstx264enc.c:
246
+     x264enc: switch to GstByteWriter
247
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8346>
248
 
249
-   * NEWS:
250
-   * README.md:
251
-   * RELEASE:
252
-   * gst-plugins-ugly.doap:
253
-   * meson.build:
254
-     Release 1.24.0
255
+2025-01-16 17:16:53 +1100  Brad Hards <bradh@frogmouth.net>
256
 
257
-2024-02-26 09:27:40 +0100  Edward Hervey <edward@centricular.com>
258
+   * ext/x264/gstx264enc.c:
259
+     x264enc: add missing data to AvcDecoderConfigurationRecord
260
+     This adds the data required in AVCDecoderConfigurationRecord for
261
+     higher profile (High variants) configurations - everything in the if(...) {...} part
262
+     of ISO/IEC 14496-15:2024 Section 5.3.2.1.2. (or 5.3.3.1.2 in the 2019 version).
263
+     Resolves an error flagged by ComplianceWarden when muxing this into ISOBMFF.
264
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8308>
265
 
266
-   * README.md:
267
-   * RELEASE:
268
-     docs: Use Discourse and Matrix as prefered communication channels
269
-     Part of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6220
270
+2025-01-15 17:36:00 +0100  Mathieu Duponchelle <mathieu@centricular.com>
271
 
272
-=== release 1.23.90 ===
273
+   * docs/meson.build:
274
+     docs: generate hotdoc configs for libraries with our helper script
275
+     With this patch, configure time is identical no matter whether doc is
276
+     enabled or not.
277
+     The configuration files also now contain explicitly-listed sources with
278
+     no wildcards.
279
+     For the four libraries where hotdoc needs to use clang to generate the
280
+     documentation (as opposed to the rest of the libraries where hotdoc uses
281
+     the gir), the script will call pkg-config to determine the appropriate
282
+     C flags.
283
+     This means a side effect of this patch is that pkg-config files are now
284
+     generated for the gstadaptivedemux and gstopencv libraries.
285
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312>
286
 
287
-2024-02-23 18:20:11 +0000  Tim-Philipp Müller <tim@centricular.com>
288
+2025-01-17 16:51:22 +0100  Mathieu Duponchelle <mathieu@centricular.com>
289
 
290
-   * NEWS:
291
-   * RELEASE:
292
-   * gst-plugins-ugly.doap:
293
    * meson.build:
294
-     Release 1.23.90
295
+     meson: bump minimum version to 1.4 in every subprojects
296
+     36c01d05797ad9c7778939c54870f979bdcbba1f bumped to 1.4 for gst-devtools
297
+     and the root project, but we usually keep those in sync everywhere.
298
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312>
299
 
300
-2023-09-17 18:47:31 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>
301
-
302
-   * gst/asfdemux/gstrtpasfdepay.c:
303
-     rtpasfdepay: Enabled header extension aggregation
304
-     Because this depayloader may build several output buffers within one
305
-     process run we push them all into a GstBufferList and push them out at
306
-     once to make sure that each buffer gets notified about each header
307
-     extension.
308
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>
309
-
310
-2024-02-15 16:38:53 +0000  Tim-Philipp Müller <tim@centricular.com>
311
+2025-01-14 15:00:43 +0000  Tim-Philipp Müller <tim@centricular.com>
312
 
313
    * meson.build:
314
-     Back to development
315
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6126>
316
+     Back to development after 1.25.1
317
 
318
-=== release 1.23.2 ===
319
+=== release 1.25.1 ===
320
 
321
-2024-02-15 15:37:17 +0000  Tim-Philipp Müller <tim@centricular.com>
322
+2025-01-14 14:52:48 +0000  Tim-Philipp Müller <tim@centricular.com>
323
 
324
    * NEWS:
325
    * RELEASE:
326
    * gst-plugins-ugly.doap:
327
    * meson.build:
328
-     Release 1.23.2
329
+     Release 1.25.1
330
 
331
-2024-02-14 00:38:10 +0000  Tim-Philipp Müller <tim@centricular.com>
332
+2025-01-13 18:10:31 +0100  Mathieu Duponchelle <mathieu@centricular.com>
333
 
334
-   * po/lv.po:
335
-     gst-plugins-ugly: update translations
336
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6113>
337
-
338
-2024-02-10 19:47:24 +0000  Tim-Philipp Müller <tim@centricular.com>
339
-
340
-   * docs/gst_plugins_cache.json:
341
-   * gst/realmedia/asmrules.c:
342
-   * gst/realmedia/asmrules.h:
343
-   * gst/realmedia/gstrdtbuffer.c:
344
-   * gst/realmedia/gstrdtbuffer.h:
345
+   * docs/meson.build:
346
+   * ext/a52dec/meson.build:
347
+   * ext/cdio/meson.build:
348
+   * ext/dvdread/meson.build:
349
+   * ext/mpeg2dec/meson.build:
350
+   * ext/sidplay/meson.build:
351
+   * ext/x264/meson.build:
352
+   * gst/asfdemux/meson.build:
353
+   * gst/dvdlpcmdec/meson.build:
354
+   * gst/dvdsub/meson.build:
355
+   * gst/meson.build:
356
    * gst/realmedia/meson.build:
357
-   * gst/realmedia/rdtdepay.c:
358
-   * gst/realmedia/rdtdepay.h:
359
-   * gst/realmedia/rdtjitterbuffer.c:
360
-   * gst/realmedia/rdtjitterbuffer.h:
361
-   * gst/realmedia/rdtmanager.c:
362
-   * gst/realmedia/rdtmanager.h:
363
-   * gst/realmedia/realhash.c:
364
-   * gst/realmedia/realhash.h:
365
-   * gst/realmedia/realmedia.c:
366
-   * gst/realmedia/rtspreal.c:
367
-   * gst/realmedia/rtspreal.h:
368
-     realmedia: remove RealServer RTSP extension, RDT handling and PNM source
369
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6091>
370
-
371
-2024-02-06 18:09:02 +0000  Tim-Philipp Müller <tim@centricular.com>
372
-
373
    * meson.build:
374
-     Back to development
375
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6066>
376
+     docs: port plugins to explicit sources
377
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8273>
378
 
379
-=== release 1.23.1 ===
380
-
381
-2024-02-06 16:37:19 +0000  Tim-Philipp Müller <tim@centricular.com>
382
-
383
-   * NEWS:
384
-   * RELEASE:
385
-   * gst-plugins-ugly.doap:
386
-   * meson.build:
387
-     Release 1.23.1
388
-
389
-2024-01-28 11:15:01 +0000  Tim-Philipp Müller <tim@centricular.com>
390
+2025-01-10 08:58:11 +0100  Edward Hervey <edward@centricular.com>
391
 
392
+   * gst/asfdemux/gstasfdemux.c:
393
+   * gst/realmedia/rademux.c:
394
    * meson.build:
395
-     meson: bump Meson requirement to >= 1.1 for all modules
396
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6002>
397
+     ugly: Add more warning flags
398
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
399
 
400
-2023-11-02 00:03:28 +0900  Seungha Yang <seungha@centricular.com>
401
+2025-01-10 09:10:00 +0100  Edward Hervey <edward@centricular.com>
402
 
403
-   * meson.build:
404
-     meson: Fix MSVC build with GST_DISABLE_GST_DEBUG
405
-     MSVC does not understand Wno-unused
406
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>
407
+   * ext/mpeg2dec/gstmpeg2dec.c:
408
+     mpeg2dec: Add missing fallthrough statements
409
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
410
 
411
-2022-04-06 12:56:30 +0100  Tim-Philipp Müller <tim@centricular.com>
412
+2024-12-18 13:18:32 -0300  Thibault Saunier <tsaunier@igalia.com>
413
 
414
-   * meson.build:
415
-     meson: Bump GLib requirement to >= 2.64
416
-     This includes fixes to make GstBus watches non-racy.
417
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2126>
418
+   * docs/meson.build:
419
+     doc: Handle gst_dep.get_variable('libexecdir') failure
420
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178>
421
 
422
-2023-09-13 10:12:44 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
423
+2024-12-18 12:27:30 -0300  Thibault Saunier <tsaunier@igalia.com>
424
 
425
-   * ext/x264/meson.build:
426
-     x264: Check that minimum version is met
427
-     Since the addition of monochrome encoding support, we now depends on build 156.
428
-     No version check was happening so far.
429
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5325>
430
+   * docs/meson.build:
431
+     doc: Allow updating the plugins cache for all modules even if hotdoc is not present
432
+     This was possible for some modules but not all, for no good reason.
433
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178>
434
 
435
-2023-06-08 14:21:07 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
436
+2021-03-05 19:00:56 +0100  Mathieu Duponchelle <mathieu@centricular.com>
437
 
438
    * docs/gst_plugins_cache.json:
439
+   * docs/meson.build:
440
    * ext/x264/gstx264enc.c:
441
-   * tests/check/elements/x264enc.c:
442
-     x264enc: Add monochrome 8bit support
443
-     This is mapped to GStreamer GRAY8 format. This allow producing files with
444
-     the chroma_format_idc 0 (monochrome). This is only availbable to high profile.
445
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4812>
446
-
447
-2023-07-07 10:08:21 +0300  Sebastian Dröge <sebastian@centricular.com>
448
-
449
-   * gst/realmedia/rmdemux.c:
450
-     rmdemux: Check for integer overflow when calculation audio packet size
451
-     Fixes ZDI-CAN-21444
452
-     https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2782
453
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5072>
454
-
455
-2023-07-07 10:08:03 +0300  Sebastian Dröge <sebastian@centricular.com>
456
-
457
-   * gst/realmedia/rmdemux.c:
458
-     rmdemux: Use GST_LOG_OBJECT instead of GST_LOG
459
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5072>
460
-
461
-2023-07-07 10:00:19 +0300  Sebastian Dröge <sebastian@centricular.com>
462
-
463
-   * gst/realmedia/rmdemux.c:
464
-     rmdemux: Check that enough SIPR audio data is available when copying
465
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5072>
466
-
467
-2023-07-07 09:59:20 +0300  Sebastian Dröge <sebastian@centricular.com>
468
-
469
-   * gst/realmedia/rmdemux.c:
470
-     rmdemux: Check for integer overflows when calculating the size of SIPR audio buffers
471
-     Fixes ZDI-CAN-21443
472
-     Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2782
473
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5072>
474
-
475
-2023-07-07 09:59:04 +0300  Sebastian Dröge <sebastian@centricular.com>
476
-
477
-   * gst/realmedia/rmdemux.c:
478
-     rmdemux: Use GST_LOG_OBJECT instead of GST_LOG
479
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5072>
480
-
481
-2023-07-05 18:46:25 -0600  Olivier Crête <olivier.crete@collabora.com>
482
-
483
-   * scripts/gen-changelog.py:
484
-     gst-omx: Retire the whole package
485
-     The OpenMAX standard is long dead and even the Raspberry Pi OS
486
-     no longer supports it.
487
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4976>
488
-
489
-2023-07-12 09:27:22 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
490
-
491
-   * tests/check/meson.build:
492
-     meson: Always use forward slashes in defines with paths
493
-     Fixes the following build failure on MSYS2:
494
-     ```
495
-     ../subprojects/gstreamer/tests/check/elements/filesrc.c: In function 'test_seeking':
496
-     ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: error: incomplete universal character name \U
497
-     107 |   g_object_set (G_OBJECT (src), "location", TESTFILE, NULL);
498
-     |                                                     ^
499
-     ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\A'
500
-     ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g'
501
-     ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\s'
502
-     ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g'
503
-     ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\c'
504
-     ```
505
-     Due to: `-DTESTFILE=\"C:\\Users\\Administrator\...`
506
-     https://gitlab.freedesktop.org/nirbheek/gstreamer/-/jobs/45317733
507
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5018>
508
-
509
-2023-03-07 14:05:54 +0100  Stéphane Cerveau <scerveau@igalia.com>
510
-
511
-   * tests/meson.build:
512
-     gstreamer-full: add full static support
513
-     Allow a project to use gstreamer-full as a static library
514
-     and link to create a binary without dependencies.
515
-     Introduce the option 'gst-full-target-type' to
516
-     select the build type, dynamic(default) or static.
517
-     In gstreamer-full/static build configuration gstreamer (gst.c)
518
-     needs the symbol gst_init_static_plugins which is defined
519
-     in gstreamer-full.
520
-     All the tests and examples are linking with gstreamer but the
521
-     symbol gst_init_static_plugins is only defined in the gstreamer-full
522
-     library. gstreamer-full can not be built first as it needs to know what plugins
523
-     will be built.
524
-     One option would be to build all the examples and tests after
525
-     gstreamer-full as the tools.
526
-     Disable tools build in subprojects too as it will be built at the end of
527
-     build process.
528
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4128>
529
-
530
-2023-05-17 22:58:46 +0200  Ruben Gonzalez <rgonzalez@fluendo.com>
531
-
532
-   * README.md:
533
-     README.md: fix current version
534
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4662>
535
+   * ext/x264/gstx264enc.h:
536
+     x264enc: expose nal-hrd property
537
+     It can be used to force true CBR, and will cause the encoder
538
+     to output null padding packets.
539
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/908>
540
 
541
-2023-05-10 08:57:40 +0200  Edward Hervey <edward@centricular.com>
542
+2024-11-15 11:46:14 -0300  Thibault Saunier <tsaunier@igalia.com>
543
 
544
-   * ext/mpeg2dec/gstmpeg2dec.c:
545
-     mpeg2dec: Fix conflicting type declaration
546
-     It was always a GstFlowReturn
547
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4588>
548
-
549
-2023-04-28 16:06:24 +0100  Tim-Philipp Müller <tim@centricular.com>
550
-
551
-   * REQUIREMENTS:
552
-   * docs/gst_plugins_cache.json:
553
-   * ext/amrnb/GstAmrnbEnc.prs:
554
-   * ext/amrnb/README:
555
-   * ext/amrnb/amrnb.c:
556
-   * ext/amrnb/amrnbdec.c:
557
-   * ext/amrnb/amrnbdec.h:
558
-   * ext/amrnb/amrnbenc.c:
559
-   * ext/amrnb/amrnbenc.h:
560
-   * ext/amrnb/meson.build:
561
-   * ext/amrwbdec/README:
562
-   * ext/amrwbdec/amrwb.c:
563
-   * ext/amrwbdec/amrwbdec.c:
564
-   * ext/amrwbdec/amrwbdec.h:
565
-   * ext/amrwbdec/meson.build:
566
-   * ext/meson.build:
567
-   * meson_options.txt:
568
-   * tests/check/elements/amrnbenc.c:
569
-   * tests/check/gst-plugins-ugly.supp:
570
-   * tests/check/meson.build:
571
-     amrnb, amrwbdec: move AMR-NB and AMR-WB plugins to -good
572
-     Fedora ships these libraries as part of the main distribution now,
573
-     and they are decades old anyway so don't implement any of the newer
574
-     features.
575
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4512>
576
+   * meson.build:
577
+     meson: Bump minimum version to 1.3
578
+     Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4025
579
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7899>
580
 
581
-2023-03-19 15:35:29 -0300  Thibault Saunier <tsaunier@igalia.com>
582
+2024-11-03 17:30:40 +0000  Tim-Philipp Müller <tim@centricular.com>
583
 
584
    * docs/meson.build:
585
-     doc: Avoid shelling out to hotdoc to generate plugins config files
586
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4479>
587
+     meson: bail out earlier in docs subdir if docs are disabled
588
+     The gst_dep.get_variable('libexecdir') may fail in some scenarios
589
+     (e.g. building a module alone inside an uninstalled devenv) and
590
+     it shouldn't really be reached in the first place if docs are
591
+     disabled via options.
592
+     Also to avoid confusing meson messages when cross-compiling or
593
+     doing a static build.
594
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7818>
595
 
596
-2023-04-11 11:50:57 -0400  Arun Raghavan <arun@asymptotic.io>
597
+2024-11-03 17:37:09 +0000  Tim-Philipp Müller <tim@centricular.com>
598
 
599
-   * ext/x264/gstx264enc.c:
600
-     x264enc: Check more video info fields to decide whether to reconfigure encoder
601
-     The encoder is also initialised using interlace mode, colorimetry, chroma-site
602
-     and multiview mode, so let's make sure we only skip reinitialising the encoder
603
-     in set_format() if none of those have changed.
604
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4395>
605
+   * po/es.po:
606
+   * po/hr.po:
607
+   * po/ro.po:
608
+     gst-plugins-ugly: update translations
609
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7819>
610
 
611
-2023-03-17 16:32:45 +0200  Sebastian Dröge <sebastian@centricular.com>
612
+2024-10-16 08:22:53 -0300  Eli Mallon <eli@aquareum.tv>
613
 
614
-   * tests/check/elements/x264enc.c:
615
-     plugins: Fix various trivial clang compiler warnings
616
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4210>
617
+   * ext/x264/gstx264enc.h:
618
+     gstx264enc: fix for static builds on windows
619
+     Fixes #3911
620
+     Co-authored-by: L. E. Segovia <amy@centricular.com>
621
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7672>
622
 
623
-2023-03-15 18:53:09 +0000  Tim-Philipp Müller <tim@centricular.com>
624
+2024-08-09 10:41:57 +0300  Sebastian Dröge <sebastian@centricular.com>
625
 
626
-   * gst/asfdemux/gstasfdemux.c:
627
-     gst-plugins-ugly: re-indent with GNU indent 2.2.12
628
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4182>
629
+   * ext/x264/gstx264enc.c:
630
+     common: Stop using GQuark-based GstStructure name API
631
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432>
632
 
633
-2023-01-08 17:15:12 +0000  Tim-Philipp Müller <tim@centricular.com>
634
+2024-07-22 09:29:52 +0200  Sebastian Gross <sgross@emlix.com>
635
 
636
-   * ext/mpeg2dec/gstmpeg2dec.c:
637
-     mpeg2dec: drop use of GSlice
638
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>
639
+   * gst/asfdemux/gstasfdemux.c:
640
+     asfdemux: Be more lenient towards malformed header
641
+     VLC counts METADATA as 1 even if the specification states you must not.
642
+     This leads to asfdemux failing since there are no bytes left when asfdemux
643
+     tries to extract the "last" header.
644
+     Do not fail hard in this case and try to proceed when everything else went
645
+     fine.
646
+     So at least gst-discoverer will see what's in the file.
647
+     Closes #3684
648
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7209>
649
 
650
-2023-01-08 17:15:00 +0000  Tim-Philipp Müller <tim@centricular.com>
651
+2020-04-08 10:40:42 -0400  Xavier Claessens <xavier.claessens@collabora.com>
652
 
653
-   * ext/x264/gstx264enc.c:
654
-     x264enc: drop use of GSlice
655
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>
656
+   * meson.build:
657
+   * meson_options.txt:
658
+     build: Add missing common options that are yielding in subprojects
659
+     - Align `glib_debug`, `glib_assert` and `glib_checks` options with GLib,
660
+     otherwise glib subproject won't inherit their value. Previous names
661
+     and values are preserved using Meson's deprecation mechanism.
662
+     - Add `extra-checks` and `benchmarks` options in the main project so it
663
+     can be inherited in GStreamer subprojects.
664
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1165>
665
 
666
-2023-01-23 23:04:53 +0000  Tim-Philipp Müller <tim@centricular.com>
667
+2024-03-05 12:58:57 +0000  Tim-Philipp Müller <tim@centricular.com>
668
 
669
+   * README.md:
670
+   * RELEASE:
671
    * meson.build:
672
      Back to development
673
-     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3775>
674
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6261>
675
 
676
-=== release 1.22.0 ===
677
+=== release 1.24.0 ===
678
 
679
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/NEWS -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/NEWS Changed
3995
 
1
@@ -1,895 +1,922 @@
2
-GStreamer 1.24 Release Notes
3
+GStreamer 1.26 Release Notes
4
 
5
-GStreamer 1.24.0 was originally released on 4 March 2024.
6
+GStreamer 1.26.0 was originally released on 11 March 2025.
7
 
8
-The latest bug-fix release in the stable 1.24 series is 1.24.10 and was released on 06 January 2025.
9
+See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of this document.
10
 
11
-See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document.
12
-
13
-Last updated: Tuesday 06 January 2025, 19:30 UTC (log)
14
+Last updated: Tuesday 11 March 2025, 20:00 UTC (log)
15
 
16
 ## Introduction
17
 
18
 The GStreamer team is proud to announce a new major feature release in the stable 1.x API series of your favourite
19
 cross-platform multimedia framework!
20
 
21
-As always, this release is again packed with many new features, bug fixes and other improvements.
22
+As always, this release is again packed with many new features, bug fixes, and other improvements.
23
 
24
 ## Highlights
25
 
26
--   New Discourse forum and Matrix chat space
27
--   New Analytics and Machine Learning abstractions and elements
28
--   Playbin3 and decodebin3 are now stable and the default in gst-play-1.0, GstPlay/GstPlayer
29
--   The va plugin is now preferred over gst-vaapi and has higher ranks
30
--   GstMeta serialization/deserialization and other GstMeta improvements
31
--   New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
32
--   New unixfd plugin for efficient 1:N inter-process communication on Linux
33
--   cudaipc source and sink for zero-copy CUDA memory sharing between processes
34
--   New intersink and intersrc elements for 1:N pipeline decoupling within the same process
35
--   Qt5 + Qt6 QML integration improvements including qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink elements
36
--   DRM Modifier Support for dmabufs on Linux
37
--   OpenGL, Vulkan and CUDA integration enhancements
38
--   Vulkan H.264 and H.265 video decoders
39
--   RTP stack improvements including new RFC7273 modes and more correct header extension handling in depayloaders
40
--   WebRTC improvements such as support for ICE consent freshness, and a new webrtcsrc element to complement webrtcsink
41
--   WebRTC signallers and webrtcsink implementations for LiveKit and AWS Kinesis Video Streams
42
--   WHIP server source and client sink, and a WHEP source
43
--   Precision Time Protocol (PTP) clock support for Windows and other additions
44
--   Low-Latency HLS (LL-HLS) support and many other HLS and DASH enhancements
45
--   New W3C Media Source Extensions library
46
--   Countless closed caption handling improvements including new cea608mux and cea608tocea708 elements
47
--   Translation support for awstranscriber
48
--   Bayer 10/12/14/16-bit depth support
49
--   MPEG-TS support for asynchronous KLV demuxing and segment seeking, plus various new muxer features
50
--   Capture source and sink for AJA capture and playout cards
51
--   SVT-AV1 and VA-API AV1 encoders, stateless AV1 video decoder
52
--   New uvcsink element for exporting streams as UVC camera
53
--   DirectWrite text rendering plugin for windows
54
--   Direct3D12-based video decoding, conversion, composition, and rendering
55
--   AMD Advanced Media Framework AV1 + H.265 video encoders with 10-bit and HDR support
56
--   AVX/AVX2 support and NEON support on macOS on Apple ARM64 CPUs via new liborc
57
--   GStreamer C# bindings have been updated
58
--   Rust bindings improvements and many new and improved Rust plugins
59
--   Rust plugins now shipped in packages for all major platforms including Android and iOS
60
+-   H.266 Versatile Video Coding (VVC) codec support
61
+-   Low Complexity Enhancement Video Coding (LCEVC) support
62
+-   Closed captions: H.264/H.265 extractor/inserter, cea708overlay, cea708mux, tttocea708 and more
63
+-   New hlscmafsink, hlssink3, and hlsmultivariantsink; HLS/DASH client and dashsink improvements
64
+-   New AWS and Speechmatics transcription, translation and TTS services elements, plus translationbin
65
+-   Splitmux lazy loading and dynamic fragment addition support
66
+-   Matroska: H.266 video and rotation tag support, defined latency muxing
67
+-   MPEG-TS: support for H.266, JPEG XS, AV1, VP9 codecs and SMPTE ST-2038 and ID3 meta; mpegtslivesrc
68
+-   ISO MP4: support for H.266, Hap, Lagarith lossless codecs; raw video support; rotation tags
69
+-   SMPTE 2038 ancillary data streams support
70
+-   JPEG XS image codec support
71
+-   Analytics: New TensorMeta; N-to-N relationships; Mtd to carry segmentation masks
72
+-   ONVIF metadata extractor and conversion to/from relation metas
73
+-   New originalbuffer element that can restore buffers again after transformation steps for analytics
74
+-   Improved Python bindings for analytics API
75
+-   Lots of Vulkan integration and Vulkan Video decoder/encoder improvements
76
+-   OpenGL integration improvements, esp. in glcolorconvert, gldownload, glupload
77
+-   Qt5/Qt6 QML GL sinks now support direct DMABuf import from hardware decoders
78
+-   CUDA: New compositor, Jetson NVMM memory support, stream-ordered allocator
79
+-   NVCODEC AV1 video encoder element, and ndsdewarp
80
+-   New Direct3D12 integration support library
81
+-   New d3d12swapchainsink and d3d12deinterlace elements and D3D12 sink/source for zero-copy IPC
82
+-   Decklink HDR support (PQ + HLG) and frame scheduling enhancements
83
+-   AJA capture source clock handling and signal loss recovery improvements
84
+-   RTP and RTSP: New rtpbin sync modes, client-side MIKEY support in rtspsrc
85
+-   New Rust rtpbin2, rtprecv, rtpsend, and many new Rust RTP payloaders and depayloaders
86
+-   webrtcbin support for basic rollbacks and other improvements
87
+-   webrtcsink: support for more encoders, SDP munging, and a built-in web/signalling server
88
+-   webrtcsrc/sink: support for uncompressed audio/video and NTP & PTP clock signalling and synchronization
89
+-   rtmp2: server authentication improvements incl. Limelight CDN (llnw) authentication
90
+-   New Microsoft WebView2 based web browser source element
91
+-   The GTK3 plugin has gained support for OpenGL/WGL on Windows
92
+-   Many GTK4 paintable sink improvements
93
+-   GstPlay: id-based stream selection and message API improvements
94
+-   Real-time pipeline visualization in a browser using a new dots tracer and viewer
95
+-   New tracers for tracking memory usage, pad push timings, and buffer flow as pcap files
96
+-   VA hardware-acclerated H.266/VVC decoder, VP8 and JPEG encoders, VP9/VP8 alpha decodebins
97
+-   Video4Linux2 elements support DMA_DRM caps negotiation now
98
+-   V4L2 stateless decoders implement inter-frame resolution changes for AV1 and VP9
99
+-   Editing services: support for reverse playback and audio channel reordering
100
+-   New QUIC-based elements for working with raw QUIC streams, RTP-over-QUIC (RoQ) and WebTransport
101
+-   Apple AAC audio encoder and multi-channel support for the Apple audio decoders
102
+-   cerbero: Python bindings and introspection support; improved Windows installer based on WiX5
103
 -   Lots of new plugins, features, performance improvements and bug fixes
104
 
105
 ## Major new features and changes
106
 
107
-### Discourse forum and Matrix chat space
108
+### H.266 Versatile Video Coding (VVC) codec support
109
 
110
--   The new Discourse forum and Matrix chat space are now our preferred communication channels for support and developer chat.
111
+-   The H.266 / VVC video codec is a successor to H.265 / HEVC and is standardised in ISO/IEC 23090-3.
112
 
113
--   The mailing lists and IRC channel are on their way to being phased out, but Discourse can be used via e-mail as well.
114
+-   A new h266parse element was added, along with parsing API, typefinding support and some codec utility functions in the
115
+    gst-plugins-base utility library.
116
 
117
--   For release announcements please subscribe to the News + Announcements category on Discourse, although we will continue to
118
-    also send announcements to the mailing list for the time being.
119
+-   A H.266 decoder base class for hardware-accelerated decoders was added and used to implement a VA-API-based
120
+    hardware-accelerated H.266 decoder.
121
 
122
-### Playbin3, decodebin3 now stable and default
123
+-   The FFmpeg H.266 decoder is exposed now (from FFmpeg 7.0 onwards).
124
 
125
--   After a year of stability, testing and more improvements, playbin3, and its various components (uridecodebin3, decodebin3
126
-    and urisourcebin), are now the recommended playback components.
127
+-   H.266 / VVC muxing and demuxing support was implemented for MP4, Matroska and MPEG-TS containers.
128
 
129
--   Some playback components have now switched to defaulting to playbin3: gst-play-1.0 and the GstPlay / GstPlayer libraries.
130
-    Application developers are strongly recommended to switch to using those components instead of the legacy playbin and
131
-    (uri)decodebin.
132
+-   A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library.
133
 
134
-Improvements in this cycle:
135
+### JPEG XS image codec support
136
 
137
--   Better support missing/faulty decoders, attempt to use another one or gracefully un-select the stream.
138
+-   JPEG XS is a visually lossless, low-latency, intra-only video codec for video production workflows, standardised in ISO/IEC
139
+    21122.
140
 
141
--   Many fixes for more complex gapless and instant-switching scenarios
142
+-   JPEG XS encoder and decoder elements based on the SVT JPEG XS library were added, including support for muxing JPEG XS into
143
+    MPEG-TS and demuxing it. Both interlaced and progressive modes are supported.
144
 
145
--   Lower latency for live pipelines
146
+### Low Complexity Enhancement Video Coding (LCEVC) support
147
 
148
--   Fix for “chained” streams (ex: Ogg, or PMT update in MPEG-TS)
149
+-   LCEVC is a codec that provides an enhancement layer on top of another codec such as H.264 for example. It is standardised as
150
+    MPEG-5 Part 2.
151
 
152
--   Fixes for hardware-accelerated playback with subtitles (provided the sink can handle offloading composition). This was also
153
-    partly due to a historical confusion between subtitle “decoders” (which decode the format to text and “parsers” (which only
154
-    do timing detection and optional seeking).
155
+-   LCEVC encoder and decoder elements based on V-Nova’s SDK libraries were added, including support in h264parse for extracting
156
+    the enhancement layer from H.264 and decoding it via a lcevch264decodebin element.
157
 
158
-### GstMeta serialization/deserialization and other GstMeta improvements
159
+### Closed captions improvements
160
 
161
--   GstMeta serialization/deserialization allows metas to be transmitted or stored. This is used by the unixfd and cudaipc
162
-    plugins for inter-process communication (IPC). Implemented so far for GstCustomMeta, GstVideoMeta, GstAudioMeta and
163
-    GstReferenceTimestampMeta.
164
+-   New H.264 and H.265 closed captions extractor and inserter elements.
165
 
166
--   Simplified GstCustomMeta registration with gst_meta_register_custom_simple() for the simple case where tags and transform
167
-    functions are not needed.
168
+    -   These extractor elements don’t actually extract captions from the bitstream, but rely on parser elements to do that and
169
+        add them to buffers in form of caption metas. The problem is that streams might contain B-frames, in which case the
170
+        captions in the bitstream will not be in presentation order and extracting them requires frame-reordering in the same
171
+        way that a decoder would do. These new elements will do exactly that and allow you to extract captions in presentation
172
+        order without having to decode the stream.
173
 
174
--   GstMetaClearFunction clears the content of the meta. This will be called by buffer pools when a pooled buffer is returned to
175
-    the pool.
176
+    -   The inserter elements do something similar and insert caption SEIs into the H.264 or H.265 bitstream, taking into
177
+        account frame ordering.
178
 
179
--   Add gst_meta_info_new() and gst_meta_info_register() to register a GstMeta in two steps for easier extensibility.
180
+    -   This is useful if one wants to extract, process and re-insert captions into an existing video bitstream without decoding
181
+        and re-encoding it (in which case the decoder and encoder would handle the caption reordering).
182
 
183
-### New unixfd plugin for efficient 1:N inter-process communication on Linux
184
+-   cdpserviceinject: New element for injecting a CDP service descriptor into closed caption CDP packets
185
 
186
--   unixfdsink and unixfdsrc are elements that, inspired by shmsink andn shmsrc, send UNIX file descriptors (e.g. memfd, dmabuf)
187
-    from one sink to multiple source elements in other processes on Linux.
188
+-   cea708overlay: New element for overlaying CEA608 / CEA708 closed captions over video streams.
189
 
190
--   The unixfdsink proposes a memfd/shm allocator to upstream elements which allows for example videotestsrc to write directly
191
-    into memory that can be transfered to other processes without copying.
192
+-   The cc708overlay element has been deprecated in favour of the cea708overlay element from the Rust plugins set.
193
 
194
-### New GstMeta for SMPTE ST-291M HANC/VANC Ancillary Data
195
+-   cea608mux gained a "force-live" property to make it always in live mode and aggregate on timeout regardless of whether any
196
+    live sources are linked upstream.
197
 
198
--   Previously only various specific GstMeta for ancillary data were provided, such as GstVideoCaptionMeta and GstVideoAFDMeta.
199
-    The new GstAncillaryMeta allows passing arbitrary ancillary data between elements, including custom and non-standard
200
-    ancillary data. See GstAncillaryMeta for details.
201
+-   cea708mux: New element that allows to mux multiple CEA708 services into a single stream.
202
 
203
--   Add with gst_buffer_add_ancillary_meta() and retrieve with gst_buffer_get_ancillary_meta() or
204
-    gst_buffer_iterate_ancillary_meta().
205
+-   cccombiner has two new properties:
206
 
207
--   Supported by the newly added AJA sink and source elements
208
+    -   "input-meta-processing" controls how input closed caption metas are processed and can be used to e.g. discard closed
209
+        captions from the input pad if the matching video buffer already has closed caption on it.
210
 
211
-### DSD audio support
212
+    -   "schedule-timeout" to support timing out captions without EOS
213
 
214
--   DSD audio is a non-PCM raw audio format representation and the GstAudio library gained support for this in form of new
215
-    GstDsdInfo and GstDsdFormat API.
216
+-   tttocea708: New element for converting timed-text to CEA708 closed captions
217
 
218
--   Support for DSD audio has been implemented in alsasink as well as the GstAudioSink and GstAudioRingBuffer base classes, and
219
-    the gst-libav plugin to enable FFmpeg-based DSD elements and functionality.
220
+-   Miscellaneous improvements and spec compliance fixes
221
 
222
-### Analytics and Machine Learning
223
+### Speech to Text, Translation and Speech Synthesis
224
 
225
--   A new library, GstAnalytics, has been added. It defines a GstAnalyticsRelationMeta that can efficiently hold a large number
226
-    of observations from a data analysis process, for example from machine learning. It also contains a matrix of the
227
-    relationship between those observations.
228
+-   awstranscriber2, awstranslate: New elements around the AWS transcription and translation services.
229
 
230
--   Three types of metadata are already defined in the library: object detection, classification and tracking.
231
+-   polly: New element around the AWS text-to-speech polly services
232
 
233
--   A new objectdetectionoverlay element has been merged that draws the bounding boxes and the classes from the object detection
234
-    and classification metadata types.
235
+-   speechmatics: New transcriber / speech-to-text and translation element
236
 
237
--   The onnxinference element has been split into two parts. The first part works with the ONNX Runtime library to do the actual
238
-    inference, while the second part called ssdobjectdetector interprets the produced tensor. This new element creates
239
-    GstAnalyticsRelationMeta.
240
+-   translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions.
241
 
242
--   The onnxinference element now accepts video frames without transformation if the module declares that it accepts the “Image”
243
-    type and the format is something that GStreamer knows.
244
+### HLS DASH adaptive streaming improvements
245
 
246
--   In the next release, tensor decoders such as ssdobjectdetector will live outside of the ONNX plugin so they can be used with
247
-    other machine learning acceleration frameworks.
248
+-   The adaptivedemux2 client implementation gained support for file:// URIs and as such the ability to play HLS and DASH from
249
+    local files. It also no longer sends spurious flush events when it loses sync in live streams, as that is unexpected and
250
+    will be handled poorly in non-playback scenarios. Lastly, support for HTTP request retries was added via the "max-retries"
251
+    property, along with some exponential backoff logic which can be fine-tuned via properties.
252
 
253
-### Qt5 + Qt6 QML integration improvements
254
+-   dashsink has received period duration fixes for dynamic MPDs and some memory leak fixes.
255
 
256
--   The Qt5 qmlglsink, qmlgloverlay, qmlglmixer received support for directly consuming BGRA and YV12 video frames without a
257
-    prior glcolorconvert.
258
+-   hlscmafsink, hlssink3: New single-variant HLS sink elements that can output CMAF (fMP4) or MPEG-TS fragments.
259
 
260
--   New qml6glsrc, qml6glmixer, and qml6gloverlay elements as Qt6 counterparts to the existing Qt5 elements, also with support
261
-    for directly consuming BGRA and YV12 video frames without a prior glcolorconvert.
262
+-   hlsmultivariantsink: New sink element that can output an HLS stream with multiple variants
263
 
264
--   qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
265
+### splitmuxsrc, splitmuxsink: lazy loading and dynamic fragment addition
266
 
267
-### DRM Modifier Support for dmabufs on Linux
268
+-   splitmuxsrc and splitmuxsink were originally designed to handle a small number of large file fragments, e.g. for situations
269
+    where one doesn’t want to exceed a certain file size when recording to legacy file systems. It was also designed for playing
270
+    back a static set of file fragments that have been created by an earlier recording session and no longer changes. Over time
271
+    people have found more applications and use cases for the splitmux elements and have been deploying them in different
272
+    scenarios, exposing the limits of the current implementation.
273
 
274
-The Linux dmabuf subsystem provides buffer sharing across different hardware device drivers and subsystems, and is used
275
-extensively by the DRM subsystem to exchange buffers between processes, contexts, and library APIs within the same process, and
276
-also to exchange buffers with other subsystems such as Linux Media.
277
+-   In this release, splitmuxsink and splitmuxsrc gained new abilities aimed at improving support for recordings with a large
278
+    number of files, and for adding fragments on the fly to allow playback of ongoing recordings:
279
 
280
-In GStreamer, it’s used on the capture side (v4l2src, pipewire), hardware-accelerated video decoders and encoders, OpenGL
281
-integration, Wayland renderers, etc.
282
+    -   You can now add fragments directly to splitmuxsrc and provide the offset and duration in the stream:
283
 
284
-GStreamer has had support for dmabufs for a long time and was able to negotiate “zero-copy” paths between different components,
285
-however it only supported and assumed simple linear formats and was not able to negotiate complex non-linear formats. This meant
286
-that dmabuf support actually had to be disabled in many scenarios to avoid “garbled video”.
287
+        -   Providing offset and duration means splitmuxsrc doesn’t need to scan the file to measure it and calculate it. That
288
+            makes for much faster startup.
289
 
290
-With GStreamer 1.24 there is now full DRM modifier support and complex non-linear formats can be supported and negotiated
291
-between components.
292
+        -   The new "add-fragment" signal can be used to add files to the set dynamically - allowing to be playing an ongoing
293
+            recording and adding files to the playback set as they are finished.
294
 
295
-This is achieved with an extra drm_format field in video/x-raw(memory:DMABuf), format=(string)DMA_DRM caps, e.g.
296
-drm-format=(string)NV12:0x0x0100000000000001.
297
+    -   splitmuxsrc no longer keeps all files open, but instead only keeps 100 files open by default, configurable with the
298
+        "num-open-fragments" property.
299
 
300
-See the GStreamer DMA buffers design documentation for more details.
301
+    -   There is a new "num-lookahead" property on splitmuxsrc to trigger (re)opening files a certain distance ahead of the play
302
+        position.
303
 
304
-This is used in the VA-API va plugin, waylandsink, the MSDK plugin, and the OpenGL integration. Video4Linux support is expected
305
-to land in one of the next minor releases.
306
+    -   splitmuxsink will report fragment offset and fragment duration via a message on the bus when closing a file. This
307
+        information can then be used to add the new fragment to a splitmuxsrc.
308
 
309
-New API has been added for easy handling of these new caps:
310
+### MPEG-TS container format improvements
311
 
312
--   GstVideoInfoDmaDrm plus associated functions, similar to GstVideoInfo, including conversion to and from GstVideoInfo with
313
-    gst_video_info_dma_drm_from_video_info() and gst_video_info_dma_drm_to_video_info()
314
+-   The MPEG-TS muxer and demuxer gained support for
315
 
316
--   GST_VIDEO_DMA_DRM_CAPS_MAKE
317
+    -   H.266 / VVC video muxing and demuxing
318
+    -   JPEG-XS video muxing and demuxing
319
+    -   VP9 video muxing and demuxing (using a custom mapping)
320
+    -   AV1 video muxing and demuxing (using a custom mapping, since the work-in-progress specification effort doesn’t seem to
321
+        be going anywhere anytime soon)
322
+    -   SMPTE ST-2038 ancillary metadata streams (see section above)
323
 
324
--   GST_VIDEO_FORMAT_DMA_DRM
325
+-   mpegtsmux gained support for muxing ID3 metadata into the TS stream, as well as SMPTE 302M audio.
326
 
327
-### OpenGL integration enhancements
328
+-   It’s also possible to disable sending SCTE-35 null (heartbeat) packets now in mpegtsmux by setting the
329
+    "scte-35-null-interval" to 0.
330
 
331
--   When using EGL, if both OpenGL ES and OpenGL are available, OpenGL ES is preferred over OpenGL. OpenGL ES supports some
332
-    necessary features required for dmabuf support. This does not apply if an external library/application chooses an OpenGL API
333
-    first.
334
+-   tsparse now handles 192-byte M2TS packets
335
 
336
--   Improved support for dmabuf use cases. The glupload element now supports the new and improved dmabuf negotiation with
337
-    explicit modifiers.
338
+-   mpegtslivesrc: New source element that can wrap a live MPEG-TS source (e.g. SRT or UDP source) and provides a clock based on
339
+    the PCR.
340
 
341
--   Base classes for mixing with OpenGL are now public API. GstGLBaseMixer and GstGLMixer are exposed matching the existing
342
-    filter-based GstGLBaseFilter and GstGLFilter base classes. The new OpenGL mixer base classes are based on
343
-    GstVideoAggregator.
344
+### Matroska container format improvements
345
 
346
--   Add support for a ‘surfaceless’ EGL context using EGL_MESA_platform_surfaceless.
347
+-   H.266 / VVC video muxing and demuxing support
348
 
349
--   Expose Vivante Framebuffer build-related files (pkg-config, gir) as public API
350
+-   matroskamux
351
 
352
--   Add support for more video formats:
353
+    -   was ported to the GstAggregator base class, ensuring defined-latency muxing in live streaming pipelines.
354
+    -   gained rotation tag support
355
 
356
-    -   A420 8/10/12/16-bit.
357
-    -   A422 8/10/12/16-bit.
358
-    -   A444 8/10/12/16-bit.
359
-    -   I420 10/12 bit.
360
-    -   RBGA.
361
+-   matroskademux now also supports seeks with a stop position in push mode.
362
 
363
--   Add support for tiled video formats
364
+### ISO MP4 container format improvements
365
 
366
-    -   NV12_16L32S (Mediatek format)
367
-    -   NV12_4L4 (Verisilicon Hantro format)
368
+-   can mux and demux H.266 / VVC in MP4 now
369
 
370
--   glcolorconvert now has API for retrieving shader strings for:
371
+-   can demux Hap video now, as well as Lagarith lossless video and ISO/IEC 23003-5 raw PCM audio.
372
 
373
-    -   swizzling (reordering components).
374
-    -   YUV->RGB conversion.
375
-    -   RGB->YUV conversion.
376
+-   qtdemux handles keyunit-only trick mode also in push mode now
377
 
378
--   Add more helpers for information about a particular video and/or GL format e.g. number of components, bytes used, or pixel
379
-    ordering.
380
+-   support for ISO/IEC 23001-17 raw video in MP4 in qtdemux and isomp4mux.
381
 
382
--   glvideomixer has new sink pad properties sizing-policy, xalign, yalign matching compositor.
383
+-   support for rotation tags in the muxers and demuxers was improved to correctly handle per-media and per-track rotations, and
384
+    support for flips was added as well.
385
 
386
--   GstGLBufferPool now has a configuration option for allowing a number of buffers to be always outstanding allowing for
387
-    reducing the potential synchronisation delay when reusing OpenGL memory backed buffers.
388
+SMPTE 2038 ancillary data streams
389
 
390
-### Vulkan integration enhancements
391
+-   SMPTE 2038 (pdf) is a generic system to put VBI-style ancillary data into an MPEG-TS container. This could include all kinds
392
+    of metadata such as scoreboard data or game clocks, and of course also closed captions, in this case in form of a distinct
393
+    stream completely separate from any video bitstream.
394
 
395
--   Add support for the Vulkan H.264 and H.265 decoders.
396
+-   A number of new elements in the GStreamer Rust closedcaption plugin add support for this, along with mappings for it in the
397
+    MPEG-TS muxer and demuxer. The new elements are:
398
 
399
--   Add support for timeline semaphores.
400
+    -   st2038ancdemux: splits SMPTE ST-2038 ancillary metadata (as received from tsdemux) into separate streams per DID/SDID
401
+        and line/horizontal_offset. Will add a sometimes pad with details for each ancillary stream. Also has an always source
402
+        pad that just outputs all ancillary streams for easy forwarding or remuxing, in case none of the ancillary streams need
403
+        to be modified or dropped.
404
 
405
--   Optionally use newer Vulkan functions for format selection.
406
+    -   st2038ancmux: muxes SMPTE ST-2038 ancillary metadata streams into a single stream for muxing into MPEG-TS with
407
+        mpegtsmux. Combines ancillary data on the same line if needed, as is required for MPEG-TS muxing. Can accept individual
408
+        ancillary metadata streams as inputs and/or the combined stream from st2038ancdemux.
409
 
410
--   Add support for GPU-assisted validation.
411
+        If the video framerate is known, it can be signalled to the ancillary data muxer via the output caps by adding a
412
+        capsfilter behind it, with e.g. meta/x-st-2038,framerate=30/1.
413
 
414
--   Vulkan/Wayland: add support for xdg_wm_base protocol for creating a visible debug window. Required as the previous wl_shell
415
-    interface is being removed from compositors.
416
+        This allows the muxer to bundle all packets belonging to the same frame (with the same timestamp), but that is not
417
+        required. In case there are multiple streams with the same DID/SDID that have an ST-2038 packet for the same frame, it
418
+        will prioritise the one from more recently created request pads over those from earlier created request pads (which
419
+        might contain a combined stream for example if that’s fed first).
420
 
421
-### CUDA / NVCODEC integration and feature additions
422
+    -   st2038anctocc: extracts closed captions (CEA-608 and/or CEA-708) from SMPTE ST-2038 ancillary metadata streams and
423
+        outputs them on the respective sometimes source pad (src_cea608 or src_cea708). The data is output as a closed caption
424
+        stream with caps closedcaption/x-cea-608,format=s334-1a or closedcaption/x-cea-708,format=cdp for further processing by
425
+        other GStreamer closed caption processing elements.
426
+
427
+    -   cctost2038anc: takes closed captions (CEA-608 and/or CEA-708) as produced by other GStreamer closed caption processing
428
+        elements and converts them into SMPTE ST-2038 ancillary data that can be fed to st2038ancmux and then to mpegtsmux for
429
+        splicing/muxing into an MPEG-TS container. The line-number and horizontal-offset properties should be set to the desired
430
+        line number and horizontal offset.
431
 
432
--   New cudaipcsrc and cudaipcsink elements for zero-copy CUDA memory sharing between processes
433
+### Analytics
434
 
435
--   New nvJPEG library based nvjpegenc JPEG encoder element
436
+-   Added a GstTensorMeta: This meta is designed to carry tensors from the inference element to the model-specific tensor
437
+    decoder. This also includes a basic GstTensor class containing a single tensor. The actual tensor data is a GstBuffer.
438
 
439
--   The NVIDIA desktop GPU decoder nvh264sldec, nvh265sldec, nvvp8sldec, and nvvp9sldec elements were renamed to nvh264dec,
440
-    nvh265dec, nvvp8dec, and nvvp9dec, respectively.
441
+-   Add N_TO_N relationship to GstAnalyticsRelationMeta: This makes it possible to describe N-to-N relationships. For example,
442
+    between classes and regions in an instance segmentation.
443
 
444
--   GStreamer NVIDIA H.264 and H.265 encoders except for nvh264enc and nvh265enc gained support for CEA708 Closed Caption
445
-    inserting.
446
+-   Add a new analytics Mtd to carry segmentation masks: Being part of the GstAnalyticsMeta, it can be in relationship with the
447
+    other Mtd, such as the classification and object detection bounding boxes.
448
 
449
--   OpenGL memory support is added to nv{cuda,autogpu}h264enc and nv{cuda,autogpu}h265enc elements
450
+-   onvifmetadataextractor: New element that can extract ONVIF metadata from GstMetas into a separate stream
451
 
452
--   CUDA stream integration: As of 1.24, CUDA stream synchronization is an application’s responsibility, and GStreamer will not
453
-    execute unnecessary synchronization operations. If an application needs direct access to CUDA memory via GST_MAP_CUDA map
454
-    flag, cuStreamSynchronize() or gst_cuda_memory_sync() call is required unless application-side CUDA operation is executed
455
-    with the GstCudaMemory’s associated CUDA stream.
456
+-   originalbuffer: New plugin with originalbuffersave / originalbufferrestore elements that allow saving an original buffer,
457
+    modifying it for analytics, and then restoring the original buffer content while keeping any additional metadata that was
458
+    added.
459
 
460
-### RTP stack improvements
461
+-   relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata.
462
 
463
--   New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
464
-    This is useful for relaying an RTP stream as-is through gst-rtsp-server, which expects an RTP payloader with certain
465
-    properties at the end of an RTSP media sub-pipeline.
466
+-   Improved Python bindings for a more Pythonic interface when iterating over GstRelationMeta’s mtd
467
 
468
--   New “timeout-inactive-rtp-sources” property on rtpbin, sdpdemux and rtpsession to allow applications to disable automatic
469
-    timeout of sources from which no data has been received for a while.
470
+### Vulkan integration enhancements
471
 
472
--   rtpvp8pay, rtpvp9pay: expose “picture-id” as a property, and add a “picture-id-offset” property to the VP9 payloader to
473
-    bring it in line with the VP8 payloader.
474
+-   Vulkan Integration Improvements:
475
 
476
--   rtpjitterbuffer has seen improved media clock handling (clock equality and clock setting/resetting), as well as two new
477
-    properties that allow reconstruction of absolute PTP timestamps without actually syncing to the PTP clock, which can be
478
-    useful in scenarios where one wants to reconstruct the absolute PTP clock timestamps on a machine that doesn’t have access
479
-    to the network of the PTP clock provider. The two new properties are:
480
+    -   Memory Management: Non-coherent memory is now invalidated when mapping for read in vkmemory.
481
 
482
-    -   “rfc7273-use-system-clock”: allows the jitter buffer to assume that the system clock is synced sufficiently close to the
483
-        media clock used by an RFC7273 stream. By default the property is disabled and the jitter buffer will create a media
484
-        clock and try to sync to it, but this is only required to determine in which wraparound period from the media clock’s
485
-        Epoch the current RTP timestamps refer to (and thus to reconstruct absolute time stamps from them). If the property is
486
-        enabled the wraparound period and current offset from the Epoch will be determined based on the local system clock,
487
-        which means that no direct network connection to the media clock provider is needed to reconstruct absolute timestamps.
488
-        There is also no start-up delay, because there’s no clock sync that needs to be established first.
489
+    -   Color Space Selection: The vkswapper component now chooses the correct color space based on the format.
490
 
491
-    -   “rfc7273-reference-timestamp-meta-only”: If this property is enabled then the jitter buffer will do the normal timestamp
492
-        calculations for the output buffers according to the configured mode instead of making use of the RFC7273 media clock
493
-        for that. It will still calculate RFC7273 media clock timestamps, but only attach them to the output buffers in form of
494
-        a clock reference meta.
495
+    -   Vulkan Plugin Compatibility: Support added for cases where glslc is not available for building Vulkan plugins, along
496
+        with GLSL compiler support for glslang.
497
 
498
--   RTP payloaders and depayloaders now have an “extensions” property for retrieving the list of currently enabled RTP header
499
-    extensions.
500
+    -   Fullscreen Quad Updates: Improved support for setting NULL input/output buffers and added checks for unset video info.
501
 
502
--   rtpbin and webrtcbin no longer blindly set properties on the jitter buffer assuming it’s a standard rtpjitterbuffer, but
503
-    instead check if the property is available first, to better support non-standard jitterbuffers or even an identity element
504
-    in lieu of a jitter buffer.
505
+    -   Vulkan Buffer Pool Enhancements: Buffer pool access flags and usage configurations have been refined, offering better
506
+        performance for video decoding and encoding.
507
 
508
--   RTP header extension handling fixes for depayloaders that aggregate multiple input buffers into a single output buffer.
509
-    Before, only the last RTP input buffer was checked for header extensions. Now the depayloader remembers all RTP packets
510
-    pushed before an output buffer is produced and checks all RTP input buffers for header extensions.
511
+-   Decoder/Encoder Improvements:
512
 
513
-    -   Affected depayloaders: rtph264depay, rtph265depay, rtpvp8depay, rtpvp9depay, rtpxqtdepay, rtpasfdepay, rtpmp4gdepay,
514
-        rtpsbcdepay, rtpvorbisdepay, rtpmp4vdepay, rtptheoradepay, rtpsv3vdepay, rtpmp4adepay, rtpklvdepay, rtpjpegdepay,
515
-        rtpj2kdepay, rtph263pdepay, rtph263depay, rtph261depay. rtpgstdepay.
516
+    -   H264 Decoder: Enhancements to the vkh264dec component for better support of extended profiles and interlaced content
517
+        decoding.
518
 
519
-### WebRTC improvements
520
+    -   H265 Decoder fixes: vkh265dec updated for proper handling of VPS/SPS on demand, along with fixes to PicOrderCntVal.
521
 
522
--   Add support for ICE consent freshness (RFC 7675). This requires libnice >= 0.1.22.
523
+    -   Encoder Performance: Various internal optimizations to the Vulkan encoder, including removal of redundant references and
524
+        better management of the DPB view.
525
 
526
--   Advertise the local side of an end-of-candidates with an empty candidate string.
527
+-   Vulkan Instance and Device Management:
528
 
529
--   Add the number of Data Channels opened and closed to webrtcbin’s statistics.
530
+    -   Device Handling: Added new utility functions for managing Vulkan device instances, including
531
+        gst_vulkan_instance_create_device_with_index and gst_vulkan_ensure_element_device.
532
 
533
--   Various improvements and feature additions in the Rust webrtc plugin, which provides webrtcsrc and webrtcsink elements as
534
-    well as specific elements for different WebRTC signalling protocols. See the Rust plugins section below for more details.
535
+    -   Device Context Management: Updates to manage Vulkan context handling more effectively within the application.
536
 
537
-### Adaptive Streaming improvements and Low-Latency HLS (LL-HLS) support
538
+### OpenGL integration enhancements
539
 
540
--   hlsdemux2 now supports Low-Latency HLS (LL-HLS)
541
+-   glcolorconvert gained support for more formats and conversions:
542
 
543
--   hlsdemux2 asynchronous playlist download and update improves responsiveness and bandwith usage.
544
+    -   Planar YUV <-> planar YUV conversions
545
+    -   Converting to and from v210 in general
546
+    -   v210 <-> planar YUV
547
+    -   UYVY and YUY2 <-> planar YUV
548
+    -   v210 <-> UYVY and YUY2
549
+    -   Support for Y444_10, Y444_16, I422_10, I422_12 pixel formats (both little endian and big endian variants)
550
 
551
--   hlsdemux2 handles fallback variant URLs.
552
+-   gldownload can import DMABufs from a downstream pool
553
 
554
--   hlsdemux2 is more responsive and accurate when handling seeks.
555
+-   glupload gained a DRM raw uploader
556
 
557
--   dashdemux2 and hlsdemux2 have a new “start-bitrate” property, improving the decision for which initial stream variant that
558
-    will be used.
559
+### Qt5 + Qt6 QML integration improvements
560
 
561
--   dashdemux2, hlsdemux2, mssdemux2 have received many improvements regarding seeking, along with support for “early-seek”
562
-    which allows playback to start immediately from the requested position without any previous download.
563
+-   qmlglsink, qml6glsink now support external-oes textures, which allows direct DMABuf import from hardware decoders. Both also
564
+    support NV12 as an input format now.
565
 
566
--   dashdemux2, hlsdemux2, mssdemux2 better handle errors on or near the live edge.
567
+-   qmlglsink gained support for RGB16/BGR16 as input format
568
 
569
--   dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
570
-    strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
571
+-   qmlgl6src can now use a downstream buffer pool when available
572
 
573
--   No development took place on the legacy demuxers (dashdemux, hlsdemux, mssdemux). Application developers are reminded to use
574
-    the new demuxers instead. They are automatically picked up when using urisourcebin, uridecodebin3 or playbin3.
575
+-   qmlgloverlay make the depth/stencil buffer optional, which reduces memory bandwidth on Windows.
576
 
577
-### W3C Media Source Extensions library
578
+### CUDA / NVCODEC integration and feature additions
579
 
580
--   A new GStreamer library (mse) implementing the W3C Media Source Extensions specification was added.
581
+-   Added AV1 video encoder nvav1enc
582
 
583
--   Applications can embed this library along with GStreamer in order to integrate software that uses the Media Source APIs
584
-    without relying on a web browser engine. Typically an application consuming this library will wrap the C API with JavaScript
585
-    bindings that match the Media Source API so their existing code can integrate with this library.
586
+-   CUDA mode nvcuda{CODEC}enc encode elements are renamed to nv{CODEC}enc and old nv{CODEC}enc implementations are removed
587
 
588
-### Closed Caption handling improvements
589
+-   Added support for CUDA Stream-Ordered allocator
590
 
591
--   ccconverter supports converting between the two CEA-608 fields.
592
+-   Added cudacompositor element which is equivalent to the software compositor element but uses CUDA
593
 
594
--   New cea608mux element for muxing multiple CEA-608 streams together.
595
+-   Added support for CUDA kernel precompile at plugin build time using nvcc and NVCODEC plugin can cache/reuse compiled CUDA
596
+    CUBIN/PTX
597
 
598
--   Various improvements and feature additions in the Rust-based closed caption elements. Check out the Rust plugins section
599
-    below for more details.
600
+-   cudaupload and cudadownload elements can support Jetson platform’s NVMM memory in addition to already supported desktop NVMM
601
+    memory
602
 
603
-### Precision Time Protocol (PTP) clock improvements
604
+-   Introduced nvdswrapper plugin which uses NVIDIA DeepStream SDK APIs with gst-cuda in an integrated way:
605
 
606
--   Many fixes and compatibility/interoperability improvements.
607
+    -   nvdsdewarp: NVIDIA NVWarp360 API based dewarping element
608
 
609
--   Better support for running on devices with multiple network interfaces.
610
+### GStreamer Direct3D12 integration
611
 
612
--   Allow sync to master clock on same host.
613
+-   New gst-d3d12 public library. The following elements are integrated with the gst-d3d12 library:
614
 
615
--   PTP clock support is now also available on Windows.
616
+    -   NVIDIA NVCODEC decoders and encoders can support D3D12 memory
617
+    -   Intel QSV encoders can accept D3D12 memory
618
+    -   All elements in dwrite plugin can support D3D12 memory
619
 
620
--   The standalone ptp-helper binary has been rewritten in Rust for portability and security. This works on Linux, Android,
621
-    Windows, macOS, FreeBSD, NetBSD, OpenBSD, DragonFlyBSD, Solaris and Illumos. Newly supported compared to the C version is
622
-    Windows. Compared to the C version various error paths are handled more correctly and a couple of memory leaks are fixed.
623
-    Otherwise it should work identically. The minimum required Rust version for compiling this is 1.48, i.e. the version
624
-    currently in Debian oldstable. On Windows, Rust 1.54 is needed at least.
625
+-   The d3d12 library and plugin can be built with MinGW toolchain now (in addition to MSVC)
626
 
627
--   New ptp-helper Meson build option so PTP support can be disabled or required.
628
+-   D3D12 video decoders and d3d12videosink are promoted to have higher rank than D3D11 elements
629
 
630
--   gst_ptp_init_full() allows for a more fine-grained and extensible configuration and initialization of the GStreamer PTP
631
-    subsystem, including TTL configuration.
632
+-   Added support for multiple mip-levels D3D12 textures:
633
 
634
-### Bayer 10/12/14/16-bit depth support
635
+    -   Newly added d3d12mipmapping element can generate D3D12 textures with multiple mip-levels
636
 
637
--   bayer2rgb and rgb2bayer now support bayer with 10/12/14/16 bit depths
638
+    -   max-mip-levels property is added to d3d12convert, d3d12videosink, and d3d12swapchainsink element, so that the elements
639
+        can generate an intermediate texture with multiple mip-levels in order to reduce downscale aliasing artifacts
640
 
641
--   v4l2src and videotestsrc now support bayer with 10/12/14/16 bit depths
642
+-   d3d12convert, d3d12videosink, and d3d12swapchainsink support the GstColorBalanceInterface to offer color balancing functions
643
+    such as hue, saturation, and brightness adjustment
644
 
645
--   imagefreeze gained bayer support as well
646
+-   Added d3d12ipcsink and d3d12ipcsrc elements for zero-copy GPU memory sharing between processes
647
 
648
-### MPEG-TS improvements
649
+-   d3d12upload and d3d12download support direct GPU memory copy between D3D12 and D3D12 resources
650
 
651
--   mpegtsdemux gained support for
652
-    -   segment seeking for seamless non-flushing looping, and
653
-    -   synchronous KLV
654
--   mpegtsmux now
655
-    -   allows attaching PCR to non-PES streams
656
-    -   allows setting of the PES stream number for AAC audio and AVC video streams via a new “stream-number” property on the
657
-        muxer sink pads. Currently the PES stream number is hard-coded to zero for these stream types.
658
-    -   allows writing arbitrary Opus channel mapping families and up to 255 channels
659
-    -   separate handling of DVB and ATSC AC3 descriptors
660
+-   Added d3d12swapchainsink element to support DirectComposition or UWP/WinUI3 SwapChainPanel based applications
661
 
662
-## New elements and plugins
663
+-   Added d3d12deinterlace element which performs deinterlacing using a GPU vendor agnostic compute shader.
664
 
665
--   analyticsoverlay visualises object-detection metas on a video stream.
666
+-   d3d12screencapturesrc element can capture HDR enabled desktop correctly in DDA mode (DXGI Desktop Duplication API)
667
 
668
--   autovideoflip and autodeinterlace are two new auto elements.
669
+### Capture and playout cards support
670
 
671
--   AJA source and sink elements plus device provider for AJA capture and playout cards, including support for HANC/VANC
672
-    ancillary data.
673
+-   ajasrc: Improve clock handling, frame counting, capture timestamping, and signal loss recovery
674
 
675
--   New cea608mux element for muxing multiple CEA-608 streams together.
676
+-   The Blackmagic Decklink plugin gained support
677
 
678
--   The codec2json plugin adds av12json, h2642json, h2652json and vp82json elements which convert AV1, H.264, H.265 and VP8
679
-    frame parameters into human readable JSON data, which is useful for debugging and testing purposes.
680
+    -   for HDR output and input (PQ + HLG static metadata)
681
 
682
--   New lc3 plugin with a decoder and encoder for the Bluetooth LC3 audio codec.
683
+    -   all modes of Quad HDMI recorder
684
 
685
--   New onnxinference element to run ONNX inference models on video buffers.
686
+    -   scheduling frames before they need to be displayed in decklinkvideosink
687
 
688
--   New rtppassthroughpay element which just passes RTP packets through unchanged, but appears like an RTP payloader element.
689
-    This is mostly useful for medias that simply pass through an existing RTP stream in gst-rtsp-server.
690
+### RTP and RTSP stack improvements
691
 
692
--   Qt6: qml6glsrc, qml6glmixer, qml6gloverlay, and qml6d3d11sink
693
+-   rtspsrc now supports client-managed MIKEY key management. Some RTSP servers (e.g. Axis cameras) expect the client to propose
694
+    the encryption key(s) to be used for SRTP / SRTCP. This is required to allow re-keying. This mode can be enabled by enabling
695
+    the "client-managed-mikey-mode" property and comes with a number of new signals ("request-rtp-key" and "request-rtcp-key"),
696
+    action signals ("set-mikey-parameter" and "remove-key") and properties ("hard-limit" and "soft-limit").
697
 
698
--   New SVT-AV1 encoder plugin, imported from SVT-AV1 but with many fixes.
699
+-   rtpbin: Add new “never” and “ntp” RTCP sync modes
700
 
701
--   Many exciting new Rust elements, see Rust section below.
702
+    -   Never is useful for some RTSP servers that report plain garbage both via RTCP SR and RTP-Info, for example.
703
+    -   NTP is useful if synchronization should only ever happen based on RTCP SR or NTP-64 RTP header extensions.
704
 
705
--   New DirectWrite text rendering and Direct3D12 plugins (see Windows section below).
706
+    This is part of a bigger refactoring of the synchronization / offsetting code in rtpbin, which also makes it regularly emit
707
+    the sync signal even if no new synchronisation information is available, controlled by the new "min-sync-interval" property.
708
 
709
--   New vaav1enc element for encoding video in AV1 (See VA-API section)
710
+-   rtpjitterbuffer: add RFC7273 active status to jitterbuffer stats so applications can easily check whether RFC7273 sync is
711
+    active.
712
 
713
--   New uvcsink element for exporting streams as UVC camera
714
+-   rtph265depay: Add "wait-for-keyframe" "request-keyframe" properties and improve request keyframe logic
715
 
716
-## New element features and additions
717
+-   rtppassthroughpay gained the ability to regenerate RTP timestamps from buffer timestamps via the new "retimestamp-mode"
718
+    property. This is useful in a relay RTSP server if one wants to do full drift compensation and ensure that the stream coming
719
+    out of gst-rtsp-server is not drifting compared to the pipeline clock and also not compared to the RTCP NTP times.
720
 
721
--   alphacombine supports I420_10LE now for 10-bit WebM/alpha support.
722
+-   New Rust RTP payloaders and depayloaders for AC3, AMR, JPEG, KLV, MPEG-TS (MP2T), MPEG-4 (MP4A, MP4G), Opus, PCMU (uLaw),
723
+    PCMA (aLaw), VP8, VP9.
724
 
725
--   The amfcodec for hardware-accelerated video encoding using the Advanced Media Framework (AMF) SDK for AMD GPUs gained some
726
-    new features:
727
+-   New rtpbin2 based on separate rtprecv and rtpsend elements
728
+
729
+### WebRTC improvements
730
 
731
-    -   10-bit and HDR support for H.265 / HEVC and AV1 video encoders
732
-    -   B-frame support in the H.264 encoder
733
-    -   Initial support of pre-analysis and pre-encoding
734
-    -   Initial support of Smart Access Video for optimal distribution amongst multiple AMD hardware instances.
735
+-   webrtcbin improvements
736
 
737
--   appsink: new “propose-allocation” signal so applications can provide a buffer pool or allocators to the upstream elements,
738
-    as well as “max-time” and “max-buffers” properties to configure the maximum size of the appsink-internal queue in addition
739
-    to the existing “max-bytes” property.
740
+    -   Make basic rollbacks work
741
 
742
--   autovideoconvert exposes colorspace and scaler elements for well know elements
743
+    -   Add "reuse-source-pads" property: When set to FALSE, if a transceiver becomes send-only or inactive then pre-existing
744
+        source pads will receive an EOS event and no further traffic even after further renegotiation. When TRUE, pads will
745
+        simply not receive any output when the negotiated transceiver state doesn’t have incoming traffic. If renegotiated
746
+        later, the pad will receive data again.
747
 
748
--   avtp: add AVTP Raw Video Format payload and de-payload support.
749
+    -   Early CNAME support (RFC5576): Have CNAME available to the jitterbuffer before the the first RTCP SR is received, for
750
+        rapid synchronization.
751
 
752
--   cacasink’s output driver can now be selected via the “driver” property.
753
+    -   New "post-rtp-aux-sender" signal to allow for placement of an object after rtpbin, before sendbin. This is useful for
754
+        objects such as congestion control elements, that don’t want to be burdened by the synchronization requirements of
755
+        rtpsession.
756
 
757
--   camerabin: various fixes and stability improvements
758
+    -   Create and associate transceivers earlier in negotiation, and other spec compliance improvements
759
 
760
--   clocksync: “QoS” property to optionally send QoS events upstream like a synchronising sink would.
761
+    -   Statistics generation improvements for bundled streams
762
 
763
--   cutter: can add GstAudioLevelMeta on output buffers, which can be enabled via the new “audio-level-meta” property.
764
+-   webrtcsink improvements:
765
 
766
--   dashdemux2 has a new “start-bitrate” property.
767
+    -   Support for more encoders: nvv4l2av1enc, vpuenc_h264 (for imx8mp), nvav1enc, av1enc, rav1enc and nvh265enc.
768
 
769
--   dashsink can now use the dashmp4mux muxer from the Rust plugins and will also produce better and RFC 6381-compatible codec
770
-    strings. The “suggested-presentation-delay” property allows to set the suggested presentation delay in the MPD.
771
+    -   The new "define-encoder-bitrates" signal allows applications to fine-tune the bitrate allocation for individual streams
772
+        in cases where there are multiple encoders. By default the bitrate is split equally between encoders.
773
 
774
--   deinterlace: Add support for 10/12/16-bit planar YUV formats
775
+    -   A generic mechanism was implemented to forward metas over the control channel.
776
 
777
--   The dvdspu subpicture overlay now implements GstVideoOverlayComposition support to make it work better with hardware
778
-    decoders where the video data should ideally stay on the GPU/VPU and the overlay blitting be delegated to the renderer.
779
+    -   Added a mechanism for SDP munging to handle server-specific quirks.
780
 
781
--   encodebin now automatically autoplugs timestamper elements such as h264timestamper or h265timestamper, based on new
782
-    “Timestamper” element factory type and rank.
783
+    -   Can expose a built-in web server and signalling server for prototyping and debugging purposes.
784
 
785
--   New fakevideodec element (see debugging section below).
786
+-   webrtcsink and webrtcsrc enhancements:
787
 
788
--   filesink: “file-mode” property to allow the ability to specify rb+ file mode, which overwrites an existing file. This is
789
-    useful in combination with splitmuxsink so that files can be pre-allocated which can be useful to reduce disk fragmentation
790
-    over time.
791
+    -   Support for raw payloads, i.e. uncompressed audio and video
792
 
793
--   flvmux: add “enforce-increasing-timestamps” property to allow disabling a hack that was added back in the day because
794
-    librtmp as used in rtmpsink would get confused by timestamps going backwards, but this is no longer required with rtmpsink2.
795
-    If set to true (still the default, for backwards compatibility), flvmux will modify buffers timestamps to ensure they are
796
-    always strictly increasing, inside one stream and also between the audio and video streams.
797
+    -   NTP & PTP clock signalling and synchronization support (RFC 7273)
798
 
799
--   giostreamsink: Add a property to close the stream on stop().
800
+    -   Generic data channel control mechanism for sending upstream events back to the sender (webrtcsink)
801
 
802
--   h264parse improved its AU boundary detection.
803
+-   webrtcsrc now has support for multiple producers
804
 
805
--   h264parse, h265parse, mpegvideoparse now support multiple unregistered user data SEI messages.
806
+## New elements and plugins
807
 
808
--   insertbin is now a registered element and available via the registry, so can be constructed via parse-launch and not just
809
-    via the insertbin API.
810
+-   Many exciting new Rust elements, see Rust section below.
811
 
812
--   jack: libjack is now loaded dynamically at runtime instead of linking it at build time. This means the plugin can be shipped
813
-    on Windows and macOS and will work if there’s a user-installed JACK server/library setup.
814
+-   webview2src: new Microsoft WebView2 based web browser source element
815
 
816
--   jpegparse now has a rank so it will be autoplugged if needed.
817
+-   h264ccextractor, h264ccinserter: H.264 closed caption extractor / inserter
818
 
819
--   kmssink: Add auto-detection for NXP i.MX8M Plus LCDIFv3, ST STM32 LTDC, and Texas Instruments TIDSS display controllers.
820
+-   h265ccextractor, h265ccinserter: H.265 closed caption extractor / inserter
821
 
822
--   matroskademux and matroskamux gained support for more raw video formats, namely RGBA64_LE, BGRA64_LE, GRAY10_BE32, GRAY16_LE
823
+-   h266parse
824
 
825
--   mpg123audiodec’s rank was changed from MARGINAL to PRIMARY so it’s now higher than avdec_mp3, as it works better with
826
-    “freeformat” MP3s.
827
+-   lcevch264decodebin
828
 
829
--   msdk:
830
+-   New VA elements (see below): vah266dec, vavp8enc, vajpegenc, vavp8alphadecodebin, vavp9alphadecodebin
831
 
832
-    -   DRM modifier support on Linux
833
+-   svtjpegxsdec, svtjpegxsenc: SVT JPEG XS decoder/encoder
834
 
835
-    -   only expose codecs and capabilities actually supported by the platform
836
+-   Many other new elements mentioned in other sections (e.g. CUDA, NVCODEC, etc.)
837
 
838
-    -   msdkvpp video post-processing:
839
+## New element features and additions
840
 
841
-        -   new “hdr-tone-mapping” property to enable HDR-to-SDR tone mapping
842
-        -   new compute scaling mode
843
+-   audioconvert enhancements:
844
 
845
-    -   Decoders sport D3D11 and VA integration, and the VP9 decoder supports certain resolution changes.
846
+    -   Add possibility to reorder input channels when audioconvert has unpositionned audio channels as input. It can now use
847
+        reordering configurations to automatically position those channels via the new "input-channels-reorder" and
848
+        "input-channels-reorder-mode" properties.
849
 
850
-    -   Encoders:
851
+    -   Better handling of setting of the mix matrix at run time
852
 
853
-        -   msdkh264enc, msdkh265enc**: “pic-timing-sei” property to insert pic timing SEI
854
-        -   msdkh264enc, msdkh265enc**: Add properties to allow different max/min-qp values for I/P/B frames
855
-        -   msdkh264enc: Added BGRx format DMABuf support
856
-        -   Advertise special image formats in low power mode
857
+    -   handles new GstRequestMixMatrix custom upstream event
858
 
859
--   mxfdemux gained support for FFV1 demuxing
860
+-   audiorate: Take the tolerance into account when filling gaps; better accounting of the number of samples added or dropped.
861
 
862
--   opusenc, opusdec now support decoding and encoding more than 8 channels, and can also handle unknown/unpositioned channel
863
-    layouts.
864
+-   av1enc: Add "timebase" property to allow configuring a specific time base, in line with what exists for vp8enc and vp9enc
865
+    already.
866
 
867
--   The oss plugin gained a device provider for audio device discovery
868
+-   av1parse can parse annexb streams now, and typefinding support has been added for annexb streams as well.
869
 
870
--   pcapparse learned how to handle the Linux “cooked” capture encapsulation v2
871
+-   The GTK3 plugin has gained support for OpenGL/WGL on Windows
872
 
873
--   Intel Quick Sync plugin improvements:
874
+-   fdsrc has a new "is-live" property to make it act like a live source and timestamp the received data with the clock running
875
+    time.
876
 
877
-    -   qsvh264enc gained more encoding options
878
-    -   qsvh265dec now supports GBR decoding and HEVC RExt profiles
879
+-   imagefreeze: Add support for JPEG and PNG
880
 
881
--   qtdemux now adds audio clipping meta when playing gapless m4a content, supports CENC sample grouping, as well as the SpeedHQ
882
-    video codec.
883
+-   kmssink: Extended the functionality to support buffers with DRM formats along with non-linear buffers
884
 
885
--   ristsrc gained support for dynamic payloads via the new “caps” and “encoding-name” properties. These can be used to make the
886
-    ristsrc receive other payload types than MPEG-TS.
887
+-   pitch now supports reverse playback
888
 
889
--   rtmp2src: a new “no-eof-is-error” property was added: There is currently no way for applications to know if the stream has
890
-    been properly terminated by the server or if the network connection was disconnected, as an EOS is sent in both cases. With
891
-    the property set, connection errors will be reported as errors, allowing applications to distinguish between both scenarios.
892
+-   queue can emit the notify signal on queue level changes if the "notify-levels" property has been set.
893
 
894
--   rtspsrc: new “extra-http-request-headers” property for adding custom http request headers when using http tunnelling.
895
+-   qroverlay: the "pixel-size" property has been removed in favour of a new "size" property with slightly different semantics,
896
+    where the size of the square is expressed in percent of the smallest of width and height.
897
 
898
--   sdpdemux now supports SDP source filters as per RFC 4570; audio-only or video-only streaming can be selected via the new
899
-    “media” property, and RTCP feedback can be disabled via the “rtcp-mode” property.
900
+-   rsvgdec: Negotiate resolution with downstream and scale accordingly
901
 
902
--   splitmuxsrc uses natural ordering to sort globbed filenames now, i.e. 0, 1, 2, 10, 11 instead of 0, 1, 10, 11, 2, …
903
+-   rtmp2: server authentication improvements
904
 
905
--   srt: Add more fields to the statistics to see how many packets were retransmitted and how many were dropped.
906
+    -   Mimic librtmp’s behaviour and support additional connection parameters for the connect packet, which are commonly used
907
+        for authentication, via the new "extra-connect-args" property.
908
 
909
--   switchbin: many improvements, especially for caps handling and passthrough.
910
+    -   Add support for Limelight CDN (llnw) authentication
911
 
912
--   taginject: a “scope” property was added to allow injection of global tags in addition to the current default which is stream
913
-    tags.
914
+-   scaletempo has gained support for a “fit-down” mode: In fit-down mode only 1.0 rates are supported, and the element will fit
915
+    audio data in buffers to their advertised duration. This is useful in speech synthesis cases, where elements such as
916
+    awspolly will generate audio data from text, and assign the duration of the input text buffers to their output buffers.
917
+    Translated or synthesised audio might be longer than the original inputs, so this makes sure the audio will be sped up to
918
+    fit the original duration, so it doesn’t go out of sync.
919
 
920
--   timeoverlay: add buffer-count and buffer-offset time modes.
921
+-   souphttpsrc: Add the notion of "retry-backoff" and retry on 503 (service unavailable) and 500 (internal server error) http
922
+    errors.
923
 
924
--   udpsrc: new “multicast-source” property to support IGMPv3 Source Specific Muliticast (SSM) as per RFC 4604.
925
+-   taginject now modifies existing tag events of the selected scope, with the new "merge-mode" property allowing finer control.
926
 
927
--   videoconvertscale, videoconvert: add a “converter-config” property to allow fine-tuning conversion parameters that are not
928
-    exposed directly as property.
929
+-   timecodestamper gained a new running-time source mode that converts the buffer running time into timecodes.
930
 
931
--   videoflip: many orientation tag handling fixes and improvements
932
+-   playbin3, uridecodebin3, parsebin
933
 
934
--   videorate: add “drop-out-of-segment” property to force dropping of out-of-segment buffers.
935
+    -   lots of stream-collection handling and stability/reliability fixes
936
+    -   error/warning/info message now include the URI (if known) and stream-id
937
+    -   missing plugin messages include the stream-id
938
 
939
--   volume now supports arbitrarily-large positive gains via a new “volume-full-range” property (it was not possibly to just
940
-    allow a bigger maximum value for the existing “volume” property for GstController-related backwards-compatibility reasons).
941
+-   videocodectestsink gained support for GBR_10LE, GRAY8 and GRAY10_LE{16,32} pixel formats
942
 
943
--   waylandsink, gtkwaylandsink: improved frame scheduling reducing frame drops and improve throughput.
944
+-   videoflip gained support for the Y444_16LE and Y444_16BE pixel formats
945
 
946
--   webpenc now has support for animated WebP which can be enabled via the new “animated” property. By default it will just
947
-    output a stand-alone WebP image for each input buffer, just like before.
948
+-   videoconvertscale:
949
 
950
--   wpe: added a WebProcess crash handler; gained WPEWebKit 2.0 API support.
951
+    -   Handle pixel aspect ratios with large numerators or denominators
952
+    -   Explicitly handle the overlaycomposition meta caps feature, so it doesn’t get dropped unnecessarily
953
 
954
--   x264enc gained support for 8-bit monochrome video (GRAY8).
955
+-   waylandsink prefers DMABuf over system memory now
956
 
957
--   ximagesrc gained navigation support (mouse and keyboard events).
958
+-   x264enc has a new "nal-hrd" property to make the encoder signal HRD information, which is required for Blu-ray streams,
959
+    television broadcast and a few other specialist areas. It can also be used to force true CBR, and will cause the encoder to
960
+    output null padding packets.
961
 
962
--   y4mdec now parses extended headers to support high bit depth video.
963
+-   zbar: add support for binary mode and getting symbols as raw bytes instead of a text string.
964
 
965
 ## Plugin and library moves
966
 
967
--   The AMR-NB and AMR-WB plugins have been moved from -ugly to -good.
968
+-   macOS: atdec was moved from the applemedia plugin in -bad to the osxaudio plugin in -good, in order to be able to share
969
+    audio-related helper methods.
970
 
971
 ## Plugin and element removals
972
 
973
--   The entire gst-omx package and plugin has been retired. See the OMX section below for more details.
974
-
975
--   The RealServer RTSP extension, RDT handling and PNM source have been removed from the realmedia plugin.
976
-
977
--   The kate subtitle plugin has been removed.
978
+-   None in this cycle
979
 
980
 ## Miscellaneous API additions
981
 
982
-GStreamer Core
983
+### GStreamer Core
984
 
985
--   gst_pipeline_get_configured_latency() and gst_pipeline_is_live() convenience functions to query liveness and configured
986
-    latency of a pipeline.
987
+-   gst_meta_api_type_set_params_aggregator() allows setting an GstAllocationMetaParamsAggregator function for metas, which has
988
+    been implemented for GstVideoMeta and is used to aggregate alignment requirements of multiple tee branches.
989
 
990
--   Plugins can now provide status info messages for plugins that will be displayed in gst-inspect-1.0 and is useful for dynamic
991
-    plugins that register features at runtime. They are now able to provide information to the user why features might not be
992
-    available. This is now used in the amfcodec, nvcodec, qsv, and va plugins.
993
+-   gst_debug_print_object() and gst_debug_print_segment() have been made public API. The can be used to easily get string
994
+    representations of various types of (mini)objects in custom log handlers.
995
 
996
--   GST_OBJECT_AUTO_LOCK() and GST_PAD_STREAM_AUTO_LOCK() are g_autoptr(GMutexLocker)-based helpers for GstPad and GstObject
997
-    that unlock the mutex automatically when the helper goes out of scope. This is not portable so should not be used in
998
-    GStreamer code that needs to be portable to e.g. Windows with MSVC.
999
+-   Added gst_aggregator_push_src_event(), so subclasses don’t just push events directly onto the source pad bypassing the base
1000
+    class without giving it the chance to send out any pending serialised events that should be sent out before.
1001
 
1002
--   gst_clear_context(), gst_clear_promise(), gst_clear_sample()
1003
+-   GstMessage has gained APIs to generically add “details” to messages:
1004
 
1005
--   gst_util_ceil_log2() and gst_util_simplify_fraction() utility functions
1006
+    -   gst_message_set_details()
1007
+    -   gst_message_get_details()
1008
+    -   gst_message_writable_details()
1009
+    -   gst_message_parse_error_writable_details()
1010
+    -   gst_message_parse_warning_writable_details()
1011
+    -   gst_message_parse_info_writable_details() This is used in uridecodebin3 to add the triggering URI to any INFO, WARNING
1012
+        or ERROR messages posted on the bus, and in decodebin3 to add the stream ID to any missing plugin messages posted on the
1013
+        bus.
1014
 
1015
--   New TAG_CONTAINER_SPECIFIC_TRACK_ID tag for container specific track ID as used in an HTML5 context, plus basic support in
1016
-    matroskademux, qtdemux, dashdemux and dashdemux2
1017
+-   gst_util_floor_log2() returns smallest integral value not bigger than log2(v).
1018
 
1019
--   New utility functions to create a stream-id without a pad for elements:
1020
+-   gst_util_fraction_multiply_int64() is a 64-bit variant of gst_util_fraction_multiply().
1021
 
1022
-    -   gst_element_decorate_stream_id()
1023
-    -   gst_element_decorate_stream_id_printf_valist()
1024
-    -   gst_element_decorate_stream_id_printf()
1025
+#### GstIdStr replaces GQuark in structure and caps APIs
1026
 
1027
--   GstQueueArray gained API for sorting and sorted insertion
1028
+-   GQuarks are integer identifiers for strings that are inserted into a global hash table, allowing in theory for cheap
1029
+    equality comparisons. In GStreamer they have been used to represent GstStructure names and field names. The problem is that
1030
+    these strings once added to the global string table can never be freed again, which can lead to ever-increasing memory usage
1031
+    for processes where such name identifiers are created based on external input or on locally-created random identifiers.
1032
 
1033
--   Add strict GstStructure serialisation with gst_structure_serialize_full() in combination with GST_SERIALIZE_FLAG_STRICT
1034
-    which only succeeds if the result can later be fully deserialised again.
1035
+-   GstIdStr is a new data structure made to replace quarks in our APIs. It can hold a short string inline, a static string, or
1036
+    a reference to a heap-allocated longer string, and allows for cheap storage of short strings and cheap comparisons. It does
1037
+    not involve access to a global hash table protected by a global lock, and as most strings used in GStreamer structures are
1038
+    very short, it is actually more performant than quarks in many scenarios.
1039
 
1040
--   GstBaseSrc enhancements: the “automatic-eos” property can be used to do the equivalent to gst_base_src_set_automatic_eos().
1041
-    gst_base_src_push_segment() sends a segment event right away which can be useful for subclasses like appsrc which have their
1042
-    own internal queuing.
1043
+-   GQuark-using APIs in GstStructure or GstCaps have been deprecated and equivalent APIs using GstIdStr have been added
1044
+    instead. For more details about this change watch Sebastian’s GStreamer Conference presentation “GQuark in GStreamer
1045
+    structures - what nonsense!”.
1046
 
1047
--   GstBaseSink gained a new custom GST_BASE_SINK_FLOW_DROPPED flow return which can be used by subclasses from the virtual
1048
-    ::render method to signal to the base class that a frame is not being rendered. This is used in e.g. waylandsink and ensures
1049
-    that elements such as fpsdisplaysink will correctly report the rate of frames rendered and dropped.
1050
+-   Most applications and plugins will have been using the plain string-based APIs which are not affected by this change.
1051
 
1052
-GstDiscoverer
1053
+#### GstVecDeque
1054
 
1055
--   New “load-serialized-info” signal to retrieve a serialized GstDiscovererInfo
1056
+-   Moved GstQueueArray as GstVecDeque into core for use in GstBus, the ringbuffer logger and in GstBufferPool, where an overly
1057
+    complicated signaling mechanism using GstAtomicQueue and GstPoll was replaced with GstVecDeque and a simple mutex/cond.
1058
 
1059
-GstSDP
1060
+-   GstQueueArray in libgstbase was deprecated in favour of GstVecDeque.
1061
 
1062
--   Add gst_sdp_message_remove_media()
1063
+-   GstAtomicQueue will be deprecated once all users in GStreamer have been moved over to GstVecDeque.
1064
 
1065
-Video Library
1066
+### Audio Library
1067
 
1068
-DRM Modifier Support for dmabufs on Linux
1069
+-   Added gst_audio_reorder_channels_with_reorder_map() which allows reordering the samples with a pre-calculated reorder map
1070
+    instead of re-calculating the reorder map every time.
1071
 
1072
-See section above.
1073
+-   Add top-surround-left and top-surround-right channel positions
1074
 
1075
-List of Video Formats for Passthrough
1076
+-   GstAudioConverter now supports more numerical types for the mix matrix, namely double, int, int64, uint, and uint64 in
1077
+    addition to plain floats.
1078
 
1079
-New helper API was added to get a list of all supported video formats, including DMA_DRM formats, and can be used to advertise
1080
-all supported formats for passthrough purposes:
1081
+### Plugins Base Utils Library
1082
 
1083
--   GST_VIDEO_FORMATS_ANY_STR, GST_VIDEO_FORMATS_ANY
1084
--   gst_video_formats_any() which can be used by bindings or for code that prefers GstVideoFormat values instead of strings.
1085
+-   New AV1 caps utility functions for AV1 Codec Configuration Record codec_data handling
1086
 
1087
-New Video Formats
1088
+-   The GstEncodingProfile (de)serialization functions are now public
1089
 
1090
--   12-bit and 16-bit A420 / A422 / A444 (YUV with alpha channel) variants:
1091
+-   GstEncodingProfile gained a way to specify a factory-name when specifying caps. In some cases you want to ensure that a
1092
+    specific element factory is used while requiring some specific caps, but this was not possible so far. You can now do
1093
+    e.g. qtmux:video/x-prores,variant=standard|factory-name=avenc_prores_ks to ensure that the avenc_prores_ks factory is used
1094
+    to produce the variant of prores video stream.
1095
 
1096
-    -   A444_12BE, A444_12LE
1097
-    -   A422_12BE, A422_12LE
1098
-    -   A420_12BE, A420_12LE
1099
-    -   A444_16BE, A444_16LE
1100
-    -   A422_16BE, A422_16LE
1101
-    -   A420_16BE, A420_16LE
1102
+### Tag Library
1103
 
1104
--   8-bit A422 / A444 (YUV with alpha channel) variant:
1105
+-   EXIF handling now support the CAPTURING_LIGHT_SOURCE tag
1106
 
1107
-    -   A422
1108
-    -   A444
1109
+-   Vorbis tag handling gained support for the LYRICS tag
1110
 
1111
--   Planar 16-bit 4:4:4 RGB formats:
1112
+### Video Library and OpenGL Library
1113
 
1114
-    -   GBR_16BE
1115
-    -   GBR_16LE
1116
+-   gst_video_convert_sample(), gst_video_convert_sample_async() gained support for D3D12 conversion.
1117
 
1118
--   RBGA, intended to be used by hardware decoders where VUYA is only supported 4:4:4 decoding surface but the stream is encoded
1119
-    with GBR color space, such as HEVC and VP9 GBR streams for example.
1120
+-   GstVideoEncoder: gst_video_encoder_release_frame() and gst_video_encoder_drop_frame() have been made available as public
1121
+    API.
1122
 
1123
--   Two tiled Mediatek 10-bit formats:
1124
+-   Navigation: gained mouse double click event support
1125
 
1126
-    -   MT2110T
1127
-    -   MT2110R
1128
+-   Video element QoS handling was improved so as to not overshoot the QoS earliest time by a factor of 2. This was fixed in the
1129
+    video decoder, encoder, aggregator and audiovisualizer base classes, as well as in the adaptivedemux, deinterlace,
1130
+    monoscope, shapewipe, and (old) videomixer elements.
1131
 
1132
--   Tiled 10-bit NV12 format NV12_10LE40_4L4 (Verisilicon Hantro)
1133
+-   GstVideoConverter gained fast paths for v210 to/from I420_10 / I422_10
1134
 
1135
-## Miscellaneous performance, latency and memory optimisations
1136
+-   New gst_video_dma_drm_format_from_gst_format() helper function that converts a video format into a dma drm fourcc / modifier
1137
+    pair, plus gst_video_dma_drm_format_to_gst_format() which will do the reverse.
1138
 
1139
--   liborc 0.4.35 (latest: 0.4.38) adds support for AVX/AVX2 and contains improvements for the SSE backend.
1140
+-   In the same vein gst_gl_dma_buf_transform_gst_formats_to_drm_formats() and
1141
+    gst_gl_dma_buf_transform_drm_formats_to_gst_formats() have been added to the GStreamer OpenGL support library.
1142
 
1143
--   liborc 0.4.37 adds support for NEON on macOS on Apple ARM64 CPUs.
1144
+-   GLDisplay/EGL: Add API (gst_gl_display_egl_set_foreign()) for overriding foreign-ness of the EGLDisplay in order to control
1145
+    whether GStreamer should call eglTerminate() or not.
1146
 
1147
--   Most direct use of the GLib GSLice allocator has been removed, as there is little evidence that it actually still provides
1148
-    much advantage over the standard system allocator on Linux or Windows in 2024. There is strong evidence however that it
1149
-    causes memory fragmentation for standard GStreamer workloads such as RTSP/RTP/WebRTC streaming.
1150
+-   Additional DMA DRM format definitions/mappings:
1151
 
1152
--   As always there have been plenty of performance, latency and memory optimisations all over the place.
1153
+    -   NV15, NV20, NV30
1154
+    -   NV12_16L32S, MT2110T, MT2110R as used on Meditek SoCs
1155
+    -   NV12_10LE40
1156
+    -   RGB15, GRAY8, GRAY16_LE, GRAY16_BE
1157
+    -   plus support for big endian DRM formats and DRM vendor modifiers
1158
 
1159
-## Tracing framework and debugging improvements
1160
+New Raw Video Formats
1161
 
1162
--   The gst-stats tool can now be passed a custom regular expression
1163
+-   Packed 4:2:2 YUV with 16 bits per channel:
1164
+    -   Y216_LE, Y216_BE
1165
+-   Packed 4:4:4:4 YUV with alpha, with 16 bits per channel:
1166
+    -   Y416_LE, Y416_BE
1167
+-   10-bit grayscale, packed into 16-bit words with left padding:
1168
+    -   GRAY10_LE16
1169
 
1170
--   gst-debug-viewer from the devtools module has seen minor improvements and fixes
1171
+### GstPlay Library
1172
 
1173
-New tracers
1174
+-   Add stream-id based selection of streams to better match playbin3’s API:
1175
+    -   Add accessors for the stream ID and selection API based on the stream ID:
1176
+        -   gst_play_stream_info_get_stream_id()
1177
+        -   gst_play_set_audio_track_id()
1178
+        -   gst_play_set_video_track_id()
1179
+        -   gst_play_set_subtitle_track_id()
1180
+        -   gst_play_set_track_ids()
1181
+    -   Deprecate the old index-based APIs:
1182
+        -   gst_play_stream_info_get_index()
1183
+        -   gst_play_set_audio_track()
1184
+        -   gst_play_set_video_track()
1185
+        -   gst_play_set_subtitle_track()
1186
+    -   Remove old playbin support
1187
+    -   Implement the track enable API based on stream selection
1188
+-   Distinguish missing plugin errors and include more details (uri, and stream-id if available) in error/warning messages:
1189
+    -   gst_play_message_get_uri()
1190
+    -   gst_play_message_get_stream_id()
1191
+    -   GST_PLAY_ERROR_MISSING_PLUGIN
1192
+    -   gst_play_message_parse_error_missing_plugin()
1193
+    -   gst_play_message_parse_warning_missing_plugin()
1194
+-   Improve play message API inconsistencies:
1195
+    -   Consistently name parse functions according to their message type:
1196
+        -   gst_play_message_parse_duration_changed()
1197
+        -   gst_play_message_parse_buffering()
1198
+    -   Deprecate the misnamed functions:
1199
+        -   gst_play_message_parse_duration_updated()
1200
+        -   gst_play_message_parse_buffering_percent()
1201
+    -   Add missing parse functions:
1202
+        -   gst_play_message_parse_uri_loaded()
1203
+        -   gst_play_message_parse_seek_done()
1204
+-   Support disabling the selected track at startup
1205
 
1206
--   None in this release.
1207
+## Miscellaneous performance, latency and memory optimisations
1208
 
1209
-Debug logging system improvements
1210
+-   dvdspu: use multiple minimal sized PGS overlay rectangles instead of a single large one to minimise the total blitting
1211
+    surface in case of disjointed rectangles.
1212
 
1213
--   Nothing major in this cycle.
1214
+-   video-frame: reduce number of memcpy() calls on frame copies if possible
1215
 
1216
-Fake video decoder
1217
+-   video-converter: added fast path conversions between v210 and I420_10 / I422_10
1218
 
1219
--   The new fakevideodec element does not decode the input bitstream, it only reads video width, height and framerate from the
1220
-    caps and then pushes out raw video frames of the expected size in RGB format.
1221
+-   As always there have been plenty of performance, latency and memory optimisations all over the place.
1222
 
1223
--   It draws a snake moving from left to right in the middle of the frame, which is reasonably light weight and still provides
1224
-    an idea about how smooth the rendering is.
1225
+## Miscellaneous other changes and enhancements
1226
 
1227
-## Tools
1228
+-   netclientclock: now also emits the clock synced signal when corrupted to signal that sync has been lost.
1229
 
1230
--   gst-launch-1.0 gained a new --prog-name command line option to set the program name, which will be used by GTK and GStreamer
1231
-    to set the class or app-id.
1232
+-   GstValue, GstStructure: can now (de)serialize string arrays (G_TYPE_STRV)
1233
 
1234
--   gst-play-1.0 now defaults to using playbin3, but can still be made to use the old playbin by passing the --use-playbin2
1235
-    command line argument.
1236
-
1237
-## GStreamer FFmpeg wrapper
1238
+## Tracing framework and debugging improvements
1239
 
1240
--   New avvideocompare element to compare two incoming video buffers using a specified comparison method (e.g. SSIM or PSNR).
1241
+-   dot files (pipeline graph dumps) are now written to disk atomically
1242
 
1243
--   Prefer using FFmpeg Musepack decoder/demuxer over musepackdec as they work better with decodebin3 and playbin3 which likes
1244
-    to have parsers and decoders separate.
1245
+-   tracing: add hooks for gst_pad_send_event_unchecked() and GstMemory init/free
1246
 
1247
--   Added codec mappings for AV1, MxPEG, FFVHuff video
1248
+-   tracers: Simplify params handling using GstStructure and object properties and move tracers over to property-based
1249
+    configuration (leaks, latency).
1250
 
1251
--   Added raw video format support for P010, VUYA, Y410, P012, Y212 and Y412.
1252
+-   textoverlay, clockoverlay, timeoverlay: new "response-time-compensation" property that makes the element render the text or
1253
+    timestamp twice: Once in the normal location and once in a different sequentially predictable location for every frame. This
1254
+    is useful when measuring video latency by taking a photo with a camera of two screens showing the test video overlayed with
1255
+    timeoverlay or clockoverlay. In these cases, you will often see ghosting if the display’s pixel response time is not great,
1256
+    which makes it difficult to discern what the current timestamp being shown is. Rendering in a different location for each
1257
+    frame makes it easy to tell what the latest timestamp is. In addition, you can also use the fade-time of the previous frame
1258
+    to measure with sub-framerate accuracy when the photo was taken, not just clamped to the framerate, giving you a higher
1259
+    precision latency value.
1260
 
1261
--   Newer, non-deprecated APIs are used by the plugin when built with FFmpeg 6.0 or newer.
1262
+New tracers
1263
 
1264
--   The FFmpeg meson subproject wrap has been updated to v6.1
1265
+-   memory-tracer: New tracer that can track memory usage over time
1266
 
1267
--   Note: see Known Issues section below for known issues with FFmpeg 6.0.0 and the latest FFmpeg 7.x release
1268
+-   pad-push-timings: New tracer for tracing pad push timings
1269
 
1270
-## GStreamer RTSP server
1271
+-   pcap-writer: New tracer that can store the buffers flowing through a pad as PCAP file
1272
 
1273
--   New “ensure-keyunit-on-start” property: While the suspend modes NONE and PAUSED provided a low startup latency for
1274
-    connecting clients, it did not ensure that streams started on fresh data. With this new property it is possible to maintain
1275
-    the low startup latency of those suspend modes while also ensuring that a stream starts on a key unit. Furthermore, by
1276
-    setting the new “ensure-keyunit-on-start-timeout” property it is also possible to accept a key unit of a certain age, but
1277
-    discard it if too much time has passed and instead force a new key unit.
1278
+Dot tracer/viewer
1279
 
1280
--   rtspclientsink: apply “port-range” property for RTCP port selection as well
1281
+-   New dots tracer that simplifies the pipeline visualization workflow:
1282
+    -   Automatically configures dot file directory and cleanup
1283
+    -   Integrates with the pipeline-snapshotS tracer to allow dumping pipeline on demand from the gst-dots-viewer web interface
1284
+    -   Uses GST_DEBUG_DUMP_DOT_DIR or falls back to $XDG_CACHE_HOME/gstreamer-dots
1285
+-   New gst-dots-viewer web tool for real-time pipeline visualization
1286
+    -   Provides interface to browse and visualize pipeline dot files
1287
+    -   Features on-demand pipeline snapshots via “Dump Pipelines” button
1288
+    -   WebSocket integration for live updates
1289
+    -   Uses GST_DEBUG_DUMP_DOT_DIR or falls back to $XDG_CACHE_HOME/gstreamer-dots
1290
+-   Simple usage:
1291
+    -   gst-dots-viewer (starts server)
1292
+    -   GST_TRACERS=dots gst-launch-1.0 videotestsrc ! autovideosink (runs with tracer)
1293
+    -   View at http://localhost:3000
1294
 
1295
-## GStreamer VA-API support
1296
+Debug logging system improvements
1297
 
1298
-GstVA
1299
+-   Nothing major in this cycle.
1300
 
1301
--   vah264dec, vah265dec, vavp8dec, vavp9dec, vampeg2dec and vaav1dec were promoted to rank PRIMARY+1 on Linux
1302
+## Tools
1303
 
1304
--   Improved support for dmabuf use cases. All va elements now negotiate the new and improved dmabuf capabilities with explicit
1305
-    modifiers. This supports both import and export of dmabufs.
1306
+-   gst-inspect-1.0 documents tracer properties now and shows element flags
1307
 
1308
--   Added vaav1enc element, available in recent Intel and AMD GPUs
1309
+-   gst-launch-1.0 will show error messages posted during pipeline construction
1310
 
1311
--   Added support for the experimental VA-Win32 backend. It needs at least libva 1.18
1312
+## GStreamer FFmpeg wrapper
1313
 
1314
--   Improved handling of multi-GPU systems. Still, sharing buffers among them is not advised.
1315
+-   Add support for H.266/VVC decoder
1316
 
1317
--   Bumped minimum libva version to 1.12
1318
+-   Add mappings for the Hap video codec, the Quite OK Image codec (QOI) and the M101 Matrox uncompressed SD video codec.
1319
 
1320
--   Enhanced support for RadeonSI Mesa driver for 10bit decoding
1321
+-   Don’t register elements for which we have no caps and which were non-functional as a result (showing unknown/unknown caps).
1322
 
1323
--   Register elements only for allowed drivers (Intel and Mesa, for the moment)
1324
+-   The S302M audio encoder now supports up to 8 channels.
1325
 
1326
-GStreamer-VAAPI
1327
+-   Various tag handling improvements in the avdemux wrappers, especially when there are both upstream tags and additional local
1328
+    tags.
1329
 
1330
--   The new GstVA elements (see above) should be preferred when possible.
1331
+-   Support for 10-bit grayscale formats
1332
 
1333
--   Ranks of decoders were demoted to NONE so they won’t be used automatically by playbin and similar elements anymore.
1334
+## GStreamer RTSP server
1335
 
1336
--   Clean-ups and minimal fixes.
1337
+-   GstRTSPOnvifMediaFactoryClass gained a ::create_backchannel_stream() vfunc. This allows subclasses to delay creation of the
1338
+    backchannel to later in the sequence, which is useful in scenarios where the RTSP server acts as a relay and the supported
1339
+    caps depend on the upstream camera, for example.
1340
 
1341
--   gstreamer-vaapi should be considered deprecated and may be discontinued as soon as the va plugin is fully feature
1342
-    equivalent. Users who rely on gstreamer-vaapi are encouraged to migrate and test the va elements at the earliest
1343
-    opportunity.
1344
+-   The ONVIF backchannel example now features support for different codecs, including AAC.
1345
 
1346
-## GStreamer Video4Linux2 support
1347
+## VA-API integration
1348
 
1349
--   New uvcsink element, based on v4l2sink allow streaming your pipeline as a UVC camera using Linux UVC Gadget driver.
1350
+VA plugin
1351
 
1352
--   v4l2src now supports 10/12/14/16-bit bayer formats.
1353
+-   New VA elements:
1354
 
1355
--   Stateful decoders now pass too large encoded frames over multiple buffers.
1356
+    -   H.266 / VVC video decoder
1357
+    -   VP8 video encoder
1358
+    -   JPEG encoder
1359
+    -   VP9 + VP8 alpha decodebin
1360
 
1361
--   AV1 Stateless video decoder.
1362
+    Remember that the availability of these elements depends on your platform and driver.
1363
 
1364
--   Stateless decoders now tested using Virtual driver (visl), making it possible to run the tests in the cloud based CI
1365
+-   There are a lot of improvements and bug fixes, to hightlight some of them:
1366
 
1367
-## GStreamer OMX
1368
+    -   Improved B pyramid mode for both H264 and HEVC encoding when reference frame count exceeds 2, optimizing pyramid level
1369
+        handling.
1370
+    -   Enabled ICQ and QVBR modes for several encoders, including H264, H265, VP9 and AV1.
1371
+    -   Updated rate control features by setting the quality factor parameter, while improving bitrate change handling.
1372
+    -   Improved VP9 encoder’s ability to avoid reopening or renegotiating encoder settings when parameters remain stable.
1373
+    -   Added functionality to adjust the trellis parameter in encoders.
1374
+    -   Optimize encoders throughput with the introduction of output delay.
1375
+    -   Added support for new interpolation methods for scaling and improvements for handling interlace modes.
1376
 
1377
--   The gst-omx module has been removed. The OpenMAX standard is long dead and even the Raspberry Pi OS no longer supports it.
1378
-    There has not been any development since 1.22 was released. Users of these elements should switch to the Video4Linux-based
1379
-    video encoders and decoders which have been the standard on embedded Linux for quite some time now.
1380
+GStreamer-VAAPI is now deprecated
1381
 
1382
--   Hardware vendors which still use OpenMAX are known to have non-standard forks and it is recommended that they maintain it
1383
-    while planning their move to the Video4Linux API.
1384
+-   gstreamer-vaapi has been deprecated and is no longer actively maintained. Users who rely on gstreamer-vaapi are encouraged
1385
+    to migrate to the va plugin’s elements at the earliest opportunity.
1386
 
1387
-## GStreamer Editing Services and NLE
1388
+-   vaapi*enc encoders have been demoted to a rank of None, so will no longer be autoplugged in encodebin. They have also no
1389
+    longer advertise dmabuf caps or unusual pixel formats on their input pad template caps.
1390
 
1391
--   Implement a gesvideoscale effect which gives user the ability to chooses where a clip has to be scaled in the chain of
1392
-    effects. By default scaling is done in the compositor.
1393
+## GStreamer Video4Linux2 support
1394
 
1395
--   Add support for gessrc as sub-timeline element so third party can implement their own formatters and use their timelines as
1396
-    sub-timelines. Before that, only timelines serialized as files on the filesystem could be loaded as sub-timelines (using
1397
-    gesdemux).
1398
+-   Implemented DMA_DRM caps negotiation
1399
 
1400
--   Implement a new GESDiscovererManager singleton object making management of the discoverers used to discoverer media files
1401
-    cleaner and allowing to expose the following APIs:
1402
+-   Framerate negotiation improvements
1403
 
1404
-    -   load-serialize-info signal so GstDiscovererInfo can be serialized by users the way they like and load them without
1405
-        requiring discovering the file when reloading a project.
1406
-    -   source-setup signal so user can tweak source elements during discovery
1407
+-   Support for P010 and BGR10A2_LE pixel formats
1408
 
1409
--   Expose GESFrameCompositionMeta in public API so user can implement their own effects targetting GES which take into account
1410
-    that meta.
1411
+-   The V4L2 stateless decoders now support inter-frame resolution changes for AV1 and VP9
1412
 
1413
--   Expose audioconvert:mix-matrix property in audio sources
1414
+-   The V4L2 stateful encoders can now handle dynamic frame rates (0/1), and colorimetry negotiation was also improved.
1415
 
1416
--   Port GESPipeline rendering to use encodebin2. This allows rendering timelines directly with a muxing sink (like hlssinkX
1417
-    etc..) and leverage all new features of that new element.
1418
+## GStreamer Editing Services and NLE
1419
 
1420
-ges-launch
1421
+-   Added support for reverse playback with a new reverse property on nlesource which is exposed child property on GESClip
1422
 
1423
--   Fix setting keyframes
1424
+-   Input channels reordering for flexible audio channel mapping
1425
 
1426
--   Add an ignore-eos option
1427
+-   Added support for transition in the ges-launch-1.0 timeline description format
1428
 
1429
--   Allow overriding container profile so that the user can build encoding profiles following the media format of a specific
1430
-    media file, for example, but ensuring it is muxed using a specific format
1431
+-   Added support for GstContext sharing in GESTimeline
1432
 
1433
--   Ensure sink elements are inside a GstBin and never in a GstPipeline
1434
+-   Added basic support for duplicated children property in GESTimelineElement
1435
 
1436
--   Move +effect stack effects from source to last effect added, so it feels more natural to user as adding them at the
1437
-    beginning of the chain while the syntax is +effect felt wrong
1438
+-   validate: Add an action type to group clips
1439
 
1440
 ## GStreamer validate
1441
 
1442
--   In action types, add a way to avoid checking property value after setting it, in case elements do it async for example.
1443
-
1444
--   Add a vmethod to free GstValidateActionParameters to be more binding friendly.
1445
+-   Added new action types:
1446
 
1447
--   Allow scenarios to define the pipeline state target in the metadata instead of assuming PLAYING state.
1448
+    -   start-http-server: Start a new instance of our HTTP test server
1449
+    -   http-requests: Send an HTTP request to a server, designed to work with our test http server
1450
 
1451
--   Add support to run sub-pipelines/scenarios
1452
+-   HTTP server control endpoints to allow scenarios to control the server behavior, allowing simulating server failures from
1453
+    tests
1454
 
1455
-    -   Added support to forward buffers from appsink to appsrc
1456
+-   Improved the select-streams action type, adding support for selecting the same streams several times
1457
 
1458
--   Add a way to set pipeline base-time, start-time and force using the system clock.
1459
+-   Added support for forcing monitoring of all pipelines in validatetest files
1460
 
1461
--   Add a ‘fill-mode’ to the appsrc-push action type so we can create some type of streams easily using an appsrc, giving
1462
-    control when writing scenarios without requiring files with the content.
1463
+-   Enhanced support for expected Error messages on the bus
1464
 
1465
--   Add a “select-streams” action type to test “stream aware” elements.
1466
+-   Added ways to retrieve HTTP server port in .validatetest files
1467
 
1468
--   Add a way to wait for a property to reach a specified value before executing an action. For example it is possible to wait
1469
-    for a pad to get some specific caps set before executing an action.
1470
-
1471
--   validate: Add support to replace variables in deeply nested structures in particular for more complex action types where
1472
-    some of the properties are inside structures.
1473
-
1474
--   Fixed compatibility with Python 3.12.
1475
+-   Added support for lldb in the gst-validate-launcher
1476
 
1477
 ## GStreamer Python Bindings
1478
 
1479
@@ -898,2292 +925,391 @@
1480
 pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
1481
 e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
1482
 
1483
--   Added a GstTagList override that makes a tag list act like a dict
1484
+-   The python Meson build option has been renamed to python-exe (and will yield to the monorepo build option of the same name
1485
+    if set, in a monorepo build context).
1486
 
1487
--   Fix build and usage in Windows
1488
+-   Added an iterator for AnalyticsRelationMeta
1489
 
1490
--   Various fixes for Python >= 3.12
1491
+-   Implement __eq__ for Mtd classes
1492
 
1493
--   Rework libpython loading to be relocatable
1494
-
1495
--   Fix libpython dlopen on macOS
1496
+-   Various build fixes and Windows-related fixes.
1497
 
1498
 ## GStreamer C# Bindings
1499
 
1500
--   The GStreamer C# bindings have been updated to a more recent version of GtkSharp and the bindings have been regenerated with
1501
-    that version.
1502
-
1503
--   GStreamer API added in recent GStreamer releases is now available
1504
-
1505
--   GstRtspServer bindings have been added, plus an RTSP server example
1506
+-   The C# bindings have been updated for the latest GStreamer 1.26 API
1507
 
1508
 ## GStreamer Rust Bindings and Rust Plugins
1509
 
1510
-The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the twice-a-year
1511
-GNOME release cycle.
1512
+The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the gtk-rs
1513
+release cycle.
1514
 
1515
-The latest release of the bindings (0.22) has already been updated for the new GStreamer 1.24 APIs, and works with any GStreamer
1516
+The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
1517
 version starting at 1.14.
1518
 
1519
 gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
1520
-and plugins. The GStreamer 1.24 binaries track the 0.12 release series of gst-plugins-rs, and fixes from newer versions will be
1521
-backported as needed to the 0.12 brach for future 1.24.x bugfix releases.
1522
+and plugins. The GStreamer 1.26 binaries will be tracking the main branch of gst-plugins-rs for starters and then track the 0.14
1523
+branch once that has been released (around summer 2025). After that, fixes from newer versions will be backported as needed to
1524
+the 0.14 branch for future 1.26.x bugfix releases.
1525
 
1526
 Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
1527
 
1528
-### WebRTC
1529
-
1530
--   New element webrtcsrc that can act as a recvonly WebRTC client. Just like the opposite direction, webrtcsink, this can
1531
-    support various different WebRTC signalling protocols. Some are included with the plugin and provide their own element
1532
-    factory for easier usage but it is also possible for applications to provide new signalling protocol implementations.
1533
-
1534
--   webrtcsink now exposes the signaller as property and allows implementing a custom signaller by connecting signal handlers to
1535
-    the default signaller.
1536
-
1537
--   A new signaller and webrtcsink implementation for Janus’ VideoRoom implementation. The corresponding webrtcsrc signaller
1538
-    implementation is currently in a merge request in GitLab.
1539
-
1540
--   New whepsrc element that can receive WHEP WebRTC streams. This is currently not based on webrtcsrc but in the future a new
1541
-    element around webrtcsrc will be added.
1542
-
1543
--   New whipserversrc element around webrtcsrc for ingesting WHIP WebRTC streams in GStreamer.
1544
-
1545
--   New whipclientsink element around webrtcsink for publishing WHIP WebRTC streams from GStreamer. This deprecates the old
1546
-    whipsink element.
1547
-
1548
--   A new signaller and webrtcsink implementation for LiveKit. The corresponding webrtcsrc signaller implementation was merged
1549
-    into the git repository recently.
1550
-
1551
--   A new signaller and webrtcsink implementation for AWS Kinesis Video Streams
1552
-
1553
--   webrtcsink has a new payloader-setup signal to allow the application more fine grained control over the RTP payloader
1554
-    configuration, similar to the already existing encoder-setup signal for encoders.
1555
-
1556
--   webrtcsrc gained support for a custom navigation event protocol over the data channel, which is compatible with the
1557
-    navigation event protocol supported by webrtcsink.
1558
+### New Rust elements
1559
 
1560
--   webrtcsink supports encoded streams as input. Using encoded streams will disable webrtcsinks congestion control changing any
1561
-    encoded stream parameters.
1562
+-   awstranscriber2, awstranslate: New elements around the AWS transcription and translation services.
1563
 
1564
--   webrtcsink and webrtcsrc have a new signal ‘request-encoded-filter’ to allow transformations of the encoded stream. This can
1565
-    be used, for example, for the same use-cases as the WebRTC Insertable Streams API.
1566
+-   cea708mux: New element that allows to mux multiple CEA708 services into a single stream.
1567
 
1568
--   gstwebrtc-api: JavaScript API for interacting with the default signalling protocol used by webrtcsink / webrtcsrc.
1569
+-   cdpserviceinject: New element for injecting a CDP service descriptor into closed caption CDP packets
1570
 
1571
-… and various other smaller improvements!
1572
+-   cea708overlay: New element for overlaying CEA608 / CEA708 closed captions over video streams.
1573
 
1574
-### RTSP
1575
+-   gopbuffer: New element that can buffer a minimum duration of data delimited by discrete GOPs (Group of Picture)
1576
 
1577
--   New rtspsrc2 element. Only a subset of RTSP features are implemented so far:
1578
-    -   RTSP 1.0 support
1579
-    -   TCP, UDP, UDP-Multicast lower transports
1580
-    -   RTCP SR, RTCP RR, RTCP-based A/V sync
1581
-        -   Tested for correctness in multicast cases too
1582
-    -   Lower transport selection and order (NEW!)
1583
-        -   The existing rtspsrc has a hard-coded order list for lower transports
1584
-    -   Many advanced features are not implemented yet, such as non-live support. See the README for the current status.
1585
+-   hlscmafsink, hlssink3: New single-variant HLS sink elements that can output CMAF (fMP4) or MPEG-TS fragments.
1586
 
1587
-### GTK4
1588
+-   hlsmultivariantsink: New sink element that can output an HLS stream with multiple variants
1589
 
1590
--   Support for rendering GL textures on X11/EGL, X11/GLX, Wayland, macOS, and WGL/EGL on Windows.
1591
+-   mpegtslivesrc: New source element that can wrap a live MPEG-TS source (e.g. SRT or UDP source) and provides a clock based on
1592
+    the PCR.
1593
 
1594
--   Create a window for testing purposes when running in gst-launch-1.0 or if GST_GTK4_WINDOW=1 is set.
1595
+-   onvifmetadataextractor: New element that can extract ONVIF metadata from GstMetas into a separate stream
1596
 
1597
--   New background-color property for setting the color of the background of the frame and the borders, if any. This also allows
1598
-    setting a fully transparent background.
1599
+-   originalbuffer: New plugin with originalbuffersave / originalbufferrestore elements that allow saving an original buffer,
1600
+    modifying it for analytics, and then restoring the original buffer content while keeping any additional metadata that was
1601
+    added.
1602
 
1603
--   New scale-filter property for defining how to scale the frames.
1604
+-   polly: New element around the AWS text-to-speech polly services
1605
 
1606
--   Add Python example application to the repository.
1607
+-   quinn: New plugin that contains various QUIC-based elements for working with raw QUIC streams, RTP-over-QUIC (RoQ) and
1608
+    WebTransport.
1609
 
1610
--   Various bugfixes, including support for the new GTK 4.14 GL renderer. The plugin needs to be built with at least the
1611
-    gtk_v4_10 feature to work with the new GTK 4.14 GL renderer, and will work best if built with the gtk_v4_14 feature.
1612
+-   relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata.
1613
 
1614
-### Closed Caption
1615
+-   New Rust RTP payloaders and depayloaders for AC3, AMR, JPEG, KLV, MPEG-TS (MP2T), MPEG-4 (MP4A, MP4G), Opus, PCMU (uLaw),
1616
+    PCMA (aLaw), VP8, VP9.
1617
 
1618
--   Add cea608tocea708 element for upconverting CEA-608 captions to their CEA-708 representation.
1619
+-   New rtpbin2 based on rtprecv / rtpsend elements
1620
 
1621
--   Add support for translations within transcriberbin.
1622
+-   speechmatics: New transcriber / speech-to-text and translation element
1623
 
1624
--   awstranscriber supports translating the transcribed text into different languages, including multiple languages at the same
1625
-    time.
1626
-
1627
--   awstranscriber is using the new HTTP/2-based API now instead of the WebSocket-based one.
1628
-
1629
-### Other new elements
1630
-
1631
--   New awss3putobjectsink that works similar to awss3sink but with a different upload strategy.
1632
+-   New spotifylyricssrc element for grabbing lyrics from Spotify.
1633
 
1634
--   New hlscmafsink element for writing HLS streams with CMAF/ISOBMFF fragments.
1635
+-   streamgrouper: New element that takes any number of streams as input and adjusts their stream-start events in such a way
1636
+    that they all belong to the same stream group.
1637
 
1638
--   New inter plugin with new intersink and intersrc elements that allow to 1:N connect different pipelines in the same process.
1639
-    This is implemented around the appsrc / appsink-based StreamProducer API that is provided as part of the GStreamer Rust
1640
-    bindings, and is also used inside webrtcsrc and webrtcsink.
1641
+-   translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions.
1642
 
1643
--   New livesync element that allows maintaining a contiguous live stream without gaps from a potentially unstable source.
1644
+-   tttocea708: New element for converting timed-text to CEA708 closed captions
1645
 
1646
--   New isomp4mux non-fragmented MP4 muxer element.
1647
+-   A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library.
1648
 
1649
-### Other improvements
1650
+For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
1651
+1.24) and 0.14.x (shipped with GStreamer 1.26).
1652
 
1653
--   audiornnoise
1654
-    -   Attach audio level meta to output buffers.
1655
-    -   Add voice detection threshold property
1656
--   fmp4mux
1657
-    -   Add support for CMAF-style chunking, e.g. low-latency / LL HLS and DASH
1658
-    -   Add support for muxing Opus, VP8, VP9 and AV1 streams
1659
-    -   Add ‘offset-to-zero’ property and make media/track timescales configurable
1660
--   hlssink3
1661
-    -   Allow adding EXT-X-PROGRAM-DATE-TIME tag to the manifest.
1662
-    -   Allow generating I-frame-only playlist
1663
--   ndi
1664
-    -   Closed Caption support in ndisrc / ndisink
1665
-    -   Zero-copy output support in ndisrc for raw video and audio
1666
--   spotifyaudiosrc: Support configurable bitrate
1667
-
1668
-For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.9 (shipped with GStreamer
1669
-1.22) and 0.12 (shipped with GStreamer 1.24).
1670
-
1671
-## Cerbero Rust support
1672
-
1673
--   As of GStreamer 1.24, the GStreamer Rust plugins are shipped as part of our binary packages on all major platforms. This
1674
-    includes Android and iOS now in addition to macOS and Windows/MSVC.
1675
+Note that at the time of GStreamer 1.26.0 gst-plugins-rs 0.14 was not released yet and the git main branch was included instead
1676
+(see above). As such, the ChangeLog also did not contain the changes between the latest 0.13 release and 0.14.0.
1677
 
1678
 ## Build and Dependencies
1679
 
1680
--   Meson >= 1.1 is now required for all modules
1681
-
1682
--   The GLib requirement has been bumped to >= 2.64
1683
+-   Meson >= 1.4 is now required for all modules
1684
 
1685
--   liborc >= 0.4.38 is strongly recommended
1686
+-   liborc >= 0.4.41 is strongly recommended
1687
 
1688
 -   libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
1689
 
1690
--   gst-libav was updated for FFmpeg API deprecations and removals
1691
+-   The ASIO plugin dropped its external SDK header dependency, so it can always be built and shipped more easily.
1692
 
1693
--   libwebpmux is required for the animated WebP support
1694
+-   Require tinyalsa >= 1.1.0 when building the tinyalsa plugin
1695
 
1696
--   The wpe plugin gained support for the WPEWebKit 2.0 API version
1697
+-   The srtp plugin now requires libsrtp2, support for libsrtp1 was dropped.
1698
 
1699
--   Bumped minimum libva version to 1.12 for the va plugin.
1700
+Monorepo build
1701
 
1702
--   zxing: added support for the zxing-c++ 2.0 API
1703
+-   The FFmpeg subproject wrap was updated to 7.1
1704
 
1705
--   The ptp-helper for Precision Time Protocol (PTP) support in GStreamer core has been rewritten in Rust, and the minimum
1706
-    required Rust version for building this is 1.48, i.e. the version currently in Debian oldstable. On Windows, at least Rust
1707
-    1.54 is needed. There is a new ptp-helper Meson feature option that can be used to make sure everything needed for PTP
1708
-    support is available (if set to ptp-helper=enabled). cargo is not required for building.
1709
-
1710
--   gst-plugins-rs requires Rust 1.70 or newer.
1711
-
1712
--   Link to libsoup at build time in all cases on non-Linux, and only load it dynamically on Linux systems where we might need
1713
-    to support a mix of applications with dependencies that might be using libsoup2 or libsoup3. A “soup-version” meson build
1714
-    option was added to prefer a specific version. Distros should make sure that libsoup is still a package dependency, since
1715
-    it’s still required at runtime for the soup and adaptivedemux2 plugins to function.
1716
-
1717
--   libjack is now dynamically loaded at runtime by the JACK audio plugin, and no longer a hard build dependency. However, it
1718
-    still is a runtime dependency, so distros should make sure it remains a package dependency.
1719
-
1720
-Monorepo build (née gst-build)
1721
-
1722
--   There is now a top-level meson build option to enable/require webrtc
1723
-
1724
--   The FFmpeg subproject wrap was udpated to 6.1
1725
-
1726
--   A libvpx wrap was added (for VP8/VP9 software encoding/decoding)
1727
+-   Many other wrap updates
1728
 
1729
 gstreamer-full
1730
 
1731
--   Add full static build support, including on Windows: Allow a project to use gstreamer-full as a static library and link to
1732
-    create a binary without dependencies. Introduce the meson build option gst-full-target-type to select the build type:
1733
-    dynamic (default) or static.
1734
-
1735
--   Registers all full features in a plugin now to offer the possibility to get information at the plugin level and get it from
1736
-    the registry. All the full features are now registered in a fullstaticfeatures meta plugin instead of having a NULL plugin.
1737
+-   No major changes
1738
 
1739
 Development environment
1740
 
1741
--   add VSCode IDE integration
1742
+-   Local pre-commit checks via git hooks have been moved over to pre-commit, including the code indentation check.
1743
 
1744
--   gst-env.py: Output a setting for the prompt with --only-environment
1745
+-   Code indentation checking no longer relies on a locally installed copy of GNU indent (which had different outcomes depending
1746
+    on the exact version installed). Instead pre-commit will automatically install the gst-indent-1.0 indentation tool through
1747
+    pip, which also works on Windows and macOS.
1748
 
1749
-### Cerbero
1750
+-   A pre-commit hook has been added to check documentation cache updates and since tags.
1751
 
1752
-Cerbero is a meta build system used to build GStreamer plus dependencies on platforms where dependencies are not readily
1753
-available, such as Windows, Android, iOS, and macOS.
1754
+-   Many meson wrap updates, including to FFmpeg 7.1
1755
 
1756
-General improvements
1757
+-   The uninstalled development environment should work better on macOS now, also in combination with homebrew (e.g. when
1758
+    libsoup comes from homebrew).
1759
 
1760
--   New plugins have been added
1761
-    -   codecalpha dvbsubenc rtponvif switchbin videosignal isac ivfparse inter rtspsrc2
1762
--   JACK plugin is now available all platforms (previously only Linux), and will be loaded if the JACK library is found at
1763
-    plugin load time
1764
--   Several recipes were ported to meson, leading to faster builds and better MSVC support
1765
-    -   ffmpeg, gperf, lame, libvpx, ogg, opencore-amr, sbc, speex, tiff, webrtc-audio-processing
1766
-    -   For more information, please see the tracker issue
1767
--   Some recipes are now outdated or unnecessary and have been removed:
1768
-    -   intltool, libkate
1769
--   Various recipe updated to their latest versions
1770
--   Rust toolchain updated to 1.76.0 (latest as of writing)
1771
--   Rust plugins are now stripped and debug info split out correctly, reducing their size
1772
--   Fix several spurious build issues, especially with the Rust toolchain
1773
--   CMake is picked up from the system if available
1774
--   Cerbero will no longer OOM or consume excessive resources on low-end systems
1775
--   Python recipes have been moved from setuptools to virtualenv
1776
--   Fixed support for Python 3.12+
1777
-
1778
-macOS
1779
-
1780
--   Minimum macOS version has been increased to 10.13 (High Sierra)
1781
-    -   Released 5½ years ago, >95% marketshare
1782
--   Fix macOS app store validation issue caused by absolute RPATHs
1783
--   Rosetta is automatically installed if required for universal builds on Apple Silicon
1784
--   The official macOS binaries now also include static libs for the GStreamer Rust plugins
1785
-
1786
-iOS
1787
-
1788
--   Minimum iOS version has been increased to 12.0
1789
--   The iOS binary packages now include the GStreamer Rust plugins
1790
--   tremor and ivorbisdec plugins are no longer shipped on iOS
1791
-
1792
-Windows
1793
-
1794
--   New features shipped with the official binaries:
1795
-    -   plugins: dwrite d3d12 (MSVC) soundtouch (MSVC) taglib (MSVC) webrtcdsp (MSVC)
1796
-    -   plugin features: d3d11-wgc (Windows Graphics Capture Support)
1797
-    -   libraries: gstdxva-1.0
1798
--   New qml6 plugin can be built on Windows with the qt6 variant enabled
1799
-    -   Similar to qt5, this plugin cannot be included in the official binaries
1800
--   GLib process handling helpers for Windows are now shipped
1801
--   Windows 11 SDK is now required for builds
1802
-    -   Visual Studio 2019 and newer ship this SDK
1803
--   MSYS is now deprecated for building Windows binaries, will be removed in the next release
1804
-    -   MSYS2 is required, and the bootstrap script tools/bootstrap-windows.ps can install it for you
1805
--   Windows bootstrap script tools/bootstrap-windows.ps1 is much more interactive and user-friendly now
1806
--   Fixed Pango crash on 32-bit Windows
1807
--   WiX packaging now works with cross-windows builds from linux
1808
-
1809
-Linux
1810
-
1811
--   Linux packages will now also include static libs for the GStreamer Rust plugins
1812
--   Add Python support for multiarch distributions
1813
--   Build fixes for various recipes on multiarch distributions
1814
--   Use arch-specific libdir correctly on multiarch distributions
1815
--   gst-omx was removed from gstreamer, and hence is no longer shipped
1816
--   Fixed Gentoo support
1817
--   Added support for RHEL 9
1818
--   Added support for Rocky Linux
1819
--   Added support for Manjaro Linux
1820
-
1821
-Android
1822
-
1823
--   Android NDK has been updated to r25c
1824
-    -   Only the Clang toolchain is used from the NDK now (both target and host)
1825
-    -   gnustl has been completely removed
1826
--   The Android binary packages now include the GStreamer Rust plugins
1827
--   tremor and ivorbisdec plugins are no longer shipped on Android
1828
--   openh264 plugin no longer enables ASM optimizations on Android x86 due to relocation errors
1829
+-   New python-exe Meson build option to override the target Python installation to use. This will be picked up by the
1830
+    gst-python and gst-editing-sevices subprojects.
1831
 
1832
 ## Platform-specific changes and improvements
1833
 
1834
 ### Android
1835
 
1836
--   Add NDK implementation of Android MediaCodec. This reduces the amount of Java <-> native calls, which should reduce
1837
-    overhead.
1838
-
1839
--   Add support for AV1 to the androidmedia video encoder and decoder.
1840
+-   The recommended mechanism to build Android apps has changed from Android.mk to CMake-in-Gradle using
1841
+    FindGStreamerMobile.cmake. Android.mk support has been deprecated and will be removed in the next stable release. For more
1842
+    information, see below, in the Cerbero section.
1843
+-   More H.264/H.265 profiles and levels have been added to the androidmedia hardware-accelerated video encoder and decoder
1844
+    elements, along with mappings for a number of additional pixel formats for P010, packed 4:2:0 variants and RGBA layouts,
1845
+    which fixes problems with android decoders refusing to output raw video frames with decoders that announce support for these
1846
+    common pixel formats and only allow the ‘hardware surfaces output’ path.
1847
 
1848
 ### Apple macOS and iOS
1849
 
1850
--   osxaudio: audio clock improvements (interpolate based on system time)
1851
-
1852
--   Set activation policy in gst_macos_main() and in osxvideosink and glimagesink. Setting the policy to
1853
-    NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on
1854
-    them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front
1855
-    again. This change also allows osxvideosink to receive navigation events correctly.
1856
-
1857
-### Windows
1858
-
1859
--   New DirectWrite text rendering plugin with dwriteclockoverlay, dwritetimeoverlay, dwritetextoverlay, dwritesubtitlemux, and
1860
-    dwritesubtitleoverlay elements, including closed caption overlay support in dwritetextoverlay.
1861
-
1862
--   PTP clock support is now also available on Windows
1863
-
1864
--   qml6d3d11sink is a new Direct3D11 Qt6 QML sink for Windows as an alternative to the existing qml6glsink.
1865
-
1866
--   wasapi2 audio plugin:
1867
-
1868
-    -   Added an option to monitor a loopback device’s mute state
1869
-    -   Allows process loopback capture on Windows 10
1870
-
1871
--   win32ipc supports zero-copy rendering now through a shared bufferpool.
1872
-
1873
--   Add a Windows-specific plugin loader implementation (gst-plugin-scanner), so plugin loading during registry updates happens
1874
-    in an external process on Windows as well.
1875
-
1876
--   gst_video_convert_sample() which is often used for thumbnailing gained a D3D11 specific conversion path.
1877
-
1878
--   d3d11 plugin:
1879
-
1880
-    -   d3d11mpeg2dec element is promoted to PRIMARY + 1 rank
1881
-    -   Added d3d11ipcsrc and d3d11ipcsink elements for zero-copy GPU memory sharing between multiple processes.
1882
-    -   Added HLSL shader pre-compilation (at binary build time) support in MSVC build.
1883
-    -   d3d11videosink and d3d11convert elements support 3D transform, MSAA (MultiSampling Anti-Aliasing) and anisotropic
1884
-        sampling method.
1885
-    -   Added support for more raw video formats by using compute shader. A list of supported raw video formats can be found in
1886
-        the d3d11videosink plugin documentation.
1887
-    -   Added d3d11overlay element for applications to be able to draw/blend an overlay image on Direct3D11 texture directly.
1888
-
1889
--   New Direct3D12 plugin: From a video decoding, conversion, composition, and rendering point of view, this new d3d12 plugin is
1890
-    feature-wise near equivalent to the d3d11 plugin. Notable differences between d3d12 and d3d11 are:
1891
-    -   The GStreamer Direct3D12 integration layer is not exposed as a GStreamer API yet. Thus, other plugins such as amfcodec,
1892
-        nvcodec, qsv, and dwrite are not integrated with d3d12 yet.
1893
-    -   H.264 video encoding support via d3d12h264enc element.
1894
-        -   Direct3D12 video encoding API requires Windows 11 or DirectX 12 Agility SDK
1895
-    -   IPC, overlay, and deinterlace elements are not implemented in d3d12
1896
-    -   Windows Graphics Capture API based screen capturing is not implemented in d3d12
1897
-    -   In this release, MSVC is the only officially supported toolchain for the d3d12 plugin build.
1898
-    -   All d3d12 elements are zero ranked for now. Users will need to adjust rank of each d3d12 element via GST_PLUGIN_RANK
1899
-        environment or appropriate plugin feature APIs if they want these elements autoplugged.
1900
-
1901
-## Documentation improvements
1902
-
1903
--   hotdoc has been updated to the latest version, and the theme has also been updated, which should fix various usability
1904
-    issues.
1905
-
1906
-## Possibly Breaking Changes
1907
-
1908
--   gst_plugin_feature_check_version() has been updated to fix unexpected version check behaviour for git versions. It would
1909
-    return TRUE if the plugin version is for a git development version (e.g. 1.24.0.1) and the check is for the “next” micro
1910
-    version (1.24.1). Now it no longer does this. This just brings the runtime version check in line with the build time version
1911
-    checks which have been fixed some time ago.
1912
-
1913
--   GstAudioAggregator and subclasses such as audiomixer now sync property values to output timestamp, which is what
1914
-    GstVideoAggregator has been doing already since 2019, and which makes sense, as the properties need to change at every
1915
-    output frame based on the output time because they may change even though the input frame is not changing.
1916
-
1917
--   rtpac3depay now outputs audio/x-ac3 instead of audio/ac3 as that is the canonical media format in GStreamer. audio/ac3 is
1918
-    still sometimes accepted as input format for backwards compatibility (e.g. in rtpac3pay or ac3parse), but shouldn’t be
1919
-    output.
1920
-
1921
--   timecodestamper: The “drop-frame” property now defaults to TRUE
1922
-
1923
--   The NVIDIA desktop GPU decoders nvh264sldec, nvh265sldec, nvvp8sldec and nvvp9sldec were renamed to nvh264dec, nvh265dec,
1924
-    nvvp8dec and nvvp9dec, respectively.
1925
-
1926
-## Known Issues
1927
-
1928
--   There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
1929
-    avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
1930
-
1931
--   gst-libav < 1.24.6 didn’t build against the latest FFmpeg 7.0 release. This has been worked on and tracked in this “libav:
1932
-    Fix compatibility with ffmpeg 7” Merge Request.
1933
-
1934
-## Statistics
1935
-
1936
--   4643 commits
1937
-
1938
--   2405 Merge Requests
1939
-
1940
--   850 Issues
1941
-
1942
--   290+ Contributors
1943
-
1944
--   ~25% of all commits and Merge Requests were in Rust modules
1945
-
1946
--   4747 files changed
1947
-
1948
--   469633 lines added
1949
-
1950
--   209842 lines deleted
1951
-
1952
--   259791 lines added (net)
1953
-
1954
-## Contributors
1955
-
1956
-Aaron Boxer, Aaron Huang, Acky Xu, adixonn, Adrian Fiergolski, Adrien De Coninck, Akihiro Sagawa, Albert Sjölund, Alessandro
1957
-Bono, Alexande B, Alexander Slobodeniuk, Alicia Boya García, amindfv, Amir Naghdinezhad, anaghdin, Anders Hellerup Madsen,
1958
-Andoni Morales Alastruey, Antonio Kevo, Antonio Rojas, Arnaud Rebillout, Arnaud Vrac, Arun Raghavan, badcel, Balló György, Bart
1959
-Van Severen, Bastien Nocera, Benjamin Gaignard, Bilal Elmoussaoui, Brad Hards, Camilo Celis Guzman, Carlo Cabrera, Carlos
1960
-Falgueras García, Carlos Rafael Giani, Célestin Marot, Chao Guo, Charlie Blevins, Cheah, Vincent Beng Keat, Chris Degawa, Chris
1961
-Spencer, Christian Curtis Veng, Christian Meissl, Christopher Degawa, Chris Wiggins, Cidana-Developers, Colin Kinloch, Damian
1962
-Hobson-Garcia, Daniel Almeida, Daniel Knobe, Daniel Moberg, Daniel Morin, Daniel Pendse, Daniel Stone, Daniel Ulery, Dan
1963
-Searles, Dario Marino Saccavino, Dave Patrick Caberto, David Craven, David Revay, David Rosca, David Svensson Fors, Detlev
1964
-Casanova, Diego Nieto, Dominique Leroux, Dongyun Seo, Doug Nazar, Edward Hervey, Ekwang Lee, elenril, Elliot Chen, Enrique Ocaña
1965
-González, Erik Fröbrant, Eva Pace, Evgeny Pavlov, Fabian Orccon, Felix Yan, Fernando Jiménez Moreno, Florian Zwoch, François
1966
-Laignel, Frank Dana, Georges Basile Stavracas Neto, Guillaume Desmottes, Guillaume Gomez, Gwyn Ciesla, Haihua Hu, Hassene Tmar,
1967
-hassount, Heiko Becker, He Junyan, hguermaz, Hiero32, Hosang Lee, Hou Qi, Hugo Svirak, Hugues Fruchet, Hu Qian, Hyung Song,
1968
-Ignazio Pillai, Ilie Halip, Itamar Marom, Ivan Molodetskikh, Ivan Tishchenko, JackZhouVCD, Jacob Johnsson, jainl28patel, Jakub
1969
-Adam, James Cowgill, James Hilliard, James Oliver, Jan Alexander Steffens (heftig), Jan Beich, Jan Schmidt, Jan Vermaete, Jayson
1970
-Reis, Jeff Wilson, Jeongki Kim, Jeri Li, Jimmi Holst Christensen, Jimmy Ohn, Jochen Henneberg, Johan Adam Nilsson, Johan
1971
-Sternerup, John King, Jonas Danielsson, Jonas K Danielsson, Jonas Kvinge, Jordan Petridis, Jordan Yelloz, Josef Kolář, Juan
1972
-Navarro, Julien Isorce, Jun Zhao, Jurijs Satcs, Kalev Lember, Kamal Mostafa, kelvinhu325, Kevin Song, Khem Raj, Kourosh
1973
-Firoozbakht, Leander Schulten, Leif Andersen, L. E. Segovia, Lieven Paulissen, lijing0010, Lily Foster, Link Mauve, Li Yuanheng,
1974
-Loïc Le Page, Loïc Molinari, Lukas Geiger, Luke McGartland, Maksym Khomenko, Ma, Mingyang, Manel J, Marcin Kolny, Marc Leeman,
1975
-Marc Solsona, Marc Wiblishauser, Marek Vasut, Marijn Suijten, Mark Hymers, Markus Ebner, Martin Nordholts, Martin Robinson, Mart
1976
-Raudsepp, Marvin Schmidt, Mathieu Duponchelle, Matt Feury, Matthew Waters, Matthias Fuchs, Matthieu Volat, Maxim P. Dementyev,
1977
-medithe, Mengkejiergeli Ba, Michael Bunk, Michael Gruner, Michael Grzeschik, Michael Olbrich, Michael Tretter, Michiel
1978
-Westerbeek, Mihail Ivanchev, Ming Qian, Nader Mahdi, naglis, Nick Steel, Nicolas Beland, Nicolas Dufresne, Nirbheek Chauhan,
1979
-Olivier Babasse, Olivier Blin, Olivier Crête, Omar Khlif, Onur Demiralay, Patricia Muscalu, Paul Fee, Pawel Stawicki, Peter
1980
-Stensson, Philippe Normand, Philipp Zabel, PhoenixWorthVCD, Piotr Brzeziński, Priit Laes, Qian Hu, Rabindra Harlalka, Rafał
1981
-Dzięgiel, Rahul T R, rajneeshksoni, Ratchanan Srirattanamet, renjun wang, Rhythm Narula, Robert Ayrapetyan, Robert Mader, Robert
1982
-Rosengren, Robin Gustavsson, Roman Lebedev, Rouven Czerwinski, Ruben Gonzalez, Ruslan Khamidullin, Ryan Pavlik, Sanchayan Maity,
1983
-Sangchul Lee, Scott Kanowitz, Scott Moreau, SeaDve, Sean DuBois, Sebastian Dröge, Sebastian Szczepaniak, Sergey Radionov,
1984
-Seungha Yang, Shengqi Yu, Simon Himmelbauer, Slava Andrejev, Slawomir Pawlowski, soak, Stefan Brüns, Stéphane Cerveau, Stephan
1985
-Seitz, Stijn Last, Talha Khan, Taruntej Kanakamalla, Jin Chung Teng, Théo Maillart, Thibault Saunier, Thomas Schneider,
1986
-Tim-Philipp Müller, Tobias Rapp, Tong Wu, Tristan van Berkom, ttrigui, U. Artie Eoff, utzcoz, Víctor Manuel Jáquez Leal, Vivia
1987
-Nikolaidou, Wang Chuan, William Manley, Wojciech Kapsa, Xabier Rodriguez Calvar, Xavier Claessens, Xuchen Yang, Yatin Maan,
1988
-Yinhang Liu, Yorick Smilda, Yuri Fedoseev, Gang Zhao, Jack Zhou, …
1989
-
1990
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
1991
-
1992
-Stable 1.24 branch
1993
-
1994
-After the 1.24.0 release there will be several 1.24.x bug-fix releases which will contain bug fixes which have been deemed
1995
-suitable for a stable branch, but no new features or intrusive changes will be added to a bug-fix release usually. The 1.24.x
1996
-bug-fix releases will be made from the git 1.24 branch, which will be a stable branch.
1997
-
1998
-1.24.0
1999
-
2000
-GStreamer 1.24.0 was released on 4 March 2024.
2001
-
2002
-1.24.1
2003
-
2004
-The first 1.24 bug-fix release (1.24.1) was released on 21 March 2024.
2005
-
2006
-This release only contains bugfixes and it should be safe to update from 1.24.0.
2007
-
2008
-Highlighted bugfixes in 1.24.1
2009
-
2010
--   Fix instant-EOS regression in audio sinks in some cases when volume is 0
2011
--   rtspsrc: server compatibility improvements and ONVIF trick mode fixes
2012
--   rtsp-server: fix issues if RTSP media was set to be both shared and reusable
2013
--   (uri)decodebin3 and playbin3 fixes
2014
--   adaptivdemux2/hlsdemux2: Fix issues with failure updating playlists
2015
--   mpeg123 audio decoder fixes
2016
--   v4l2codecs: DMA_DRM caps support for decoders
2017
--   va: various AV1 / H.264 / H.265 video encoder fixes
2018
--   vtdec: fix potential deadlock regression with ProRes playback
2019
--   gst-libav: fixes for video decoder frame handling, interlaced mode detection
2020
--   avenc_aac: support for 7.1 and 16 channel modes
2021
--   glimagesink: Fix the sink not always respecting preferred size on macOS
2022
--   gtk4paintablesink: Fix scaling of texture position
2023
--   webrtc: Allow resolution and framerate changes, and many other improvements
2024
--   webrtc: Add new LiveKit source element
2025
--   Fix usability of binary packages on arm64 iOS
2026
--   various bug fixes, memory leak fixes, and other stability and reliability improvements
2027
-
2028
-gstreamer
2029
-
2030
--   registry, ptp: Canonicalize the library path returned by dladdr
2031
--   segment: Don’t use g_return_val_if_fail() in gst_segment_to_running_time_full()
2032
--   uri: Sort uri protocol sources/sinks by feature name to break a feature rank tie
2033
--   ptp: Initialize expected DELAY_REQ seqnum to an invalid value
2034
--   ptp: Don’t install test executable
2035
--   gst-inspect: fix –exists for plugins with versions other than GStreamer’s version, like the Rust plugins
2036
--   identity: Don’t refuse seeks unless single-segment=true
2037
-
2038
-gst-plugins-base
2039
-
2040
--   audiobasesink: Don’t wait on gap events
2041
--   audioencoder: Avoid using temporarily mapped memory as base for input buffers
2042
--   decodebin3: Be more specific when sending missing plugin messages
2043
--   decodebin3: Fix re-usability issues
2044
--   decodebin3: Provide clear error message if no decoders present
2045
--   playbin3: Remove un-needed URI NULL check
2046
--   uridecodebin3: Don’t hold lock when posting messages or signals
2047
--   uridecodebin3: Handle potential double redirection errors
2048
--   glimagesink: Fix the sink not always respecting preferred size on macOS
2049
--   glupload: Do not propose allocators with sysmem, fixes warning when playing VP9 with alpha
2050
--   shmallocator: fix build on Illumos
2051
--   meson: Fix the condition to skip theoradec test
2052
-
2053
-gst-plugins-good
2054
-
2055
--   adaptivdemux/hlsdemux2: Fix issues with failure updating playlists
2056
--   mpg123audiodec: Correctly handle the case of clipping all decoded samples
2057
--   mpg123audiodec: gst_audio_decoder_allocate_output_buffer: assertion ‘size > 0’ failed
2058
--   qt: Fix description in meson build options
2059
--   qtdemux: Do not set channel-mask to zero
2060
--   rtspsrc: remove ‘deprecated’ flag from the ‘push-backchannel-sample’ signal
2061
--   rtspsrc: Consider 503 Service Not Available when handling broken control urls
2062
--   rtspsrc, rtponviftimestamp: ONVIF mode fixes
2063
--   rtspsrc: Don’t invoke close when stopping if we’ve started cleanup, fixing potential crash on shutdown
2064
--   rtpgstpay: Delay pushing of event packets until the next buffer
2065
-
2066
-gst-plugins-bad
2067
-
2068
--   asio: Fix {input,output}-channels property handling
2069
--   cuda,d3d11,d3d12bufferpool: Disable preallocation
2070
--   d3d11device: Fix adapter LUID comparison in wrapped device mode
2071
--   d3d12device: Fix IDXGIFactory2 leak
2072
--   d3d12: Fix SDK debug layer activation
2073
--   dvbsubenc: Fix bottom field size calculation
2074
--   dvdspu: avoid null dereference
2075
--   GstPlay: Fix a critical warning in error callback
2076
--   v4l2codecs: decoders: Add DMA_DRM caps support
2077
--   vaav1enc: Init the output_frame_num when resetting gf group
2078
--   vah264enc, vah265enc, vaav1enc: fix potential crash on devices without rate control
2079
--   vah265enc: checking surface alignment
2080
--   videoparsers: Don’t verbosely warn about CEA_708_PROCESS_EM_DATA_FLAG not being set
2081
--   vtdec: Fix a deadlock during ProRes playback, handle non-linked gracefully
2082
-
2083
-gst-plugins-ugly
2084
-
2085
--   No changes
2086
-
2087
-GStreamer Rust plugins
2088
-
2089
--   gtk4paintablesink: Fix scaling of texture position
2090
--   janusvrwebrtcsink: Handle 64 bit numerical room ids
2091
--   janusvrwebrtcsink: Don’t include deprecated audio/video fields in publish messages
2092
--   janusvrwebrtcsink: Handle various other messages to avoid printing errors
2093
--   livekitwebrtc: Fix shutdown behaviour
2094
--   rtpgccbwe: Don’t forward buffer lists with buffers from different SSRCs to avoid breaking assumptions in rtpsession
2095
--   sccparse: Ignore invalid timecodes during seeking
2096
--   webrtcsink: Don’t try parsing audio caps as video caps
2097
--   webrtc: Allow resolution and framerate changes
2098
--   webrtcsrc: Make producer-peer-id optional
2099
--   livekitwebrtcsrc: Add new LiveKit source element
2100
--   regex: Add support for configuring regex behaviour
2101
--   spotifyaudiosrc: Document how to use with non-Facebook accounts
2102
--   webrtcsrc: Add do-retransmission property
2103
-
2104
-gst-libav
2105
-
2106
--   avcodecmap: Increase max AAC channels to 16
2107
--   avviddec: Fix how we get back the codec frame
2108
--   avviddec: Fix interlaced mode detection
2109
--   avviddec: Double check if AV_CODEC_FLAG_COPY_OPAQUE port is safe for our scenario
2110
-
2111
-gst-rtsp-server
2112
-
2113
--   media: gst_rtsp_media_set_reusable() and gst_rtsp_media_set_shared() have become incompatible
2114
--   rtsp-stream: clear sockets when leaving bin
2115
-
2116
-gstreamer-vaapi
2117
-
2118
--   No changes
2119
-
2120
-gstreamer-sharp
2121
-
2122
--   No changes
2123
-
2124
-gst-omx
2125
-
2126
--   No changes
2127
-
2128
-gst-python
2129
-
2130
--   No changes
2131
-
2132
-gst-editing-services
2133
-
2134
--   ges: Fix critical warning
2135
-
2136
-gst-validate + gst-integration-testsuites
2137
-
2138
--   No changes
2139
-
2140
-gst-examples
2141
-
2142
--   No changes
2143
-
2144
-Development build environment
2145
-
2146
--   No changes
2147
-
2148
-Cerbero build tool and packaging changes in 1.24.1
2149
-
2150
--   gstreamer: Enable ptp helper explicitly
2151
--   gst-plugins-bad: Package new insertbin plugin
2152
--   gst-plugins-rs: Adjust parallel architecture build blocks
2153
--   libnice: update to 0.1.22
2154
--   pixman: Bump to 0.43.4
2155
--   orc: disable JIT code generation on arm64 on iOS again, fixing crashes
2156
-
2157
-Contributors to 1.24.1
2158
-
2159
-Alexander Slobodeniuk, Antonio Larrosa, Edward Hervey, Elizabeth Figura, François Laignel, Guillaume Desmottes, He Junyan, Jan
2160
-Schmidt, Jordan Yelloz, L. E. Segovia, Mark Nauwelaerts, Mathieu Duponchelle, Michael Tretter, Mikhail Rudenko, Nicolas
2161
-Dufresne, Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Robert Mader, Ruijing Dong, Sebastian Dröge, Seungha Yang,
2162
-Thomas Goodwin, Thomas Klausner, Tim-Philipp Müller, Xi Ruoyao,
2163
-
2164
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
2165
-
2166
-List of merge requests and issues fixed in 1.24.1
2167
-
2168
--   List of Merge Requests applied in 1.24.1
2169
--   List of Issues fixed in 1.24.1
2170
-
2171
-1.24.2
2172
-
2173
-The second 1.24 bug-fix release (1.24.2) was released on 9 April 2024.
2174
-
2175
-This release only contains bugfixes and it should be safe to update from 1.24.x.
2176
-
2177
-Highlighted bugfixes in 1.24.2
2178
-
2179
--   H.264 parsing regression fixes
2180
--   WavPack typefinding improvements
2181
--   Video4linux fixes and improvements
2182
--   Android build and runtime fixes
2183
--   macOS OpenGL memory leak and robustness fixes
2184
--   Qt/QML video sink fixes
2185
--   Package new analytics and mse libraries in binary packages
2186
--   Windows MSVC binary packages: fix libvpx avx/avx2/avx512 instruction set detection
2187
--   various bug fixes, memory leak fixes, and other stability and reliability improvements
2188
-
2189
-gstreamer
2190
-
2191
--   clock: Block futex_time64 usage on Android API level < 30
2192
--   basesrc: Clear submitted buffer lists consistently with buffers
2193
--   ptpclock: fix double free of domain data during deinit
2194
--   clocksync: Proxy allocation queries
2195
--   inputselector: fix possible clock leak on shutdown
2196
--   typefind: Handle WavPack block sizes > 131072
2197
-
2198
-gst-plugins-base
2199
-
2200
--   glcolorconvert: Ensure glcolorconvert does not miss supported RGB formats
2201
--   gl/macos: a couple of race/reference count fixes
2202
--   pbutils: descriptions: Don’t warn on MPEG-1 audio caps without layer field
2203
--   encodebin: Add the parser before timestamper to tosync list
2204
--   videorate: Reset last_ts when a new segment is received
2205
-
2206
-gst-plugins-good
2207
-
2208
--   qml6glsink: fix destruction of underlying texture
2209
--   qt/qt6: Fixup for dummy textures
2210
--   rtpjitterbuffer: Don’t use estimated_dts to do default skew adjustment
2211
--   rtpjitterbuffer: Use an extended RTP timestamp for the clock-base
2212
--   rtpmp4adepay: Set duration on outgoing buffers
2213
--   tests: rtpred: fix out-of-bound writes
2214
--   v4l2: allocator: Fix unref log/trace on memory release
2215
--   v4l2: Also set max_width/max_width if enum framesize fail
2216
--   v4l2: enforce a pixel aspect ratio of 1/1 if no data are available
2217
--   v4l2: fix error in calculating padding bottom for tile format
2218
--   v4l2src: need maintain the caps order in caps compare when fixate
2219
--   vpxenc: Include vpx error details in errors and warnings
2220
-
2221
-gst-plugins-bad
2222
-
2223
--   h264parse: element hangs with some video streams (regression)
2224
--   h264parse: Revert “AU boundary detection changes”
2225
--   alphadecodebin: Explicitly pass 64 bit integers as such through varargs
2226
--   atdec: Set a channel mask for channel counts greater than 2
2227
--   ccconverter: Fix caps leak and remove unnecessary code
2228
--   d3d11videosink: disconnect signals before releasing the window
2229
--   d3d11: meson: Add support for MinGW DirectXMath package and update directxmath wrap to 3.1.9
2230
--   d3d11: meson: Disable library build if DirectXMath header was not found
2231
--   dwrite: Fix crash on device update
2232
--   GstPlay: Update video_snapshot to support playbin3
2233
--   jpegparse: avi1 tag can be progressive
2234
--   jpegparse: turn some bus warnings into object ones
2235
--   qsvdecoder: Release too old frames
2236
--   ristsrc: Only free caps if needed
2237
--   va: av1enc: Correct the reference number and improve the reference setting
2238
--   va: {vp9, av1}enc: Avoid reopen encoder or renegotiate
2239
--   videoparsers: Demote CC warning message
2240
--   vkbufferpool: correct usage flags type
2241
--   vkh26xdec: a couple decoding fixes
2242
--   vtdec: Fix caps criticals during negotiation
2243
--   wpe: avoid crash with G_DEBUG=fatal_criticals and static build
2244
--   Sink missing floating references
2245
-
2246
-gst-plugins-ugly
2247
-
2248
--   No changes
2249
-
2250
-GStreamer Rust plugins
2251
-
2252
--   aws: use fixed BehaviorVersion
2253
--   aws: improve error message logs
2254
--   fmp4: Update to dash-mpd 0.16
2255
--   fmp4mux: Require gstreamer-pbutils 1.20 for the examples
2256
--   onvifmetadataparse: Reset state in PAUSED->READY after pad deactivation, fixing occasional deadlock on shutdown
2257
--   reqwest: Update to reqwest 0.12
2258
--   webrtcsink: set perfect-timestamp=true on audio encoders
2259
--   webrtcsink: improve panic message on unexpected caps during discovery
2260
--   webrtchttp: Update to reqwest 0.12
2261
--   webrtc: fix inconsistencies in documentation of object names
2262
--   Fix clippy warnings after upgrade to Rust 1.77
2263
-
2264
-gst-libav
2265
-
2266
--   avviddec: Fix AVPacket leak
2267
-
2268
-gst-rtsp-server
2269
-
2270
--   No changes
2271
-
2272
-gstreamer-vaapi
2273
-
2274
--   No changes
2275
-
2276
-gstreamer-sharp
2277
-
2278
--   No changes
2279
-
2280
-gst-omx
2281
-
2282
--   No changes
2283
-
2284
-gst-python
2285
-
2286
--   No changes
2287
-
2288
-gst-editing-services
2289
-
2290
--   ges: frame-composition-meta: Stop using keyword ‘operator’ for field in C++
2291
-
2292
-gst-validate + gst-integration-testsuites
2293
-
2294
--   No changes
2295
-
2296
-gst-examples
2297
-
2298
--   webrtc examples: set perfect-timestamp=true on opusenc for better Chrome interoperability
2299
-
2300
-Development build environment
2301
-
2302
--   flac: Add subproject wrap and allow falling back to it in the flac plugin
2303
--   libnice: bump subproject wrap to v0.1.22 (needed for ICE consent freshness support in gstwebrtc)
2304
-
2305
-Cerbero build tool and packaging changes in 1.24.2
2306
-
2307
--   glib: Block futex_time64 usage on Android API level < 30
2308
--   libvpx: Fix build with Python 3.8
2309
--   libvpx: Fix errors with avx* instruction set detection for x86* builds and MSVC
2310
--   openjpeg: Update to 2.5.2
2311
--   directxmath: Update to 3.1.9
2312
--   gst-plugins-rs: Fix superstripping for ELF breaking all plugins
2313
--   Rust-based plugin initialization hangs on Android with GStreamer 1.24.0
2314
-
2315
-Contributors to 1.24.2
2316
-
2317
-Alexander Slobodeniuk, Arnaud Vrac, Chao Guo, Chris Spencer, Daniel Morin, Edward Hervey, Elizabeth Figura, Elliot Chen, eri,
2318
-François Laignel, Guillaume Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Schmidt, Jochen Henneberg, L. E. Segovia, Martin
2319
-Nordholts, Matthew Waters, Nicolas Dufresne, Philippe Normand, Philipp Zabel, Piotr Brzeziński, Robert Guziolowski, Robert
2320
-Mader, Ruben Gonzalez, Sebastian Dröge, Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, Tim Blechmann, Tim-Philipp Müller,
2321
-Víctor Manuel Jáquez Leal, Wojciech Kapsa, Xavier Claessens,
2322
-
2323
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
2324
-
2325
-List of merge requests and issues fixed in 1.24.2
2326
-
2327
--   List of Merge Requests applied in 1.24.2
2328
--   List of Issues fixed in 1.24.2
2329
-
2330
-1.24.3
2331
-
2332
-The third 1.24 bug-fix release (1.24.3) was released on 30 April 2024.
2333
-
2334
-This release only contains bugfixes and it should be safe to update from 1.24.x.
2335
-
2336
-Highlighted bugfixes in 1.24.3
2337
-
2338
--   EXIF image tag parsing security fixes
2339
--   Subtitle handling improvements in parsebin
2340
--   Fix issues with HLS streams that contain VTT subtitles
2341
--   Qt6 QML sink re-render and re-sizing fixes
2342
--   unixfd ipc plugin timestamp and segment handling fixes
2343
--   vah264enc, vah265enc: Do not touch the PTS of the output frame
2344
--   vah264dec and vapostproc fixes and improvements
2345
--   v4l2: multiple fixes and improvements, incl. for mediatek JPEG decoder and v4l2 loopback
2346
--   v4l2: fix hang after seek with some v4l2 decoders
2347
--   Wayland sink fixes
2348
--   ximagesink: fix regression on RPi/aarch64
2349
--   fmp4mux, mp4mux gained FLAC audio support
2350
--   D3D11, D3D12: reliablity improvements and memory leak fixes
2351
--   Media Foundation device provider fixes
2352
--   GTK4 paintable sink improvements including support for directly importing dmabufs with GTK 4.14
2353
--   WebRTC sink/source fixes and improvements
2354
--   AWS s3sink, s3src, s3hlssink now support path-style addressing
2355
--   MPEG-TS demuxer fixes
2356
--   Python bindings fixes
2357
--   various bug fixes, memory leak fixes, and other stability and reliability improvements
2358
-
2359
-gstreamer
2360
-
2361
--   ptp: Silence Rust compiler warning about some unused trait methods
2362
-
2363
-gst-plugins-base
2364
-
2365
--   EXIF image tag parsing security fixes
2366
--   glcolorconvert: remove some dead code
2367
--   parsebin: Ensure non-time subtitle streams get “parsed”
2368
--   playbin3: Handle combiner update in case of errors
2369
--   ximagesink: initialize mask for XISelectEvents
2370
-
2371
-gst-plugins-good
2372
-
2373
--   adaptivedemux2: Playback hangs with VTT fragments
2374
--   adaptivedemux2: Avoid double usage of parsebin
2375
--   pulsedeviceprovider: Add compare_device_type_name function and missing lock
2376
--   qml6glsink: Notify that the returned QSGNode node has changes
2377
--   qml6glsink: video content resizes to new item size
2378
--   qtdemux: fix wrong full_range offset when parsing colr box
2379
--   soup: fix thread name
2380
--   v4l2: add multiplane y42b (yuv422m) support (for mediatek v4l2 jpeg decoder)
2381
--   v4l2: bufferpool: Drop writable check on output pool process
2382
--   v4l2: bufferpool: Ensure freshly created buffers are not marked as queued, fixing issues with v4l2sink on a v4l2loopback
2383
-    device
2384
--   v4l2: bufferpool: queue back the buffer flagged LAST but empty, fixes hangs after seek with some decoders
2385
--   v4l2: silence valgrind warning
2386
--   vpx: Include vpx error details in errors and warnings
2387
-
2388
-gst-plugins-bad
2389
-
2390
--   d3d11device: protect device_lock vs device_new
2391
--   d3d11decoder, d3d12decoder: Fix potential use after free
2392
--   d3d11videosink: Fix rendering on keyed mutex enabled handle
2393
--   d3d12decoder: Fix d3d12 resource copy
2394
--   d3d12encoder: Fix buffer pool leak
2395
--   d3d12videosink: HWND event handling related fixes
2396
--   d3d12vp9dec: Fix Intel GPU crash occurred when decoding VP9 SVC
2397
--   dvbsubenc: fixed some memory leaks and a crash
2398
--   GstPlay: fix read duration failure issue for some type rtsp streams which have valid duration
2399
--   mediafoundation: Fix device enumeration
2400
--   mediafoundation: Fix infinite loop in device provider
2401
--   tests: fix possible libscpp build failure in gst-plugins-bad
2402
--   tsdemux, tsparse: Fix Program equality check
2403
--   tsdemux: Disable smart program update
2404
--   unixfdsink: Take segment into account when converting timestamps
2405
--   va: videoformat: use video library to get DRM fourcc
2406
--   va: radeonsi: DRM RGB formats doesn’t look correctly mapped to VA formats
2407
--   vah264enc, vah265enc: Do not touch the PTS of output frame
2408
--   vaav1enc: Change the alignment of output to “tu”
2409
--   vaallocator: disable derived all together for Mesa <23.3
2410
--   waylandsink: free staged buffer when do gst_wl_window_finalize
2411
--   wlwindow: clear configure mutex and cond when finalize
2412
--   waylandsink: config buffer pool with query size when propose_allocation
2413
--   v4l2codecs: Don’t unref allocation query caps
2414
-
2415
-gst-plugins-ugly
2416
-
2417
--   No changes
2418
-
2419
-GStreamer Rust plugins
2420
-
2421
-Fixed:
2422
-
2423
--   hrtfrender: Use a bitmask instead of an int in the caps for the channel-mask
2424
--   rtpgccbwe: Don’t log an error when pushing a buffer list fails while stopping
2425
--   webrtcsink: Don’t panic in bitrate handling with unsupported encoders
2426
--   webrtcsink: Don’t panic if unsupported input caps are used
2427
--   webrtcsrc: Allow a None producer-id in request-encoded-filter signal
2428
-
2429
-Added:
2430
-
2431
--   aws: New property to support path-style addressing
2432
--   fmp4mux / mp4mux: Support FLAC inside (f)MP4
2433
--   gtk4: Support directly importing dmabufs with GTK 4.14
2434
--   gtk4: Add force-aspect-ratio property similar to other video sinks
2435
-
2436
-gst-libav
2437
-
2438
--   libav: guard some recently dropped APIs
2439
-
2440
-gst-rtsp-server
2441
-
2442
--   No changes
2443
-
2444
-gstreamer-vaapi
2445
-
2446
--   No changes
2447
-
2448
-gstreamer-sharp
2449
-
2450
--   No changes
2451
-
2452
-gst-omx
2453
-
2454
--   No changes
2455
-
2456
-gst-python
2457
-
2458
--   Fix Python library name fetching and library searching on Windows
2459
--   Don’t link to python for the gi overrides module
2460
-
2461
-gst-editing-services
2462
-
2463
--   ges-launcher: Fix for forcing container profiles
2464
-
2465
-gst-devtools, gst-validate + gst-integration-testsuites
2466
-
2467
--   debug-viewer: Fix plugin loading machinery
2468
--   validate/flvdemux: Stop spamming audio/video on test
2469
-
2470
-gst-examples
2471
-
2472
--   No changes
2473
-
2474
-Development build environment
2475
-
2476
--   No changes
2477
-
2478
-Cerbero build tool and packaging changes in 1.24.3
2479
-
2480
--   No changes
2481
-
2482
-Contributors to 1.24.3
2483
-
2484
-Alexander Slobodeniuk, Edward Hervey, Elliot Chen, F. Duncanh, François Laignel, Haihua Hu, He Junyan, Hou Qi, Jan Schmidt,
2485
-Jimmy Ohn, Maksym Khomenko, Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan, Philippe Normand, Philipp Zabel, Qian Hu (胡骞),
2486
-Sanchayan Maity, Sebastian Dröge, Seungha Yang, Simonas Kazlauskas, Taruntej Kanakamalla, Tim Blechmann, Tim-Philipp Müller, U.
2487
-Artie Eoff, Víctor Manuel Jáquez Leal, William Wedler, Xavier Claessens,
2488
-
2489
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
2490
-
2491
-List of merge requests and issues fixed in 1.24.3
2492
-
2493
--   List of Merge Requests applied in 1.24.3
2494
--   List of Issues fixed in 1.24.3
2495
-
2496
-1.24.4
2497
+-   atenc: added an Apple AAC audio encoder
2498
 
2499
-The fourth 1.24 bug-fix release (1.24.4) was released on 29 May 2024.
2500
+-   atdec can now decode audio with more than two channels
2501
 
2502
-This release only contains bugfixes and it should be safe to update from 1.24.x.
2503
+-   vtenc has received various bug fixes as well as a number of new features:
2504
 
2505
-Highlighted bugfixes in 1.24.4
2506
+    -   Support for HEVC with alpha encoding via the new vtenc_h265a element
2507
+    -   additional rate control options for constant bitrate encoding (only supported on macOS 13.0+ and iOS 16.0+ on Apple
2508
+        Silicon), setting data rate limits, and emulating CBR mode via data rate limits where CBR is not supported.
2509
+    -   HLG color transfer support
2510
+    -   new "max-frame-delay" property (for ProRes)
2511
 
2512
--   audioconvert: support more than 64 audio channels
2513
--   avvidec: fix dropped frames when doing multi-threaded decoding of I-frame codecs such as DV Video
2514
--   mpegtsmux: Correctly time out in live pipelines, esp. for sparse streams like KLV and DVB subtitles
2515
--   vtdec deadlock fixes on shutdown and format/resolution changes (as might happen with e.g. HLS/DASH)
2516
--   fmp4mux, isomp4mux: Add support for adding AV1 header OBUs into the MP4 headers, and add language from tags
2517
--   gtk4paintablesink improvements: fullscreen mode and gst-play-1.0 support
2518
--   webrtcsink: add support for insecure TLS and improve error handling and VP9 handling
2519
--   v4l2codecs: decoder: Reorder caps to prefer DMA_DRM ones, fixes issues with playbin3
2520
--   vah264enc, vah265enc: timestamp handling fixes; generate IDR frames on force-keyunit-requests, not I frames
2521
--   Visualizer plugins fixes
2522
--   Avoid using private APIs on iOS
2523
--   Various bug fixes, memory leak fixes, and other stability and reliability improvements
2524
+-   Better macOS support for gst-validate tools which now use gst_macos_main() and support lldb
2525
 
2526
-gstreamer
2527
+-   The osxaudio device provider exposes more properties including a unique id
2528
 
2529
--   clock: Fix 32 bit assertions in GST_TIME_TO_TIMEVAL and GST_TIME_TO_TIMESPEC
2530
--   systemclock: fix usage of __STDC_NO_ATOMICS__
2531
--   filesrc: Don’t abort on _get_osfhandle() on Windows
2532
--   tests: Avoid using “bool” for the variable name
2533
--   Various Solaris / Illumos fixes
2534
--   parse: Don’t assume that child proxy child objects are GstObjects
2535
+-   osxaudio will automatically set up AVAudioSession on iOS and always expose the maximum number of channels a device supports
2536
+    with an unpositioned layout.
2537
 
2538
-gst-plugins-base
2539
+-   The monorepo development environment should work better on macOS now
2540
 
2541
--   audioconvert: Support converting >64 channels
2542
--   decodebin3: Fix caps and stream leaks
2543
--   playbin(3), streamsynchronizer: Fix deadlock when streams have been flushed before others start
2544
--   videotestsrc: fix race condition when clearing cached buffer
2545
--   Fix visualization plugins
2546
--   GstDiscoverer hangs when processing media file containing mebx on MacOS
2547
--   glmixer: Add GL_SYNC_META option to buffer pool
2548
--   typefinding: Fix ID_ODD_SIZE handling regression in WavPack typefinder
2549
+-   CMake apps that build macOS and iOS apps can consume GStreamer more easily now, using FindGStreamer.cmake or
2550
+    FindGStreamerMobile.cmake respectively.
2551
 
2552
-gst-plugins-good
2553
+-   In the near future, CMake in Xcode will be the preferred way of building the iOS tutorials. See below, in the Cerbero
2554
+    section.
2555
 
2556
--   osxaudio: Avoid using private APIs on iOS
2557
--   qtdemux: unit test fixes for 32-bit platforms
2558
-
2559
-gst-plugins-bad
2560
-
2561
--   cudamemory: Fix offset of subsampled planar formats
2562
--   d3d11: Revert “d3d11device: protect device_lock vs device_new
2563
--   d3dshader: Fix gamma and primaries conversion pixel shader
2564
--   dtlsconnection: Fix overflow in timeout calculation on systems with 32 bit time_t
2565
--   GstPlay: Initialize debug category and error quark in class_init
2566
--   kmssink: Do not close the DRM prime handle twice
2567
--   mpegtsmux: Correctly time out and mux anyway in live pipelines
2568
--   nvcodec: Accept progressive-high profiles for h264
2569
--   nvencoder: Fix maximum QP value setting
2570
--   qsvh264dec, qsvh265dec: Fix nalu leaks
2571
--   v4l2codecs: decoder: Reorder caps to prefer DMA_DRM ones
2572
--   vah264enc, vah265enc: Let FORCE_KEYFRAME be IDR frame rather than just I frame
2573
--   vah264enc, vah265enc: Set DTS offset before PTS
2574
--   vkh26xdec: Fix stop memory leak
2575
--   vtdec: Fix deadlock when negotiating format change
2576
--   vtdec: Fix PAUSED->READY deadlock when output loop is running
2577
--   wayland: Use wl_display_create_queue_with_name
2578
--   webrtc: request-aux-sender, only sink floating refs
2579
--   webrtcbin: Allow session level setup attribute in SDP
2580
-
2581
-gst-plugins-ugly
2582
-
2583
--   No changes
2584
-
2585
-GStreamer Rust plugins
2586
-
2587
--   fmp4mux, isomp4mux: Add support for adding AV1 header OBUs into the MP4 headers
2588
--   fmp4mux, isomp4mux: Add language from tags
2589
--   gtk4paintablesink: Also create own window for gst-play-1.0
2590
--   gtk4paintablesink: Add GST_GTK4_WINDOW_FULLSCREEN environment variable to fullscreen window for testing with
2591
-    e.g. gst-launch-1.0
2592
--   gtk4: Fix plugin description and update python examples
2593
--   rtpgccbwe: Log effective bitrate in more places, and log delay and loss target bitrates separately
2594
--   webrtcsink: Improve error when no encoder was found or RTP plugins were missing
2595
--   webrtcsink: Add VP9 parser after the encoder for VP9 too
2596
--   webrtc: Add support for insecure TLS connections
2597
-
2598
-gst-libav
2599
-
2600
--   avvidec: Fix dropping wrong “ghost” frames - fixing multi-threaded decoding of I-frame codecs such as DV Video
2601
-
2602
-gst-rtsp-server
2603
-
2604
--   No changes
2605
-
2606
-gstreamer-vaapi
2607
-
2608
--   No changes
2609
-
2610
-gstreamer-sharp
2611
-
2612
--   No changes
2613
-
2614
-gst-omx
2615
-
2616
--   No changes
2617
-
2618
-gst-python
2619
-
2620
--   No changes
2621
-
2622
-gst-editing-services
2623
-
2624
--   ges-pipeline: Configure encodebin before linking
2625
-
2626
-gst-devtools, gst-validate + gst-integration-testsuites
2627
-
2628
--   No changes
2629
-
2630
-gst-examples
2631
-
2632
--   No changes
2633
-
2634
-Development build environment
2635
-
2636
--   No changes
2637
-
2638
-Cerbero build tool and packaging changes in 1.24.4
2639
-
2640
--   Add Fedora 40 support
2641
--   srt: bump version to 1.5.3
2642
--   pango: Fix leaks on Windows (textoverlay plugins)
2643
--   windows runtime installer has empty qt6 msm
2644
--   WiX: assorted fixes
2645
-
2646
-Contributors to 1.24.4
2647
-
2648
-Alexander Slobodeniuk, Bill Nottingham, Brad Reitmeyer, Chris Del Guercio, Daniel Stone, Edward Hervey, Emil Pettersson, He
2649
-Junyan, Jordan Petridis, Joshua Breeden, L. E. Segovia, Martin Nordholts, Mathieu Duponchelle, Matthew Waters, Nirbheek Chauhan,
2650
-Philippe Normand, Piotr Brzeziński, Rafael Carício, Robert Ayrapetyan, Robert Mader, Sebastian Dröge, Seungha Yang, Shengqi Yu,
2651
-Stéphane Cerveau, Tim-Philipp Müller,
2652
-
2653
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
2654
-
2655
-List of merge requests and issues fixed in 1.24.4
2656
-
2657
--   List of Merge Requests applied in 1.24.4
2658
--   List of Issues fixed in 1.24.4
2659
-
2660
-1.24.5
2661
-
2662
-The fifth 1.24 bug-fix release (1.24.5) was released on 20 June 2024.
2663
-
2664
-This release only contains bugfixes and it should be safe to update from 1.24.x.
2665
-
2666
-Highlighted bugfixes in 1.24.5
2667
-
2668
--   webrtcsink: Support for AV1 via nvav1enc, av1enc or rav1enc encoders
2669
--   AV1 RTP payloader/depayloader fixes to work correctly with Chrome and Pion WebRTC
2670
--   av1parse, av1dec error handling/robustness improvements
2671
--   av1enc: Handle force-keyunit events properly for WebRTC
2672
--   decodebin3: selection and collection handling improvements
2673
--   hlsdemux2: Various fixes for discontinuities, variant switching, playlist updates
2674
--   qml6glsink: fix RGB format support
2675
--   rtspsrc: more control URL handling fixes
2676
--   v4l2src: Interpret V4L2 report of sync loss as video signal loss
2677
--   d3d12 encoder, memory and videosink fixes
2678
--   vtdec: more robust error handling, fix regression
2679
--   ndi: support for NDI SDK v6
2680
--   Various bug fixes, memory leak fixes, and other stability and reliability improvements
2681
-
2682
-gstreamer
2683
-
2684
--   promise: Don’t use g_return_* for internal checks
2685
--   debug: Add missing gst_debug_log_id_literal() dummy with gst_debug=false
2686
--   ptp-helper: Add GNU/Hurd support
2687
-
2688
-gst-plugins-base
2689
-
2690
--   uridecodebin3: Don’t hold PLAY_ITEMS lock when activating them
2691
--   decodebin3: Always ensure we end up with parsebin or identity
2692
--   decodebin3: Properly support changing input collections
2693
--   decodebin3: Avoid usage of parsebin even more
2694
--   decodebin3: Fix dealing with input without caps
2695
--   video-info: Don’t crash in gst_video_info_is_equal() if one videoinfo is zero-initialized
2696
-
2697
-gst-plugins-good
2698
-
2699
--   flacparse: fix buffer overflow
2700
--   hlsdemux2: Various fixes for discontinuities, variant switching, playlist updates
2701
--   qml6glsink: fix RGB format support
2702
--   rtpdtmfdepay: fix caps negotiation with audioconvert
2703
--   rtpdtmfsrc: fix leak when shutting down mid-event
2704
--   rtspsrc: fix invalid seqnum assertions
2705
--   rtspsrc: Various control URL handling fixes
2706
--   v4l2src: Interpret V4L2 report of sync loss as video signal loss
2707
-
2708
-gst-plugins-bad
2709
-
2710
--   av1parse: Do not return error when expectedFrameId mismatch
2711
--   av1dec: Don’t treat decoding errors as fatal and print more error details
2712
--   av1enc: Handle force-keyunit events properly by requesting keyframes
2713
--   codectimestamper: never set DTS to NONE
2714
--   d3d12encoder: Do not print error log for not-supported feature
2715
--   d3d12memory: Fix staging buffer alignment
2716
--   d3d12videosink: Disconnect window signal handler on dispose as intended
2717
--   dtlssrtpenc: Don’t crash if no pad name is provided when requesting a new pad
2718
--   glcolorconvert: update existing sync meta if outbuf has one
2719
--   pcapparse: Parsing code assumes unaligned memory accesses are OK
2720
--   pcapparse: Avoid unaligned memory access
2721
--   tsdemux: Fix maximum PCR/DTS values
2722
--   vtdec: Improve error handling in edge cases
2723
--   vtdec, qtdemux: regression in 1.24.3 - internal data stream error
2724
--   uvcgadget: Use g_path_get_basename instead of libc basename
2725
-
2726
-gst-plugins-ugly
2727
-
2728
--   No changes
2729
-
2730
-GStreamer Rust plugins
2731
-
2732
--   gtk4: update flatpak integration code
2733
--   ndi: Add support for loading NDI SDK v6
2734
--   reqwesthttpsrc: Fix race condition when unlocking
2735
--   rtp: Don’t restrict payload types for payloaders
2736
--   rtp: av1pay: Correctly use N flag for marking keyframes
2737
--   rtp: av1depay: Parse internal size fields of OBUs and handle them
2738
--   webrtcsink: Refactor value retrieval to avoid lock poisoning
2739
--   webrtcsink: Add support for AV1
2740
--   webrtc: Update to async-tungstenite 0.26
2741
--   Fix various new clippy 1.79 warnings
2742
--   meson: Fix various issues in dependency management, feature detection, some regressions, and add logging
2743
-
2744
-gst-libav
2745
-
2746
--   No changes
2747
-
2748
-gst-rtsp-server
2749
-
2750
--   No changes
2751
-
2752
-gstreamer-vaapi
2753
-
2754
--   No changes
2755
-
2756
-gstreamer-sharp
2757
-
2758
--   No changes
2759
-
2760
-gst-omx
2761
-
2762
--   No changes
2763
-
2764
-gst-python
2765
-
2766
--   No changes
2767
-
2768
-gst-editing-services
2769
-
2770
--   No changes
2771
-
2772
-gst-devtools, gst-validate + gst-integration-testsuites
2773
-
2774
--   No changes
2775
-
2776
-gst-examples
2777
-
2778
--   No changes
2779
-
2780
-Development build environment
2781
-
2782
--   No changes
2783
-
2784
-Cerbero build tool and packaging changes in 1.24.5
2785
-
2786
--   osxrelocator: Fix RPATHs in deeply nested libraries
2787
-
2788
-Contributors to 1.24.5
2789
-
2790
-Angelo Verlain, Chris Del Guercio, Corentin Damman, Edward Hervey, Francisco Javier Velázquez-García, He Junyan, Jakub Adam,
2791
-Jakub Vaněk, Khem Raj, L. E. Segovia, Martin Nordholts, Mathieu Duponchelle, Nirbheek Chauhan, Piotr Brzeziński, Samuel
2792
-Thibault, Sebastian Dröge, Sergey Krivohatskiy, Seungha Yang, Tim-Philipp Müller, Zach van Rijn,
2793
-
2794
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
2795
-
2796
-List of merge requests and issues fixed in 1.24.5
2797
-
2798
--   List of Merge Requests applied in 1.24.5
2799
--   List of Issues fixed in 1.24.5
2800
-
2801
-1.24.6
2802
-
2803
-The sixth 1.24 bug-fix release (1.24.6) was released on 29 July 2024.
2804
-
2805
-This release only contains bugfixes and it should be safe to update from 1.24.x.
2806
-
2807
-Highlighted bugfixes in 1.24.6
2808
-
2809
--   Fix compatibility with FFmpeg 7.0
2810
--   qmlglsink: Fix failure to display content on recent Android devices
2811
--   adaptivedemux: Fix handling of closed caption streams
2812
--   cuda: Fix runtime compiler loading with old CUDA tookit
2813
--   decodebin3 stream selection handling fixes
2814
--   d3d11compositor, d3d12compositor: Fix transparent background mode with YUV output
2815
--   d3d12converter: Make gamma remap work as intended
2816
--   h264decoder: Update output frame duration for interlaced video when second field frame is discarded
2817
--   macOS audio device provider now listens to audio devices being added/removed at runtime
2818
--   Rust plugins: audioloudnorm, s3hlssink, gtk4paintablesink, livesync and webrtcsink fixes
2819
--   videoaggregator: preserve features in non-alpha caps for subclasses with non-system memory sink caps
2820
--   vtenc: Fix redistribute latency spam
2821
--   v4l2: fixes for complex video formats
2822
--   va: Fix strides when importing DMABUFs, dmabuf handle leaks, and blocklist unmaintained Intel i965 driver for encoding
2823
--   waylandsink: Fix surface cropping for rotated streams
2824
--   webrtcdsp: Enable multi_channel processing to fix handling of stereo streams
2825
--   Various bug fixes, memory leak fixes, and other stability and reliability improvements
2826
-
2827
-gstreamer
2828
-
2829
--   downloadbuffer: fix push mode
2830
--   queue: queue2: multiqueue: Don’t work with segment.position if buffers have no timestamps
2831
--   gst-inspect-1.0: Fix leak of plugin/feature
2832
-
2833
-gst-plugins-base
2834
-
2835
--   decodebin3: Fix detection of selection done
2836
--   glvideomixer: Fix critical when setting start-time-selection
2837
--   parsebin: accept-caps handling for elements with unusual sink pad names
2838
--   subparse: Don’t use jit for regular expressions when running in valgrind
2839
--   subparse: put valgrind header availability define into config.h for subparse
2840
--   videoaggregator: preserve features in non-alpha caps
2841
--   videoscale: correct classification error
2842
--   meson: Fix invalid include flag in uninstalled gl pc file
2843
--   Fix various memory leaks
2844
-
2845
-gst-plugins-good
2846
-
2847
--   adaptivedemux: Fix handling closed caption streams
2848
--   qml/glsink: also support GLES2 needing shader ‘precision’ directives
2849
--   v4l2object: use v4l2 reported width for padded_width when complex video formats
2850
--   v4l2: meson: fix SIZEOF_OFF_T when cross-compiling with Meson >= 1.3.0
2851
-
2852
-gst-plugins-bad
2853
-
2854
--   svtav1enc: Fix segfault when flushing
2855
--   avfdeviceprovider: Fix debug category initialization
2856
--   osxaudiodeviceprovider: Listen for audio devices being added/removed
2857
--   avtp: Fixed Linux/Alpine 3.20 build
2858
--   cuda: Fix runtime compiler loading with old CUDA tookit
2859
--   d3d11compositor, d3d12compositor: Fix transparent background mode with YUV output
2860
--   d3d11converter: Fix runtime compiled shader code
2861
--   d3d12converter: Make gamma remap work as intended
2862
--   h264decoder: Update output frame duration when second field frame is discarded
2863
--   isac: Work around upstream having no shared library support for MSVC
2864
--   lc3: remove bitstream comparison in the tests
2865
--   qroverlay: redraw overlay when caps changes
2866
--   qsv: Fix critical warnings
2867
--   rtmp2: guard against calling gst_amf_node_get_type() with NULL
2868
--   srtsrc: fix case fallthrough of authentication param
2869
--   va: Blocklist unmaintained i965 driver for encoding
2870
--   va: Fix strides when importing DMABUFs
2871
--   va: Fix dmabuf handle leaks
2872
--   vadisplay: fix minor version check
2873
--   vkh265dec: Fix H.264 ref in logs
2874
--   vulkan: fix wrong stages or access in barriers
2875
--   vtenc: Fix redistribute latency spam
2876
--   waylandsink: Fix surface cropping for rotated streams
2877
--   webrtcdsp: Enable multi_channel processing
2878
-
2879
-gst-plugins-ugly
2880
-
2881
--   asfdemux: Be more lenient towards malformed header, fixes playback of files written by VLC
2882
-
2883
-GStreamer Rust plugins
2884
-
2885
--   audioloudnorm: Fix limiter buffer index wraparound off-by-one for the last buffer
2886
--   aws: s3hlssink: Do not call abort before finishing uploads
2887
--   gtk4paintablesink: Support RGBx formats in SW paths
2888
--   gtk4paintablesink: default to force-aspect-ratio=false for Paintable
2889
--   livesync: Use the actual output buffer duration of gap filler buffers
2890
--   livesync: Allow queueing up to latency buffers, also sync on the first buffer and add sync property
2891
--   webrtcsink: fix property types for rav1enc AV1 encoder
2892
-
2893
-gst-libav
2894
-
2895
--   Fix compatibility with ffmpeg 7
2896
--   avauddec: Fix crash on stop()
2897
--   avmux: Fix crash when muxer doesn’t get codecid
2898
-
2899
-gst-rtsp-server
2900
-
2901
--   No changes
2902
-
2903
-gstreamer-vaapi
2904
-
2905
--   No changes
2906
-
2907
-gstreamer-sharp
2908
-
2909
--   No changes
2910
-
2911
-gst-omx
2912
-
2913
--   No changes
2914
-
2915
-gst-python
2916
-
2917
--   No changes
2918
-
2919
-gst-editing-services
2920
-
2921
--   ges: Various leak fixes
2922
-
2923
-gst-devtools, gst-validate + gst-integration-testsuites
2924
-
2925
--   validate: Remove G_REGEX_OPTIMIZE usage, helps avoid valgrind issues
2926
-
2927
-gst-examples
2928
-
2929
--   No changes
2930
-
2931
-Development build environment
2932
-
2933
--   libgudev wrap: add fallback uri
2934
--   liblc3 wrap: update to v1.1.1
2935
-
2936
-Cerbero build tool and packaging changes in 1.24.6
2937
-
2938
--   meson: Backport fix for Glib including a GCC-only flag in the pkg-config file
2939
--   libsoup: Workaround build error with GCC 14
2940
--   libltc: Fix Windows build
2941
--   webrtc-audio-processing: Fix MinGW build
2942
--   libvpx: Also build a shared lib on macOS
2943
--   glib: Fix Windows build
2944
--   osxrelocator: Fix framework entrypoints being unable to load dylibs
2945
--   gobject-introspection, recipe: Fix more fallout from the Meson dylib ID fixes
2946
--   cargo-c.recipe: Ensure that we can change the id and rpath
2947
-
2948
-Contributors to 1.24.6
2949
-
2950
-Chris Spoelstra, Edward Hervey, François Laignel, Guillaume Desmottes, Jakub Adam, Jan Schmidt, Jordan Petridis, L. E. Segovia,
2951
-Loïc Yhuel, Matthew Waters, Nirbheek Chauhan, Piotr Brzeziński, Robert Mader, Ruben Gonzalez, Sanchayan Maity, Sebastian Dröge,
2952
-Sebastian Gross, Seungha Yang, Shengqi Yu, Taruntej Kanakamalla, Tim-Philipp Müller, tomaszmi, Víctor Manuel Jáquez Leal,
2953
-
2954
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
2955
-
2956
-List of merge requests and issues fixed in 1.24.6
2957
-
2958
--   List of Merge Requests applied in 1.24.6
2959
--   List of Issues fixed in 1.24.6
2960
-
2961
-1.24.7
2962
-
2963
-The seventh 1.24 bug-fix release (1.24.7) was released on 21 August 2024.
2964
-
2965
-This release only contains bugfixes and it should be safe to update from 1.24.x.
2966
-
2967
-Highlighted bugfixes in 1.24.7
2968
-
2969
--   Fix APE and Musepack audio file and GIF playback with FFmpeg 7.0
2970
--   playbin3: Fix potential deadlock with multiple playbin3s with glimagesink used in parallel
2971
--   qt6: various qmlgl6src and qmlgl6sink fixes and improvements
2972
--   rtspsrc: expose property to force usage of non-compliant setup URLs for RTSP servers where the automatic fallback doesn’t
2973
-    work
2974
--   urisourcebin: gapless playback and program switching fixes
2975
--   v4l2: various fixes
2976
--   va: Fix potential deadlock with multiple va elements used in parallel
2977
--   meson: option to disable gst-full for static-library build configurations that do not need this
2978
--   cerbero: libvpx updated to 1.14.1; map 2022Server to Windows11; disable rust variant on Linux if binutils is too old
2979
--   Various bug fixes, memory leak fixes, and other stability and reliability improvements
2980
-
2981
-gstreamer
2982
-
2983
--   bin: Don’t keep the object lock while setting a GstContext when handling NEED_CONTEXT
2984
--   core: Log pad name, not just the pointer
2985
-
2986
-gst-plugins-base
2987
-
2988
--   pbutils: descriptions: use subsampling factor to get YUV subsampling
2989
--   rtspconnection: Handle invalid argument properly
2990
--   urisourcebin: Actually drop EOS on old-school pad switch
2991
--   urisourcebin: Don’t hold lock when emitting about-to-finish
2992
--   gst-launch deadlock with two playbin3s
2993
--   xvimagesink: Fix crash in pool on error
2994
-
2995
-gst-plugins-good
2996
-
2997
--   qmlgl6src: Fix crash when use-default-fbo is not set
2998
--   qt6glwindow: Fallback to GL_RGB on CopyTexImage2D error, fixing usage with eglfs backend
2999
--   qt6glwindow: Only use GL_READ_FRAMEBUFFER when we do blits
3000
--   qt6: glwindow: Don’t leak previously rendered buffer
3001
--   rtspsrc: expose property for forcing usage of non-compliant URLs
3002
--   v4l2object: fix ARIB_STD_B67 colorimetry unmatch issue
3003
--   v4l2: Fix colorimetry mismatch for encoded format with RGB color-matrix
3004
-
3005
-gst-plugins-bad
3006
-
3007
--   aom: av1enc: restrict allowed input width and height
3008
--   h264parse: bypass check for length_size_minus_one
3009
--   h265parse: Reject FD received before SPS
3010
--   msdk: replace strcmp with g_strcmp0
3011
--   msdkvc1dec crashes (segfault)
3012
--   rsvgoverlay: add debug category
3013
--   va: don’t use GST_ELEMENT_WARNING in set_context() vmethod to fix potential deadlock
3014
--   va: deadlock when playing two videos at once
3015
--   webrtc: Add missing G_BEGIN/END_DECLS in header for C++
3016
--   wpe: initialize threading.ready before reading it
3017
-
3018
-gst-plugins-ugly
3019
-
3020
--   No changes
3021
-
3022
-GStreamer Rust plugins
3023
-
3024
--   gtk4: Move the dmabuf cfg to the correct bracket level
3025
-
3026
-gst-libav
3027
-
3028
--   avdemux: Fix deadlock with FFmpeg 7.x when serialized events are received from upstream while opening, such as e.g. APE
3029
-    files with tags
3030
--   libav: return EOF when stream is out of data
3031
--   avdemux: Never return 0 from read function, which would lead to infinite loops
3032
-
3033
-gst-rtsp-server
3034
-
3035
--   No changes
3036
-
3037
-gstreamer-vaapi
3038
-
3039
--   vaapi: Fix sps_max_dec_pic_buffering_minus1 value in h265 decoder
3040
-
3041
-gstreamer-sharp
3042
-
3043
--   No changes
3044
-
3045
-gst-omx
3046
-
3047
--   No changes
3048
-
3049
-gst-python
3050
-
3051
--   No changes
3052
-
3053
-gst-editing-services
3054
-
3055
--   nlecomposition: Don’t leak QoS events
3056
-
3057
-gst-devtools, gst-validate + gst-integration-testsuites
3058
-
3059
--   validate: Fix copying of action name
3060
-
3061
-gst-examples
3062
-
3063
--   No changes
3064
-
3065
-Development build environment
3066
-
3067
--   Add a meson option to disable gst-full for static-library build configurations that do not need this
3068
-
3069
-Cerbero build tool and packaging changes in 1.24.7
3070
-
3071
--   Disable rust variant on Linux if binutils is too old
3072
--   Added 2022Server to the Windows platform distro map as Windows11
3073
--   libvpx: Update to 1.14.1
3074
-
3075
-Contributors to 1.24.7
3076
-
3077
-David Rosca, Edward Hervey, Guillaume Desmottes, Hou Qi, Jan Schmidt, Jesper Jensen, Jordan Petridis, Jordan Yelloz, L. E.
3078
-Segovia, Lyra McMillan, Mathieu Duponchelle, Max Romanov, Nicolas Dufresne, Nirbheek Chauhan, Qian Hu (胡骞), Sebastian Dröge,
3079
-Tim-Philipp Müller, Víctor Manuel Jáquez Leal,
3080
-
3081
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
3082
-
3083
-List of merge requests and issues fixed in 1.24.7
3084
-
3085
--   List of Merge Requests applied in 1.24.7
3086
--   List of Issues fixed in 1.24.7
3087
-
3088
-1.24.8
3089
-
3090
-The eigth 1.24 bug-fix release (1.24.8) was released on 19 September 2024.
3091
-
3092
-This release only contains bugfixes and it should be safe to update from 1.24.x.
3093
-
3094
-Highlighted bugfixes in 1.24.8
3095
-
3096
--   decodebin3: collection handling fixes
3097
--   encodebin: Fix pad removal (and smart rendering in gst-editing-services)
3098
--   glimagesink: Fix cannot resize viewport when video size changed in caps
3099
--   matroskamux, webmmux: fix firefox compatibility issue with Opus audio streams
3100
--   mpegtsmux: Wait for data on all pads before deciding on a best pad unless timing out
3101
--   splitmuxsink: Override LATENCY query to pretend to downstream that we’re not live
3102
--   video: QoS event handling improvements
3103
--   voamrwbenc: fix list of bitrates
3104
--   vtenc: Restart encoding session when certain errors are detected
3105
--   wayland: Fix ABI break in WL context type name
3106
--   webrtcbin: Prevent crash when attempting to set answer on invalid SDP
3107
--   cerbero: ship vp8/vp9 software encoders again, which went missing in 1.24.7; ship transcode plugin
3108
--   Various bug fixes, memory leak fixes, and other stability and reliability improvements
3109
-
3110
-gstreamer
3111
-
3112
--   clock: Fix unchecked overflows in linear regression code
3113
--   meta: Add missing include of gststructure.h
3114
--   pad: Check data NULL-ness when probes are stopped
3115
--   aggregator: Immediately return NONE from simple_get_next_time() on non-TIME segments
3116
-
3117
-gst-plugins-base
3118
-
3119
--   decodebin3: Fix collection identity check
3120
--   encodebin: Fix pad removal
3121
--   glimagesink: Fix cannot resize viewport when video size changed in caps
3122
--   video: Don’t overshoot QoS earliest time by a factor of 2
3123
--   meson: gst-play: link to libm
3124
-
3125
-gst-plugins-good
3126
-
3127
--   jackaudiosrc: actually use the queried ports from JACK
3128
--   matroskamux: Include end padding in the block duration for Opus streams, fixing firefox compatibility
3129
--   osxaudio: Avoid dangling pointer on shutdown
3130
--   splitmuxsink: Override LATENCY query to pretend to downstream that we’re not live
3131
--   v4l2bufferpool: actually queue back the empty buffer flagged LAST
3132
--   v4l2videoenc: unref buffer pool after usage properly
3133
--   v4l2: encoder: Add dynamic framerate support
3134
-
3135
-gst-plugins-bad
3136
-
3137
--   GstPlay: Name the different bus
3138
--   GstPlay: check whether stream is seekable before seeking when state change
3139
--   GstPlayer: Check GstPlayerSignalDispatcher type
3140
--   mpegtsmux: Wait for data on all pads before deciding on a best pad unless timing out
3141
--   mpegtsmux: Fix refcounting issue when selecting the best pad
3142
--   uvcsink: fix caps event handling
3143
--   v4l2codecs: h265: Minimize memory allocation
3144
--   voamrwbenc: fix list of bitrates
3145
--   vtenc: Restart encoding session when certain errors are detected
3146
--   wayland: Fix ABI break in WL context type name
3147
--   webrtcbin: Prevent crash when attempting to set answer on invalid SDP
3148
--   wpe: fix gst-launch example
3149
-
3150
-gst-plugins-ugly
3151
-
3152
--   No changes
3153
-
3154
-GStreamer Rust plugins
3155
-
3156
--   No changes
3157
-
3158
-gst-libav
3159
-
3160
--   No changes
3161
-
3162
-gst-rtsp-server
3163
-
3164
--   No changes
3165
-
3166
-gstreamer-vaapi
3167
-
3168
--   No changes
3169
-
3170
-gstreamer-sharp
3171
-
3172
--   No changes
3173
-
3174
-gst-omx
3175
-
3176
--   No changes
3177
-
3178
-gst-python
3179
-
3180
--   No changes
3181
-
3182
-gst-editing-services
3183
-
3184
--   discoverer-manager: Fix race leading to assertion when stopping
3185
--   structured-interface: Fix memory leak of invalid fields GList
3186
-
3187
-gst-devtools, gst-validate + gst-integration-testsuites
3188
-
3189
--   pad-monitor: Fix remaining pad function data handling
3190
--   pad-monitor: Fix pad function data properly
3191
-
3192
-gst-examples
3193
-
3194
--   No changes
3195
-
3196
-Development build environment
3197
-
3198
--   meson: Update openjpeg wrap to 2.5.2, fixes a warning
3199
-
3200
-Cerbero build tool and packaging changes in 1.24.8
3201
-
3202
--   No vp8 / vp9 encoders packaged (regression)
3203
--   libvpx: Fix codec detection to fix vp8enc/vp9enc elements not being shipped
3204
--   gst-plugins-bad: Add missing transcode plugin
3205
-
3206
-Contributors to 1.24.8
3207
-
3208
-Andoni Morales Alastruey, Arun Raghavan, Benjamin Gaignard, Carlos Bentzen, Chao Guo, Edward Hervey, Francis Quiers, Guillaume
3209
-Desmottes, Hou Qi, Jan Schmidt,, L. E. Segovia, Michael Tretter, Nicolas Dufresne, Nirbheek Chauhan, Peter Kjellerstedt,
3210
-Philippe Normand, Piotr Brzeziński, Randy Li (ayaka), Sebastian Dröge, Thibault Saunier, Tim-Philipp Müller, Wim Taymans,
3211
-
3212
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
3213
-
3214
-List of merge requests and issues fixed in 1.24.8
3215
-
3216
--   List of Merge Requests applied in 1.24.8
3217
--   List of Issues fixed in 1.24.8
3218
-
3219
-1.24.9
3220
-
3221
-The ninth 1.24 bug-fix release (1.24.9) was released on 30 October 2024.
3222
-
3223
-This release only contains bugfixes and a security fix and it should be safe to update from 1.24.x.
3224
-
3225
-Highlighted bugfixes in 1.24.9
3226
-
3227
--   gst-rtsp-server security fix
3228
--   GstAggregator start time selection and latency query fixes for force-live mode
3229
--   audioconvert: fix dynamic handling of mix matrix, and accept custom upstream event for setting one
3230
--   encodebin: fix parser selection for encoders that support multiple codecs
3231
--   flvmux improvments for pipelines where timestamps don’t start at 0
3232
--   glcontext: egl: Unrestrict the support base DRM formats
3233
--   kms: Add IMX-DCSS auto-detection in sink and fix stride with planar formats in allocator
3234
--   macOS main application event loop fixes
3235
--   mpegtsdemux: Handle PTS/DTS wraparound with ignore-pcr=true
3236
--   playbin3, decodebin3, parsebin, urisourcebin: fix races, and improve stability and stream-collection handling
3237
--   rtpmanager: fix early RTCP SR generation for sparse streams like metadata
3238
--   qml6glsrc: Reduce capture delay
3239
--   qtdemux: fix parsing of rotation matrix with 180 degree rotation
3240
--   rtpav1depay: added wait-for-keyframe and request-keyframe properties
3241
--   srt: make work with newer libsrt versions and don’t re-connect on authentication failure
3242
--   v4l2 fixes and improvement
3243
--   webrtcsink, webrtcbin and whepsrc fixes
3244
--   cerbero: fix Python 3.13 compatibility, g-i with newer setuptools, bootstrap on Arch Linux; iOS build fixes
3245
--   Ship qroverlay plugin in binary packages - Various bug fixes, memory leak fixes, and other stability and reliability
3246
-    improvements
3247
--   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
3248
-
3249
-gstreamer
3250
-
3251
--   aggregator: fix start time selection first with force-live
3252
--   aggregator: fix live query when force-live is TRUE
3253
--   parse-launch: Make sure children are bins before recursing in
3254
--   macos: Fix race conditions in cocoa/application main event loop
3255
--   multiqueue: Do not unref the query we get in pad->query
3256
-
3257
-gst-plugins-base
3258
-
3259
--   audioconvert: fix dynamic handling of mix matrix, accept custom upstream event for setting one
3260
--   playback: Fix a variety of decodebin3/parsebin/urisourcebin races
3261
--   playbin3: prevent crashing trying to play a corrupted mp4 file (WARNING : HIGH PITCHED CORRUPTED SOUND)
3262
--   urisourcebin: Ensure all stream-start are handled
3263
--   urisourcebin: Allow more cases for posting stream-collection
3264
--   decodebin3: Make update/posting of collection messages atomic
3265
--   decodebin3: send selected stream message as long as not all the tracks can’t select decoders
3266
--   urisourcebin/parsebin: Improve collection creation and handling
3267
--   encodebasebin: Miscellaneous fixes
3268
--   allocators: drmdumb: Fix bpp value for P010
3269
--   gldownload: use gst_gl_sync_meta_wait_cpu()
3270
--   Revert “meson: Fix invalid include flag in uninstalled gl pc file”
3271
--   gl: Fix configure error when libdrm is a subproject
3272
--   glcontext: egl: Unrestrict the support base DRM formats
3273
--   exiftag: Check the result of gst_date_time_new_local_time(), fixes criticals with malformed EXIF tags
3274
-
3275
-gst-plugins-good
3276
-
3277
--   flvmux: Use first running time on the initial header instead of 0
3278
--   rtpmanager: skip RTPSources which are not ready in the RTCP generation
3279
--   rtppassthroughpay: Fix reading clock-rate and payload type from caps
3280
--   qml6glsrc: Reduce capture delay
3281
--   qtdemux: fix parsing of matrix with 180 rotation
3282
--   qtdemux: Check fourcc of a second CEA608 atom instead of assuming it’s cdt2
3283
--   qtdemux: Skip zero-sized boxes instead of stopping to look at further boxes
3284
--   twcc: Handle wrapping of reference time
3285
--   v4l2object: append non colorimetry structure to probed caps
3286
--   v4l2: Various fixes and improvement
3287
-
3288
-gst-plugins-bad
3289
-
3290
--   avfdeviceprovider: Fix leak from the GstCaps
3291
--   codecparsers: add debug categories to bitwriters
3292
--   codectimestamper: Fix gint wraparound in pts_compare_func
3293
--   dvxa: Explicitly use cpp_std=c++11
3294
--   GstPlay: message parsing and documentation improvements
3295
--   h26xbitwriter: false have_space if aligning fails on aud
3296
--   kmsallocator: fix stride with planar formats
3297
--   kmssink: Add IMX-DCSS auto-detection
3298
--   mpegtsdemux: Handle PTS/DTS wraparound with ignore-pcr=true
3299
--   rtmp2sink: Initialize base_ts / last_ts with the actual first observed timestamp
3300
--   scenechange: fix memory leak
3301
--   srtsink: Register SRT listen callback before binding socket
3302
--   srt: Don’t attempt to reconnect on authentication failures
3303
--   tests: va: fix vapostproc test for DMABuf
3304
--   tests: lc3: Allocate the same size for the buffer and the data
3305
--   va: Fix libdrm include, plus meson and wrap changes
3306
--   vaav1enc: Do not enable palette mode by default
3307
--   vp8decoder: Fix resolution change handling
3308
--   vtdec: add support for level 6 6.1 and 6.2
3309
--   wayland: Add NV15 support
3310
--   webrtcbin: Clean up bin elements when datachannel is removed
3311
-
3312
-gst-plugins-ugly
3313
-
3314
--   No changes
3315
-
3316
-GStreamer Rust plugins
3317
-
3318
--   Build: turn lto off for dev profile for faster dev builds
3319
--   fmp4 hls_live example: Don’t set header-update-mode=update, no need to update the header in live mode
3320
--   gtk4paintablesink: Don’t check for a GL context when filtering dmabuf caps
3321
--   livesync: Log latency query results when handling latency query too
3322
--   onvifmetadatapay: Set output caps earlier, so upstream can send gap events earlier
3323
--   rtpav1depay: Add wait-for-keyframe and request-keyframe properties
3324
--   spotify: tweak dependencies
3325
--   transcriberbin: fix panic during gst-inspect-1.0 -u
3326
--   webrtcsink: fix segment format mismatch with remote offer
3327
--   webrtcsink: fix assertions when finalizing
3328
--   webrtcsink: Fix typo in “turn-servers” property description
3329
--   whepsrc: Fix incorrect default caps
3330
-
3331
-gst-libav
3332
-
3333
--   avviddec: Unlock video decoder stream lock temporarily while finishing frames
3334
-
3335
-gst-rtsp-server
3336
-
3337
--   rtsp-server: Remove pointless assertions that can happen if client provides invalid rates (security fix)
3338
-
3339
-gstreamer-vaapi
3340
-
3341
--   No changes
3342
-
3343
-gstreamer-sharp
3344
-
3345
--   No changes
3346
-
3347
-gst-omx
3348
-
3349
--   No changes
3350
-
3351
-gst-python
3352
-
3353
--   No changes
3354
-
3355
-gst-editing-services
3356
-
3357
--   ges: Fix name of GESFrameCompositionMeta API type (which caused gobject-introspection failures at build time)
3358
-
3359
-gst-devtools, gst-validate + gst-integration-testsuites
3360
-
3361
--   validate: Ignore flaky dash playbin3 issue
3362
--   validate: Blacklist more netsim tests
3363
-
3364
-gst-examples
3365
-
3366
--   No changes
3367
-
3368
-Development build environment
3369
-
3370
--   No changes
3371
-
3372
-Cerbero build tool and packaging changes in 1.24.9
3373
-
3374
--   Fix Python 3.13 compatibility
3375
--   gobject-introspection: Import patch to build against newer setuptools
3376
--   Switch from wget to curl on Fedora 40 and newer
3377
--   bootstrap: Add missing dependencies on Arch Linux
3378
--   harfbuzz: Add CXXFLAGS to fix broken build on iOS
3379
--   openssl.recipe: Stop using non-existent domain in primary tarball url
3380
--   gst-plugins-bad: ship qroverlay plugin
3381
-
3382
-Contributors to 1.24.9
3383
-
3384
-Andoni Morales Alastruey, Arun Raghavan, Benjamin Gaignard, Corentin Damman, Dave Lucia, Edward Hervey, Elliot Chen, eri,
3385
-Francisco Javier Velázquez-García, Guillaume Desmottes, He Junyan, Hugues Fruchet, Jakub Adam, James Cowgill, Jan Alexander
3386
-Steffens (heftig), Jan Schmidt, Johan Sternerup, Jordan Petridis, L. E. Segovia, Mathieu Duponchelle, Nick Steel, Nicolas
3387
-Dufresne, Nirbheek Chauhan, Ognyan Tonchev, Olivier Crête, Peter Stensson, Philippe Normand, Piotr Brzeziński, Sanchayan Maity,
3388
-Sebastian Dröge, Shengqi Yu, Stéphane Cerveau, Théo Maillart, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal,
3389
-Weijian Pan, Xavier Claessens,
3390
-
3391
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
3392
-
3393
-List of merge requests and issues fixed in 1.24.9
3394
-
3395
--   List of Merge Requests applied in 1.24.9
3396
--   List of Issues fixed in 1.24.9
3397
-
3398
-1.24.10
3399
-
3400
-The tenth 1.24 bug-fix release (1.24.10) was released on 03 December 2024.
3401
-
3402
-This release only contains bugfixes and security fixes. It should be safe to update from 1.24.x and we would recommend you
3403
-update at your earliest convenience.
3404
-
3405
-Highlighted bugfixes in 1.24.10
3406
-
3407
--   More than 40 security fixes across a wide range of elements following an audit by the GitHub Security Lab, including the
3408
-    MP4, Matroska, Ogg and WAV demuxers, subtitle parsers, image decoders, audio decoders and the id3v2 tag parser.
3409
--   avviddec: Fix regression that could trigger assertions about width/height mismatches
3410
--   appsink and appsrc fixes
3411
--   closed caption handling fixes
3412
--   decodebin3 and urisourcebin fixes
3413
--   glupload: dmabuf: Fix emulated tiled import
3414
--   level: fix LevelMeta values outside of the stated range
3415
--   mpegtsmux, flvmux: fix potential busy looping with high cpu usage in live mode
3416
--   pipeline dot file graph generation improvements
3417
--   qt(6): fix criticals with multiple qml(6)gl{src,sink}
3418
--   rtspsrc: Optionally timestamp RTP packets with their receive times in TCP/HTTP mode to enable clock drift handling
3419
--   splitmuxsrc: reduce number of file descriptors used
3420
--   systemclock: locking order fixes
3421
--   v4l2: fix possible v4l2videodec deadlock on shutdown; 8-bit bayer format fixes
3422
--   x265: Fix build with libx265 version >= 4.1 after masteringDisplayColorVolume API change
3423
--   macOS: fix rendering artifacts in retina displays, plus ptp clock fixes
3424
--   cargo: Default to thin lto for the release profile (for faster builds with lower memory requirements)
3425
--   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
3426
--   Translation updates
3427
-
3428
-gstreamer
3429
-
3430
--   allocator: Avoid integer overflow when allocating sysmem and avoid integer overflow in qtdemux theora extension parsing
3431
--   deviceprovider: fix leaking hidden providers
3432
--   gstreamer: prefix debug dot node names to prevent splitting
3433
--   pad: Never push sticky events in response to a FLUSH_STOP
3434
--   systemclock: Fix lock order violation and some cleanup
3435
--   utils: improve gst_util_ceil_log2()
3436
--   ptp: use ip_mreq instead of ip_mreqn for macos
3437
--   tracers: unlock leaks tracer if already tracking
3438
-
3439
-gst-plugins-base
3440
-
3441
--   appsink: fix timeout logic for gst_app_sink_try_pull_sample()
3442
--   appsrc: Fix use-after-free when making buffer / buffer-lists writable
3443
--   audiostreamalign: Don’t report disconts for every buffer if alignment-threshold is too small
3444
--   decodebin3: Unify collection switching checks
3445
--   discoverer: Don’t print channel layout for more than 64 channels
3446
--   discoverer: Make sure the missing elements details array is NULL-terminated in a thread-safe way
3447
--   discoverer: fix segfault in race condition adding a new uri
3448
--   id3v2: Don’t try parsing extended header if not enough data is available
3449
--   glupload: dmabuf: Fix emulated tiled import
3450
--   gl: cocoa: fix rendering artifacts in retina displays
3451
--   gl: meson: Don’t use libdrm_dep in cc.has_header()
3452
--   oggstream: fix invalid ogg_packet->packet accesses, address invalid writes CVE
3453
--   opusdec: Set at most 64 channels to NONE position
3454
--   playbin: Fix caps leak in get_n_common_capsfeatures()
3455
--   playbin3: ERROR when setting new HLS URI with instant-uri=true
3456
--   sdp: Add debug categories for message and mikey modules
3457
--   ssaparse: Search for closing brace after opening brace
3458
--   splitmuxsrc: Convert part reader to a bin with a non-async bus
3459
--   subparse: Check for NULL return of strchr() when parsing LRC subtitles
3460
--   streamsynchronizer: Only send GAP events out of source pads
3461
--   urisourcebin: Also use event probe for HLS use-cases
3462
--   video-converter: Set TIME segment format on appsrc
3463
--   vorbisdec: Set at most 64 channels to NONE position
3464
--   Translation for gst-plugins-base 1.24.0 not sync-ed with Translation Project
3465
--   Update translations
3466
-
3467
-gst-plugins-good
3468
-
3469
--   avisubtitle: Fix size checks and avoid overflows when checking sizes
3470
--   flvmux: Don’t time out in live mode if no timestamped next buffer is available
3471
--   gdkpixbufdec: Check if initializing the video info actually succeeded
3472
--   jpegdec: Directly error out on negotiation failures
3473
--   level: Fix integer overflow when filling LevelMeta
3474
--   level: produces level value outside of Stated Range
3475
--   matroskademux: header parsing fixes
3476
--   qtdemux: header and sample table parsing fixes
3477
--   qtdemux: avoid integer overflow in theora extension parsing
3478
--   qt(6)/material: ensure that we always update the context in setBuffer()
3479
--   rtspsrc: Optionally timestamp RTP packets with their receive times in TCP/HTTP mode
3480
--   rtp: Fix precision loss in gst_rtcp_ntp_to_unix()
3481
--   rtpfunnel: Ensure segment events are forwarded after flushs
3482
--   rtpmanager: don’t map READWRITE in twcc header ext
3483
--   rtph264depay, rtph265depay: Fix various OOB reads / NULL pointer dereferences in parameter-set string handling
3484
--   shout2send: Unref event at the end of the event function
3485
--   udpsrc: protect cancellable from unlock/unlock_stop race
3486
--   v4l2object: Fixed incorrect maximum value for int range
3487
--   v4l2object: Remove little endian marker on 8 bit bayer format names
3488
--   v4l2videodec: fix freeze race condition
3489
--   wavparse: Fix various (missing) size checks and other parsing problems
3490
-
3491
-gst-plugins-bad
3492
-
3493
--   ccconverter: Don’t override in_fps_entry when trying to take output
3494
--   ccutils fixes
3495
--   kmssink: Add mediatek auto-detection
3496
--   mpegtsmux: Don’t time out in live mode if no timestamped next buffer is available (fixes busy loop with high cpu usage)
3497
--   mpegvideoparse: do not set delta unit flag on unknown frame type
3498
--   mxfmux: Fix off-by-one in the month when generating a timestamp for now
3499
--   timecodestamper: Don’t fail the latency query in LTC mode if we have no framerate
3500
--   webrtc: don’t crash on invalid bundle id
3501
--   x265: Allow building with x265-4.1 (after masteringDisplayColorVolume API change)
3502
--   meson: Don’t unconditionally invoke the libsoup subproject for tests
3503
-
3504
-gst-plugins-ugly
3505
-
3506
--   No changes
3507
-
3508
-GStreamer Rust plugins
3509
-
3510
--   cargo: Default to thin lto for the release profile (for faster builds with lower memory requirements)
3511
-
3512
-gst-libav
3513
-
3514
--   avcodecmap: Use avcodec_get_supported_config() instead of struct fields
3515
--   libav: viddec: provide details if meta has the wrong resolution
3516
--   avviddec: Unlock video decoder stream lock temporarily while finishing frames
3517
-
3518
-gst-rtsp-server
3519
-
3520
--   No changes
3521
-
3522
-gstreamer-vaapi
3523
-
3524
--   No changes
3525
-
3526
-gstreamer-sharp
3527
-
3528
--   No changes
3529
-
3530
-gst-omx
3531
-
3532
--   No changes
3533
-
3534
-gst-python
3535
-
3536
--   No changes
3537
-
3538
-gst-editing-services
3539
-
3540
--   No changes
3541
-
3542
-gst-devtools, gst-validate + gst-integration-testsuites
3543
-
3544
--   validate: Fix leaks in ssim components
3545
-
3546
-gst-examples
3547
-
3548
--   No changes
3549
-
3550
-Development build environment
3551
-
3552
--   meson: Fix failing libva wrap file build
3553
-
3554
-Cerbero build tool and packaging changes in 1.24.10
3555
-
3556
--   shell: fix TemporaryDirectory error with the with statement when ZSH
3557
--   ci: update macos CI to 15 Sequoia
3558
-
3559
-Contributors to 1.24.10
3560
-
3561
-Albert Sjolund, Alicia Boya García, Andoni Morales Alastruey, Antonio Morales, Edward Hervey, Guillaume Desmottes, Jan Alexander
3562
-Steffens (heftig), Jan Schmidt, Jonas Rebmann, Jordan Petridis, Mathieu Duponchelle, Matthew Waters, Nicolas Dufresne, Nirbheek
3563
-Chauhan, Pablo Sun, Philippe Normand, Robert Rosengren, Ruben Gonzalez, Sebastian Dröge, Seungmin Kim, Stefan Riedmüller,
3564
-Stéphane Cerveau, Taruntej Kanakamalla, Théo Maillart, Thibault Saunier, Tim-Philipp Müller, Tomáš Polomský, Wilhelm Bartel, Xi
3565
-Ruoyao,
3566
-
3567
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
3568
-
3569
-List of merge requests and issues fixed in 1.24.10
3570
-
3571
--   List of Merge Requests applied in 1.24.10
3572
--   List of Issues fixed in 1.24.10
3573
-
3574
-1.24.11
3575
-
3576
-The eleventh 1.24 bug-fix release (1.24.11) was released on 06 January 2025.
3577
-
3578
-This release only contains bugfixes and it should be safe to update from 1.24.x.
3579
-
3580
-Highlighted bugfixes in 1.24.11
3581
-
3582
--   playback: Fix SSA/ASS subtitles with embedded fonts
3583
--   decklink: add missing video modes and fix 8K video modes
3584
--   matroskamux: spec compliance fixes for audio-only files
3585
--   onnx: disable onnxruntime telemetry
3586
--   qtdemux: Fix base offset update when doing segment seeks
3587
--   srtpdec: Fix a use-after-free issue
3588
--   (uri)decodebin3: Fix stream change scenarios, possible deadlock on shutdown
3589
--   video: fix missing alpha flag in AV12 format description
3590
--   avcodecmap: Add some more channel position mappings
3591
--   cerbero bootstrap fixes for Windows 11
3592
--   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
3593
-
3594
-gstreamer
3595
-
3596
--   No changes
3597
-
3598
-gst-plugins-base
3599
-
3600
--   appsrc: Decrease log level for item drop
3601
--   gl: raise WARNING instead of ERROR when no connector is connected
3602
--   decodebin3: Free main input even if it is not part of the list of inputs
3603
--   urisourcebin: Avoid deadlock on shutdown
3604
--   urisourcebin: Only rewrite stream-start event once
3605
--   urisourcebin/(uri)decodebin3: Fix stream change scenarios
3606
--   urisourcebin: Reference counting leak
3607
--   playbin3: leak detected with A/V playback and window closed
3608
--   videodecoder: Gracefully handle missing data without prior input segment
3609
--   videodecoder: set decode only flag by decode only buffer
3610
--   video: fix AV12 format lacking the GST_VIDEO_FORMAT_FLAG_ALPHA flag.
3611
--   Fix SSA/ASS subtitles with embedded fonts
3612
-
3613
-gst-plugins-good
3614
-
3615
--   matroskamux: Fix audio-only stream conditions and consider audio buffers as keyframes when writing out simpleblocks
3616
--   qtdemux: fix accumulated base offset in segment seeks
3617
--   rtppassthroughpay: ensure buffer is writable before mapping writable
3618
--   rtpsession: Fix twcc stats structure leak
3619
--   v4l2: object: Add P010 format
3620
--   v4l2videodec: release decode only frame in input list
3621
-
3622
-gst-plugins-bad
3623
-
3624
--   decklink: add missing video modes, fix 8K video modes
3625
--   onnx: disable onnxruntime telemetry
3626
--   srtpdec: fix build when libsrtp1 is being used
3627
--   srtpdec: Fix a use-after-free buffer issue
3628
--   va: display: Optimize out some property indirection
3629
--   vp9parse/av1parse: Add video codec tag to the tag list
3630
--   webrtc: Simplify fmtp handling in codec stats
3631
--   webrtcbin: Fix potential deadlock on bin elements cleanup
3632
--   zxing: Replace deprecated DecodeHints with ReaderOptions
3633
--   meson: Also disable drm on GNU/Hurd
3634
-
3635
-gst-plugins-ugly
3636
+### Windows
3637
 
3638
--   No changes
3639
+-   webview2src: new Microsoft WebView2 based web browser source element
3640
 
3641
-GStreamer Rust plugins
3642
+-   The mediafoundation plugin can also be built with MinGW now.
3643
 
3644
--   No changes
3645
+-   The GTK3 plugin has gained support for OpenGL/WGL on Windows
3646
 
3647
-gst-libav
3648
+-   qsv: Add support for d3d12 interop in encoder, via D3D11 textures
3649
 
3650
--   avcodecmap: Add some more channel position mappings
3651
+### Cerbero
3652
 
3653
-gst-rtsp-server
3654
+Cerbero is a meta build system used to build GStreamer plus dependencies on platforms where dependencies are not readily
3655
+available, such as Windows, Android, iOS, and macOS.
3656
 
3657
--   No changes
3658
+General improvements
3659
 
3660
-gstreamer-vaapi
3661
+-   New features:
3662
 
3663
--   meson: Re-added required: lines accidentally removed
3664
+    -   Python bindings support has been re-introduced and now supports Linux, Windows (MSVC) and macOS. Simply downloading the
3665
+        official binaries and setting PYTHONPATH to the appropriate directory is sufficient.
3666
 
3667
-gstreamer-sharp
3668
+        -   This should make it easier for macOS and Windows users to use Python libraries, frameworks, and projects that use
3669
+            GStreamer such as Pitivi and gst-python-ml.
3670
 
3671
--   No changes
3672
+    -   Introspection support has been re-introduced on Linux, Windows (MSVC), and macOS.
3673
 
3674
-gst-omx
3675
+    -   New variants assert and checks to disable GLib assertions and runtime checks for performance reasons. Please note that
3676
+        these are not recommended because they have significant behavioural side-effects, make debugging harder, and should only
3677
+        be enabled when targeting extremely resource-constrained platforms.
3678
 
3679
--   No changes
3680
+-   API/ABI changes:
3681
 
3682
-gst-python
3683
+    -   Libsoup has been upgraded from 2.74 to 3.6, which is an API and ABI breaking change. The soup and adaptivedemux2 plugins
3684
+        are unchanged, but your applications may need updating since libsoup-2.4 and libsoup-3.0 cannot co-exist in the same
3685
+        process.
3686
 
3687
--   No changes
3688
+    -   OpenSSL has been updated from 1.1.1 to 3.4, which is an ABI and API breaking change. Plugins are unchanged, but your
3689
+        applications may need updating.
3690
 
3691
-gst-editing-services
3692
+-   Plugins added:
3693
 
3694
--   ges: Fix some reference counting and error handling
3695
--   ges-meta-container: Fix the GET_INTERFACE macro
3696
+    -   The svt-av1 plugin is now shipped in the binary releases for all platforms.
3697
 
3698
-gst-devtools, gst-validate + gst-integration-testsuites
3699
+    -   The svt-jpeg-xs plugin is now shipped in the binary releases for all platforms.
3700
 
3701
--   No changes
3702
+    -   The x265 plugin is now shipped in the binary releases for all platforms.
3703
 
3704
-gst-examples
3705
+    -   All gst-plugins-rs elements are now shipped in the binary releases for all platforms, except those that have C/C++
3706
+        system-deps like GTK4. For a full list, see the Rust section above.
3707
 
3708
--   No changes
3709
+-   Plugins changed:
3710
 
3711
-Development build environment
3712
+    -   The rsvg plugin now uses librsvg written in Rust. The only side-effects of this should be better SVG rendering and
3713
+        slightly larger plugin size.
3714
 
3715
--   No changes
3716
+    -   The webrtc Rust plugin now also supports aws and livekit integrations .
3717
 
3718
-Cerbero build tool and packaging changes in 1.24.11
3719
+-   Plugins removed:
3720
 
3721
--   Fix bootstrap on Windows 11: Install WMIC when missing
3722
+    -   webrtc-audio-processing has been updated to 2.0, which means the isac plugin is no longer shipped.
3723
 
3724
-Contributors to 1.24.11
3725
+-   Development improvements:
3726
 
3727
-Armin Begovic, Benjamin Gräf, Cheung Yik Pang, Christian Meissl, Daniel Morin, Dean Zhang (张安迪), Edward Hervey, Emil
3728
-Ljungdahl, Francisco Javier Velázquez-García, Guillaume Desmottes, Jan Alexander Steffens (heftig), L. E. Segovia, Matthew
3729
-Waters, Max Romanov, Nicolas Dufresne, Philippe Normand, Robert Mader, Samuel Thibault, Sebastian Dröge, Stéphane Cerveau,
3730
-Thibault Saunier, Tim-Philipp Müller,
3731
+    -   Support for the shell command has been added to cross-macos-universal, since the prefix is executable despite being a
3732
+        cross-compile target
3733
 
3734
-… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
3735
+    -   More recipes have been ported away from Autotools to Meson and CMake, speeding up the build and increasing platform
3736
+        support.
3737
 
3738
-List of merge requests and issues fixed in 1.24.11
3739
+#### macOS
3740
 
3741
--   List of Merge Requests applied in 1.24.11
3742
--   List of Issues fixed in 1.24.11
3743
+-   Python bindings support on macOS only supports using the Xcode-provided Python 3
3744
 
3745
-1.24.12
3746
+-   MoltenVK support in the applemedia plugin now also works on arm64 when doing a cross-universal build.
3747
 
3748
-The twelfth 1.24 bug-fix release (1.24.12) was released on 29 January 2025.
3749
+#### iOS
3750
 
3751
-This release only contains bugfixes and it should be safe to update from 1.24.x.
3752
+-   CMake inside Xcode will soon be the recommended way to consume GStreamer when building iOS apps, similar to Android apps.
3753
 
3754
-Highlighted bugfixes in 1.24.12
3755
+    -   FindGStreamerMobile.cmake is the recommended way to consume GStreamer now
3756
 
3757
--   d3d12: Fix shaders failing to compile with newer dxc versions
3758
--   decklinkvideosink: Fix handling of caps framerate in auto mode; also a decklinkaudiosink fix
3759
--   devicemonitor: Fix potential crash macOS when a device is unplugged
3760
--   gst-libav: Fix crash in audio encoders like avenc_ac3 if input data has insufficient alignment
3761
--   gst-libav: Fix build against FFmpeg 4.2 as in Ubuntu 20.04
3762
--   gst-editing-services: Fix Python library name fetching on Windows
3763
--   netclientclock: Don’t store failed internal clocks in the cache, so applications can re-try later
3764
--   oggdemux: Seeking and duration handling fixes
3765
--   osxaudiosrc: Fixes for failing init/no output on recent iOS versions
3766
--   qtdemux: Use mvhd transform matrix and support for flipping
3767
--   rtpvp9pay: Fix profile parsing
3768
--   splitmuxsrc: Fix use with decodebin3 which would occasionally fail with an assertion when seeking
3769
--   tsdemux: Fix backwards PTS wraparound detection with ignore-pcr=true
3770
--   video-overlay-composition: Declare the video/size/orientation tags for the meta and implement scale transformations
3771
--   vtdec: Fix seeks occasionally hanging on macOS due to a race condition when draining
3772
--   webrtc: Fix duplicate payload types with RTX and multiple video codecs
3773
--   win32-pluginloader: Make sure not to create any windows when inspecting plugins
3774
--   wpe: Various fixes for re-negotiation, latency reporting, progress messages on startup
3775
--   x264enc: Add missing data to AvcDecoderConfigurationRecord in codec_data for high profile variants
3776
--   cerbero: Support using ccache with cmake if enabled
3777
--   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
3778
+    -   Tutorials and examples still use Xcode project files, but CMake support will be the active focus going forward
3779
 
3780
-gstreamer
3781
+#### Windows
3782
 
3783
--   device: Fix racy nullptr deref on macOS when a device is unplugged
3784
--   iterator: Added error handling to filtered iterators
3785
--   netclientclock: Don’t ever store failed internal clocks in the cache
3786
--   netclock-replay: use gst_c_args when building, fixing build failure on Solaris
3787
--   pluginloader-win32: create no window
3788
--   pluginloader-win32: fix use after free in find_helper_bin_location
3789
--   sparsefile: ensure error is set when read_buffer() returns 0
3790
--   basetransform: fix incorrect logging inside gst_base_transform_query_caps
3791
+-   The minimum supported OS version is now Windows 10.
3792
 
3793
-gst-plugins-base
3794
+    -   GStreamer itself can still be built for an older Windows, so if your project is majorly impacted by this, please open an
3795
+        issue with details.
3796
 
3797
--   oggdemux: fixes seeking in some cases by not overwriting a valid duration with CLOCK_TIME_NONE
3798
--   video-overlay-composition: Declare the video/size/orientation tags for the meta & implement scale transformation
3799
--   Various fixes found from adding extra warning flags
3800
+-   The Windows MSI installers are now based on WiX v5, with several improvements including a much faster MSI creation process,
3801
+    improved naming in Add/Remove Programs, and more.
3802
 
3803
-gst-plugins-good
3804
+    -   Windows installer packages: Starting with 1.26, due to security reasons, the default installation directory has changed
3805
+        from C:\gstreamer to the Program Files folder, e.g. C:\Program Files (x86)\gstreamer for the 32-bit package on 64-bit
3806
+        Windows. If you upgrade from 1.24 or older versions, the 1.26 installers will NOT keep using the existing folder.
3807
+        Nevertheless if you were using C:\gstreamer we strongly recommend you double-check the install location.
3808
 
3809
--   osxaudiosrc: Fixes for failing init/no output on recent iOS versions
3810
--   qtdemux: Use mvhd transform matrix and support for flipping
3811
--   qtmux: fix critical warnings on negotiation error
3812
--   rtpvp9pay: fix profile parsing
3813
--   splitmuxsrc: Ensure only a single stream-start event is pushed
3814
--   splitmuxsrc: decodebin3 Fails with assertion in mq_slot_handle_stream_start when seeking
3815
--   Various fixes found from adding extra warning flags
3816
+    -   Note for MSI packagers: Starting with 1.26, the installers were ported to WiX 5.0. As part of this, the property for
3817
+        setting the installation directory has been changed to INSTALLDIR, and it now requires a full path to the desired
3818
+        directory, e.g. C:\gstreamer instead of C:\.
3819
 
3820
-gst-plugins-bad
3821
+    -   Cross-MinGW build no longer supports the creation of MSIs. Please use tarballs.
3822
 
3823
--   decklinkvideosink: Fix handling of caps framerate in auto mode
3824
--   decklinkaudiosink: Don’t crash if started without corresponding video sink
3825
--   d3d12: Fix shaders failing to compile with newer dxc versions
3826
--   tsdemux: Fix backwards PTS wraparound detection with ignore-pcr=true
3827
--   vtdec: fix seeks hangs due to a race condition draining
3828
--   vtdec: seeks freeze the pipeline
3829
--   wayland: Print table split when DMABuf format changes
3830
--   webrtc: fix duplicate payload types with RTX and multiple video codecs
3831
--   wpevideosrc: Clear cached SHM buffers after caps re-negotiation
3832
--   wpe: Report latency and start-up progress messages
3833
--   wpe: remove glFlush() when filling buffer
3834
--   Fix build with gtk3 but not wayland
3835
--   Various fixes found from adding extra warning flags
3836
+-   MinGW:
3837
 
3838
-gst-plugins-ugly
3839
+    -   MinGW toolchain has been updated from GCC 8.2 → 14.2 and MinGW 6.0 → 12.0
3840
 
3841
--   x264enc: add missing data to AvcDecoderConfigurationRecord, and switch to GstByteWriter
3842
+    -   The mediafoundation plugin is also shipped in the MinGW packages now.
3843
 
3844
-GStreamer Rust plugins
3845
+    -   The d3d12 plugin is also shipped in the MinGW packages now.
3846
 
3847
--   No changes
3848
+    -   Rust support has been enabled on MinGW 64-bit. Rust support cannot work on 32-bit MinGW due to differences in exception
3849
+        handling between our 32-bit MinGW toolchain and that used by the Rust project
3850
 
3851
-gst-libav
3852
+-   The asio plugin is shipped now, since it no longer has a build-time dependency on the ASIO SDK.
3853
 
3854
--   avaudenc: fix crash in avenc_ac3 if input buffers are insufficiently aligned
3855
--   avcodecmap: Only use new channel positions when compiling against new enough ffmpeg
3856
--   gst-libav: 1.24.11: Fails to build with minimum supported ffmpeg version
3857
+-   The new plugin webview2 is shipped with MSVC. It requires the relevant component shipped with Windows.
3858
 
3859
-gst-rtsp-server
3860
+#### Linux
3861
 
3862
--   No changes
3863
+-   Preliminary support for Alma Linux has been added.
3864
 
3865
-gstreamer-vaapi
3866
+-   RHEL distro support has been improved.
3867
 
3868
--   No changes
3869
+-   Cerbero CI now tests the build on Ubuntu 24.04 LTS.
3870
 
3871
-gstreamer-sharp
3872
+-   curl is used for downloading sources on Fedora instead of wget, since they have moved to wget2 despite show-stopper
3873
+    regressions such as returning a success error code on download failure.
3874
 
3875
--   No changes
3876
+#### Android
3877
 
3878
-gst-omx
3879
+-   CMake inside Gradle is now the recommended way to consume GStreamer when building Android apps
3880
 
3881
--   No changes
3882
+    -   FindGStreamerMobile.cmake is the recommended way to consume GStreamer now
3883
 
3884
-gst-python
3885
+    -   1.26 will support both CMake and Make inside Gradle, but the Make support will likely be removed in 1.28
3886
 
3887
--   No changes
3888
+    -   Documentation updates are still a work-in-progress, help is appreciated
3889
 
3890
-gst-editing-services
3891
+-   Android tutorials and examples are now built with gradle + cmake instead of gradle + make on the CI
3892
 
3893
--   ges: Fix Python library name fetching on Windows
3894
+## Documentation improvements
3895
 
3896
-gst-devtools, gst-validate + gst-integration-testsuites
3897
+-   Tracer objects information is now included in the documentation
3898
 
3899
--   No changes
3900
+## Possibly Breaking Changes
3901
 
3902
-gst-examples
3903
+-   qroverlay: the "pixel-size" property has been removed in favour of a new "size" property with slightly different semantics,
3904
+    where the size of the square is expressed in percent of the smallest of width and height.
3905
 
3906
--   No changes
3907
+-   svtav1enc: The SVT-AV1 3.0.0 API exposes a different mechanism to configure the level of parallelism when encoding, which
3908
+    has been exposed as a new "level-of-parallelism" property. The old "logical-processors" property is no longer functional if
3909
+    the plugin has been compiled against the new API, which might affect encoder performance if application code setting it is
3910
+    not updated.
3911
 
3912
-Development build environment
3913
+-   udpsrc: now disables allocated port reuse for unicast to avoid unexpected side-effects of SO_REUSEADDR where the kernel
3914
+    allocates the same listening port for multiple udpsrc.
3915
 
3916
--   No changes
3917
+-   uridecodebin3 remove non-functional "source" property that doesn’t make sense and always returned NULL anyway.
3918
 
3919
-Cerbero build tool and packaging changes in 1.24.12
3920
+## Known Issues
3921
 
3922
--   cmake: Support using ccache if enabled
3923
+-   GstBuffer now uses C11 atomics for 64 bit atomic operations if available, which may require linking to libatomic on some
3924
+    systems, but this is not done automatically yet, see issue #4177.
3925
 
3926
-Contributors to 1.24.12
3927
+Contributors
3928
 
3929
-Adrian Perez de Castro, Alan Coopersmith, Alexander Slobodeniuk, Andoni Morales Alastruey, Andrew Yooeun Chun, Brad Hards,
3930
-Carlos Bentzen, Colin Kinloch, Edward Hervey, François Laignel, Guillaume Desmottes, Jochen Henneberg, Jordan Yelloz, L. E.
3931
-Segovia, Monty C, Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Rares Branici, Samuel Thibault, Sebastian Dröge, Silvio
3932
-Lazzeretti, Tim-Philipp Müller, Tomas Granath, Will Miller,
3933
+Aaron Boxer, Adrian Perez de Castro, Adrien De Coninck, Alan Coopersmith, Albert Sjolund, Alexander Slobodeniuk, Alex Ashley,
3934
+Alicia Boya García, Andoni Morales Alastruey, Andreas Wittmann, Andrew Yooeun Chun, Angelo Verlain, Aniket Hande, Antonio
3935
+Larrosa, Antonio Morales, Armin Begovic, Arnaud Vrac, Artem Martus, Arun Raghavan, Benjamin Gaignard, Benjamin Gräf, Bill
3936
+Nottingham, Brad Hards, Brad Reitmeyer, Branko Subasic, Carlo Caione, Carlos Bentzen, Carlos Falgueras García, cdelguercio, Chao
3937
+Guo, Cheah, Cheung Yik Pang, chitao1234, Chris Bainbridge, Chris Spencer, Chris Spoelstra, Christian Meissl, Christopher Degawa,
3938
+Chun-wei Fan, Colin Kinloch, Corentin Damman, Daniel Morin, Daniel Pendse, Daniel Stone, Dan Yeaw, Dave Lucia, David Rosca, Dean
3939
+Zhang (张安迪), Denis Yuji Shimizu, Detlev Casanova, Devon Sookhoo, Diego Nieto, Dongyun Seo, dukesook, Edward Hervey, eipachte,
3940
+Eli Mallon, Elizabeth Figura, Elliot Chen, Emil Ljungdahl, Emil Pettersson, eri, F. Duncanh, Fotis Xenakis, Francisco Javier
3941
+Velázquez-García, Francis Quiers, François Laignel, George Hazan, Glyn Davies, Guillaume Desmottes, Guillermo E. Martinez,
3942
+Haihua Hu, Håvard Graff, He Junyan, Hosang Lee, Hou Qi, Hugues Fruchet, Hyunwoo, iodar, jadarve, Jakub Adam, Jakub Vaněk, James
3943
+Cowgill, James Oliver, Jan Alexander Steffens (heftig), Jan Schmidt, Jeffery Wilson, Jendrik Weise, Jerome Colle, Jesper Jensen,
3944
+Jimmy Ohn, Jochen Henneberg, Johan Sternerup, Jonas K Danielsson, Jonas Rebmann, Jordan Petridis, Jordan Petridіs, Jordan
3945
+Yelloz, Jorge Zapata, Joshua Breeden, Julian Bouzas, Jurijs Satcs, Kévin Commaille, Kevin Wang, Khem Raj, kingosticks, Leonardo
3946
+Salvatore, L. E. Segovia, Liam, Lim, Loïc Le Page, Loïc Yhuel, Lyra McMillan, Maksym Khomenko, Marc-André Lureau, Marek Olejnik,
3947
+Marek Vasut, Marianna Smidth Buschle, Marijn Suijten, Mark-André Schadow, Mark Nauwelaerts, Markus Ebner, Martin Nordholts, Mart
3948
+Raudsepp, Mathieu Duponchelle, Matthew Waters, Maxim P. DEMENTYEV, Max Romanov, Mengkejiergeli Ba, Michael Grzeschik, Michael
3949
+Olbrich, Michael Scherle, Michael Tretter, Michiel Westerbeek, Mikhail Rudenko, Nacho Garcia, Nick Steel, Nicolas Dufresne,
3950
+Niklas Jang, Nirbheek Chauhan, Ognyan Tonchev, Olivier Crête, Oskar Fiedot, Pablo García, Pablo Sun, Patricia Muscalu, Paweł
3951
+Kotiuk, Peter Kjellerstedt, Peter Stensson, pgarciasancho, Philippe Normand, Philipp Zabel, Piotr Brzeziński, Qian Hu (胡骞),
3952
+Rafael Caricio, Randy Li (ayaka), Rares Branici, Ray Tiley, Robert Ayrapetyan, Robert Guziolowski, Robert Mader, Roberto Viola,
3953
+Robert Rosengren, RSWilli,Ruben González, Ruijing Dong, Sachin Gadag, Sam James, Samuel Thibault, Sanchayan Maity, Scott Moreau,
3954
+Sebastian Dröge, Sebastian Gross, Sebastien Cote, Sergey Krivohatskiy, Sergey Radionov, Seungha Yang, Seungmin Kim, Shengqi Yu,
3955
+Sid Sethupathi, Silvio Lazzeretti, Simonas Kazlauskas, Stefan Riedmüller, Stéphane Cerveau, Tamas Levai, Taruntej Kanakamalla,
3956
+Théo Maillart, Thibault Saunier, Thomas Goodwin, Thomas Klausner, Tihran Katolikian, Tim Blechmann, Tim-Philipp Müller, Tjitte
3957
+de Wert, Tomas Granath, Tomáš Polomský, tomaszmi, Tom Schuring, U. Artie Eoff, valadaptive, Víctor Manuel Jáquez Leal, Vivia
3958
+Nikolaidou, W. Bartel, Weijian Pan, William Wedler, Will Miller, Wim Taymans, Wojciech Kapsa, Xavier Claessens, Xi Ruoyao,
3959
+Xizhen, Yaakov Selkowitz, Yacine Bandou, Zach van Rijn, Zeno Endemann, Zhao, Zhong Hongcheng,
3960
 
3961
 … and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
3962
 
3963
-List of merge requests and issues fixed in 1.24.12
3964
+Stable 1.26 branch
3965
 
3966
--   List of Merge Requests applied in 1.24.12
3967
--   List of Issues fixed in 1.24.12
3968
+After the 1.26.0 release there will be several 1.26.x bug-fix releases which will contain bug fixes which have been deemed
3969
+suitable for a stable branch, but no new features or intrusive changes will be added to a bug-fix release usually. The 1.26.x
3970
+bug-fix releases will be made from the git 1.26 branch, which is a stable release series branch.
3971
 
3972
-Schedule for 1.26
3973
+Schedule for 1.28
3974
 
3975
-Our next major feature release will be 1.26, and 1.25 will be the unstable development version leading up to the stable 1.26
3976
-release. The development of 1.25/1.25 will happen in the git main branch of the GStreamer mono repository.
3977
+Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
3978
+release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
3979
 
3980
-The schedule for 1.26 is yet to be decided.
3981
+The schedule for 1.28 is yet to be decided.
3982
 
3983
-1.26 will be backwards-compatible to the stable 1.24, 1.22, 1.20, 1.18, 1.16, 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0
3984
+1.28 will be backwards-compatible to the stable 1.26, 1.24, 1.22, 1.20, 1.18, 1.16, 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0
3985
 release series.
3986
 
3987
 --------------------------------------------------------------------------------------------------------------------------------
3988
 
3989
-These release notes have been prepared by Tim-Philipp Müller with contributions from Edward Hervey, Matthew Waters, Nicolas
3990
-Dufresne, Nirbheek Chauhan, Olivier Crête, Sebastian Dröge, Seungha Yang, Thibault Saunier, and Víctor Manuel Jáquez Leal.
3991
+These release notes have been prepared by Tim-Philipp Müller with contributions from Arun Raghavan, Daniel Morin, Nirbheek
3992
+Chauhan, Olivier Crête, Philippe Normand, Sebastian Dröge, Seungha Yang, Thibault Saunier, and Víctor Manuel Jáquez Leal.
3993
 
3994
 License: CC BY-SA 4.0
3995
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/README.md -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/README.md Changed
7
 
1
@@ -1,4 +1,4 @@
2
-GStreamer 1.24.x stable series
3
+GStreamer 1.26.x stable series
4
 
5
 WHAT IT IS
6
 ----------
7
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/RELEASE -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/RELEASE Changed
22
 
1
@@ -1,4 +1,4 @@
2
-This is GStreamer gst-plugins-ugly 1.24.12.
3
+This is GStreamer gst-plugins-ugly 1.26.0.
4
 
5
 The GStreamer team is thrilled to announce a new major feature release
6
 of your favourite cross-platform multimedia framework!
7
@@ -6,12 +6,12 @@
8
 As always, this release is again packed with new features, bug fixes and
9
 other improvements.
10
  
11
-The 1.24 release series adds new features on top of the 1.22 series and is
12
+The 1.26 release series adds new features on top of the 1.24 series and is
13
 part of the API and ABI-stable 1.x release series.
14
 
15
 Full release notes can be found at:
16
 
17
-  https://gstreamer.freedesktop.org/releases/1.24/
18
+  https://gstreamer.freedesktop.org/releases/1.26/
19
 
20
 Binaries for Android, iOS, Mac OS X and Windows will usually be provided
21
 shortly after the release.
22
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/docs/gst_plugins_cache.json -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/docs/gst_plugins_cache.json Changed
47
 
1
@@ -1014,6 +1014,18 @@
2
                         "type": "gchararray",
3
                         "writable": true
4
                     },
5
+                    "nal-hrd": {
6
+                        "blurb": "Signal Hypothetical Reference Decoder information",
7
+                        "conditionally-available": false,
8
+                        "construct": false,
9
+                        "construct-only": false,
10
+                        "controllable": false,
11
+                        "default": "none (0)",
12
+                        "mutable": "null",
13
+                        "readable": true,
14
+                        "type": "GstX264EncNalHrd",
15
+                        "writable": true
16
+                    },
17
                     "noise-reduction": {
18
                         "blurb": "Noise reduction strength",
19
                         "conditionally-available": false,
20
@@ -1399,6 +1411,26 @@
21
                     }
22
                 
23
             },
24
+            "GstX264EncNalHrd": {
25
+                "kind": "enum",
26
+                "values": 
27
+                    {
28
+                        "desc": "None",
29
+                        "name": "none",
30
+                        "value": "0"
31
+                    },
32
+                    {
33
+                        "desc": "Variable bitrate",
34
+                        "name": "vbr",
35
+                        "value": "1"
36
+                    },
37
+                    {
38
+                        "desc": "Constant bitrate",
39
+                        "name": "cbr",
40
+                        "value": "2"
41
+                    }
42
+                
43
+            },
44
             "GstX264EncPass": {
45
                 "kind": "enum",
46
                 "values": 
47
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/docs/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/docs/meson.build Changed
121
 
1
@@ -18,13 +18,13 @@
2
     subdir_done()
3
 endif
4
 
5
-required_hotdoc_extensions = 'gst-extension'
6
 plugins_cache = join_paths(meson.current_source_dir(), 'gst_plugins_cache.json')
7
 if gst_dep.type_name() == 'internal'
8
     gst_proj = subproject('gstreamer')
9
     plugins_cache_generator = gst_proj.get_variable('plugins_cache_generator')
10
 else
11
-    plugins_cache_generator = find_program(join_paths(gst_dep.get_variable('libexecdir'), 'gstreamer-' + api_version, 'gst-plugins-doc-cache-generator'),
12
+    plugins_cache_generator = find_program('gst-plugins-doc-cache-generator',
13
+        dirs: join_paths(gst_dep.get_variable('libexecdir', default_value: ''), 'gstreamer-' + api_version),
14
         required: false)
15
 endif
16
 
17
@@ -41,35 +41,10 @@
18
     warning('GStreamer plugin inspector for documentation not found, can\'t update the cache')
19
 endif
20
 
21
-hotdoc_p = find_program('hotdoc', required: get_option('doc'))
22
-if not hotdoc_p.found()
23
-    message('Hotdoc not found, not building the documentation')
24
-    subdir_done()
25
-endif
26
-
27
-hotdoc_req = '>= 0.11.0'
28
-hotdoc_version = run_command(hotdoc_p, '--version', check: false).stdout()
29
-if not hotdoc_version.version_compare(hotdoc_req)
30
-    if get_option('doc').enabled()
31
-        error('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
32
-    else
33
-        message('Hotdoc version @0@ not found, got @1@'.format(hotdoc_req, hotdoc_version))
34
-        subdir_done()
35
-    endif
36
+if get_option('doc').disabled()
37
+  subdir_done()
38
 endif
39
 
40
-hotdoc = import('hotdoc')
41
-foreach extension: required_hotdoc_extensions
42
-    if not hotdoc.has_extensions(extension)
43
-        if get_option('doc').enabled()
44
-            error('Documentation enabled but @0@ missing'.format(extension))
45
-        endif
46
-
47
-        message('@0@ extension not found, not building documentation'.format(extension))
48
-        subdir_done()
49
-    endif
50
-endforeach
51
-
52
 build_hotdoc = true
53
 docconf = configuration_data()
54
 docconf.set('GST_API_VERSION', api_version)
55
@@ -84,24 +59,28 @@
56
     excludes += join_paths(meson.current_source_dir(), root_rel, '..', f)
57
 endforeach
58
 
59
-libs_doc = 
60
-plugins_doc = 
61
-list_plugin_res = run_command(python3, '-c',
62
-'''
63
-import sys
64
-import json
65
-
66
-with open("@0@") as f:
67
-        print(':'.join(json.load(f).keys()), end='')
68
-'''.format(plugins_cache),
69
-  check: true)
70
+doc_source_file = configure_file(output: 'doc_sources.json', configuration: plugin_sources, output_format: 'json')
71
+
72
+plugin_libraries = {}
73
+
74
+foreach plugin: plugins
75
+  if plugin.name().startswith('gst')
76
+    plugin_name = plugin.name().substring(3)
77
+  else
78
+    plugin_name = plugin.name()
79
+  endif
80
+
81
+  plugin_libraries += {
82
+    plugin_name: plugin.full_path()
83
+  }
84
+endforeach
85
+
86
+doc_plugin_libs_file = configure_file(output: 'doc_plugin_libs.json', configuration: plugin_libraries, output_format: 'json')
87
+
88
 cdir = meson.current_source_dir()
89
-if host_machine.system() == 'windows'
90
-  pathsep = ';'
91
-else
92
-  pathsep = ':'
93
-endif
94
-gst_plugins_doc = run_command(
95
+plugin_hotdoc_configs = custom_target(
96
+  'build-hotdoc-configs',
97
+  command: 
98
     plugins_cache_generator,
99
     'hotdoc-config',
100
     '--builddir', meson.current_build_dir(),
101
@@ -109,11 +88,12 @@
102
     '--sitemap', cdir / 'sitemap.txt',
103
     '--index', cdir / 'index.md',
104
     '--gst_index', cdir / 'index.md',
105
-    '--gst_c_sources',
106
-        root_rel / 'sys/*/*.ch',
107
-        root_rel / 'ext/*/*.ch',
108
-        root_rel / 'gst/*/*.ch',
109
     '--gst_c_source_filters', excludes,
110
-    '--gst_cache_file', plugins_cache,
111
-    check: true,
112
-).stdout().split(pathsep)
113
+    '--gst_cache_file', '@INPUT@',
114
+    '--output', '@OUTPUT@',
115
+    '--gst_c_source_file', doc_source_file,
116
+    '--gst_plugin_libraries_file', doc_plugin_libs_file,
117
+  ,
118
+  input: plugins_cache,
119
+  output: 'hotdoc-configs.json',
120
+)
121
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/a52dec/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/a52dec/meson.build Changed
41
 
1
@@ -3,13 +3,30 @@
2
   Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built.
3
   ''')
4
 
5
+a52dec_sources = 
6
+  'gsta52dec.c',
7
+
8
+
9
+a52dec_headers = 
10
+  'gsta52dec.h',
11
+
12
+
13
+doc_sources = 
14
+foreach s: a52dec_sources + a52dec_headers
15
+  doc_sources += meson.current_source_dir() / s
16
+endforeach
17
+
18
+plugin_sources += {
19
+  'a52dec': pathsep.join(doc_sources)
20
+}
21
+
22
 a52_dep = cc.find_library('a52', required : get_option('a52dec'))
23
 if a52_dep.found()
24
   have_a52_h = cc.has_header_symbol('a52dec/a52.h', 'a52_init', prefix : '#include <stdint.h>')
25
 
26
   if have_a52_h
27
     a52dec = library('gsta52dec',
28
-      'gsta52dec.c',
29
+      a52dec_sources,
30
       c_args : ugly_args,
31
       include_directories : configinc,
32
       dependencies : gstaudio_dep, orc_dep, a52_dep,
33
@@ -18,6 +35,6 @@
34
     )
35
     plugins += a52dec
36
   elif a52dec_opt.enabled()
37
-    error('a52dec plugin enabled but a52.h not found')  
38
+    error('a52dec plugin enabled but a52.h not found')
39
   endif
40
 endif
41
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/cdio/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/cdio/meson.build Changed
34
 
1
@@ -3,11 +3,31 @@
2
   Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built.
3
   ''')
4
 
5
+cdio_sources = 
6
+  'gstcdio.c',
7
+  'gstcdiocddasrc.c',
8
+
9
+
10
+cdio_headers = 
11
+  'gstcdiocddasrc.h',
12
+  'gstcdio.h',
13
+
14
+
15
+doc_sources = 
16
+foreach s: cdio_sources + cdio_headers
17
+  doc_sources += meson.current_source_dir() / s
18
+endforeach
19
+
20
+plugin_sources += {
21
+  'cdio': pathsep.join(doc_sources)
22
+}
23
+
24
 cdio_dep = dependency('libcdio', version : '>= 0.76', required : cdio_opt)
25
 
26
 if cdio_dep.found()
27
+
28
   cdio = library('gstcdio',
29
-    'gstcdio.c', 'gstcdiocddasrc.c',
30
+    cdio_sources,
31
     c_args : ugly_args,
32
     include_directories : configinc, libsinc,
33
     dependencies : gstaudio_dep, gsttag_dep, cdio_dep,
34
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/dvdread/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/dvdread/meson.build Changed
31
 
1
@@ -3,11 +3,28 @@
2
   Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built.
3
   ''')
4
 
5
+dvdread_sources = 
6
+  'dvdreadsrc.c',
7
+
8
+
9
+dvdread_headers = 
10
+  'dvdreadsrc.h',
11
+
12
+
13
+doc_sources = 
14
+foreach s: dvdread_sources + dvdread_headers
15
+  doc_sources += meson.current_source_dir() / s
16
+endforeach
17
+
18
+plugin_sources += {
19
+  'dvdread': pathsep.join(doc_sources)
20
+}
21
+
22
 dvdread_dep = dependency('dvdread', version : '>= 0.5.0', required : dvdread_opt)
23
 
24
 if dvdread_dep.found()
25
   dvdread = library('gstdvdread',
26
-    'dvdreadsrc.c',
27
+    dvdread_sources,
28
     c_args : ugly_args,
29
     include_directories : configinc, libsinc,
30
     dependencies : gstbase_dep, gmodule_dep, dvdread_dep,
31
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/mpeg2dec/gstmpeg2dec.c -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/mpeg2dec/gstmpeg2dec.c Changed
12
 
1
@@ -1120,8 +1120,10 @@
2
         break;
3
       case STATE_INVALID_END:
4
         GST_DEBUG_OBJECT (mpeg2dec, "invalid end");
5
+        /* FALLTHROUGH */
6
       case STATE_END:
7
         GST_DEBUG_OBJECT (mpeg2dec, "end");
8
+        /* FALLTHROUGH */
9
       case STATE_SLICE:
10
         GST_DEBUG_OBJECT (mpeg2dec, "display_fbuf:%p, discard_fbuf:%p",
11
             info->display_fbuf, info->discard_fbuf);
12
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/mpeg2dec/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/mpeg2dec/meson.build Changed
31
 
1
@@ -3,11 +3,28 @@
2
   Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built.
3
   ''')
4
 
5
+mpeg2dec_sources = 
6
+  'gstmpeg2dec.c',
7
+
8
+
9
+mpeg2dec_headers = 
10
+  'gstmpeg2dec.h',
11
+
12
+
13
+doc_sources = 
14
+foreach s: mpeg2dec_sources + mpeg2dec_headers
15
+  doc_sources += meson.current_source_dir() / s
16
+endforeach
17
+
18
+plugin_sources += {
19
+  'mpeg2dec': pathsep.join(doc_sources)
20
+}
21
+
22
 mpeg2_dep = dependency('libmpeg2', version : '>= 0.4.0', required : mpeg2dec_opt)
23
 
24
 if mpeg2_dep.found()
25
   mpeg2dec = library('gstmpeg2dec',
26
-    'gstmpeg2dec.c',
27
+    mpeg2dec_sources,
28
     c_args : ugly_args,
29
     include_directories : configinc,
30
     dependencies : gstvideo_dep, mpeg2_dep,
31
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/sidplay/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/sidplay/meson.build Changed
35
 
1
@@ -3,6 +3,23 @@
2
   Pass option -Dgpl=enabled to Meson to allow GPL-licensed plugins to be built.
3
   ''')
4
 
5
+sid_sources = 
6
+  'gstsiddec.cc',
7
+
8
+
9
+sid_headers = 
10
+  'gstsiddec.h',
11
+
12
+
13
+doc_sources = 
14
+foreach s: sid_sources + sid_headers
15
+  doc_sources += meson.current_source_dir() / s
16
+endforeach
17
+
18
+plugin_sources += {
19
+  'sid': pathsep.join(doc_sources)
20
+}
21
+
22
 if not add_languages('cpp', native: false, required: sidplay_option)
23
   subdir_done()
24
 endif
25
@@ -28,7 +45,8 @@
26
   subdir_done()
27
 endif
28
 
29
-gstsid = library('gstsid', 'gstsiddec.cc',
30
+gstsid = library('gstsid',
31
+  sid_sources,
32
   cpp_args : ugly_args,
33
   include_directories : configinc,
34
   dependencies : gstaudio_dep, sidplay_dep,
35
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/x264/gstx264enc.c -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/x264/gstx264enc.c Changed
134
 
1
@@ -423,6 +423,7 @@
2
   ARG_TUNE,
3
   ARG_FRAME_PACKING,
4
   ARG_INSERT_VUI,
5
+  ARG_NAL_HRD,
6
 };
7
 
8
 #define ARG_THREADS_DEFAULT            0        /* 0 means 'auto' which is 1.5x number of CPU cores */
9
@@ -465,6 +466,7 @@
10
 #define ARG_TUNE_DEFAULT               0        /* no tuning */
11
 #define ARG_FRAME_PACKING_DEFAULT      -1       /* automatic (none, or from input caps) */
12
 #define ARG_INSERT_VUI_DEFAULT         TRUE
13
+#define ARG_NAL_HRD_DEFAULT            0
14
 
15
 enum
16
 {
17
@@ -505,6 +507,25 @@
18
   return pass_type;
19
 }
20
 
21
+#define GST_X264_ENC_NAL_HRD_TYPE (gst_x264_enc_nal_hrd_get_type())
22
+static GType
23
+gst_x264_enc_nal_hrd_get_type (void)
24
+{
25
+  static GType nal_hrd_type = 0;
26
+
27
+  static const GEnumValue nal_hrd_types = {
28
+    {GST_X264_ENC_NAL_HRD_NONE, "None", "none"},
29
+    {GST_X264_ENC_NAL_HRD_VBR, "Variable bitrate", "vbr"},
30
+    {GST_X264_ENC_NAL_HRD_CBR, "Constant bitrate", "cbr"},
31
+    {0, NULL, NULL}
32
+  };
33
+
34
+  if (!nal_hrd_type) {
35
+    nal_hrd_type = g_enum_register_static ("GstX264EncNalHrd", nal_hrd_types);
36
+  }
37
+  return nal_hrd_type;
38
+}
39
+
40
 #define GST_X264_ENC_ME_TYPE (gst_x264_enc_me_get_type())
41
 static GType
42
 gst_x264_enc_me_get_type (void)
43
@@ -849,8 +870,8 @@
44
   filter_caps = gst_caps_new_empty ();
45
 
46
   for (i = 0; i < gst_caps_get_size (supported_incaps); i++) {
47
-    GQuark q_name =
48
-        gst_structure_get_name_id (gst_caps_get_structure (supported_incaps,
49
+    const GstIdStr *name =
50
+        gst_structure_get_name_id_str (gst_caps_get_structure (supported_incaps,
51
             i));
52
 
53
     for (j = 0; j < gst_caps_get_size (allowed); j++) {
54
@@ -860,7 +881,7 @@
55
 
56
       /* FIXME Find a way to reuse gst_video_encoder_proxy_getcaps so that
57
        * we do not need to copy that logic */
58
-      s = gst_structure_new_id_empty (q_name);
59
+      s = gst_structure_new_id_str_empty (name);
60
       if ((val = gst_structure_get_value (allowed_s, "width")))
61
         gst_structure_set_value (s, "width", val);
62
       if ((val = gst_structure_get_value (allowed_s, "height")))
63
@@ -1210,6 +1231,25 @@
64
   g_string_append_printf (x264enc_defaults, ":interlaced=%d",
65
       ARG_INTERLACED_DEFAULT);
66
 
67
+  /**
68
+   * x264enc:nal-hrd:
69
+   *
70
+   * Signal Hypothetical Reference Decoder information.
71
+   *
72
+   * Required for Blu-ray streams, television broadcast and a
73
+   * few other specialist areas.
74
+   *
75
+   * It can be used for instance to force true CBR, and will cause
76
+   * the encoder to output NULL padding packets.
77
+   *
78
+   * Since: 1.26
79
+   */
80
+  g_object_class_install_property (gobject_class, ARG_NAL_HRD,
81
+      g_param_spec_enum ("nal-hrd", "NAL HRD",
82
+          "Signal Hypothetical Reference Decoder information",
83
+          GST_X264_ENC_NAL_HRD_TYPE, ARG_NAL_HRD_DEFAULT,
84
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
85
+
86
   /* append deblock parameters */
87
   g_string_append_printf (x264enc_defaults, ":deblock=0,0");
88
   /* append weighted prediction parameter */
89
@@ -1244,6 +1284,7 @@
90
   gst_type_mark_as_plugin_api (GST_X264_ENC_PSY_TUNE_TYPE, 0);
91
   gst_type_mark_as_plugin_api (GST_X264_ENC_SPEED_PRESET_TYPE, 0);
92
   gst_type_mark_as_plugin_api (GST_X264_ENC_TUNE_TYPE, 0);
93
+  gst_type_mark_as_plugin_api (GST_X264_ENC_NAL_HRD_TYPE, 0);
94
 }
95
 
96
 /* *INDENT-OFF* */
97
@@ -1341,6 +1382,7 @@
98
   encoder->tune = ARG_TUNE_DEFAULT;
99
   encoder->frame_packing = ARG_FRAME_PACKING_DEFAULT;
100
   encoder->insert_vui = ARG_INSERT_VUI_DEFAULT;
101
+  encoder->nal_hrd = ARG_NAL_HRD_DEFAULT;
102
 
103
   encoder->bitrate_manager =
104
       gst_encoder_bitrate_profile_manager_new (ARG_BITRATE_DEFAULT);
105
@@ -1916,6 +1958,8 @@
106
 
107
   GST_OBJECT_UNLOCK (encoder);
108
 
109
+  encoder->x264param.i_nal_hrd = encoder->nal_hrd;
110
+
111
   encoder->x264enc = encoder->vtable->x264_encoder_open (&encoder->x264param);
112
   if (!encoder->x264enc) {
113
     GST_ELEMENT_ERROR (encoder, STREAM, ENCODE,
114
@@ -3032,6 +3076,9 @@
115
     case ARG_INSERT_VUI:
116
       encoder->insert_vui = g_value_get_boolean (value);
117
       break;
118
+    case ARG_NAL_HRD:
119
+      encoder->nal_hrd = g_value_get_enum (value);
120
+      break;
121
     default:
122
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
123
       break;
124
@@ -3176,6 +3223,9 @@
125
     case ARG_INSERT_VUI:
126
       g_value_set_boolean (value, encoder->insert_vui);
127
       break;
128
+    case ARG_NAL_HRD:
129
+      g_value_set_enum (value, encoder->nal_hrd);
130
+      break;
131
     default:
132
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
133
       break;
134
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/x264/gstx264enc.h -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/x264/gstx264enc.h Changed
43
 
1
@@ -35,7 +35,7 @@
2
  * compiler is unable to correctly do the pointer indirection for us, which
3
  * leads to a segfault when you try to dereference any const values provided
4
  * by x264.dll. See: https://bugzilla.gnome.org/show_bug.cgi?id=779249 */
5
-#if defined(_WIN32) && !defined(X264_API_IMPORTS)
6
+#if defined(_WIN32) && !defined(X264_API_IMPORTS) && !defined(GST_STATIC_COMPILATION)
7
 # define X264_API_IMPORTS
8
 #endif
9
 #include <x264.h>
10
@@ -113,6 +113,7 @@
11
   GString *option_string; /* used by set prop */
12
   gint frame_packing;
13
   gboolean insert_vui;
14
+  gint nal_hrd;
15
 
16
   /* input description */
17
   GstVideoCodecState *input_state;
18
@@ -136,6 +137,24 @@
19
   GstVideoEncoderClass parent_class;
20
 };
21
 
22
+/**
23
+ * GstX264EncNalHrd:
24
+ * @GST_X264_ENC_NAL_HRD_NONE: Specify no HRD information
25
+ * @GST_X264_ENC_NAL_HRD_VBR: Specify HRD information
26
+ * @GST_X264_ENC_NAL_HRD_CBR: Specify HRD information and pack the bitstream
27
+ *
28
+ * Signal HRD information. Required for Blu-ray streams,
29
+ * television broadcast and a few other specialist areas.
30
+ *
31
+ * Since: 1.26
32
+ */
33
+typedef enum
34
+{
35
+  GST_X264_ENC_NAL_HRD_NONE = 0,
36
+  GST_X264_ENC_NAL_HRD_VBR = 1,
37
+  GST_X264_ENC_NAL_HRD_CBR = 2,
38
+} GstX264EncNalHrd;
39
+
40
 GType gst_x264_enc_get_type (void);
41
 GST_ELEMENT_REGISTER_DECLARE (x264enc);
42
 
43
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/ext/x264/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/ext/x264/meson.build Changed
22
 
1
@@ -8,6 +8,20 @@
2
   'gstencoderbitrateprofilemanager.c',
3
 
4
 
5
+x264_headers = 
6
+  'gstx264enc.h',
7
+  'gstencoderbitrateprofilemanager.h',
8
+
9
+
10
+doc_sources = 
11
+foreach s: x264_sources + x264_headers
12
+  doc_sources += meson.current_source_dir() / s
13
+endforeach
14
+
15
+plugin_sources += {
16
+  'x264': pathsep.join(doc_sources)
17
+}
18
+
19
 x264_dep = dependency('x264', version : '>=0.156', required : x264_opt,
20
                       fallback: 'x264', 'libx264_dep')
21
 
22
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst-plugins-ugly.doap -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst-plugins-ugly.doap Changed
139
 
1
@@ -35,121 +35,41 @@
2
 
3
  <release>
4
   <Version>
5
-   <revision>1.24.12</revision>
6
-   <branch>1.24</branch>
7
-   <name></name>
8
-   <created>2025-01-29</created>
9
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.12.tar.xz" />
10
-  </Version>
11
- </release>
12
-
13
- <release>
14
-  <Version>
15
-   <revision>1.24.11</revision>
16
-   <branch>1.24</branch>
17
-   <name></name>
18
-   <created>2025-01-06</created>
19
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.11.tar.xz" />
20
-  </Version>
21
- </release>
22
-
23
- <release>
24
-  <Version>
25
-   <revision>1.24.10</revision>
26
-   <branch>1.24</branch>
27
-   <name></name>
28
-   <created>2024-12-03</created>
29
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.10.tar.xz" />
30
-  </Version>
31
- </release>
32
-
33
- <release>
34
-  <Version>
35
-   <revision>1.24.9</revision>
36
-   <branch>1.24</branch>
37
-   <name></name>
38
-   <created>2024-10-30</created>
39
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.9.tar.xz" />
40
-  </Version>
41
- </release>
42
-
43
- <release>
44
-  <Version>
45
-   <revision>1.24.8</revision>
46
-   <branch>1.24</branch>
47
-   <name></name>
48
-   <created>2024-09-19</created>
49
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.8.tar.xz" />
50
-  </Version>
51
- </release>
52
-
53
- <release>
54
-  <Version>
55
-   <revision>1.24.7</revision>
56
-   <branch>1.24</branch>
57
-   <name></name>
58
-   <created>2024-08-21</created>
59
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.7.tar.xz" />
60
-  </Version>
61
- </release>
62
-
63
- <release>
64
-  <Version>
65
-   <revision>1.24.6</revision>
66
-   <branch>1.24</branch>
67
-   <name></name>
68
-   <created>2024-07-29</created>
69
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.6.tar.xz" />
70
-  </Version>
71
- </release>
72
-
73
- <release>
74
-  <Version>
75
-   <revision>1.24.5</revision>
76
-   <branch>1.24</branch>
77
-   <name></name>
78
-   <created>2024-06-20</created>
79
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.5.tar.xz" />
80
-  </Version>
81
- </release>
82
-
83
- <release>
84
-  <Version>
85
-   <revision>1.24.4</revision>
86
-   <branch>1.24</branch>
87
+   <revision>1.26.0</revision>
88
+   <branch>main</branch>
89
    <name></name>
90
-   <created>2024-05-29</created>
91
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.4.tar.xz" />
92
+   <created>2025-03-11</created>
93
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.26.0.tar.xz" />
94
   </Version>
95
  </release>
96
 
97
  <release>
98
   <Version>
99
-   <revision>1.24.3</revision>
100
-   <branch>1.24</branch>
101
+   <revision>1.25.90</revision>
102
+   <branch>main</branch>
103
    <name></name>
104
-   <created>2024-04-30</created>
105
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.3.tar.xz" />
106
+   <created>2025-02-23</created>
107
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.25.90.tar.xz" />
108
   </Version>
109
  </release>
110
 
111
  <release>
112
   <Version>
113
-   <revision>1.24.2</revision>
114
-   <branch>1.24</branch>
115
+   <revision>1.25.50</revision>
116
+   <branch>main</branch>
117
    <name></name>
118
-   <created>2024-04-09</created>
119
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.2.tar.xz" />
120
+   <created>2025-02-09</created>
121
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.25.50.tar.xz" />
122
   </Version>
123
  </release>
124
 
125
  <release>
126
   <Version>
127
-   <revision>1.24.1</revision>
128
-   <branch>1.24</branch>
129
+   <revision>1.25.1</revision>
130
+   <branch>main</branch>
131
    <name></name>
132
-   <created>2024-03-21</created>
133
-   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.24.1.tar.xz" />
134
+   <created>2025-01-14</created>
135
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.25.1.tar.xz" />
136
   </Version>
137
  </release>
138
 
139
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/asfdemux/gstasfdemux.c -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/asfdemux/gstasfdemux.c Changed
19
 
1
@@ -2304,15 +2304,15 @@
2
         GST_INFO_OBJECT (demux, "Chained asf starting");
3
         /* cleanup and get ready for a chained asf */
4
         gst_asf_demux_reset (demux, TRUE);
5
-        /* fall through */
6
       }
7
     }
8
+      /* FALLTHROUGH */
9
     case GST_ASF_DEMUX_STATE_HEADER:{
10
       ret = gst_asf_demux_chain_headers (demux);
11
       if (demux->state != GST_ASF_DEMUX_STATE_DATA)
12
         break;
13
-      /* otherwise fall through */
14
     }
15
+      /* FALLTHROUGH */
16
     case GST_ASF_DEMUX_STATE_DATA:
17
     {
18
       guint64 data_size;
19
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/asfdemux/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/asfdemux/meson.build Changed
30
 
1
@@ -8,6 +8,28 @@
2
   'gstrtspwms.c',
3
 
4
 
5
+asf_headers = 
6
+  'gstasfelements.h',
7
+  'gstasfdemux.h',
8
+  'asfheaders.h',
9
+  'gstrtpasfdepay.h',
10
+  'gstrtspwms.h',
11
+  'asfpacket.h',
12
+
13
+
14
+doc_sources = 
15
+foreach s: asf_sources + asf_headers
16
+  doc_sources += meson.current_source_dir() / s
17
+endforeach
18
+
19
+plugin_sources += {
20
+  'asf': pathsep.join(doc_sources)
21
+}
22
+
23
+if get_option('asfdemux').disabled()
24
+  subdir_done()
25
+endif
26
+
27
 gstasf = library('gstasf',
28
   asf_sources,
29
   c_args : ugly_args,
30
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/dvdlpcmdec/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/dvdlpcmdec/meson.build Changed
25
 
1
@@ -2,6 +2,23 @@
2
   'gstdvdlpcmdec.c'
3
 
4
 
5
+dvdpl_headers = 
6
+  'gstdvdlpcmdec.h',
7
+
8
+
9
+doc_sources = 
10
+foreach s: dvdpl_sources + dvdpl_headers
11
+  doc_sources += meson.current_source_dir() / s
12
+endforeach
13
+
14
+plugin_sources += {
15
+  'dvdlpcmdec': pathsep.join(doc_sources)
16
+}
17
+
18
+if get_option('dvdlpcmdec').disabled()
19
+  subdir_done()
20
+endif
21
+
22
 gstdvdlpcmdec = library('gstdvdlpcmdec',
23
   dvdpl_sources,
24
   c_args : ugly_args,
25
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/dvdsub/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/dvdsub/meson.build Changed
26
 
1
@@ -3,6 +3,24 @@
2
   'gstdvdsubparse.c',
3
 
4
 
5
+dvdsub_headers = 
6
+  'gstdvdsubdec.h',
7
+  'gstdvdsubparse.h',
8
+
9
+
10
+doc_sources = 
11
+foreach s: dvdsub_sources + dvdsub_headers
12
+  doc_sources += meson.current_source_dir() / s
13
+endforeach
14
+
15
+plugin_sources += {
16
+  'dvdsub': pathsep.join(doc_sources)
17
+}
18
+
19
+if get_option('dvdsub').disabled()
20
+  subdir_done()
21
+endif
22
+
23
 gstdvdsub = library('gstdvdsub',
24
   dvdsub_sources,
25
   c_args : ugly_args,
26
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/meson.build Changed
8
 
1
@@ -1,5 +1,3 @@
2
 foreach plugin : 'asfdemux', 'dvdlpcmdec', 'dvdsub', 'realmedia'
3
-  if not get_option(plugin).disabled()
4
-    subdir(plugin)
5
-  endif
6
+  subdir(plugin)
7
 endforeach
8
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/realmedia/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/realmedia/meson.build Changed
28
 
1
@@ -5,6 +5,26 @@
2
   'realmedia.c'
3
 
4
 
5
+real_headers = 
6
+  'rmdemux.h',
7
+  'rademux.h',
8
+  'rmutils.h',
9
+  'pnmsrc.h',
10
+
11
+
12
+doc_sources = 
13
+foreach s: real_sources + real_headers
14
+  doc_sources += meson.current_source_dir() / s
15
+endforeach
16
+
17
+plugin_sources += {
18
+  'realmedia': pathsep.join(doc_sources)
19
+}
20
+
21
+if get_option('realmedia').disabled()
22
+  subdir_done()
23
+endif
24
+
25
 gstrmdemux = library('gstrealmedia',
26
   real_sources,
27
   c_args : ugly_args,
28
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/gst/realmedia/rademux.c -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/gst/realmedia/rademux.c Changed
18
 
1
@@ -595,14 +595,14 @@
2
       ret = gst_real_audio_demux_parse_marker (demux);
3
       if (ret != GST_FLOW_OK || demux->state != REAL_AUDIO_DEMUX_STATE_HEADER)
4
         break;
5
-      /* otherwise fall through */
6
     }
7
+      /* FALLTHROUGH */
8
     case REAL_AUDIO_DEMUX_STATE_HEADER:{
9
       ret = gst_real_audio_demux_parse_header (demux);
10
       if (ret != GST_FLOW_OK || demux->state != REAL_AUDIO_DEMUX_STATE_DATA)
11
         break;
12
-      /* otherwise fall through */
13
     }
14
+      /* FALLTHROUGH */
15
     case REAL_AUDIO_DEMUX_STATE_DATA:{
16
       ret = gst_real_audio_demux_parse_data (demux);
17
       break;
18
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/meson.build -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/meson.build Changed
111
 
1
@@ -1,6 +1,6 @@
2
 project('gst-plugins-ugly', 'c',
3
-  version : '1.24.12',
4
-  meson_version : '>= 1.1',
5
+  version : '1.26.0',
6
+  meson_version : '>= 1.4',
7
   default_options :  'warning_level=1',
8
                       'buildtype=debugoptimized' )
9
 
10
@@ -32,6 +32,7 @@
11
 static_build = get_option('default_library') == 'static'
12
 plugins_install_dir = join_paths(get_option('libdir'), 'gstreamer-1.0')
13
 plugins = 
14
+plugin_sources = {}
15
 
16
 cc = meson.get_compiler('c')
17
 if have_cxx
18
@@ -97,7 +98,6 @@
19
 endif
20
 
21
 cdata = configuration_data()
22
-cdata.set('ENABLE_NLS', 1)
23
 
24
 check_headers = 
25
   'HAVE_DLFCN_H', 'dlfcn.h',
26
@@ -244,19 +244,22 @@
27
 endif
28
 
29
 warning_flags = 
30
-  '-Wmissing-declarations',
31
-  '-Wredundant-decls',
32
-  '-Wwrite-strings',
33
+  '-Waddress',
34
+  '-Waggregate-return',
35
   '-Wformat',
36
   '-Wformat-nonliteral',
37
   '-Wformat-security',
38
+  '-Wimplicit-fallthrough=3',
39
   '-Winit-self',
40
+  '-Wmissing-declarations',
41
   '-Wmissing-include-dirs',
42
-  '-Waddress',
43
   '-Wno-multichar',
44
-  '-Wvla',
45
   '-Wpointer-arith',
46
-  '-Waggregate-return',
47
+  '-Wredundant-decls',
48
+  '-Wshift-negative-value',
49
+  '-Wtype-limits',
50
+  '-Wvla',
51
+  '-Wwrite-strings',
52
   '-fno-strict-aliasing',
53
   # Symbol visibility
54
   '-fvisibility=hidden',
55
@@ -289,20 +292,20 @@
56
   add_project_arguments('-DG_DISABLE_DEPRECATED', language: 'c')
57
 endif
58
 
59
-cast_checks = get_option('gobject-cast-checks')
60
-if cast_checks.disabled() or (cast_checks.auto() and not gst_version_is_dev)
61
+# Same logic as in GLib.
62
+glib_debug = get_option('glib_debug')
63
+if glib_debug.disabled() or (
64
+   glib_debug.auto() and (not get_option('debug') or get_option('optimization') not in  '0', 'g' ))
65
   message('Disabling GLib cast checks')
66
   add_project_arguments('-DG_DISABLE_CAST_CHECKS', language: 'c')
67
 endif
68
 
69
-glib_asserts = get_option('glib-asserts')
70
-if glib_asserts.disabled() or (glib_asserts.auto() and not gst_version_is_dev)
71
+if not get_option('glib_assert')
72
   message('Disabling GLib asserts')
73
   add_project_arguments('-DG_DISABLE_ASSERT', language: 'c')
74
 endif
75
 
76
-glib_checks = get_option('glib-checks')
77
-if glib_checks.disabled() or (glib_checks.auto() and not gst_version_is_dev)
78
+if not get_option('glib_checks')
79
   message('Disabling GLib checks')
80
   add_project_arguments('-DG_DISABLE_CHECKS', language: 'c')
81
 endif
82
@@ -320,12 +323,19 @@
83
 
84
 python3 = import('python').find_installation()
85
 
86
+if host_machine.system() == 'windows'
87
+  pathsep = ';'
88
+else
89
+  pathsep = ':'
90
+endif
91
+
92
 subdir('gst')
93
 subdir('ext')
94
 subdir('tests')
95
 
96
 # xgettext is optional (on Windows for instance)
97
 if find_program('xgettext', required : get_option('nls')).found()
98
+  cdata.set('ENABLE_NLS', 1)
99
   subdir('po')
100
 endif
101
 subdir('docs')
102
@@ -342,7 +352,7 @@
103
 
104
 configure_file(output : 'config.h', configuration : cdata)
105
 
106
-meson.add_dist_script('scripts/gen-changelog.py', meson.project_name(), '1.22.0', meson.project_version())
107
+meson.add_dist_script('scripts/gen-changelog.py', meson.project_name(), '1.24.0', meson.project_version())
108
 
109
 plugin_names = 
110
 gst_plugins = 
111
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/meson_options.txt -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/meson_options.txt Changed
36
 
1
@@ -24,12 +24,6 @@
2
        description : 'Enable native language support (translations)')
3
 option('orc', type : 'feature', value : 'auto', yield : true)
4
 option('tests', type : 'feature', value : 'auto', yield : true)
5
-option('gobject-cast-checks', type : 'feature', value : 'auto', yield : true,
6
-       description: 'Enable run-time GObject cast checks (auto = enabled for development, disabled for stable releases)')
7
-option('glib-asserts', type : 'feature', value : 'enabled', yield : true,
8
-       description: 'Enable GLib assertion (auto = enabled for development, disabled for stable releases)')
9
-option('glib-checks', type : 'feature', value : 'enabled', yield : true,
10
-       description: 'Enable GLib checks such as API guards (auto = enabled for development, disabled for stable releases)')
11
 
12
 # Common options
13
 option('package-name', type : 'string', yield : true,
14
@@ -38,3 +32,21 @@
15
        description : 'package origin URL to use in plugins')
16
 option('doc', type : 'feature', value : 'auto', yield: true,
17
        description: 'Enable documentation.')
18
+option('glib_debug', type : 'feature', value : 'auto', yield : true, description : 'Enable GLib debug infrastructure (see docs/macros.txt)')
19
+option('glib_assert', type : 'boolean', value : true, yield : true, description : 'Enable GLib assertion (see docs/macros.txt)',
20
+  deprecated: {'enabled' : 'true', 'disabled' : 'false', 'auto' : 'false'},
21
+)
22
+option('glib_checks', type : 'boolean', value : true, yield : true, description : 'Enable GLib checks such as API guards (see docs/macros.txt)',
23
+  deprecated: {'enabled' : 'true', 'disabled' : 'false', 'auto' : 'false'},
24
+)
25
+
26
+# Deprecated, kept for backward compat
27
+option('gobject-cast-checks', type : 'feature', value : 'auto', yield : true,
28
+       description: 'Enable run-time GObject cast checks (auto = enabled for development, disabled for stable releases)',
29
+       deprecated: 'glib_debug')
30
+option('glib-asserts', type : 'feature', value : 'enabled', yield : true,
31
+       description: 'Enable GLib assertion (auto = enabled for development, disabled for stable releases)',
32
+       deprecated: 'glib_assert')
33
+option('glib-checks', type : 'feature', value : 'enabled', yield : true,
34
+       description: 'Enable GLib checks such as API guards (auto = enabled for development, disabled for stable releases)',
35
+       deprecated: 'glib_checks')
36
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/po/gst-plugins-ugly-1.0.pot -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/po/gst-plugins-ugly-1.0.pot Changed
13
 
1
@@ -6,9 +6,9 @@
2
 #, fuzzy
3
 msgid ""
4
 msgstr ""
5
-"Project-Id-Version: gst-plugins-ugly-1.24.12\n"
6
+"Project-Id-Version: gst-plugins-ugly-1.26.0\n"
7
 "Report-Msgid-Bugs-To: \n"
8
-"POT-Creation-Date: 2025-01-29 20:13+0000\n"
9
+"POT-Creation-Date: 2025-03-11 20:15+0000\n"
10
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12
 "Language-Team: LANGUAGE <LL@li.org>\n"
13
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/po/gst-plugins-ugly.pot -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/po/gst-plugins-ugly.pot Changed
13
 
1
@@ -6,9 +6,9 @@
2
 #, fuzzy
3
 msgid ""
4
 msgstr ""
5
-"Project-Id-Version: gst-plugins-ugly-1.24.12\n"
6
+"Project-Id-Version: gst-plugins-ugly-1.26.0\n"
7
 "Report-Msgid-Bugs-To: \n"
8
-"POT-Creation-Date: 2025-01-29 20:13+0000\n"
9
+"POT-Creation-Date: 2025-03-11 20:15+0000\n"
10
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12
 "Language-Team: LANGUAGE <LL@li.org>\n"
13
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/po/hr.po -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/po/hr.po Changed
19
 
1
@@ -9,7 +9,7 @@
2
 msgstr ""
3
 "Project-Id-Version: gst-plugins-ugly-1.24.0\n"
4
 "Report-Msgid-Bugs-To: \n"
5
-"POT-Creation-Date: 2024-11-03 17:37+0000\n"
6
+"POT-Creation-Date: 2025-02-23 16:56+0000\n"
7
 "PO-Revision-Date: 2024-03-08 10:46-0800\n"
8
 "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
9
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
10
@@ -75,7 +75,7 @@
11
 #~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The "
12
 #~ "bitrate was changed to %d kbit/s."
13
 #~ msgstr ""
14
-#~ "Tražena brzina (bitrate) %d kbit/s za svojstvo „%s“ nije dopuštena. "
15
+#~ "Tražena brzina (bitrate) %d kbit/s za svojstvo „%s” nije dopuštena. "
16
 #~ "Brzina (bitrate) je promijenjena u %d kbit/s."
17
 
18
 #~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
19
_service:download_url:gst-plugins-ugly-1.24.12.tar.xz/po/pt_BR.po -> _service:download_url:gst-plugins-ugly-1.26.0.tar.xz/po/pt_BR.po Changed
16
 
1
@@ -8,11 +8,11 @@
2
 msgstr ""
3
 "Project-Id-Version: gst-plugins-ugly-1.19.2\n"
4
 "Report-Msgid-Bugs-To: \n"
5
-"POT-Creation-Date: 2021-10-25 01:02+0100\n"
6
+"POT-Creation-Date: 2025-02-23 16:56+0000\n"
7
 "PO-Revision-Date: 2021-09-26 12:38-0300\n"
8
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
9
-"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
10
-"net>\n"
11
+"Language-Team: Brazilian Portuguese <ldpbr-"
12
+"translation@lists.sourceforge.net>\n"
13
 "Language: pt_BR\n"
14
 "MIME-Version: 1.0\n"
15
 "Content-Type: text/plain; charset=UTF-8\n"
16