| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
 1000
 1001
 1002
 1003
 1004
 1005
 1006
 1007
 1008
 1009
 1010
 1011
 1012
 1013
 1014
 1015
 1016
 1017
 1018
 1019
 1020
 1021
 1022
 1023
 1024
 1025
 1026
 1027
 1028
 1029
 1030
 1031
 1032
 1033
 1034
 1035
 1036
 1037
 1038
 1039
 1040
 1041
 1042
 1043
 1044
 1045
 1046
 1047
 1048
 1049
 1050
 1051
 1052
 1053
 1054
 1055
 1056
 1057
 1058
 1059
 1060
 1061
 1062
 1063
 1064
 1065
 1066
 1067
 1068
 1069
 1070
 1071
 1072
 1073
 1074
 1075
 1076
 1077
 1078
 1079
 1080
 1081
 1082
 1083
 1084
 1085
 1086
 1087
 1088
 1089
 1090
 1091
 1092
 1093
 1094
 1095
 1096
 1097
 1098
 1099
 1100
 1101
 1102
 1103
 1104
 1105
 1106
 1107
 1108
 1109
 1110
 1111
 1112
 1113
 1114
 1115
 1116
 1117
 1118
 1119
 1120
 1121
 1122
 1123
 1124
 1125
 1126
 1127
 1128
 1129
 1130
 1131
 1132
 1133
 1134
 1135
 1136
 1137
 1138
 1139
 1140
 1141
 1142
 1143
 1144
 1145
 1146
 1147
 1148
 1149
 1150
 1151
 1152
 1153
 1154
 1155
 1156
 1157
 1158
 1159
 1160
 1161
 1162
 1163
 1164
 1165
 1166
 1167
 1168
 1169
 1170
 1171
 1172
 1173
 1174
 1175
 1176
 1177
 1178
 1179
 1180
 1181
 1182
 1183
 1184
 1185
 1186
 1187
 1188
 1189
 1190
 1191
 1192
 1193
 1194
 1195
 1196
 1197
 1198
 1199
 1200
 1201
 1202
 1203
 1204
 1205
 1206
 1207
 1208
 1209
 1210
 1211
 1212
 1213
 1214
 1215
 1216
 1217
 1218
 1219
 1220
 1221
 1222
 1223
 1224
 1225
 1226
 1227
 1228
 1229
 1230
 1231
 1232
 1233
 1234
 1235
 1236
 1237
 1238
 1239
 1240
 1241
 1242
 1243
 1244
 1245
 1246
 1247
 1248
 1249
 1250
 1251
 1252
 1253
 1254
 1255
 1256
 1257
 1258
 1259
 1260
 1261
 1262
 1263
 1264
 1265
 1266
 1267
 1268
 1269
 1270
 1271
 1272
 1273
 1274
 1275
 1276
 1277
 1278
 1279
 1280
 1281
 1282
 1283
 1284
 1285
 1286
 1287
 1288
 1289
 1290
 1291
 1292
 1293
 1294
 1295
 1296
 1297
 1298
 1299
 1300
 1301
 1302
 1303
 1304
 1305
 1306
 1307
 1308
 1309
 1310
 1311
 1312
 1313
 1314
 1315
 1316
 1317
 1318
 1319
 1320
 1321
 1322
 1323
 1324
 1325
 1326
 1327
 1328
 1329
 1330
 1331
 1332
 1333
 1334
 1335
 1336
 1337
 1338
 1339
 1340
 1341
 1342
 1343
 1344
 1345
 1346
 1347
 1348
 1349
 1350
 1351
 1352
 1353
 1354
 1355
 1356
 1357
 1358
 1359
 1360
 1361
 1362
 1363
 1364
 1365
 1366
 1367
 1368
 1369
 1370
 1371
 1372
 1373
 1374
 1375
 1376
 1377
 1378
 1379
 1380
 1381
 1382
 1383
 1384
 1385
 1386
 1387
 1388
 1389
 1390
 1391
 1392
 1393
 1394
 1395
 1396
 1397
 1398
 1399
 1400
 1401
 1402
 1403
 1404
 1405
 1406
 1407
 1408
 1409
 1410
 1411
 1412
 1413
 1414
 1415
 1416
 1417
 1418
 1419
 1420
 1421
 1422
 1423
 1424
 1425
 1426
 1427
 1428
 1429
 1430
 1431
 1432
 1433
 1434
 1435
 1436
 1437
 1438
 1439
 1440
 1441
 1442
 1443
 1444
 1445
 1446
 1447
 1448
 1449
 1450
 1451
 1452
 1453
 1454
 1455
 1456
 1457
 1458
 1459
 1460
 1461
 1462
 1463
 1464
 1465
 1466
 1467
 1468
 1469
 1470
 1471
 1472
 1473
 1474
 1475
 1476
 1477
 1478
 1479
 1480
 1481
 1482
 1483
 1484
 1485
 1486
 1487
 1488
 1489
 1490
 1491
 1492
 1493
 1494
 1495
 1496
 1497
 1498
 1499
 1500
 1501
 1502
 1503
 1504
 1505
 1506
 1507
 1508
 1509
 1510
 1511
 1512
 1513
 1514
 1515
 1516
 1517
 1518
 1519
 1520
 1521
 1522
 1523
 1524
 1525
 1526
 1527
 1528
 1529
 1530
 1531
 1532
 1533
 1534
 1535
 1536
 1537
 1538
 1539
 1540
 1541
 1542
 1543
 1544
 1545
 1546
 1547
 1548
 1549
 1550
 1551
 1552
 1553
 1554
 1555
 1556
 1557
 1558
 1559
 1560
 1561
 1562
 1563
 1564
 1565
 1566
 1567
 1568
 1569
 1570
 1571
 1572
 1573
 1574
 1575
 1576
 1577
 1578
 1579
 1580
 1581
 1582
 1583
 1584
 1585
 1586
 1587
 1588
 1589
 1590
 1591
 1592
 1593
 1594
 1595
 1596
 1597
 1598
 1599
 1600
 1601
 1602
 1603
 1604
 1605
 1606
 1607
 1608
 1609
 1610
 1611
 1612
 1613
 1614
 1615
 1616
 1617
 1618
 1619
 1620
 1621
 1622
 1623
 1624
 1625
 1626
 1627
 1628
 1629
 1630
 1631
 1632
 1633
 1634
 1635
 1636
 1637
 1638
 1639
 1640
 1641
 1642
 1643
 1644
 1645
 1646
 1647
 1648
 1649
 1650
 1651
 1652
 1653
 1654
 1655
 1656
 1657
 1658
 1659
 1660
 1661
 1662
 1663
 1664
 1665
 1666
 1667
 1668
 1669
 1670
 1671
 1672
 1673
 1674
 1675
 1676
 1677
 1678
 1679
 1680
 1681
 1682
 1683
 1684
 1685
 1686
 1687
 1688
 1689
 1690
 1691
 1692
 1693
 1694
 1695
 1696
 1697
 1698
 1699
 1700
 1701
 1702
 1703
 1704
 1705
 1706
 1707
 1708
 1709
 1710
 1711
 1712
 1713
 1714
 1715
 1716
 1717
 1718
 1719
 1720
 1721
 1722
 1723
 1724
 1725
 1726
 1727
 1728
 1729
 1730
 1731
 1732
 1733
 1734
 1735
 1736
 1737
 1738
 1739
 1740
 1741
 1742
 1743
 1744
 1745
 1746
 1747
 1748
 1749
 1750
 1751
 1752
 1753
 1754
 1755
 1756
 1757
 1758
 1759
 1760
 1761
 1762
 1763
 1764
 1765
 1766
 1767
 1768
 1769
 1770
 1771
 1772
 1773
 1774
 1775
 1776
 1777
 1778
 1779
 1780
 1781
 1782
 1783
 1784
 1785
 1786
 1787
 1788
 1789
 1790
 1791
 1792
 1793
 1794
 1795
 1796
 1797
 1798
 1799
 1800
 1801
 1802
 1803
 1804
 1805
 1806
 1807
 1808
 1809
 1810
 1811
 1812
 1813
 1814
 1815
 1816
 1817
 1818
 1819
 1820
 1821
 1822
 1823
 1824
 1825
 1826
 1827
 1828
 1829
 1830
 1831
 1832
 1833
 1834
 1835
 1836
 1837
 1838
 1839
 1840
 1841
 1842
 1843
 1844
 1845
 1846
 1847
 1848
 1849
 1850
 1851
 1852
 1853
 1854
 1855
 1856
 1857
 1858
 1859
 1860
 1861
 1862
 1863
 1864
 1865
 1866
 1867
 1868
 1869
 1870
 1871
 1872
 1873
 1874
 1875
 1876
 1877
 1878
 1879
 1880
 1881
 1882
 1883
 1884
 1885
 1886
 1887
 1888
 1889
 1890
 1891
 1892
 1893
 1894
 1895
 1896
 1897
 1898
 1899
 1900
 1901
 1902
 1903
 1904
 1905
 1906
 1907
 1908
 1909
 1910
 1911
 1912
 1913
 1914
 1915
 1916
 1917
 1918
 1919
 1920
 1921
 1922
 1923
 1924
 1925
 1926
 1927
 1928
 1929
 1930
 1931
 1932
 1933
 1934
 1935
 1936
 1937
 1938
 1939
 1940
 1941
 1942
 1943
 1944
 1945
 1946
 1947
 1948
 1949
 1950
 1951
 1952
 1953
 1954
 1955
 1956
 1957
 1958
 1959
 1960
 1961
 1962
 1963
 1964
 1965
 1966
 1967
 1968
 1969
 1970
 1971
 1972
 1973
 1974
 1975
 1976
 1977
 1978
 1979
 1980
 1981
 1982
 1983
 1984
 1985
 1986
 1987
 1988
 1989
 1990
 1991
 1992
 1993
 1994
 1995
 1996
 1997
 1998
 1999
 2000
 2001
 2002
 2003
 2004
 2005
 2006
 2007
 2008
 2009
 2010
 2011
 2012
 2013
 2014
 2015
 2016
 2017
 2018
 2019
 2020
 2021
 2022
 2023
 2024
 2025
 2026
 2027
 2028
 2029
 2030
 2031
 2032
 2033
 2034
 2035
 2036
 2037
 2038
 2039
 2040
 2041
 2042
 2043
 2044
 2045
 2046
 2047
 2048
 2049
 2050
 2051
 2052
 2053
 2054
 2055
 2056
 2057
 2058
 2059
 2060
 2061
 2062
 2063
 2064
 2065
 2066
 2067
 2068
 2069
 2070
 2071
 2072
 2073
 2074
 2075
 2076
 2077
 2078
 2079
 2080
 2081
 2082
 2083
 2084
 2085
 2086
 2087
 2088
 2089
 2090
 2091
 2092
 2093
 2094
 2095
 2096
 2097
 2098
 2099
 2100
 2101
 2102
 2103
 2104
 2105
 2106
 2107
 2108
 2109
 2110
 2111
 2112
 2113
 2114
 2115
 2116
 2117
 2118
 2119
 2120
 2121
 2122
 2123
 2124
 2125
 2126
 2127
 2128
 2129
 2130
 2131
 2132
 2133
 2134
 2135
 2136
 2137
 2138
 2139
 2140
 2141
 2142
 2143
 2144
 2145
 2146
 2147
 2148
 2149
 2150
 2151
 2152
 2153
 2154
 2155
 2156
 2157
 2158
 2159
 2160
 2161
 2162
 2163
 2164
 2165
 2166
 2167
 2168
 2169
 2170
 2171
 2172
 2173
 2174
 2175
 2176
 2177
 2178
 2179
 2180
 2181
 2182
 2183
 2184
 2185
 2186
 2187
 2188
 2189
 2190
 2191
 2192
 2193
 2194
 2195
 2196
 2197
 2198
 2199
 2200
 2201
 2202
 2203
 2204
 2205
 2206
 2207
 2208
 2209
 2210
 2211
 2212
 2213
 2214
 2215
 2216
 2217
 2218
 2219
 2220
 2221
 2222
 2223
 2224
 2225
 2226
 2227
 2228
 2229
 2230
 2231
 2232
 2233
 2234
 2235
 2236
 2237
 2238
 2239
 2240
 2241
 2242
 2243
 2244
 2245
 2246
 2247
 2248
 2249
 2250
 2251
 2252
 2253
 2254
 2255
 2256
 2257
 2258
 2259
 2260
 2261
 2262
 2263
 2264
 2265
 2266
 2267
 2268
 2269
 2270
 2271
 2272
 2273
 2274
 2275
 2276
 2277
 2278
 2279
 2280
 2281
 2282
 2283
 2284
 2285
 2286
 2287
 2288
 2289
 2290
 2291
 2292
 2293
 2294
 2295
 2296
 2297
 2298
 2299
 2300
 2301
 2302
 2303
 2304
 2305
 2306
 2307
 2308
 2309
 2310
 2311
 2312
 2313
 2314
 2315
 2316
 2317
 2318
 2319
 2320
 2321
 2322
 2323
 2324
 2325
 2326
 2327
 2328
 2329
 2330
 2331
 2332
 2333
 2334
 2335
 2336
 2337
 2338
 2339
 2340
 2341
 2342
 2343
 2344
 2345
 2346
 2347
 2348
 2349
 2350
 2351
 2352
 2353
 2354
 2355
 2356
 2357
 2358
 2359
 2360
 2361
 2362
 2363
 2364
 2365
 2366
 2367
 2368
 2369
 2370
 2371
 2372
 2373
 2374
 2375
 2376
 2377
 2378
 2379
 2380
 2381
 2382
 2383
 2384
 2385
 2386
 2387
 2388
 2389
 2390
 2391
 2392
 2393
 2394
 2395
 2396
 2397
 2398
 2399
 2400
 2401
 2402
 2403
 2404
 2405
 2406
 2407
 2408
 2409
 2410
 2411
 2412
 2413
 2414
 2415
 2416
 2417
 2418
 2419
 2420
 2421
 2422
 2423
 2424
 2425
 2426
 2427
 2428
 2429
 2430
 2431
 2432
 2433
 2434
 2435
 2436
 2437
 2438
 2439
 2440
 2441
 2442
 2443
 2444
 2445
 2446
 2447
 2448
 2449
 2450
 2451
 2452
 2453
 2454
 2455
 2456
 2457
 2458
 2459
 2460
 2461
 2462
 2463
 2464
 2465
 2466
 2467
 2468
 2469
 2470
 2471
 2472
 2473
 2474
 2475
 2476
 2477
 2478
 2479
 2480
 2481
 2482
 2483
 2484
 2485
 2486
 2487
 2488
 2489
 2490
 2491
 2492
 2493
 2494
 2495
 2496
 2497
 2498
 2499
 2500
 2501
 2502
 2503
 2504
 2505
 2506
 2507
 2508
 2509
 2510
 2511
 2512
 2513
 2514
 2515
 2516
 2517
 2518
 2519
 2520
 2521
 2522
 2523
 2524
 2525
 2526
 2527
 2528
 2529
 2530
 2531
 2532
 2533
 2534
 2535
 2536
 2537
 2538
 2539
 2540
 2541
 2542
 2543
 2544
 2545
 2546
 2547
 2548
 2549
 2550
 2551
 2552
 2553
 2554
 2555
 2556
 2557
 2558
 2559
 2560
 2561
 2562
 2563
 2564
 2565
 2566
 2567
 2568
 2569
 2570
 2571
 2572
 2573
 2574
 2575
 2576
 2577
 2578
 2579
 2580
 2581
 2582
 2583
 2584
 2585
 2586
 2587
 2588
 2589
 2590
 2591
 2592
 2593
 2594
 2595
 2596
 2597
 2598
 2599
 2600
 2601
 2602
 2603
 2604
 2605
 2606
 2607
 2608
 2609
 2610
 2611
 2612
 2613
 2614
 2615
 2616
 2617
 2618
 2619
 2620
 2621
 2622
 2623
 2624
 2625
 2626
 2627
 2628
 2629
 2630
 2631
 2632
 2633
 2634
 2635
 2636
 2637
 2638
 2639
 2640
 2641
 2642
 2643
 2644
 2645
 2646
 2647
 2648
 2649
 2650
 2651
 2652
 2653
 2654
 2655
 2656
 2657
 2658
 2659
 2660
 2661
 2662
 2663
 2664
 2665
 2666
 2667
 2668
 2669
 2670
 2671
 2672
 2673
 2674
 2675
 2676
 2677
 2678
 2679
 2680
 2681
 2682
 2683
 2684
 2685
 2686
 2687
 2688
 2689
 2690
 2691
 2692
 2693
 2694
 2695
 2696
 2697
 2698
 2699
 2700
 2701
 2702
 2703
 2704
 2705
 2706
 2707
 2708
 2709
 2710
 2711
 2712
 2713
 2714
 2715
 2716
 2717
 2718
 2719
 2720
 2721
 2722
 2723
 2724
 2725
 2726
 2727
 2728
 2729
 2730
 2731
 2732
 2733
 2734
 2735
 2736
 2737
 2738
 2739
 2740
 2741
 2742
 2743
 2744
 2745
 2746
 2747
 2748
 2749
 2750
 2751
 2752
 2753
 2754
 2755
 2756
 2757
 2758
 2759
 2760
 2761
 2762
 2763
 2764
 2765
 2766
 2767
 2768
 2769
 2770
 2771
 2772
 2773
 2774
 2775
 2776
 2777
 2778
 2779
 2780
 2781
 2782
 2783
 2784
 
 | GStreamer 1.26 Release Notes
GStreamer 1.26.0 was originally released on 11 March 2025.
The latest bug-fix release in the stable 1.26 series is 1.26.7 and was released on 14 October 2025.
See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of this document.
Last updated: Tuesday 14 October 2025, 16:30 UTC (log)
## Introduction
The GStreamer team is proud to announce a new major feature release in the stable 1.x API series of your favourite
cross-platform multimedia framework!
As always, this release is again packed with many new features, bug fixes, and other improvements.
## Highlights
-   H.266 Versatile Video Coding (VVC) codec support
-   Low Complexity Enhancement Video Coding (LCEVC) support
-   Closed captions: H.264/H.265 extractor/inserter, cea708overlay, cea708mux, tttocea708 and more
-   New hlscmafsink, hlssink3, and hlsmultivariantsink; HLS/DASH client and dashsink improvements
-   New AWS and Speechmatics transcription, translation and TTS services elements, plus translationbin
-   Splitmux lazy loading and dynamic fragment addition support
-   Matroska: H.266 video and rotation tag support, defined latency muxing
-   MPEG-TS: support for H.266, JPEG XS, AV1, VP9 codecs and SMPTE ST-2038 and ID3 meta; mpegtslivesrc
-   ISO MP4: support for H.266, Hap, Lagarith lossless codecs; raw video support; rotation tags
-   SMPTE 2038 ancillary data streams support
-   JPEG XS image codec support
-   Analytics: New TensorMeta; N-to-N relationships; Mtd to carry segmentation masks
-   ONVIF metadata extractor and conversion to/from relation metas
-   New originalbuffer element that can restore buffers again after transformation steps for analytics
-   Improved Python bindings for analytics API
-   Lots of Vulkan integration and Vulkan Video decoder/encoder improvements
-   OpenGL integration improvements, esp. in glcolorconvert, gldownload, glupload
-   Qt5/Qt6 QML GL sinks now support direct DMABuf import from hardware decoders
-   CUDA: New compositor, Jetson NVMM memory support, stream-ordered allocator
-   NVCODEC AV1 video encoder element, and nvdsdewarp
-   New Direct3D12 integration support library
-   New d3d12swapchainsink and d3d12deinterlace elements and D3D12 sink/source for zero-copy IPC
-   Decklink HDR support (PQ + HLG) and frame scheduling enhancements
-   AJA capture source clock handling and signal loss recovery improvements
-   RTP and RTSP: New rtpbin sync modes, client-side MIKEY support in rtspsrc
-   New Rust rtpbin2, rtprecv, rtpsend, and many new Rust RTP payloaders and depayloaders
-   webrtcbin support for basic rollbacks and other improvements
-   webrtcsink: support for more encoders, SDP munging, and a built-in web/signalling server
-   webrtcsrc/sink: support for uncompressed audio/video and NTP & PTP clock signalling and synchronization
-   rtmp2: server authentication improvements incl. Limelight CDN (llnw) authentication
-   New Microsoft WebView2 based web browser source element
-   The GTK3 plugin has gained support for OpenGL/WGL on Windows
-   Many GTK4 paintable sink improvements
-   GstPlay: id-based stream selection and message API improvements
-   Real-time pipeline visualization in a browser using a new dots tracer and viewer
-   New tracers for tracking memory usage, pad push timings, and buffer flow as pcap files
-   VA hardware-acclerated H.266/VVC decoder, VP8 and JPEG encoders, VP9/VP8 alpha decodebins
-   Video4Linux2 elements support DMA_DRM caps negotiation now
-   V4L2 stateless decoders implement inter-frame resolution changes for AV1 and VP9
-   Editing services: support for reverse playback and audio channel reordering
-   New QUIC-based elements for working with raw QUIC streams, RTP-over-QUIC (RoQ) and WebTransport
-   Apple AAC audio encoder and multi-channel support for the Apple audio decoders
-   cerbero: Python bindings and introspection support; improved Windows installer based on WiX5
-   Lots of new plugins, features, performance improvements and bug fixes
## Major new features and changes
### H.266 Versatile Video Coding (VVC) codec support
-   The H.266 / VVC video codec is a successor to H.265 / HEVC and is standardised in ISO/IEC 23090-3.
-   A new h266parse element was added, along with parsing API, typefinding support and some codec utility functions in the
    gst-plugins-base utility library.
-   A H.266 decoder base class for hardware-accelerated decoders was added and used to implement a VA-API-based
    hardware-accelerated H.266 decoder.
-   The FFmpeg H.266 decoder is exposed now (from FFmpeg 7.0 onwards).
-   H.266 / VVC muxing and demuxing support was implemented for MP4, Matroska and MPEG-TS containers.
-   A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library.
### JPEG XS image codec support
-   JPEG XS is a visually lossless, low-latency, intra-only video codec for video production workflows, standardised in ISO/IEC
    21122.
-   JPEG XS encoder and decoder elements based on the SVT JPEG XS library were added, including support for muxing JPEG XS into
    MPEG-TS and demuxing it. Both interlaced and progressive modes are supported.
### Low Complexity Enhancement Video Coding (LCEVC) support
-   LCEVC is a codec that provides an enhancement layer on top of another codec such as H.264 for example. It is standardised as
    MPEG-5 Part 2.
-   LCEVC encoder and decoder elements based on V-Nova’s SDK libraries were added, including support in h264parse for extracting
    the enhancement layer from H.264 and decoding it via a lcevch264decodebin element.
### Closed captions improvements
-   New H.264 and H.265 closed captions extractor and inserter elements.
    -   These extractor elements don’t actually extract captions from the bitstream, but rely on parser elements to do that and
        add them to buffers in form of caption metas. The problem is that streams might contain B-frames, in which case the
        captions in the bitstream will not be in presentation order and extracting them requires frame-reordering in the same
        way that a decoder would do. These new elements will do exactly that and allow you to extract captions in presentation
        order without having to decode the stream.
    -   The inserter elements do something similar and insert caption SEIs into the H.264 or H.265 bitstream, taking into
        account frame ordering.
    -   This is useful if one wants to extract, process and re-insert captions into an existing video bitstream without decoding
        and re-encoding it (in which case the decoder and encoder would handle the caption reordering).
-   cdpserviceinject: New element for injecting a CDP service descriptor into closed caption CDP packets
-   cea708overlay: New element for overlaying CEA608 / CEA708 closed captions over video streams.
-   The cc708overlay element has been deprecated in favour of the cea708overlay element from the Rust plugins set.
-   cea608mux gained a "force-live" property to make it always in live mode and aggregate on timeout regardless of whether any
    live sources are linked upstream.
-   cea708mux: New element that allows to mux multiple CEA708 services into a single stream.
-   cccombiner has two new properties:
    -   "input-meta-processing" controls how input closed caption metas are processed and can be used to e.g. discard closed
        captions from the input pad if the matching video buffer already has closed caption on it.
    -   "schedule-timeout" to support timing out captions without EOS
-   tttocea708: New element for converting timed-text to CEA708 closed captions
-   Miscellaneous improvements and spec compliance fixes
### Speech to Text, Translation and Speech Synthesis
-   awstranscriber2, awstranslate: New elements around the AWS transcription and translation services.
-   polly: New element around the AWS text-to-speech polly services
-   speechmatics: New transcriber / speech-to-text and translation element
-   translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions.
### HLS DASH adaptive streaming improvements
-   The adaptivedemux2 client implementation gained support for file:// URIs and as such the ability to play HLS and DASH from
    local files. It also no longer sends spurious flush events when it loses sync in live streams, as that is unexpected and
    will be handled poorly in non-playback scenarios. Lastly, support for HTTP request retries was added via the "max-retries"
    property, along with some exponential backoff logic which can be fine-tuned via properties.
-   dashsink has received period duration fixes for dynamic MPDs and some memory leak fixes.
-   hlscmafsink, hlssink3: New single-variant HLS sink elements that can output CMAF (fMP4) or MPEG-TS fragments.
-   hlsmultivariantsink: New sink element that can output an HLS stream with multiple variants
### splitmuxsrc, splitmuxsink: lazy loading and dynamic fragment addition
-   splitmuxsrc and splitmuxsink were originally designed to handle a small number of large file fragments, e.g. for situations
    where one doesn’t want to exceed a certain file size when recording to legacy file systems. It was also designed for playing
    back a static set of file fragments that have been created by an earlier recording session and no longer changes. Over time
    people have found more applications and use cases for the splitmux elements and have been deploying them in different
    scenarios, exposing the limits of the current implementation.
-   In this release, splitmuxsink and splitmuxsrc gained new abilities aimed at improving support for recordings with a large
    number of files, and for adding fragments on the fly to allow playback of ongoing recordings:
    -   You can now add fragments directly to splitmuxsrc and provide the offset and duration in the stream:
        -   Providing offset and duration means splitmuxsrc doesn’t need to scan the file to measure it and calculate it. That
            makes for much faster startup.
        -   The new "add-fragment" signal can be used to add files to the set dynamically - allowing to be playing an ongoing
            recording and adding files to the playback set as they are finished.
    -   splitmuxsrc no longer keeps all files open, but instead only keeps 100 files open by default, configurable with the
        "num-open-fragments" property.
    -   There is a new "num-lookahead" property on splitmuxsrc to trigger (re)opening files a certain distance ahead of the play
        position.
    -   splitmuxsink will report fragment offset and fragment duration via a message on the bus when closing a file. This
        information can then be used to add the new fragment to a splitmuxsrc.
### MPEG-TS container format improvements
-   The MPEG-TS muxer and demuxer gained support for
    -   H.266 / VVC video muxing and demuxing
    -   JPEG-XS video muxing and demuxing
    -   VP9 video muxing and demuxing (using a custom mapping)
    -   AV1 video muxing and demuxing (using a custom mapping, since the work-in-progress specification effort doesn’t seem to
        be going anywhere anytime soon)
    -   SMPTE ST-2038 ancillary metadata streams (see section above)
-   mpegtsmux gained support for muxing ID3 metadata into the TS stream, as well as SMPTE 302M audio.
-   It’s also possible to disable sending SCTE-35 null (heartbeat) packets now in mpegtsmux by setting the
    "scte-35-null-interval" to 0.
-   tsparse now handles 192-byte M2TS packets
-   mpegtslivesrc: New source element that can wrap a live MPEG-TS source (e.g. SRT or UDP source) and provides a clock based on
    the PCR.
### Matroska container format improvements
-   H.266 / VVC video muxing and demuxing support
-   matroskamux
    -   was ported to the GstAggregator base class, ensuring defined-latency muxing in live streaming pipelines.
    -   gained rotation tag support
-   matroskademux now also supports seeks with a stop position in push mode.
### ISO MP4 container format improvements
-   can mux and demux H.266 / VVC in MP4 now
-   can demux Hap video now, as well as Lagarith lossless video and ISO/IEC 23003-5 raw PCM audio.
-   qtdemux handles keyunit-only trick mode also in push mode now
-   support for ISO/IEC 23001-17 raw video in MP4 in qtdemux and isomp4mux.
-   support for rotation tags in the muxers and demuxers was improved to correctly handle per-media and per-track rotations, and
    support for flips was added as well.
SMPTE 2038 ancillary data streams
-   SMPTE 2038 (pdf) is a generic system to put VBI-style ancillary data into an MPEG-TS container. This could include all kinds
    of metadata such as scoreboard data or game clocks, and of course also closed captions, in this case in form of a distinct
    stream completely separate from any video bitstream.
-   A number of new elements in the GStreamer Rust closedcaption plugin add support for this, along with mappings for it in the
    MPEG-TS muxer and demuxer. The new elements are:
    -   st2038ancdemux: splits SMPTE ST-2038 ancillary metadata (as received from tsdemux) into separate streams per DID/SDID
        and line/horizontal_offset. Will add a sometimes pad with details for each ancillary stream. Also has an always source
        pad that just outputs all ancillary streams for easy forwarding or remuxing, in case none of the ancillary streams need
        to be modified or dropped.
    -   st2038ancmux: muxes SMPTE ST-2038 ancillary metadata streams into a single stream for muxing into MPEG-TS with
        mpegtsmux. Combines ancillary data on the same line if needed, as is required for MPEG-TS muxing. Can accept individual
        ancillary metadata streams as inputs and/or the combined stream from st2038ancdemux.
        If the video framerate is known, it can be signalled to the ancillary data muxer via the output caps by adding a
        capsfilter behind it, with e.g. meta/x-st-2038,framerate=30/1.
        This allows the muxer to bundle all packets belonging to the same frame (with the same timestamp), but that is not
        required. In case there are multiple streams with the same DID/SDID that have an ST-2038 packet for the same frame, it
        will prioritise the one from more recently created request pads over those from earlier created request pads (which
        might contain a combined stream for example if that’s fed first).
    -   st2038anctocc: extracts closed captions (CEA-608 and/or CEA-708) from SMPTE ST-2038 ancillary metadata streams and
        outputs them on the respective sometimes source pad (src_cea608 or src_cea708). The data is output as a closed caption
        stream with caps closedcaption/x-cea-608,format=s334-1a or closedcaption/x-cea-708,format=cdp for further processing by
        other GStreamer closed caption processing elements.
    -   cctost2038anc: takes closed captions (CEA-608 and/or CEA-708) as produced by other GStreamer closed caption processing
        elements and converts them into SMPTE ST-2038 ancillary data that can be fed to st2038ancmux and then to mpegtsmux for
        splicing/muxing into an MPEG-TS container. The line-number and horizontal-offset properties should be set to the desired
        line number and horizontal offset.
### Analytics
-   Added a GstTensorMeta: This meta is designed to carry tensors from the inference element to the model-specific tensor
    decoder. This also includes a basic GstTensor class containing a single tensor. The actual tensor data is a GstBuffer.
-   Add N_TO_N relationship to GstAnalyticsRelationMeta: This makes it possible to describe N-to-N relationships. For example,
    between classes and regions in an instance segmentation.
-   Add a new analytics Mtd to carry segmentation masks: Being part of the GstAnalyticsMeta, it can be in relationship with the
    other Mtd, such as the classification and object detection bounding boxes.
-   onvifmetadataextractor: New element that can extract ONVIF metadata from GstMetas into a separate stream
-   originalbuffer: New plugin with originalbuffersave / originalbufferrestore elements that allow saving an original buffer,
    modifying it for analytics, and then restoring the original buffer content while keeping any additional metadata that was
    added.
-   relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata.
-   Improved Python bindings for a more Pythonic interface when iterating over GstRelationMeta’s mtd
### Vulkan integration enhancements
-   Vulkan Integration Improvements:
    -   Memory Management: Non-coherent memory is now invalidated when mapping for read in vkmemory.
    -   Color Space Selection: The vkswapper component now chooses the correct color space based on the format.
    -   Vulkan Plugin Compatibility: Support added for cases where glslc is not available for building Vulkan plugins, along
        with GLSL compiler support for glslang.
    -   Fullscreen Quad Updates: Improved support for setting NULL input/output buffers and added checks for unset video info.
    -   Vulkan Buffer Pool Enhancements: Buffer pool access flags and usage configurations have been refined, offering better
        performance for video decoding and encoding.
-   Decoder/Encoder Improvements:
    -   H264 Decoder: Enhancements to the vkh264dec component for better support of extended profiles and interlaced content
        decoding.
    -   H265 Decoder fixes: vkh265dec updated for proper handling of VPS/SPS on demand, along with fixes to PicOrderCntVal.
    -   Encoder Performance: Various internal optimizations to the Vulkan encoder, including removal of redundant references and
        better management of the DPB view.
-   Vulkan Instance and Device Management:
    -   Device Handling: Added new utility functions for managing Vulkan device instances, including
        gst_vulkan_instance_create_device_with_index and gst_vulkan_ensure_element_device.
    -   Device Context Management: Updates to manage Vulkan context handling more effectively within the application.
### OpenGL integration enhancements
-   glcolorconvert gained support for more formats and conversions:
    -   Planar YUV <-> planar YUV conversions
    -   Converting to and from v210 in general
    -   v210 <-> planar YUV
    -   UYVY and YUY2 <-> planar YUV
    -   v210 <-> UYVY and YUY2
    -   Support for Y444_10, Y444_16, I422_10, I422_12 pixel formats (both little endian and big endian variants)
-   gldownload can import DMABufs from a downstream pool
-   glupload gained a DRM raw uploader
### Qt5 + Qt6 QML integration improvements
-   qmlglsink, qml6glsink now support external-oes textures, which allows direct DMABuf import from hardware decoders. Both also
    support NV12 as an input format now.
-   qmlglsink gained support for RGB16/BGR16 as input format
-   qmlgl6src can now use a downstream buffer pool when available
-   qmlgloverlay make the depth/stencil buffer optional, which reduces memory bandwidth on Windows.
### CUDA / NVCODEC integration and feature additions
-   Added AV1 video encoder nvav1enc
-   CUDA mode nvcuda{CODEC}enc encode elements are renamed to nv{CODEC}enc and old nv{CODEC}enc implementations are removed
-   Added support for CUDA Stream-Ordered allocator
-   Added cudacompositor element which is equivalent to the software compositor element but uses CUDA
-   Added support for CUDA kernel precompile at plugin build time using nvcc and NVCODEC plugin can cache/reuse compiled CUDA
    CUBIN/PTX
-   cudaupload and cudadownload elements can support Jetson platform’s NVMM memory in addition to already supported desktop NVMM
    memory
-   Introduced nvdswrapper plugin which uses NVIDIA DeepStream SDK APIs with gst-cuda in an integrated way:
    -   nvdsdewarp: NVIDIA NVWarp360 API based dewarping element
### GStreamer Direct3D12 integration
-   New gst-d3d12 public library. The following elements are integrated with the gst-d3d12 library:
    -   NVIDIA NVCODEC decoders and encoders can support D3D12 memory
    -   Intel QSV encoders can accept D3D12 memory
    -   All elements in dwrite plugin can support D3D12 memory
-   The d3d12 library and plugin can be built with MinGW toolchain now (in addition to MSVC)
-   D3D12 video decoders and d3d12videosink are promoted to have higher rank than D3D11 elements
-   Added support for multiple mip-levels D3D12 textures:
    -   Newly added d3d12mipmapping element can generate D3D12 textures with multiple mip-levels
    -   max-mip-levels property is added to d3d12convert, d3d12videosink, and d3d12swapchainsink element, so that the elements
        can generate an intermediate texture with multiple mip-levels in order to reduce downscale aliasing artifacts
-   d3d12convert, d3d12videosink, and d3d12swapchainsink support the GstColorBalanceInterface to offer color balancing functions
    such as hue, saturation, and brightness adjustment
-   Added d3d12ipcsink and d3d12ipcsrc elements for zero-copy GPU memory sharing between processes
-   d3d12upload and d3d12download support direct GPU memory copy between D3D12 and D3D12 resources
-   Added d3d12swapchainsink element to support DirectComposition or UWP/WinUI3 SwapChainPanel based applications
-   Added d3d12deinterlace element which performs deinterlacing using a GPU vendor agnostic compute shader.
-   d3d12screencapturesrc element can capture HDR enabled desktop correctly in DDA mode (DXGI Desktop Duplication API)
### Capture and playout cards support
-   ajasrc: Improve clock handling, frame counting, capture timestamping, and signal loss recovery
-   The Blackmagic Decklink plugin gained support
    -   for HDR output and input (PQ + HLG static metadata)
    -   all modes of Quad HDMI recorder
    -   scheduling frames before they need to be displayed in decklinkvideosink
### RTP and RTSP stack improvements
-   rtspsrc now supports client-managed MIKEY key management. Some RTSP servers (e.g. Axis cameras) expect the client to propose
    the encryption key(s) to be used for SRTP / SRTCP. This is required to allow re-keying. This mode can be enabled by enabling
    the "client-managed-mikey-mode" property and comes with a number of new signals ("request-rtp-key" and "request-rtcp-key"),
    action signals ("set-mikey-parameter" and "remove-key") and properties ("hard-limit" and "soft-limit").
-   rtpbin: Add new “never” and “ntp” RTCP sync modes
    -   Never is useful for some RTSP servers that report plain garbage both via RTCP SR and RTP-Info, for example.
    -   NTP is useful if synchronization should only ever happen based on RTCP SR or NTP-64 RTP header extensions.
    This is part of a bigger refactoring of the synchronization / offsetting code in rtpbin, which also makes it regularly emit
    the sync signal even if no new synchronisation information is available, controlled by the new "min-sync-interval" property.
-   rtpjitterbuffer: add RFC7273 active status to jitterbuffer stats so applications can easily check whether RFC7273 sync is
    active.
-   rtph265depay: Add "wait-for-keyframe" "request-keyframe" properties and improve request keyframe logic
-   rtppassthroughpay gained the ability to regenerate RTP timestamps from buffer timestamps via the new "retimestamp-mode"
    property. This is useful in a relay RTSP server if one wants to do full drift compensation and ensure that the stream coming
    out of gst-rtsp-server is not drifting compared to the pipeline clock and also not compared to the RTCP NTP times.
-   New Rust RTP payloaders and depayloaders for AC3, AMR, JPEG, KLV, MPEG-TS (MP2T), MPEG-4 (MP4A, MP4G), Opus, PCMU (uLaw),
    PCMA (aLaw), VP8, VP9.
-   New rtpbin2 based on separate rtprecv and rtpsend elements
### WebRTC improvements
-   webrtcbin improvements
    -   Make basic rollbacks work
    -   Add "reuse-source-pads" property: When set to FALSE, if a transceiver becomes send-only or inactive then pre-existing
        source pads will receive an EOS event and no further traffic even after further renegotiation. When TRUE, pads will
        simply not receive any output when the negotiated transceiver state doesn’t have incoming traffic. If renegotiated
        later, the pad will receive data again.
    -   Early CNAME support (RFC5576): Have CNAME available to the jitterbuffer before the the first RTCP SR is received, for
        rapid synchronization.
    -   New "post-rtp-aux-sender" signal to allow for placement of an object after rtpbin, before sendbin. This is useful for
        objects such as congestion control elements, that don’t want to be burdened by the synchronization requirements of
        rtpsession.
    -   Create and associate transceivers earlier in negotiation, and other spec compliance improvements
    -   Statistics generation improvements for bundled streams
-   webrtcsink improvements:
    -   Support for more encoders: nvv4l2av1enc, vpuenc_h264 (for imx8mp), nvav1enc, av1enc, rav1enc and nvh265enc.
    -   The new "define-encoder-bitrates" signal allows applications to fine-tune the bitrate allocation for individual streams
        in cases where there are multiple encoders. By default the bitrate is split equally between encoders.
    -   A generic mechanism was implemented to forward metas over the control channel.
    -   Added a mechanism for SDP munging to handle server-specific quirks.
    -   Can expose a built-in web server and signalling server for prototyping and debugging purposes.
-   webrtcsink and webrtcsrc enhancements:
    -   Support for raw payloads, i.e. uncompressed audio and video
    -   NTP & PTP clock signalling and synchronization support (RFC 7273)
    -   Generic data channel control mechanism for sending upstream events back to the sender (webrtcsink)
-   webrtcsrc now has support for multiple producers
## New elements and plugins
-   Many exciting new Rust elements, see Rust section below.
-   webview2src: new Microsoft WebView2 based web browser source element
-   h264ccextractor, h264ccinserter: H.264 closed caption extractor / inserter
-   h265ccextractor, h265ccinserter: H.265 closed caption extractor / inserter
-   h266parse
-   lcevch264decodebin
-   New VA elements (see below): vah266dec, vavp8enc, vajpegenc, vavp8alphadecodebin, vavp9alphadecodebin
-   svtjpegxsdec, svtjpegxsenc: SVT JPEG XS decoder/encoder
-   Many other new elements mentioned in other sections (e.g. CUDA, NVCODEC, etc.)
## New element features and additions
-   audioconvert enhancements:
    -   Add possibility to reorder input channels when audioconvert has unpositionned audio channels as input. It can now use
        reordering configurations to automatically position those channels via the new "input-channels-reorder" and
        "input-channels-reorder-mode" properties.
    -   Better handling of setting of the mix matrix at run time
    -   handles new GstRequestMixMatrix custom upstream event
-   audiorate: Take the tolerance into account when filling gaps; better accounting of the number of samples added or dropped.
-   av1enc: Add "timebase" property to allow configuring a specific time base, in line with what exists for vp8enc and vp9enc
    already.
-   av1parse can parse annexb streams now, and typefinding support has been added for annexb streams as well.
-   The GTK3 plugin has gained support for OpenGL/WGL on Windows
-   fdsrc has a new "is-live" property to make it act like a live source and timestamp the received data with the clock running
    time.
-   imagefreeze: Add support for JPEG and PNG
-   kmssink: Extended the functionality to support buffers with DRM formats along with non-linear buffers
-   pitch now supports reverse playback
-   queue can emit the notify signal on queue level changes if the "notify-levels" property has been set.
-   qroverlay: the "pixel-size" property has been removed in favour of a new "size" property with slightly different semantics,
    where the size of the square is expressed in percent of the smallest of width and height.
-   rsvgdec: Negotiate resolution with downstream and scale accordingly
-   rtmp2: server authentication improvements
    -   Mimic librtmp’s behaviour and support additional connection parameters for the connect packet, which are commonly used
        for authentication, via the new "extra-connect-args" property.
    -   Add support for Limelight CDN (llnw) authentication
-   scaletempo has gained support for a “fit-down” mode: In fit-down mode only 1.0 rates are supported, and the element will fit
    audio data in buffers to their advertised duration. This is useful in speech synthesis cases, where elements such as
    awspolly will generate audio data from text, and assign the duration of the input text buffers to their output buffers.
    Translated or synthesised audio might be longer than the original inputs, so this makes sure the audio will be sped up to
    fit the original duration, so it doesn’t go out of sync.
-   souphttpsrc: Add the notion of "retry-backoff" and retry on 503 (service unavailable) and 500 (internal server error) http
    errors.
-   taginject now modifies existing tag events of the selected scope, with the new "merge-mode" property allowing finer control.
-   timecodestamper gained a new running-time source mode that converts the buffer running time into timecodes.
-   playbin3, uridecodebin3, parsebin
    -   lots of stream-collection handling and stability/reliability fixes
    -   error/warning/info message now include the URI (if known) and stream-id
    -   missing plugin messages include the stream-id
-   videocodectestsink gained support for GBR_10LE, GRAY8 and GRAY10_LE{16,32} pixel formats
-   videoflip gained support for the Y444_16LE and Y444_16BE pixel formats
-   videoconvertscale:
    -   Handle pixel aspect ratios with large numerators or denominators
    -   Explicitly handle the overlaycomposition meta caps feature, so it doesn’t get dropped unnecessarily
-   waylandsink prefers DMABuf over system memory now
-   x264enc has a new "nal-hrd" property to make the encoder signal HRD information, which is required for Blu-ray streams,
    television broadcast and a few other specialist areas. It can also be used to force true CBR, and will cause the encoder to
    output null padding packets.
-   zbar: add support for binary mode and getting symbols as raw bytes instead of a text string.
## Plugin and library moves
-   macOS: atdec was moved from the applemedia plugin in -bad to the osxaudio plugin in -good, in order to be able to share
    audio-related helper methods.
## Plugin and element removals
-   None in this cycle
## Miscellaneous API additions
### GStreamer Core
-   gst_meta_api_type_set_params_aggregator() allows setting an GstAllocationMetaParamsAggregator function for metas, which has
    been implemented for GstVideoMeta and is used to aggregate alignment requirements of multiple tee branches.
-   gst_debug_print_object() and gst_debug_print_segment() have been made public API. The can be used to easily get string
    representations of various types of (mini)objects in custom log handlers.
-   Added gst_aggregator_push_src_event(), so subclasses don’t just push events directly onto the source pad bypassing the base
    class without giving it the chance to send out any pending serialised events that should be sent out before.
-   GstMessage has gained APIs to generically add “details” to messages:
    -   gst_message_set_details()
    -   gst_message_get_details()
    -   gst_message_writable_details()
    -   gst_message_parse_error_writable_details()
    -   gst_message_parse_warning_writable_details()
    -   gst_message_parse_info_writable_details() This is used in uridecodebin3 to add the triggering URI to any INFO, WARNING
        or ERROR messages posted on the bus, and in decodebin3 to add the stream ID to any missing plugin messages posted on the
        bus.
-   gst_util_floor_log2() returns smallest integral value not bigger than log2(v).
-   gst_util_fraction_multiply_int64() is a 64-bit variant of gst_util_fraction_multiply().
#### GstIdStr replaces GQuark in structure and caps APIs
-   GQuarks are integer identifiers for strings that are inserted into a global hash table, allowing in theory for cheap
    equality comparisons. In GStreamer they have been used to represent GstStructure names and field names. The problem is that
    these strings once added to the global string table can never be freed again, which can lead to ever-increasing memory usage
    for processes where such name identifiers are created based on external input or on locally-created random identifiers.
-   GstIdStr is a new data structure made to replace quarks in our APIs. It can hold a short string inline, a static string, or
    a reference to a heap-allocated longer string, and allows for cheap storage of short strings and cheap comparisons. It does
    not involve access to a global hash table protected by a global lock, and as most strings used in GStreamer structures are
    very short, it is actually more performant than quarks in many scenarios.
-   GQuark-using APIs in GstStructure or GstCaps have been deprecated and equivalent APIs using GstIdStr have been added
    instead. For more details about this change watch Sebastian’s GStreamer Conference presentation “GQuark in GStreamer
    structures - what nonsense!”.
-   Most applications and plugins will have been using the plain string-based APIs which are not affected by this change.
#### GstVecDeque
-   Moved GstQueueArray as GstVecDeque into core for use in GstBus, the ringbuffer logger and in GstBufferPool, where an overly
    complicated signaling mechanism using GstAtomicQueue and GstPoll was replaced with GstVecDeque and a simple mutex/cond.
-   GstQueueArray in libgstbase was deprecated in favour of GstVecDeque.
-   GstAtomicQueue will be deprecated once all users in GStreamer have been moved over to GstVecDeque.
### Audio Library
-   Added gst_audio_reorder_channels_with_reorder_map() which allows reordering the samples with a pre-calculated reorder map
    instead of re-calculating the reorder map every time.
-   Add top-surround-left and top-surround-right channel positions
-   GstAudioConverter now supports more numerical types for the mix matrix, namely double, int, int64, uint, and uint64 in
    addition to plain floats.
### Plugins Base Utils Library
-   New AV1 caps utility functions for AV1 Codec Configuration Record codec_data handling
-   The GstEncodingProfile (de)serialization functions are now public
-   GstEncodingProfile gained a way to specify a factory-name when specifying caps. In some cases you want to ensure that a
    specific element factory is used while requiring some specific caps, but this was not possible so far. You can now do
    e.g. qtmux:video/x-prores,variant=standard|factory-name=avenc_prores_ks to ensure that the avenc_prores_ks factory is used
    to produce the variant of prores video stream.
### Tag Library
-   EXIF handling now support the CAPTURING_LIGHT_SOURCE tag
-   Vorbis tag handling gained support for the LYRICS tag
### Video Library and OpenGL Library
-   gst_video_convert_sample(), gst_video_convert_sample_async() gained support for D3D12 conversion.
-   GstVideoEncoder: gst_video_encoder_release_frame() and gst_video_encoder_drop_frame() have been made available as public
    API.
-   Navigation: gained mouse double click event support
-   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
    video decoder, encoder, aggregator and audiovisualizer base classes, as well as in the adaptivedemux, deinterlace,
    monoscope, shapewipe, and (old) videomixer elements.
-   GstVideoConverter gained fast paths for v210 to/from I420_10 / I422_10
-   New gst_video_dma_drm_format_from_gst_format() helper function that converts a video format into a dma drm fourcc / modifier
    pair, plus gst_video_dma_drm_format_to_gst_format() which will do the reverse.
-   In the same vein gst_gl_dma_buf_transform_gst_formats_to_drm_formats() and
    gst_gl_dma_buf_transform_drm_formats_to_gst_formats() have been added to the GStreamer OpenGL support library.
-   GLDisplay/EGL: Add API (gst_gl_display_egl_set_foreign()) for overriding foreign-ness of the EGLDisplay in order to control
    whether GStreamer should call eglTerminate() or not.
-   Additional DMA DRM format definitions/mappings:
    -   NV15, NV20, NV30
    -   NV12_16L32S, MT2110T, MT2110R as used on Meditek SoCs
    -   NV12_10LE40
    -   RGB15, GRAY8, GRAY16_LE, GRAY16_BE
    -   plus support for big endian DRM formats and DRM vendor modifiers
New Raw Video Formats
-   Packed 4:2:2 YUV with 16 bits per channel:
    -   Y216_LE, Y216_BE
-   Packed 4:4:4:4 YUV with alpha, with 16 bits per channel:
    -   Y416_LE, Y416_BE
-   10-bit grayscale, packed into 16-bit words with left padding:
    -   GRAY10_LE16
### GstPlay Library
-   Add stream-id based selection of streams to better match playbin3’s API:
    -   Add accessors for the stream ID and selection API based on the stream ID:
        -   gst_play_stream_info_get_stream_id()
        -   gst_play_set_audio_track_id()
        -   gst_play_set_video_track_id()
        -   gst_play_set_subtitle_track_id()
        -   gst_play_set_track_ids()
    -   Deprecate the old index-based APIs:
        -   gst_play_stream_info_get_index()
        -   gst_play_set_audio_track()
        -   gst_play_set_video_track()
        -   gst_play_set_subtitle_track()
    -   Remove old playbin support
    -   Implement the track enable API based on stream selection
-   Distinguish missing plugin errors and include more details (uri, and stream-id if available) in error/warning messages:
    -   gst_play_message_get_uri()
    -   gst_play_message_get_stream_id()
    -   GST_PLAY_ERROR_MISSING_PLUGIN
    -   gst_play_message_parse_error_missing_plugin()
    -   gst_play_message_parse_warning_missing_plugin()
-   Improve play message API inconsistencies:
    -   Consistently name parse functions according to their message type:
        -   gst_play_message_parse_duration_changed()
        -   gst_play_message_parse_buffering()
    -   Deprecate the misnamed functions:
        -   gst_play_message_parse_duration_updated()
        -   gst_play_message_parse_buffering_percent()
    -   Add missing parse functions:
        -   gst_play_message_parse_uri_loaded()
        -   gst_play_message_parse_seek_done()
-   Support disabling the selected track at startup
## Miscellaneous performance, latency and memory optimisations
-   dvdspu: use multiple minimal sized PGS overlay rectangles instead of a single large one to minimise the total blitting
    surface in case of disjointed rectangles.
-   video-frame: reduce number of memcpy() calls on frame copies if possible
-   video-converter: added fast path conversions between v210 and I420_10 / I422_10
-   As always there have been plenty of performance, latency and memory optimisations all over the place.
## Miscellaneous other changes and enhancements
-   netclientclock: now also emits the clock synced signal when corrupted to signal that sync has been lost.
-   GstValue, GstStructure: can now (de)serialize string arrays (G_TYPE_STRV)
## Tracing framework and debugging improvements
-   dot files (pipeline graph dumps) are now written to disk atomically
-   tracing: add hooks for gst_pad_send_event_unchecked() and GstMemory init/free
-   tracers: Simplify params handling using GstStructure and object properties and move tracers over to property-based
    configuration (leaks, latency).
-   textoverlay, clockoverlay, timeoverlay: new "response-time-compensation" property that makes the element render the text or
    timestamp twice: Once in the normal location and once in a different sequentially predictable location for every frame. This
    is useful when measuring video latency by taking a photo with a camera of two screens showing the test video overlayed with
    timeoverlay or clockoverlay. In these cases, you will often see ghosting if the display’s pixel response time is not great,
    which makes it difficult to discern what the current timestamp being shown is. Rendering in a different location for each
    frame makes it easy to tell what the latest timestamp is. In addition, you can also use the fade-time of the previous frame
    to measure with sub-framerate accuracy when the photo was taken, not just clamped to the framerate, giving you a higher
    precision latency value.
New tracers
-   memory-tracer: New tracer that can track memory usage over time
-   pad-push-timings: New tracer for tracing pad push timings
-   pcap-writer: New tracer that can store the buffers flowing through a pad as PCAP file
Dot tracer/viewer
-   New dots tracer that simplifies the pipeline visualization workflow:
    -   Automatically configures dot file directory and cleanup
    -   Integrates with the pipeline-snapshotS tracer to allow dumping pipeline on demand from the gst-dots-viewer web interface
    -   Uses GST_DEBUG_DUMP_DOT_DIR or falls back to $XDG_CACHE_HOME/gstreamer-dots
-   New gst-dots-viewer web tool for real-time pipeline visualization
    -   Provides interface to browse and visualize pipeline dot files
    -   Features on-demand pipeline snapshots via “Dump Pipelines” button
    -   WebSocket integration for live updates
    -   Uses GST_DEBUG_DUMP_DOT_DIR or falls back to $XDG_CACHE_HOME/gstreamer-dots
-   Simple usage:
    -   gst-dots-viewer (starts server)
    -   GST_TRACERS=dots gst-launch-1.0 videotestsrc ! autovideosink (runs with tracer)
    -   View at http://localhost:3000
Debug logging system improvements
-   Nothing major in this cycle.
## Tools
-   gst-inspect-1.0 documents tracer properties now and shows element flags
-   gst-launch-1.0 will show error messages posted during pipeline construction
## GStreamer FFmpeg wrapper
-   Add support for H.266/VVC decoder
-   Add mappings for the Hap video codec, the Quite OK Image codec (QOI) and the M101 Matrox uncompressed SD video codec.
-   Don’t register elements for which we have no caps and which were non-functional as a result (showing unknown/unknown caps).
-   The S302M audio encoder now supports up to 8 channels.
-   Various tag handling improvements in the avdemux wrappers, especially when there are both upstream tags and additional local
    tags.
-   Support for 10-bit grayscale formats
## GStreamer RTSP server
-   GstRTSPOnvifMediaFactoryClass gained a ::create_backchannel_stream() vfunc. This allows subclasses to delay creation of the
    backchannel to later in the sequence, which is useful in scenarios where the RTSP server acts as a relay and the supported
    caps depend on the upstream camera, for example.
-   The ONVIF backchannel example now features support for different codecs, including AAC.
## VA-API integration
VA plugin
-   New VA elements:
    -   H.266 / VVC video decoder
    -   VP8 video encoder
    -   JPEG encoder
    -   VP9 + VP8 alpha decodebin
    Remember that the availability of these elements depends on your platform and driver.
-   There are a lot of improvements and bug fixes, to hightlight some of them:
    -   Improved B pyramid mode for both H264 and HEVC encoding when reference frame count exceeds 2, optimizing pyramid level
        handling.
    -   Enabled ICQ and QVBR modes for several encoders, including H264, H265, VP9 and AV1.
    -   Updated rate control features by setting the quality factor parameter, while improving bitrate change handling.
    -   Improved VP9 encoder’s ability to avoid reopening or renegotiating encoder settings when parameters remain stable.
    -   Added functionality to adjust the trellis parameter in encoders.
    -   Optimize encoders throughput with the introduction of output delay.
    -   Added support for new interpolation methods for scaling and improvements for handling interlace modes.
GStreamer-VAAPI is now deprecated
-   gstreamer-vaapi has been deprecated and is no longer actively maintained. Users who rely on gstreamer-vaapi are encouraged
    to migrate to the va plugin’s elements at the earliest opportunity.
-   vaapi*enc encoders have been demoted to a rank of None, so will no longer be autoplugged in encodebin. They have also no
    longer advertise dmabuf caps or unusual pixel formats on their input pad template caps.
## GStreamer Video4Linux2 support
-   Implemented DMA_DRM caps negotiation
-   Framerate negotiation improvements
-   Support for P010 and BGR10A2_LE pixel formats
-   The V4L2 stateless decoders now support inter-frame resolution changes for AV1 and VP9
-   The V4L2 stateful encoders can now handle dynamic frame rates (0/1), and colorimetry negotiation was also improved.
## GStreamer Editing Services and NLE
-   Added support for reverse playback with a new reverse property on nlesource which is exposed child property on GESClip
-   Input channels reordering for flexible audio channel mapping
-   Added support for transition in the ges-launch-1.0 timeline description format
-   Added support for GstContext sharing in GESTimeline
-   Added basic support for duplicated children property in GESTimelineElement
-   validate: Add an action type to group clips
## GStreamer validate
-   Added new action types:
    -   start-http-server: Start a new instance of our HTTP test server
    -   http-requests: Send an HTTP request to a server, designed to work with our test http server
-   HTTP server control endpoints to allow scenarios to control the server behavior, allowing simulating server failures from
    tests
-   Improved the select-streams action type, adding support for selecting the same streams several times
-   Added support for forcing monitoring of all pipelines in validatetest files
-   Enhanced support for expected Error messages on the bus
-   Added ways to retrieve HTTP server port in .validatetest files
-   Added support for lldb in the gst-validate-launcher
## GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on gobject-introspection information and PyGObject,
and provides “syntactic sugar” in form of overrides for various GStreamer APIs that makes them easier to use in Python and more
pythonic; as well as support for APIs that aren’t available through the regular gobject-introspection based bindings, such as
e.g. GStreamer’s fundamental GLib types such as Gst.Fraction, Gst.IntRange etc.
-   The python Meson build option has been renamed to python-exe (and will yield to the monorepo build option of the same name
    if set, in a monorepo build context).
-   Added an iterator for AnalyticsRelationMeta
-   Implement __eq__ for Mtd classes
-   Various build fixes and Windows-related fixes.
## GStreamer C# Bindings
-   The C# bindings have been updated for the latest GStreamer 1.26 API
## GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different release cadence that’s tied to the gtk-rs
release cycle.
The latest release of the bindings (0.23) has already been updated for the new GStreamer 1.26 APIs, and works with any GStreamer
version starting at 1.14.
gst-plugins-rs, the module containing GStreamer plugins written in Rust, has also seen lots of activity with many new elements
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
branch once that has been released (around summer 2025). After that, fixes from newer versions will be backported as needed to
the 0.14 branch for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications they look just like a plugin written in C or C++.
### New Rust elements
-   awstranscriber2, awstranslate: New elements around the AWS transcription and translation services.
-   cea708mux: New element that allows to mux multiple CEA708 services into a single stream.
-   cdpserviceinject: New element for injecting a CDP service descriptor into closed caption CDP packets
-   cea708overlay: New element for overlaying CEA608 / CEA708 closed captions over video streams.
-   gopbuffer: New element that can buffer a minimum duration of data delimited by discrete GOPs (Group of Picture)
-   hlscmafsink, hlssink3: New single-variant HLS sink elements that can output CMAF (fMP4) or MPEG-TS fragments.
-   hlsmultivariantsink: New sink element that can output an HLS stream with multiple variants
-   mpegtslivesrc: New source element that can wrap a live MPEG-TS source (e.g. SRT or UDP source) and provides a clock based on
    the PCR.
-   onvifmetadataextractor: New element that can extract ONVIF metadata from GstMetas into a separate stream
-   originalbuffer: New plugin with originalbuffersave / originalbufferrestore elements that allow saving an original buffer,
    modifying it for analytics, and then restoring the original buffer content while keeping any additional metadata that was
    added.
-   polly: New element around the AWS text-to-speech polly services
-   quinn: New plugin that contains various QUIC-based elements for working with raw QUIC streams, RTP-over-QUIC (RoQ) and
    WebTransport.
-   relationmeta: New plugin with elements converting between GstRelationMeta and ONVIF XML metadata.
-   New Rust RTP payloaders and depayloaders for AC3, AMR, JPEG, KLV, MPEG-TS (MP2T), MPEG-4 (MP4A, MP4G), Opus, PCMU (uLaw),
    PCMA (aLaw), VP8, VP9.
-   New rtpbin2 based on rtprecv / rtpsend elements
-   speechmatics: New transcriber / speech-to-text and translation element
-   New spotifylyricssrc element for grabbing lyrics from Spotify.
-   streamgrouper: New element that takes any number of streams as input and adjusts their stream-start events in such a way
    that they all belong to the same stream group.
-   translationbin: Helper bin around translation elements, similar to the already existing transcriberbin for transcriptions.
-   tttocea708: New element for converting timed-text to CEA708 closed captions
-   A VVdeC-based H.266 decoder element was added to the Rust plugins, based on the Fraunhofer Versatile Video Decoder library.
For a full list of changes in the Rust plugins see the gst-plugins-rs ChangeLog between versions 0.12 (shipped with GStreamer
1.24) and 0.14.x (shipped with GStreamer 1.26).
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
(see above). As such, the ChangeLog also did not contain the changes between the latest 0.13 release and 0.14.0.
## Build and Dependencies
-   Meson >= 1.4 is now required for all modules
-   liborc >= 0.4.41 is strongly recommended
-   libnice >= 0.1.22 is strongly recommended, as it is required for WebRTC ICE consent freshness (RFC 7675).
-   The ASIO plugin dropped its external SDK header dependency, so it can always be built and shipped more easily.
-   Require tinyalsa >= 1.1.0 when building the tinyalsa plugin
-   The srtp plugin now requires libsrtp2, support for libsrtp1 was dropped.
Monorepo build
-   The FFmpeg subproject wrap was updated to 7.1
-   Many other wrap updates
gstreamer-full
-   No major changes
Development environment
-   Local pre-commit checks via git hooks have been moved over to pre-commit, including the code indentation check.
-   Code indentation checking no longer relies on a locally installed copy of GNU indent (which had different outcomes depending
    on the exact version installed). Instead pre-commit will automatically install the gst-indent-1.0 indentation tool through
    pip, which also works on Windows and macOS.
-   A pre-commit hook has been added to check documentation cache updates and since tags.
-   Many meson wrap updates, including to FFmpeg 7.1
-   The uninstalled development environment should work better on macOS now, also in combination with homebrew (e.g. when
    libsoup comes from homebrew).
-   New python-exe Meson build option to override the target Python installation to use. This will be picked up by the
    gst-python and gst-editing-sevices subprojects.
## Platform-specific changes and improvements
### Android
-   The recommended mechanism to build Android apps has changed from Android.mk to CMake-in-Gradle using
    FindGStreamerMobile.cmake. Android.mk support has been deprecated and will be removed in the next stable release. For more
    information, see below, in the Cerbero section.
-   More H.264/H.265 profiles and levels have been added to the androidmedia hardware-accelerated video encoder and decoder
    elements, along with mappings for a number of additional pixel formats for P010, packed 4:2:0 variants and RGBA layouts,
    which fixes problems with android decoders refusing to output raw video frames with decoders that announce support for these
    common pixel formats and only allow the ‘hardware surfaces output’ path.
### Apple macOS and iOS
-   atenc: added an Apple AAC audio encoder
-   atdec can now decode audio with more than two channels
-   vtenc has received various bug fixes as well as a number of new features:
    -   Support for HEVC with alpha encoding via the new vtenc_h265a element
    -   additional rate control options for constant bitrate encoding (only supported on macOS 13.0+ and iOS 16.0+ on Apple
        Silicon), setting data rate limits, and emulating CBR mode via data rate limits where CBR is not supported.
    -   HLG color transfer support
    -   new "max-frame-delay" property (for ProRes)
-   Better macOS support for gst-validate tools which now use gst_macos_main() and support lldb
-   The osxaudio device provider exposes more properties including a unique id
-   osxaudio will automatically set up AVAudioSession on iOS and always expose the maximum number of channels a device supports
    with an unpositioned layout.
-   The monorepo development environment should work better on macOS now
-   CMake apps that build macOS and iOS apps can consume GStreamer more easily now, using FindGStreamer.cmake or
    FindGStreamerMobile.cmake respectively.
-   In the near future, CMake in Xcode will be the preferred way of building the iOS tutorials. See below, in the Cerbero
    section.
### Windows
-   webview2src: new Microsoft WebView2 based web browser source element
-   The mediafoundation plugin can also be built with MinGW now.
-   The GTK3 plugin has gained support for OpenGL/WGL on Windows
-   qsv: Add support for d3d12 interop in encoder, via D3D11 textures
### Cerbero
Cerbero is a meta build system used to build GStreamer plus dependencies on platforms where dependencies are not readily
available, such as Windows, Android, iOS, and macOS.
General improvements
-   New features:
    -   Python bindings support has been re-introduced and now supports Linux, Windows (MSVC) and macOS. Simply downloading the
        official binaries and setting PYTHONPATH to the appropriate directory is sufficient.
        -   This should make it easier for macOS and Windows users to use Python libraries, frameworks, and projects that use
            GStreamer such as Pitivi and gst-python-ml.
    -   Introspection support has been re-introduced on Linux, Windows (MSVC), and macOS.
    -   New variants assert and checks to disable GLib assertions and runtime checks for performance reasons. Please note that
        these are not recommended because they have significant behavioural side-effects, make debugging harder, and should only
        be enabled when targeting extremely resource-constrained platforms.
-   API/ABI changes:
    -   Libsoup has been upgraded from 2.74 to 3.6, which is an API and ABI breaking change. The soup and adaptivedemux2 plugins
        are unchanged, but your applications may need updating since libsoup-2.4 and libsoup-3.0 cannot co-exist in the same
        process.
    -   OpenSSL has been updated from 1.1.1 to 3.4, which is an ABI and API breaking change. Plugins are unchanged, but your
        applications may need updating.
-   Plugins added:
    -   The svt-av1 plugin is now shipped in the binary releases for all platforms.
    -   The svt-jpeg-xs plugin is now shipped in the binary releases for all platforms.
    -   The x265 plugin is now shipped in the binary releases for all platforms.
    -   All gst-plugins-rs elements are now shipped in the binary releases for all platforms, except those that have C/C++
        system-deps like GTK4. For a full list, see the Rust section above.
-   Plugins changed:
    -   The rsvg plugin now uses librsvg written in Rust. The only side-effects of this should be better SVG rendering and
        slightly larger plugin size.
    -   The webrtc Rust plugin now also supports aws and livekit integrations .
-   Plugins removed:
    -   webrtc-audio-processing has been updated to 2.0, which means the isac plugin is no longer shipped.
-   Development improvements:
    -   Support for the shell command has been added to cross-macos-universal, since the prefix is executable despite being a
        cross-compile target
    -   More recipes have been ported away from Autotools to Meson and CMake, speeding up the build and increasing platform
        support.
#### macOS
-   Python bindings support on macOS only supports using the Xcode-provided Python 3
-   MoltenVK support in the applemedia plugin now also works on arm64 when doing a cross-universal build.
#### iOS
-   CMake inside Xcode will soon be the recommended way to consume GStreamer when building iOS apps, similar to Android apps.
    -   FindGStreamerMobile.cmake is the recommended way to consume GStreamer now
    -   Tutorials and examples still use Xcode project files, but CMake support will be the active focus going forward
#### Windows
-   The minimum supported OS version is now Windows 10.
    -   GStreamer itself can still be built for an older Windows, so if your project is majorly impacted by this, please open an
        issue with details.
-   The Windows MSI installers are now based on WiX v5, with several improvements including a much faster MSI creation process,
    improved naming in Add/Remove Programs, and more.
    -   Windows installer packages: Starting with 1.26, due to security reasons, the default installation directory has changed
        from C:\gstreamer to the Program Files folder, e.g. C:\Program Files (x86)\gstreamer for the 32-bit package on 64-bit
        Windows. If you upgrade from 1.24 or older versions, the 1.26 installers will NOT keep using the existing folder.
        Nevertheless if you were using C:\gstreamer we strongly recommend you double-check the install location.
    -   Note for MSI packagers: Starting with 1.26, the installers were ported to WiX 5.0. As part of this, the property for
        setting the installation directory has been changed to INSTALLDIR, and it now requires a full path to the desired
        directory, e.g. C:\gstreamer instead of C:\.
    -   Cross-MinGW build no longer supports the creation of MSIs. Please use tarballs.
-   MinGW:
    -   MinGW toolchain has been updated from GCC 8.2 → 14.2 and MinGW 6.0 → 12.0
    -   The mediafoundation plugin is also shipped in the MinGW packages now.
    -   The d3d12 plugin is also shipped in the MinGW packages now.
    -   Rust support has been enabled on MinGW 64-bit. Rust support cannot work on 32-bit MinGW due to differences in exception
        handling between our 32-bit MinGW toolchain and that used by the Rust project
-   The asio plugin is shipped now, since it no longer has a build-time dependency on the ASIO SDK.
-   The new plugin webview2 is shipped with MSVC. It requires the relevant component shipped with Windows.
#### Linux
-   Preliminary support for Alma Linux has been added.
-   RHEL distro support has been improved.
-   Cerbero CI now tests the build on Ubuntu 24.04 LTS.
-   curl is used for downloading sources on Fedora instead of wget, since they have moved to wget2 despite show-stopper
    regressions such as returning a success error code on download failure.
#### Android
-   CMake inside Gradle is now the recommended way to consume GStreamer when building Android apps
    -   FindGStreamerMobile.cmake is the recommended way to consume GStreamer now
    -   1.26 will support both CMake and Make inside Gradle, but the Make support will likely be removed in 1.28
    -   Documentation updates are still a work-in-progress, help is appreciated
-   Android tutorials and examples are now built with gradle + cmake instead of gradle + make on the CI
## Documentation improvements
-   Tracer objects information is now included in the documentation
## Possibly Breaking Changes
-   qroverlay: the "pixel-size" property has been removed in favour of a new "size" property with slightly different semantics,
    where the size of the square is expressed in percent of the smallest of width and height.
-   svtav1enc: The SVT-AV1 3.0.0 API exposes a different mechanism to configure the level of parallelism when encoding, which
    has been exposed as a new "level-of-parallelism" property. The old "logical-processors" property is no longer functional if
    the plugin has been compiled against the new API, which might affect encoder performance if application code setting it is
    not updated.
-   udpsrc: now disables allocated port reuse for unicast to avoid unexpected side-effects of SO_REUSEADDR where the kernel
    allocates the same listening port for multiple udpsrc.
-   uridecodebin3 remove non-functional "source" property that doesn’t make sense and always returned NULL anyway.
## Known Issues
-   GstBuffer now uses C11 atomics for 64 bit atomic operations if available, which may require linking to libatomic on some
    systems, but this is not done automatically yet, see issue #4177.
## Statistics
-   4496 commits
-   2203 Merge requests merged
-   794 Issues closed
-   215+ Contributors
-   ~33% of all commits and Merge Requests were in Rust modules/code
-   4950 files changed
-   515252 lines added
-   201503 lines deleted
-   313749 lines added (net)
Contributors
Aaron Boxer, Adrian Perez de Castro, Adrien De Coninck, Alan Coopersmith, Albert Sjolund, Alexander Slobodeniuk, Alex Ashley,
Alicia Boya García, Andoni Morales Alastruey, Andreas Wittmann, Andrew Yooeun Chun, Angelo Verlain, Aniket Hande, Antonio
Larrosa, Antonio Morales, Armin Begovic, Arnaud Vrac, Artem Martus, Arun Raghavan, Benjamin Gaignard, Benjamin Gräf, Bill
Nottingham, Brad Hards, Brad Reitmeyer, Branko Subasic, Carlo Caione, Carlos Bentzen, Carlos Falgueras García, cdelguercio, Chao
Guo, Cheah, Cheung Yik Pang, chitao1234, Chris Bainbridge, Chris Spencer, Chris Spoelstra, Christian Meissl, Christopher Degawa,
Chun-wei Fan, Colin Kinloch, Corentin Damman, Daniel Morin, Daniel Pendse, Daniel Stone, Dan Yeaw, Dave Lucia, David Rosca, Dean
Zhang (张安迪), Denis Yuji Shimizu, Detlev Casanova, Devon Sookhoo, Diego Nieto, Dongyun Seo, dukesook, Edward Hervey, eipachte,
Eli Mallon, Elizabeth Figura, Elliot Chen, Emil Ljungdahl, Emil Pettersson, eri, F. Duncanh, Fotis Xenakis, Francisco Javier
Velázquez-García, Francis Quiers, François Laignel, George Hazan, Glyn Davies, Guillaume Desmottes, Guillermo E. Martinez,
Haihua Hu, Håvard Graff, He Junyan, Hosang Lee, Hou Qi, Hugues Fruchet, Hyunwoo, iodar, jadarve, Jakub Adam, Jakub Vaněk, James
Cowgill, James Oliver, Jan Alexander Steffens (heftig), Jan Schmidt, Jeffery Wilson, Jendrik Weise, Jerome Colle, Jesper Jensen,
Jimmy Ohn, Jochen Henneberg, Johan Sternerup, Jonas K Danielsson, Jonas Rebmann, Jordan Petridis, Jordan Petridіs, Jordan
Yelloz, Jorge Zapata, Joshua Breeden, Julian Bouzas, Jurijs Satcs, Kévin Commaille, Kevin Wang, Khem Raj, kingosticks, Leonardo
Salvatore, L. E. Segovia, Liam, Lim, Loïc Le Page, Loïc Yhuel, Lyra McMillan, Maksym Khomenko, Marc-André Lureau, Marek Olejnik,
Marek Vasut, Marianna Smidth Buschle, Marijn Suijten, Mark-André Schadow, Mark Nauwelaerts, Markus Ebner, Martin Nordholts, Mart
Raudsepp, Mathieu Duponchelle, Matthew Waters, Maxim P. DEMENTYEV, Max Romanov, Mengkejiergeli Ba, Michael Grzeschik, Michael
Olbrich, Michael Scherle, Michael Tretter, Michiel Westerbeek, Mikhail Rudenko, Nacho Garcia, Nick Steel, Nicolas Dufresne,
Niklas Jang, Nirbheek Chauhan, Ognyan Tonchev, Olivier Crête, Oskar Fiedot, Pablo García, Pablo Sun, Patricia Muscalu, Paweł
Kotiuk, Peter Kjellerstedt, Peter Stensson, pgarciasancho, Philippe Normand, Philipp Zabel, Piotr Brzeziński, Qian Hu (胡骞),
Rafael Caricio, Randy Li (ayaka), Rares Branici, Ray Tiley, Robert Ayrapetyan, Robert Guziolowski, Robert Mader, Roberto Viola,
Robert Rosengren, RSWilli,Ruben González, Ruijing Dong, Sachin Gadag, Sam James, Samuel Thibault, Sanchayan Maity, Scott Moreau,
Sebastian Dröge, Sebastian Gross, Sebastien Cote, Sergey Krivohatskiy, Sergey Radionov, Seungha Yang, Seungmin Kim, Shengqi Yu,
Sid Sethupathi, Silvio Lazzeretti, Simonas Kazlauskas, Stefan Riedmüller, Stéphane Cerveau, Tamas Levai, Taruntej Kanakamalla,
Théo Maillart, Thibault Saunier, Thomas Goodwin, Thomas Klausner, Tihran Katolikian, Tim Blechmann, Tim-Philipp Müller, Tjitte
de Wert, Tomas Granath, Tomáš Polomský, tomaszmi, Tom Schuring, U. Artie Eoff, valadaptive, Víctor Manuel Jáquez Leal, Vivia
Nikolaidou, W. Bartel, Weijian Pan, William Wedler, Will Miller, Wim Taymans, Wojciech Kapsa, Xavier Claessens, Xi Ruoyao,
Xizhen, Yaakov Selkowitz, Yacine Bandou, Zach van Rijn, Zeno Endemann, Zhao, Zhong Hongcheng,
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
Stable 1.26 branch
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
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
bug-fix releases will be made from the git 1.26 branch, which is a stable release series branch.
1.26.1
The first 1.26 bug-fix release (1.26.1) was released on 24 April 2025.
This release only contains bugfixes and security fixes and it should be safe to update from 1.26.0.
Highlighted bugfixes in 1.26.1
-   awstranslate and speechmatics plugin improvements
-   decodebin3 fixes and urisourcebin/playbin3 stability improvements
-   Closed captions: CEA-708 generation and muxing fixes, and H.264/H.265 caption extractor fixes
-   dav1d AV1 decoder: RGB support, plus colorimetry, renegotiation and buffer pool handling fixes
-   Fix regression when rendering VP9 with alpha
-   H.265 decoder base class and caption inserter SPS/PPS handling fixes
-   hlssink3 and hlsmultivariantsink feature enhancements
-   Matroska v4 support in muxer, seeking fixes in demuxer
-   macOS: framerate guessing for cameras or capture devices where the OS reports silly framerates
-   MP4 demuxer uncompressed video handling improvements and sample table handling fixes
-   oggdemux: seeking improvements in streaming mode
-   unixfdsrc: fix gst_memory_resize warnings
-   Plugin loader fixes, especially for Windows
-   QML6 GL source renegotiation fixes
-   RTP and RTSP stability fixes
-   Thread-safety improvements for the Media Source Extension (MSE) library
-   v4l2videodec: fix A/V sync issues after decoding errors
-   Various improvements and fixes for the fragmented and non-fragmented MP4 muxers
-   Video encoder base class segment and buffer timestamp handling fixes
-   Video time code support for 119.88 fps and drop-frames-related conversion fixes
-   WebRTC: Retransmission entry creation fixes and better audio level header extension compatibility
-   YUV4MPEG encoder improvments
-   dots-viewer: make work locally without network access
-   gst-python: fix compatibility with PyGObject >= 3.52.0
-   Cerbero: recipe updates, compatibility fixes for Python < 3.10; Windows Android cross-build improvements
-   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
gstreamer
-   Correctly handle whitespace paths when executing gst-plugin-scanner
-   Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup
-   cmake: Fix PKG_CONFIG_PATH formatting for Windows cross-builds
-   macos: Move macos function documentation to the .h so the introspection has the information
-   meson.build: test for and link against libatomic if it exists
-   pluginloader-win32: Fix helper executable path under devenv
-   pluginloader: fix pending_plugins Glist use-after-free issue
-   unixfdsrc: Complains about resize of memory area
-   tracers: dots: fix debug log
gst-plugins-base
-   Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup
-   alsadeviceprovider: Fix leak of Alsa longname
-   audioaggregator: fix error added in !8416 when chaining up
-   audiobasesink: Fix custom slaving driftsamples calculation and add custom audio clock slaving callback example
-   decodebin3: Don’t avoid parsebin even if we have a matching decoder
-   decodebin3: Doesn’t plug parsebin for AAC from tsdemux
-   gl: eglimage: warn the reason of export failure
-   glcolorconvert: fix YUVA<->RGBA conversions
-   glcolorconvert: regression when rendering alpha vp9
-   gldownload: Unref glcontext after usage
-   meson.build: test for and link against libatomic if it exists
-   oggdemux: Don’t push new packets if there is a pending seek
-   urisourcebin: Make parsebin activation more reliable
-   urisourcebin: deadlock between parsebin and typefind
-   videoencoder: Use the correct segment and buffer timestamp in the chain function
-   videotimecode: Fix conversion of timecode to datetime with drop-frame timecodes and handle 119.88 fps correctly in all
    places
gst-plugins-good
-   Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup
-   gst-plugins-good: Matroska mux v4 support
-   matroska-demux: Prevent corrupt cluster duplication
-   qml6glsrc: update buffer pool on renegotiation
-   qt6: Add a missing newline in unsupported platform message
-   qtdemux: Fix stsc size check in qtdemux_merge_sample_table()
-   qtdemux: Next Iteration Of Uncompressed MP4 Decoder
-   qtdemux: unref simple caps after use
-   rtspsrc: Do not emit signal ‘no-more-pads’ too early
-   rtspsrc: Don’t error out on not-linked too early
-   rtpsession: Do not push events while holding SESSION_LOCK
-   rtpsession: deadlock when gst_rtp_session_send_rtcp () is forwarding eos
-   v4l2: drop frame for frames that cannot be decoded
-   v4l2videodec: AV unsync for streams with many frames that cannot be decoded
-   v4l2object: fix memory leak
-   v4l2object: fix type mismatch when ioctl takes int
-   y4menc: fix Y41B format
-   y4menc: handle frames with GstVideoMeta
gst-plugins-bad
-   Add missing Requires in pkg-config
-   Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup
-   Update docs
-   aja: Use the correct location of the AJA NTV2 SDK in the docs
-   alphacombine: De-couple flush-start/stop events handling
-   alphadecodebin: use a multiqueue instead of a couple of queues
-   avfvideosrc: Guess reasonable framerate values for some 3rd party devices
-   codecalpha: name both queues
-   d3d12converter: Fix cropping when automatic mipmap is enabled
-   dashsink: Make sure to use a non-NULL pad name when requesting a pad from splitmuxsink
-   docs: Fix GstWebRTCICE* class documentation
-   h264ccextractor, h265ccextractor: Handle gap with unknown pts
-   h265decoder, h265ccinserter: Fix broken SPS/PPS link
-   h265parser: Fix num_long_term_pics bound check
-   Segmentation fault in H265 decoder
-   h266decoder: fix leak parsing SEI messages
-   meson.build: test for and link against libatomic if it exists
-   mse: Improved Thread Safety of API
-   mse: Revert ownership transfer API change in gst_source_buffer_append_buffer()
-   tensordecoders: updating element classification
-   unixfd: Fix wrong memory size when offset > 0
-   uvcsink: Respond to control requests with proper error handling
-   v4l2codecs: unref frame in all error paths of end_picture
-   va: Skip codecs that report maximum width or height lower than minimum
-   vapostproc: fix wrong video orientation after restarting the element
-   vavp9enc: fix mem leaks in _vp9_decide_profile
-   vkformat: fix build error
-   vtenc: Avoid deadlocking when changing properties on the fly
-   vulkan: fix memory leak at dynamic registering
-   webrtc: enhance rtx entry creation
-   webrtcbin: add missing warning for caps missmatch
-   ZDI-CAN-26596: New Vulnerability Report (Security)
gst-plugins-ugly
-   No changes
GStreamer Rust plugins
-   Bump MSRV to 1.83
-   Allow any windows-sys version >= 0.52 and <= 0.59
-   aws/polly: add GstScaletempoTargetDurationMeta to output buffers
-   awstranslate: improve message posted on bus
-   cdg: typefind: Division by zero fix
-   cea708mux: Improve support for overflowing input captions
-   colordetect: Change to videofilter base class
-   dav1ddec: Drain decoder on caps changes if necessary
-   dav1ddec: Only update unknown parts of the upstream colorimetry and not all of it
-   dav1ddec: Support RGB encoded AV1
-   dav1ddec: Use downstream buffer pool for copying if video meta is not supported
-   dav1ddec: Use max-frame-delay value from the decoder instead of calculating it
-   dav1ddec: Use max-frame-delay value from the decoder instead of calculating it
-   doc: Update to latest way of generating hotdoc config files
-   Fix gtk4 compile
-   Fix various clippy 1.86 warnings and update gstreamer-rs / gtk-rs dependencies
-   fmp4mux: Add a couple of minor new features
-   fmp4mux: Add manual-split mode that is triggered by serialized downstream events
-   fmp4mux: Add send-force-keyunit property
-   fmp4mux: Fix latency configuration for properties set during construction
-   fmp4mux: Improve split-at-running-time handling
-   fmp4mux/mp4mux: Handle the case of multiple tags per taglist correctly
-   fmp4mux: Write a v0 tfdt box if the decode time is small enough
-   gstwebrtc-api: Add TypeScript type definitions, build ESM for broader compatibility, improve JSDocs
-   hlsmultivariantsink: Allow users to specify playlist and segment location
-   hlssink3 - Add Support for NTP timestamp from buffer
-   livesync: Notify in/out/drop/duplicate properties on change
-   livesync: Only notify drop/duplicate properties
-   meson: Require gst 1.18 features for dav1d
-   mp4mux: Don’t write composition time offsets if they’re all zero
-   mp4mux, fmp4mux: Use correct timescales for edit lists
-   mpegtslivesrc: increase threshold for PCR <-> PTS DISCONT
-   mpegtslivesrc: Use a separate mutex for the properties
-   mux: use smaller number of samples for testing
-   net/aws: punctuation-related improvements to our span_tokenize_items function
-   pcap_writer: Mark target-factory and pad-path props as construct-only
-   speechmatics: Handle multiple stream-start event
-   tracers: buffer-lateness: don’t panic on add overflow + reduce graph legend entry font size a bit
-   tracers: Update to etherparse 0.17
-   transcriberbin: make auto passthrough work when transcriber is a bin
-   ts-jitterbuffer: improve scheduling of lost events
-   tttocea708: fix origin-row handling for roll-up in CEA-708
-   Update Cargo.lock to remove old windows-targets 0.48.5
-   Update dependencies
-   Update gtk-rs / gstreamer-rs dependencies and update for API changes
-   Update to bitstream-io 3
-   uriplaylistbin: skip cache test when offline
-   webrtc: Port to reqwest 0.12
-   webrtcsink: Fix compatibility with audio level header extension
gst-libav
-   No changes
gst-rtsp-server
-   Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup
gstreamer-vaapi
-   No changes
gstreamer-sharp
-   No changes
gst-python
-   gst-python: fix compatibility with PyGObject >= 3.52.0
-   gst-python: Segmentation Fault since PyGObject >= 3.52.0 due to missing _introspection_module attribute
gst-editing-services
-   Ensure properties are freed before (re)setting with g_value_dup_string() and during cleanup
gst-devtools, gst-validate + gst-integration-testsuites
-   Add missing Requires in pkg-config
-   devtools: dots-viewer: Bundle js dependencies using webpack
-   devtools: dots-viewer: Update dependencies and make windows dependencies conditional
gst-examples
-   examples: Update Rust dependencies
-   examples: webrtc: rust: Move from async-std to tokio
gstreamer-docs
-   Update docs
Development build environment
-   No changes
Cerbero build tool and packaging changes in 1.26.1
-   FindGStreamerMobile: Override pkg-config on Windows -> Android cross builds
-   Fix BuildTools not using recipes_remotes and recipes_commits
-   bootstrap, meson: Use pathlib.Path.glob to allow Python < 3.10
-   Use of ‘glob(…, root_dir)’ requires Python >=3.10, cerbero enforces >= 3.7
-   harfbuzz: update to 10.4.0
-   Update fontconfig to 2.16.1, pango to 1.56.2
Contributors to 1.26.1
Alexander Slobodeniuk, Alyssa Ross, Artem Martus, Arun Raghavan, Brad Hards, Carlos Bentzen, Carlos Rafael Giani, Daniel Morin,
David Smitmanis, Detlev Casanova, Dongyun Seo, Doug Nazar, dukesook, Edward Hervey, eipachte, Eli Mallon, François Laignel,
Guillaume Desmottes, Gustav Fahlen, Hou Qi, Jakub Adam, Jan Schmidt, Jan Tojnar, Jordan Petridis, Jordan Yelloz, L. E. Segovia,
Marc Leeman, Marek Olejnik, Mathieu Duponchelle, Matteo Bruni, Matthew Waters, Michael Grzeschik, Nirbheek Chauhan, Ognyan
Tonchev, Olivier Blin, Olivier Crête, Philippe Normand, Piotr Brzeziński, Razvan Grigore, Robert Mader, Sanchayan Maity,
Sebastian Dröge, Seungha Yang, Shengqi Yu (喻盛琪), Stefan Andersson, Stéphane Cerveau, Thibault Saunier, Tim-Philipp Müller,
tomaszmi, Víctor Manuel Jáquez Leal, Xavier Claessens,
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
List of merge requests and issues fixed in 1.26.1
-   List of Merge Requests applied in 1.26.1
-   List of Issues fixed in 1.26.1
1.26.2
The second 1.26 bug-fix release (1.26.2) was released on 29 May 2025.
This release only contains bugfixes as well as a number of security fixes and important playback fixes, and it should be safe to
update from 1.26.0.
Highlighted bugfixes in 1.26.2
-   Various security fixes and playback fixes
-   aggregator base class fixes to not produce buffers too early in live mode
-   AWS translate element improvements
-   D3D12 video decoder workarounds for crashes on NVIDIA cards on resolution changes
-   dav1d AV1-decoder performance improvements
-   fmp4mux: tfdt and composition time offset fixes, plus AC-3 / EAC-3 audio support
-   GStreamer editing services fixes for sources with non-1:1 aspect ratios
-   MIDI parser improvements for tempo changes
-   MP4 demuxer atom parsing improvements and security fixes
-   New skia-based video compositor element
-   Subtitle parser security fixes
-   Subtitle rendering and seeking fixes
-   Playbin3 and uridecodebin3 stability fixes
-   GstPlay stream selection improvements
-   WAV playback regression fix
-   GTK4 paintable sink colorimetry support and other improvements
-   WebRTC: allow webrtcsrc to wait for a webrtcsink producer to initiate the connection
-   WebRTC: new Janus Video Room WebRTC source element
-   vah264enc profile decision making logic fixes
-   Python bindings gained support for handling mini object writability (buffers, caps, etc.)
-   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
gstreamer
-   aggregator: Various state related fixes
-   element: ref-sink the correct pad template when replacing an existing one
-   pipeline: Store the actual latency even if no static latency was configured
-   structure: Add gst_structure_is_writable() API to allow python bindings to be able to handle writability of MiniObjects
-   tracerutils: Do not warn on empty string as tracername
-   tracerutils: Fix leak in gst_tracer_utils_create_tracer()
-   Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup
-   Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes
gst-plugins-base
-   alsa: Avoid infinite loop in DSD rate detection
-   gl: Implement basetransform meta transform function
-   glshader: free shader on stop
-   glupload: Only add texture-target field to GL caps
-   gstaudioutilsprivate: Fix gcc 15 compiler error with function pointer
-   mikey: Avoid infinite loop while parsing MIKEY payload with unhandled payload types
-   properties: add G_PARAM_STATIC_STRINGS where missing
-   riff-media: fix MS and DVI ADPCM av_bps calculations
-   subtitleoverlay: Remove 0.10 hardware caps handling
-   subtitleoverlay: Missing support for DMABuf(?)
-   tests: opus: Update channel support and add to meson
-   textoverlay: fix shading for RGBx / RGBA pixel format variants
-   textoverlay background is wrong while cropping
-   uridecodebin3: Don’t hold play items lock while releasing pads
-   uridecodebin3: deadlock on PLAY_ITEMS_LOCK
-   Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes
-   Fix Qt detection in various places
gst-plugins-good
-   adaptivedemux2: Fixes for collection handling
-   adaptivedemux2: Fix several races
-   dash: mpdclient: Don’t pass terminating NUL to adapter
-   gl: Implement basetransform meta transform function
-   imagefreeze: Set seqnum from segment too
-   interleave: Don’t hold object lock while querying caps downstream
-   matroskamux: Write stream headers before finishing file, so that a correct file with headers is written if we finish without
    any data
-   meson: Add build_rpath for qt6 plugin on macOS
-   meson: Fix qt detection in various places
-   properties: add G_PARAM_STATIC_STRINGS where missing
-   qtdemux: Check length of JPEG2000 colr box before parsing it
-   qtdemux: Parse chan box and improve raw audio channel layout handling
-   qtdemux: Improve track parsing
-   qtdemux: Use byte reader to parse mvhd box
-   qtdemux: cmpd box is only mandatory for uncompressed video with uncC version 0
-   rtph264pay: Reject stream-format=avc without codec_data
-   rtputils: Add debug category
-   v4l2: pool: Send drop frame signal after dqbuf success
-   v4l2: pool: fix assert when mapping video frame with DMA_DRM caps
-   v4l2videoenc: report error only when buffer pool parameters are invalid
-   wavparse: Ignore EOS when parsing the headers
-   wavparse: Regression leading to unplaybable wav files that were working before
-   Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup
-   Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes
-   Fixes for big endian
-   Switch to GST_AUDIO_NE()
-   Valgrind fixes
gst-plugins-bad
-   alphacombine: Fix seeking after EOS
-   cuda: Fix runtime PTX compile, fix example code build with old CUDA SDK
-   curl: Fix build with MSVC
-   curl: small fixups p3
-   d3d12: Fix gstreamer-full subproject build with gcc
-   d3d12: Generate gir file
-   d3d12decoder: Workaround for NVIDIA crash on resolution change
-   d3d12memory: Allow set_fence() only against writable memory
-   d3d12memory: Make D3D12 map flags inspectable
-   d3d12screencapturesrc: Fix desktop handle leak
-   dash: mpdclient: Don’t pass terminating NUL to adapter
-   dvbsuboverlay: Actually make use of subtitle running time instead of using PTS
-   dvbsuboverlay: No subtitles after seek
-   h264parse: Never output stream-format=avc/avc3 caps without codec_data
-   lcevc: Use portable printf formatting macros
-   midiparse: Consider tempo changes when calculating duration
-   nvencoder: Fix GstVideoCodecFrame leak on non-flow-ok return
-   play: Improve stream selection
-   properties: add G_PARAM_STATIC_STRINGS where missing
-   rtpsender: fix ‘priority’ GValue get/set
-   va: Fix H264 profile decision logic
-   vulkan/wayland: Init debug category before usage
-   Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup
-   Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes
-   Fixes for big endian
-   Fix Qt detection in various places
-   Switch to GST_AUDIO_NE()
-   Valgrind fixes
gst-plugins-ugly
-   No changes
GStreamer Rust plugins
-   awstranslate: improve control over accumulator behavior
-   awstranslate: output buffer lists
-   cea608tott: make test text less shocking by having more cues as context
-   dav1ddec: Directly decode into downstream allocated buffers if possible
-   deny: Allow webpki-root-certs license
-   fmp4mux: Add support for AC-3 / EAC-3
-   fmp4mux: Use earliest PTS for the base media decode time (tfdt)
-   fmp4mux: Fix handling of negative DTS in composition time offset
-   fmp4mux: Write lmsg as compatible brand into the last fragment
-   mp4mux: add extra brands
-   mp4: avoid dumping test output into build directory
-   mp4: migrate to mp4-atom to check muxing
-   mp4: test the trak structure
-   gtk4: Update and adapt to texture builder API changes
-   gtk4: Initial colorimetry support
-   gtk4: Update default GTK4 target version to 4.10
-   rtp: Update to bitstream-io 4.0
-   skia: Implement a video compositor using skia
-   webrtc: addressing a few deadlocks
-   webrtc: Support for producer sessions targeted at a given consumer
-   webrtc: add new JanusVR source element
-   webrtc: janus: clean up and refactoring
-   webrtcsink: Use seq number instead of Uuid for discovery
-   webrtc: Make older peers less likely to crash when webrtcsrc is used
-   Fix or silence various new clippy warnings
-   Update Cargo.lock to fix duplicated target-lexicon
gst-libav
-   Valgrind fixes
-   libav: Only allocate extradata while decoding
gst-rtsp-server
-   properties: add G_PARAM_STATIC_STRINGS where missing
-   properties: ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during
    cleanup
-   tests: Valgrind fixes
gstreamer-vaapi
-   Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup
gstreamer-sharp
-   No changes
gst-python
This release includes important fixes for the GStreamer Python bindings.
Since pygobject 3.13 around 10 years ago, it wasn’t possible anymore to modify GStreamer miniobjects, e.g. modify caps or set
buffer timestamps, as an implicit copy of the original would always be made. This should finally work again now.
-   Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes
-   python: Add overrides to be able to handle writability of MiniObjects
-   python: Convert buffer metadata API to use @property decorators
-   REGRESSION: pygobject 3.13 now copies the GstStructure when getting them from a GstCaps, making it impossible to properly
    modify structures from caps in place
gst-editing-services
-   Fix frame position for sources with par < 1
-   Fix video position for sources with pixel-aspect-ratio > 1
-   Valgrind fixes
-   properties: add G_PARAM_STATIC_STRINGS where missing
-   Switch to GST_AUDIO_NE() to make things work properly on Big Endian systems
gst-devtools, gst-validate + gst-integration-testsuites
-   Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes
-   validate: baseclasses: Reset Test timeouts between iterations
-   validate: scenario: Fix race condition when ignoring EOS
gst-examples
-   Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes
-   webrtc examples: Fix running against self-signed certs
-   webrtc/signalling: fix compatibility with python 3.13
gstreamer-docs
-   No changes
Development build environment
-   Various wrap updates
-   Add qt-method meson options to fix Qt detection in various places
-   pre-commit: Workaround broken shebang on Windows
Cerbero build tool and packaging changes in 1.26.2
-   directx-headers: Fix g-ir-scanner expecting MSVC naming convention for gst-plugins-bad introspection
-   m4: update recipe to fix hang in configure
-   pango: Fix introspection missing since 1.56.2 update
Contributors to 1.26.2
Adrian Perez de Castro, Alexander Slobodeniuk, Alicia Boya García, Andoni Morales Alastruey, Biswapriyo Nath, Brad Hards, Branko
Subasic, Christoph Reiter, Daniel Morin, Doug Nazar, Devon Sookhoo, Eva Pace, Guillaume Desmottes, Hou Qi, Jakub Adam, Jan
Schmidt, Jochen Henneberg, Jordan Petridis, L. E. Segovia, Mathieu Duponchelle, Matthew Waters, Nicolas Dufresne, Nirbheek
Chauhan, Olivier Crête, Pablo García, Piotr Brzeziński, Robert Mader, Sebastian Dröge, Seungha Yang, Thibault Saunier,
Tim-Philipp Müller, Vasiliy Doylov, Wim Taymans, Xavier Claessens, Zhao, Gang,
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
List of merge requests and issues fixed in 1.26.2
-   List of Merge Requests applied in 1.26.2
-   List of Issues fixed in 1.26.2
1.26.3
The third 1.26 bug-fix release (1.26.3) was released on 26 June 2025.
This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x.
Highlighted bugfixes in 1.26.3
-   Security fix for the H.266 video parser
-   Fix regression for WAV files with acid chunks
-   Fix high memory consumption caused by a text handling regression in uridecodebin3 and playbin3
-   Fix panic on late GOP in fragmented MP4 muxer
-   Closed caption conversion, rendering and muxing improvements
-   Decklink video sink preroll frame rendering and clock drift handling fixes
-   MPEG-TS demuxing and muxing fixes
-   MP4 muxer fixes for creating very large files with faststart support
-   New thread-sharing 1:N inter source and sink elements, and a ts-rtpdtmfsrc
-   New speech synthesis element around ElevenLabs API
-   RTP H.265 depayloader fixes and improvements, as well as TWCC and GCC congestion control fixes
-   Seeking improvements in DASH client for streams with gaps
-   WebRTC sink and source fixes and enhancements, including to LiveKit and WHIP signallers
-   The macOS osxvideosink now posts navigation messages
-   QtQML6GL video sink input event handling improvements
-   Overhaul detection of hardware-accelerated video codecs on Android
-   Video4Linux capture source fixes and support for BT.2100 PQ and 1:4:5:3 colorimetry
-   Vulkan buffer upload and memory handling regression fixes
-   gst-python: fix various regressions introduced in 1.26.2
-   cerbero: fix text relocation issues on 32-bit Android and fix broken VisualStudio VC templates
-   packages: ship pbtypes plugin and update openssl to 3.5.0 LTS
-   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
gstreamer
-   aggregator: Do not set event seqnum to INVALID
-   baseparse: test: Fix race on test start
-   pad: Only remove TAG events on STREAM_START if the stream-id actually changes
-   utils: Mark times array as static to avoid symbol conflict with the POSIX function
-   vecdeque: Use correct index type gst_vec_deque_drop_struct()
gst-plugins-base
-   GstAudioAggregator: fix structure unref in peek_next_sample()
-   audioconvert: Fix setting mix-matrix when input caps changes
-   encodebasebin: Duplicate encoding profile in property setter
-   gl: simplify private gst_gl_gst_meta_api_type_tags_contain_only()
-   osxvideosink: Use gst_pad_push_event() and post navigation messages
-   playsink: Fix race condition in stream synchronizer pad cleanup during state changes
-   python: Fix pulling events from appsink
-   streamsynchronizer: Consider streams having received stream-start as waiting
-   urisourcebin: Text tracks are no longer set as sparse stream in urisourcebin’s multiqueue
gst-plugins-good
-   aacparse: Fix counting audio channels in program_config_element
-   adaptivedemux2: free cancellable when freeing transfer task
-   dashdemux2: Fix seeking in a stream with gaps
-   decodebin wavparse cannot pull header
-   imagefreeze: fix not negotiate log when stop
-   osxvideosink: Use gst_pad_push_event() and post navigation messages
-   qml6glsink: Allow configuring if the item will consume input events
-   qtmux: Update chunk offsets when converting stco to co64 with faststart
-   splitmuxsink: Only send closed message once per open fragment
-   rtph265depay: CRA_NUT can also start an (open) GOP
-   rtph265depay: fix codec_data generation
-   rtspsrc: Don’t emit error during close if server is EOF
-   twcc: Fix reference timestamp wrapping (again)
-   v4l2: Fix possible internal pool leak
-   v4l2object: Add support for colorimetry bt2100-pq and 1:4:5:3
-   wavparse: Don’t error out always when parsing acid chunks
gst-plugins-bad
-   amc: Overhaul hw-accelerated video codecs detection
-   bayer2rgb: Fix RGB stride calculation
-   d3d12compositor: Fix critical warnings
-   dashsink: Fix failing test
-   decklink: calculate internal using values closer to the current clock times
-   decklinkvideosink: show preroll frame correctly
-   decklink: clock synchronization after pause
-   h266parser: Fix overflow when parsing subpic_level_info
-   lcevcdec: Check for errors after receiving all enhanced and base pictures
-   meson: fix building -bad tests with disabled soundtouch
-   mpegts: handle MPEG2-TS with KLV metadata safely by preventing out of bounds
-   mpegtsmux: Corrections around Teletext handling
-   srtsink: Fix header buffer filtering
-   transcoder: Fix uritranscodebin reference handling
-   tsdemux: Allow access unit parsing failures
-   tsdemux: Send new-segment before GAP
-   vulkanupload: fix regression for uploading VulkanBuffer
-   vulkanupload: fix regression when uploading to single memory multiplaned memory images.
-   webrtcbin: disconnect signal ICE handlers on dispose
-   {d3d12,d3d11}compositor: Fix negative position handling
-   {nv,d3d12,d3d11}decoder: Use interlace info in input caps
gst-plugins-ugly
-   No changes
GStreamer Rust plugins
-   Add new speech synthesis element around ElevenLabs API
-   cea708mux: fix another WouldOverflow case
-   cea708mux: support configuring a limit to how much data will be pending
-   cea708overlay: also reset the output size on flush stop
-   gcc: handle out of order packets
-   fmp4mux: Fix panic on late GOP
-   livekit: expose a connection state property
-   mp4mux: add taic box
-   mp4mux: test the trak structure
-   pcap_writer: Make target-property and pad-path properties writable again
-   skia: Don’t build skia plugin by default for now
-   threadshare: cleanups & usability improvements
-   threadshare: sync runtime with latest async-io
-   threadshare: fix kqueue reactor
-   threadshare: Update to getifaddrs 0.2
-   threadshare: add new thread-sharing inter elements
-   threadshare: add a ts-rtpdtmfsrc element
-   transcriberbin: fix naming of subtitle pads
-   tttocea708: don’t panic if a new service would overflow
-   webrtc: android: Update Gradle and migrate to FindGStreamerMobile
-   webrtc: add new examples for stream selection over data channel
-   webrtcsrc: the webrtcbin get-transceiver index is not mlineindex
-   webrtcsrc: send CustomUpstream events over control channel ..
-   webrtcsink: Don’t require encoder element for pre-encoded streams
-   webrtcsink: Don’t reject caps events if the codec_data changes
-   whip: server: pick session-id from the endpoint if specified
-   cargo: add config file to force CARGO_NET_GIT_FETCH_WITH_CLI=true
-   Cargo.lock, deny: Update dependencies and log duplicated targo-lexicon
-   Update windows-sys dependency from “>=0.52, <=0.59” to “>=0.52, <=0.60”
-   deny: Add override for windows-sys 0.59
-   deny: Update lints
-   cargo_wrapper: Fix backslashes being parsed as escape codes on Windows
-   Fixes for Clock: non-optional return types
-   Rename relationmeta plugin to analytics
gst-libav
-   No changes
gst-rtsp-server
-   rtsp-server: tests: Fix a few memory leaks
gstreamer-vaapi
-   No changes
gstreamer-sharp
-   No changes
gst-python
This release includes some important regression fixes for the GStreamer Python bindings for regressions introduced in 1.26.2.
-   gst-python/tests: don’t depend on webrtc and rtsp-server
-   python: Fix pulling events from appsink and other fixes
gst-editing-services
-   No changes
gst-devtools, gst-validate + gst-integration-testsuites
-   validate: More memory leaks
-   validate: Valgrind fixes
gst-examples
-   No changes
gstreamer-docs
-   No changes
Development build environment
-   gst-env: Emit a warning about DYLD_LIBRARY_PATH on macOS
Cerbero build tool and packaging changes in 1.26.3
-   WiX: fix broken VC templates
-   android: Don’t ignore text relocation errors on 32-bit, and error out if any are found
-   build: source: handle existing .cargo/config.toml as in plugins-rs
-   ci: Detect text relocations when building android examples
-   gst-plugins-base: Ship pbtypes
-   gst-plugins-base: Fix category of pbtypes
-   gst-plugins-rs: Update for relationmeta -> analytics plugin rename
-   libsoup.recipe: XML-RPC support was removed before the 3.0 release
-   openssl: Update to 3.5.0 LTS
Contributors to 1.26.3
Albert Sjolund, Aleix Pol, Ben Butterworth, Brad Hards, César Alejandro Torrealba Vázquez, Changyong Ahn, Doug Nazar, Edward
Hervey, Elliot Chen, Enrique Ocaña González, François Laignel, Glyn Davies, He Junyan, Jakub Adam, James Cowgill, Jan Alexander
Steffens (heftig), Jan Schmidt, Jochen Henneberg, Johan Sternerup, Julian Bouzas, L. E. Segovia, Loïc Le Page, Mathieu
Duponchelle, Matthew Waters, Nicolas Dufresne, Nirbheek Chauhan, Philippe Normand, Pratik Pachange, Qian Hu (胡骞), Sebastian
Dröge, Seungha Yang, Taruntej Kanakamalla, Théo Maillart, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal,
Xavier Claessens,
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
List of merge requests and issues fixed in 1.26.3
-   List of Merge Requests applied in 1.26.3
-   List of Issues fixed in 1.26.3
1.26.4
The fourth 1.26 bug-fix release (1.26.4) was released on 16 July 2025.
This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x.
Highlighted bugfixes in 1.26.4
-   adaptivedemux2: Fixed reverse playback
-   d3d12screencapture: Add support for monitor add/remove in device provider
-   rtmp2src: various fixes to make it play back AWS medialive streams
-   rtph265pay: add profile-id, tier-flag, and level-id to output rtp caps
-   vp9parse: Fix handling of spatial SVC decoding
-   vtenc: Fix negotiation failure with profile=main-422-10
-   gtk4paintablesink: Add YCbCr memory texture formats and other improvements
-   livekit: add room-timeout
-   mp4mux: add TAI timestamp muxing support
-   rtpbin2: fix various race conditions, plus other bug fixes and performance improvements
-   threadshare: add a ts-rtpdtmfsrc element, implement run-time input switching in ts-intersrc
-   webrtcsink: fix deadlock on error setting remote description and other fixes
-   cerbero: WiX installer: fix missing props files in the MSI packages
-   smaller macOS/iOS package sizes
-   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
gstreamer
-   tracers: Fix deadlock in latency tracer
-   Fix various valgrind/test errors when GST_DEBUG is enabled
-   More valgrind and test fixes
-   Various ASAN fixes
gst-plugins-base
-   Revert “streamsynchronizer: Consider streams having received stream-start as waiting”
-   alsa: free conf cache under valgrind
-   gst-device-monitor: Fix caps filter splitting
-   Fix various valgrind/test errors when GST_DEBUG is enabled
-   More valgrind and test fixes
-   Various ASAN fixes
gst-plugins-good
-   adaptivedemux2: Fixed reverse playback
-   matroskademux: Send tags after seeking
-   qtdemux: Fix incorrect FourCC used when iterating over sbgp atoms
-   qtdemux: Incorrect sibling type used in sbgp iteration loop
-   rtph265pay: add profile-id, tier-flag, and level-id to output rtp caps
-   rtpjpeg: fix copying of quant data if it spans memory segments
-   soup: Disable range requests when talking to Python’s http.server
-   v4l2videodec: need replace acquired_caps on set_format success
-   Fix various valgrind/test errors when GST_DEBUG is enabled
-   More valgrind and test fixes
-   Various ASAN fixes
gst-plugins-bad
-   avtp: crf: Setup socket during state change to ensure we handle failure
-   d3d12screencapture: Add support for monitor add/remove in device provider
-   mpegtsmux: fix double free caused by shared PMT descriptor
-   openh264: Ensure src_pic is initialized before use
-   rtmp2src: various fixes to make it play back AWS medialive streams
-   ssdobjectdetector: Use correct tensor data index for the scores
-   v4l2codecs: h265dec: Fix zero-copy of cropped window located at position 0,0
-   vp9parse: Fix handling of spatial SVC decoding
-   vp9parse: Revert “Always default to super-frame”
-   vtenc: Fix negotiation failure with profile=main-422-10
-   vulkan: Fix drawing too many triangles in fullscreenquad
-   vulkanfullscreenquad: add locks for synchronisation
-   Fix various valgrind/test errors when GST_DEBUG is enabled
-   More valgrind and test fixes
-   Various ASAN fixes
gst-plugins-ugly
-   No changes
GStreamer Rust plugins
-   aws: s3hlssink: Write to S3 on OutputStream flush
-   cea708mux: fix clipping function
-   dav1ddec: Use video decoder base class latency reporting API
-   elevenlabssynthesizer: fix running time checks
-   gopbuffer: Push GOPs in order of time on EOS
-   gtk4: Improve color-state fallbacks for unknown values
-   gtk4: Add YCbCr memory texture formats
-   gtk4: Promote set_caps debug log to info
-   hlssink3: Fix a comment typo
-   hlssink3: Use closed fragment location in playlist generation
-   livekit: add room-timeout
-   mccparse: Convert “U” to the correct byte representation
-   mp4mux: add TAI timestamp element and muxing
-   threadshare: add a ts-rtpdtmfsrc element
-   rtp: Update to rtcp-types 0.2
-   rtpsend: Don’t configure a zero min RTCP interval for senders
-   rtpbin2: Fix handling of unknown PTs and don’t warn about incomplete RTP caps to allow for bundling
-   rtpbin2: Improve rtcp-mux support
-   rtpbin2: fix race condition on serialized Queries
-   rtpbin2: sync: fix race condition
-   rtprecv optimize src pad scheduling
-   rtprecv: fix SSRC collision event sent in wrong direction
-   skia: Add harfbuzz, freetype and fontconfig as dependencies in the meson build
-   tttocea{6,7}08: Disallow pango markup from input caps
-   ts-intersrc: handle dynamic inter-ctx changes
-   threadshare: src elements: don’t pause the task in downward state transitions
-   webrtc: sink: avoid recursive locking of the session
-   webrtcsink: fix deadlock on error setting remote description
-   webrtcsink: add mitigation modes parameter and signal
-   webrtc: fix Safari addIceCandidate crash
-   webrtc-api: Set default bundle policy to max-bundle
-   WHIP client: emit shutdown after DELETE request
-   Fix various new clippy 1.88 warnings
-   Update dependencies
gst-libav
-   Various ASAN fixes
gst-rtsp-server
-   No changes
gstreamer-vaapi
-   No changes
gstreamer-sharp
-   No changes
gst-python
-   No changes
gst-editing-services
-   Fix various valgrind/test errors when GST_DEBUG is enabled
gst-devtools, gst-validate + gst-integration-testsuites
-   Update various Rust dependencies
gst-examples
-   Update various Rust dependencies
gstreamer-docs
-   No changes
Development build environment
-   No changes
Cerbero build tool and packaging changes in 1.26.4
-   WiX: fix missing props files in the MSI
-   cmake: Do not rely on the CERBERO_PREFIX environment variable
-   osx: Update pkgbuild compression algorithms resulting in much smaller packages
Contributors to 1.26.4
Adrian Perez de Castro, Alicia Boya García, Arun Raghavan, Brad Hards, David Maseda Neira, David Monge, Doug Nazar, Enock Gomes
Neto, François Laignel, Haihua Hu, Hanna Weiß, Jerome Colle, Jochen Henneberg, L. E. Segovia, Mathieu Duponchelle, Matthew
Waters, Nicolas Dufresne, Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Robert Ayrapetyan, Robert Mader, Sebastian
Dröge, Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, Tim-Philipp Müller, Vivia Nikolaidou,
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
List of merge requests and issues fixed in 1.26.4
-   List of Merge Requests applied in 1.26.4
-   List of Issues fixed in 1.26.4
1.26.5
The fifth 1.26 bug-fix release (1.26.5) was released on 7 August 2025.
This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x.
Highlighted bugfixes in 1.26.5
-   audioconvert: Fix caps negotiation regression when using a mix matrix
-   aws: Add support for brevity in awstranslate and add option to partition speakers in the transcription output of
    awstranscriber2
-   speechmatics speech-to-text: Expose mask-profanities property
-   cea708mux: Add support for discarding select services on each input
-   cea608overlay, cea708overlay: Accept GPU memory buffers if downstream supports the overlay composition meta
-   d3d12screencapture source element and device provider fixes
-   decodebin3: Don’t error on an incoming ONVIF metadata stream
-   uridecodebin3: Fix potential crash when adding URIs to messages, e.g. if no decoder is available
-   v4l2: Fix memory leak for dynamic resolution change
-   VA encoder fixes
-   videorate, imagefreeze: Add support for JPEG XS
-   Vulkan integration fixes
-   wasapi2 audio device monitor improvements
-   webrtc: Add WHEP client signaller and add whepclientsrc element on top of webrtcsrc using that
-   threadshare: Many improvements and fixes to the generic threadshare and RTP threadshare elements
-   rtpbin2 improvements and fixes
-   gst-device-monitor-1.0 command line tool improvements
-   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
gstreamer
-   aggregator: add sub_latency_min to pad queue size
-   build: Disable C5287 warning on MSVC
gst-plugins-base
-   audioconvert: Fix regression when using a mix matrix
-   audioconvert: mix-matrix causes caps negotiation failure
-   decodebin3: Don’t error on an incoming ONVIF metadata stream
-   gloverlay: Recompute geometry when caps change, and load texture after stopping and starting again
-   uridecodebin3: Add missing locking and NULL checks when adding URIs to messages
-   uridecodebin3: segfault in update_message_with_uri() if no decoder available
-   videorate, imagefreeze: add support for JPEG XS
-   gst-device-monitor-1.0: Add shell quoting for launch lines
-   gst-device-monitor-1.0: Fix criticals, and also accept utf8 in launch lines
-   gst-device-monitor-1.0: Use gst_print instead of g_print
gst-plugins-good
-   v4l2: fix memory leak for dynamic resolution change
-   videorate, imagefreeze: add support for JPEG XS
gst-plugins-bad
-   av1parse: Don’t error out on “currently” undefined seq-level indices
-   av1parse: fails to parse AV1 bitstreams generated by FFmpeg using the av1_nvenc hardware encoder
-   d3d12screencapturedevice: Avoid false device removal on monitor reconfiguration
-   d3d12screencapturesrc: Fix OS handle leaks/random crash in WGC mode
-   meson: d3d12: Add support for MinGW DirectXMath package
-   va: Re-negotiate after FLUSH
-   vaXXXenc: calculate latency with corrected framerate
-   vaXXXenc: fix potential race condition
-   vkphysicaldevice: enable sampler ycbcr conversion, synchronization2 and timeline semaphore features
-   vulkan: ycbcr conversion extension got promoted in 1.1.0
-   wasapi2: Port to IMMDevice based device selection
gst-plugins-ugly
-   No changes
GStreamer Rust plugins
-   Note: This list has been updated, since it originally accidentally included some Merge Requests that only landed in the main
    branch, not in the 0.14 branch that ships with our GStreamer 1.26.5 packages.
-   awstranscriber2, awstranslate: Handle multiple stream-start event
-   awstranslate: expose property for turning brevity on)
-   awstranscriber2: add property for setting show_speaker_labels)
-   cea708mux: expose “discarded-services” property on sink pads)
-   ceaX08overlay: support ANY caps features, allowing e.g. memory:GLMemory if downstream supports the overlay composition meta
-   hlsmultivariantsink: Fix master playlist version
-   rtprecv: Drop state lock before chaining RTCP packets from the RTP chain function
-   Add rtpbin2 examples
-   rtpmp4apay2: fix payload size prefix
-   rtp: threadshare: fix some property ranges
-   mpegtslivesrc: Remove leftover debug message
-   speechmatics: expose mask-profanities property)
-   ts-audiotestsrc fixes
-   threadshare: fix flush for ts-queue ts-proxy & ts-intersrc
-   threadshare: fix regression in ts-proxysrc
-   threadshare: improvements to some elements
-   threadshare: udp: avoid getifaddrs in android)
-   threadshare: Enable windows Win32_Networking feature
-   threadshare: queue & proxy: fix race condition stopping
-   threadshare: Also enable windows Win32_Networking_WinSock feature
-   tracers: pipeline-snapshot: reduce WebSocket connection log level
-   tracers: queue-levels: add support for threadshare DataQueue related elements
-   tracers: Update to etherparse 0.19
-   transcriberbin: Fix handling of upstream latency query
-   webrtc: android example: fix media handling initialization sequence)
-   webrtcsink: Move videorate before videoconvert and videoscale to avoid processing frames that would be dropped
-   whep: add WHEP client signaller
-   Fix various new clippy 1.89 warnings
gst-libav
-   No changes
gst-rtsp-server
-   No changes
gstreamer-vaapi
-   No changes
gstreamer-sharp
-   No changes
gst-python
-   No changes
gst-editing-services
-   No changes
gst-devtools, gst-validate + gst-integration-testsuites
-   No changes
gst-examples
-   No changes
gstreamer-docs
-   No changes
Development build environment
-   gst-env: only-environment: only dump added and updated vars
-   gst-full: Fix detection of duplicate plugin entries
-   ci: Fix gst-full breakage due to a typo
-   build: Disable C5287 warning on MSVC
Cerbero build tool and packaging changes in 1.26.5
-   a52dec: update to 0.8.0 and port to Meson
-   build: Fix passing multiple steps
-   expat: update to 2.7.1
-   tar: Refactor in preparation for xcframework support
Contributors to 1.26.5
François Laignel, Jan Schmidt, Jaslo Ziska, L. E. Segovia, Marc-André Lureau, Mathieu Duponchelle, Matthew Waters, Nirbheek
Chauhan, Philippe Normand, Qian Hu (胡骞), Sanchayan Maity, Sebastian Dröge, Seungha Yang, Thibault Saunier, Tim-Philipp Müller,
Víctor Manuel Jáquez Leal, Xavier Claessens,
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
List of merge requests and issues fixed in 1.26.5
-   List of Merge Requests applied in 1.26.5
-   List of Issues fixed in 1.26.5
1.26.6
The sixth 1.26 bug-fix release (1.26.6) was released on 14 September 2025.
This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x.
Highlighted bugfixes in 1.26.6
-   analytics GstTensorMeta handling changes (see note below)
-   closed caption combiner and transcriberbin stability fixes
-   decklinkvideosrc: fix unrecoverable state after failing to start streaming because device is busy
-   decodebin3 tag handling improvements
-   fallbacksrc: Fix sources only being restarted once, as well as some deadlocks and race conditions on shutdown
-   gtk4paintablesink: Try importing dmabufs withouth DMA_DRM caps
-   hlsdemux2: Fix parsing of byterange and init map directives
-   rtpmp4gdepay2: allow only constantduration with neither constantsize nor sizelength set
-   spotifysrc: update to librespot 0.7 to make work after recent Spotify changes
-   threadshare: new blocking adapter element for use in front of block elements such as sinks that sync to the clock
-   threadshare: various other threadshare element fixes and improvements
-   v4l2: Add support for WVC1 and WMV3
-   videorate: possible performance improvements when operating in drop-only mode
-   GstBaseParse fixes
-   Vulkan video decoder fixes
-   Fix gst-device-monitor-1.0 tool device-path regression on Windows
-   Monorepo development environment builds fewer plugins using subprojects by default, those require explicit enablement now
-   Python bindings: Handle buffer PTS, DTS, duration, offset, and offset-end as unsigned long long (regression fix)
-   Cerbero: Reduce recipe parallelism in various cases and dump cerbero and recipe versions into datadir during packaging
-   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
Possibly breaking behavioural changes
-   Previously it was guaranteed that there is only ever up to one GstTensorMeta per buffer. This is no longer true and code
    working with GstTensorMeta must be able to handle multiple GstTensorMeta now (after this Merge Request).
gstreamer
-   baseparse: Try harder to fixate caps based on upstream in default negotiation
-   gst-discoverer reports 1x1 dimensions for “valid” MP4 files
-   baseparse: don’t clear most sticky events after a FLUSH_STOP event
-   gstreamer: Disable miniobject inline functions for gobject-introspection for non-subprojects too
-   gstreamer: Make sure to zero-initialize the GValue before G_VALUE_COLLECT_INIT
-   ptp: Fix a new Rust 1.89 compiler warning on Windows
-   ptp: Fix new compiler warning with Rust 1.89
-   Segmentation fault when compiled with “-ftrivial-auto-var-init=pattern”. Use of unitialized GValue.
gst-plugins-base
-   decodebin3: Update stream tags
-   rtpbasedepayload: Avoid potential use-after free
-   rtspconnection: Add get_url and get_ip return value annotation
-   gst_rtsp_connection_get_url return value transfer annotation missing
-   videometa: Fix valgrind warning when deserializing video meta
-   videorate: don’t hold the reference to the buffer in drop-only mode
-   gst-device-monitor-1.0: Fix device-path regression on Windows
-   gst-device-monitor-1.0: Add quoting for powershell and cmd
-   Monorepo: opengl, vorbis, plugins require explicit enablement now for a build using the Meson subproject fallback
gst-plugins-good
-   adaptivedemux2: fix crash due to log
-   adaptivedemux2: Crash in logging when “Dropping EOS before next period”
-   hlsdemux2: Fix parsing of byterange and init map directives
-   mpg123audiodec: Always break the decoding loop and relay downstream flow errors upstream
-   v4l2: Add support for WVC1 and WMV3
-   Monorepo: dv plugin requires explicit enablement now for a build using the Meson subproject fallback
gst-plugins-bad
-   analytics: always add GstTensorMeta
-   cccombiner: Crash fixes
-   curlsmtpsink: adapt to date formatting issue
-   decklinkvideosrc: fix decklinkvideosrc becomes unrecoverable if it fails to start streaming
-   decklinkvideosrc gets into unrecoverable state if device is busy
-   dwrite: Fix D3D12 critical warning
-   hlsdemux: Fix parsing of byterange and init map directives
-   mpegtsmux: Caps event fails with stream type change error
-   vulkanh24xdec: couple of fixes
-   vulkanh26xdec: fix discont state handling
-   waylandsink: add some error handler for event dispatch
-   zbar: tests: Handle symbol-bytes as not null-terminated
-   Monorepo: avtp, codec2json, iqa, microdns, openjpeg, qroverlay, soundtouch, tinyalsa plugins require explicit enablement now
    for a build using the Meson subproject fallback
gst-plugins-ugly
-   No changes
GStreamer Rust plugins
-   analyticscombiner: Use NULL caps instead of EMPTY caps in the array for streams with no caps
-   aws: Ensure task stopping on paused-to-ready state change
-   fallbacksrc: Don’t panic during retries if the element was shut down in parallel
-   fallbacksrc: Don’t restart source if the element is just being shut down
-   fallbacksrc: Fix some custom source deadlocks
-   fallbacksrc: Fix sources only being restarted once
-   gtk4: Try importing dmabufs withouth DMA_DRM caps
-   inter: Give the appsrc/appsink a name that has the parent element as prefix
-   mp4: Skip tests using x264enc if it does not exist
-   rtpgccbwe: avoid clamp() panic when min_bitrate > max_bitrate
-   rtpmp4gdepay2: allow only constantduration with neither constantsize nor sizelength set
-   rtprecv: fix race condition on first buffer
-   speechmatics: Specify rustls as an explicit dependency
-   spotify: update to librespot 0.7
-   threadshare: add a blocking adapter element
-   threadshare: always use block_on_or_add_subtask
-   threadshare: audiotestsrc: fix setting samples-per-buffer…
-   threadshare: blocking_adapter: fix Since marker in docs
-   threadshare: fix resources not available when preparing asynchronously
-   threadshare: fix ts-inter test one_to_one_up_first
-   threadshare: have Task log its obj
-   threadshare: intersink: return from blocking tasks when stopping
-   threadshare: inter: update doc example
-   threadshare: runtime/pad: lower log level pushing Buffer to flushing pad
-   threadshare: separate blocking & throttling schedulers
-   threadshare: update examples
-   threadshare: Update to getifaddrs 0.5
-   threadshare: Fix macOS build post getifaddrs 0.5 update
-   threadshare: Bump up getiffaddrs to 0.1.5 and revert “udp: avoid getifaddrs in android”
-   threadshare: Reapply “udp: avoid getifaddrs in android”
-   transcriberbin: Fix some deadlocks
-   Update dependencies
-   webrtc: Migrate to warp 0.4 and switch to tokio-rustls
-   webrtc/signalling: Fix setting of host address
-   ci: add script to check readme against plugins list
-   Fix various new clippy 1.89 warnings
-   Don’t suggest running cargo cinstall after cargo cbuild
-   meson: Isolate built plugins from cargo target directory
gst-libav
-   No changes
gst-rtsp-server
-   rtsp-server: tests: Switch to fixtures to ensure pool shutdown
gstreamer-vaapi
-   No changes
gstreamer-sharp
-   No changes
gst-python
-   python: Handle buffer PTS/DTS/duration/offset/offset-end as unsigned long long
gst-editing-services
-   gstreamer: Make sure to zero-initialize the GValue before G_VALUE_COLLECT_INIT
-   Fix various memory leaks
gst-devtools, gst-validate + gst-integration-testsuites
-   validate: http-actions: Replace GUri with GstURI for GLib 2.64 compatibility
-   Fix memory leak and use of incorrect context
gst-examples
-   No changes
gstreamer-docs
-   No changes
Development build environment
-   gobject-introspection: Fix introspection failing on Linux with subproject GLib
-   glib: update to 2.82.5 and backport shebangs patch
-   ci: Work around PowerShell broken argument parsing
-   Disable more plugins on Windows by default by not pulling in fallback subprojects automatically, only if plugins are enabled
    explicitly
-   Fix build on windows due to proxy-libintl not being invoked
-   python: Reapply fixes to enable running Python bindings on Windows
Cerbero build tool and packaging changes in 1.26.6
-   ffmpeg: enable filters needed by avvideocompare
-   cache: Fix detection of build tools prefix when using a cache
-   cerbero/package: fix –tarball –compress-method=none
-   cerbero: Reduce recipe parallelism in various cases
-   ci: remove unpacked apk dir on completion
-   package: Dump cerbero and recipe versions into datadir
Contributors to 1.26.6
Andrey Khamukhin, Daniel Morin, Doug Nazar, François Laignel, Guillaume Desmottes, Hou Qi, Ian Napier, Jan Alexander Steffens
(heftig), Jan Schmidt, Jordan Petridis, L. E. Segovia, Marko Kohtala, Matthew Waters, Monty C, Nirbheek Chauhan, Ola Fornander,
Olivier Crête, Piotr Brzeziński, Qian Hu (胡骞), r4v3n6101, Robert Mader, Ruben Gonzalez, Sanchayan Maity, Sebastian Dröge,
Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, Vivian LEE, Vivienne
Watermeier, Xavier Claessens,
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
List of merge requests and issues fixed in 1.26.6
-   List of Merge Requests applied in 1.26.6
-   List of Issues fixed in 1.26.6
1.26.7
The seventh 1.26 bug-fix release (1.26.7) was released on 14 October 2025.
This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x.
Highlighted bugfixes in 1.26.7
-   cea608overlay: improve handling of non-system memory
-   cuda: Fix runtime kernel compile with CUDA 13.0
-   d3d12: Fix crop meta support in converter and passthrough handling in deinterlacer
-   fallbacksrc: source handling improvements; no-more-pads signal for streams-unaware parents
-   inter: add properties to fine tune the inner elements
-   qtdemux: surround sound channel layout handling fixes and performance improvements for GoPro videos
-   rtp: Add linear audio (L8, L16, L24) RTP payloaders / depayloaders
-   rtspsrc: Send RTSP keepalives in TCP/interleaved modes
-   rtpamrpay2: frame quality indicator flag related fixes
-   rtpbasepay2: reuse last PTS when possible, to work around problems with NVIDIA Jetson AV1 encoder
-   mpegtsmux, tsdemux: Opus audio handling fixes
-   threadshare: latency related improvements and many other fixes
-   matroskamux, tsmux, flvmux, cea608mux: Best pad determination fixes at EOS
-   unixfd: support buffers with a big payload
-   videorate unknown buffer duration assertion failure with variable framerates
-   editing services: Make GESTimeline respect SELECT_ELEMENT_TRACK signal discard decision; memory leak fixes
-   gobject-introspection annotation fixes
-   cerbero: Update meson to 1.9.0 to enable Xcode 26 compatibility
-   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
gstreamer
-   controller: Fix get_all() return type annotation
-   gst-launch: Do not assume error messages have a src element
-   multiqueue: Fix object reference handling in signal callbacks
-   netclientclock: Fix memory leak in error paths
gst-plugins-base
-   discoverer: Mark gst_discoverer_stream_info_list_free() as transfer full
-   qt: Fix building examples on macOS
-   riff: Add channel reorder maps for 3 and 7 channel audio
-   sdp: proper usage of gst_buffer_append
-   videorate: fix assert fail due to invalid buffer duration
-   Fix build error with glib < 2.68
gst-plugins-good
-   matroskamux: Properly check if pads are EOS in find_best_pad
-   qt: Fix building examples on macOS
-   qtdemux: bad performance with GoPro videos containing FDSC metadata tracks
-   qtdemux: fix open/seek perf for GoPro files with SOS track
-   qtdemux: handle unsupported channel layout tags gracefully
-   qtdemux: set channel-mask to 0 for unknown layout tags
-   rtspsrc: Send RTSP keepalives in TCP/interleaved modes
-   v4l2: Add GstV4l2Error handling in gst_v4l2_get_capabilities
-   v4l2: Fix memory leak for DRM caps negotiation
-   v4l2transform: reconfigure v4l2object only if respective caps changed
-   Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT
gst-plugins-bad
-   cuda: Fix runtime kernel compile with CUDA 13.0
-   d3d12convert: Fix crop meta support
-   d3d12deinterlace: Fix passthrough handling
-   gst: Fix a few small leaks
-   matroskamux: Properly check if pads are EOS in find_best_pad
-   tsdemux: Directly forward Opus AUs without opus_control_header
-   tsmux: Write a full Opus channel configuration if no matching Vorbis one is found
-   unixfd: Fix case of buffer with big payload
-   vacompositor: Correct scale-method properties
-   webrtc: nice: Fix a use-after-free and a mem leak
-   Fix all compiler warnings on Fedora
-   Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT
gst-plugins-ugly
-   No changes
GStreamer Rust plugins
-   cea608overlay: Support non-system memory correctly
-   fallbacksrc: Fix custom source reuse case
-   fallbacksrc: Fix sources only being restarted once
-   fallbacksrc: Post no-more-pads signal for streams-unaware parent
-   inter: add properties to fine tune the inner elements
-   onvifmetadatapay: copy metadata from source buffer
-   rtp: Add linear audio (L8, L16, L24) RTP payloaders / depayloaders
-   rtpamrpay2: Actually forward the frame quality indicator
-   rtpamrpay2: Set frame quality indicator flag
-   rtp: basedepay: reuse last PTS, when possible to work around problems with NVIDIA Jetson AV1 encoder
-   rtpsend/recv: fix property type for stats
-   threadshare: audiotestsrc: support more Audio formats
-   threadshare: backpressure: abort pending items on flush start
-   threadshare: fixes & improvements
-   threadshare: latency related improvements and fixes
-   threadshare: runtime task: execute action in downward transition
-   threadshare: udpsink: fix panic recalculating latency from certain executors
-   uriplaylistbin: Ignore all tests for now
-   webrtc: livekit: Drop connection lock after take()
-   Update dependencies
-   Update dependencies
-   ci: use image and GST_RS_MSRV / GST_RS_STABLE variables from gstreamer-rs 0.24 in gst-plugins-rs 0.14 branch
-   Add rust-tls-native-roots feature to the reqwest dep
-   Fix some new clippy 1.90 warnings
-   meson: Fix .pc files installation and simplify build output handling
gst-libav
-   Fix all compiler warnings on Fedora
gst-rtsp-server
-   Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT
gstreamer-vaapi
-   No changes
gstreamer-sharp
-   No changes
gst-python
-   No changes
gst-editing-services
-   ges: timeline: Respect SELECT_ELEMENT_TRACK signal discard decision
-   gst: Fix a few small leaks
gst-devtools, gst-validate + gst-integration-testsuites
-   Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT
gst-examples
-   No changes
gstreamer-docs
-   No changes
Development build environment
-   libsoup.wrap: Apply upstream fix for GModule deadlock
Cerbero build tool and packaging changes in 1.26.7
-   meson: Update to 1.9.0 to enable Xcode 26 compatibility
-   osxrelocator: Add .so to the allowed dylib extensions
-   ci: update macos image to 26-tahoe
-   EndeavourOS support
Contributors to 1.26.7
Andoni Morales Alastruey, Branko Subasic, Vincent Beng Keat Cheah, Doug Nazar, Ekwang Lee, François Laignel, Inbok Kim, Jakub
Adam, Jan Schmidt, Jochen Henneberg, L. E. Segovia, Mark Nauwelaerts, Markus Hofstaetter, Matthew Waters, Nirbheek Chauhan,
Norbert Hańderek, Philippe Normand, Razvan Grigore, Sebastian Dröge, Seungha Yang, Taruntej Kanakamalla, Thibault Saunier,
Tim-Philipp Müller, Xavier Claessens,
… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
List of merge requests and issues fixed in 1.26.7
-   List of Merge Requests applied in 1.26.7
-   List of Issues fixed in 1.26.7
Schedule for 1.28
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
release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.
The schedule for 1.28 is yet to be decided, but we’re aiming for a release towards the end of 2025.
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
release series.
--------------------------------------------------------------------------------------------------------------------------------
These release notes have been prepared by Tim-Philipp Müller with contributions from Arun Raghavan, Daniel Morin, Nirbheek
Chauhan, Olivier Crête, Philippe Normand, Sebastian Dröge, Seungha Yang, Thibault Saunier, and Víctor Manuel Jáquez Leal.
License: CC BY-SA 4.0
 |