File: NEWS

package info (click to toggle)
mpg123 1.33.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,428 kB
  • sloc: ansic: 55,507; asm: 17,309; sh: 4,795; makefile: 156; perl: 153; python: 45
file content (2792 lines) | stat: -rw-r--r-- 127,588 bytes parent folder | download
1
2
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
2785
2786
2787
2788
2789
2790
2791
2792
1.33.3
------
- libmpg123:
-- Fix build with newer toolchain on Android by using __ANDROID__ macro (bug 380).
-- Consolidate and more consistently use .rodata switch in macro.

1.33.2
------
- libmpg123:
-- Do not modify raw ID3v2 data while parsing (bug 379). This used to be fine
   before MPG123_STORE_RAW_ID3 got introduced. Not anymore.

1.33.1
------
- INSTALL updated with hints for Windows, mainly.
- Finally formatted README. Maybe do it in Markdown sometime, as that's
  the fashion.
- build:
-- The ports/cmake only installs manpages for BUILD_PROGRAMS now.
-- The configure gives better hint if pkg-config was missing during generation
   (bug 378).
- mpg123:
-- Replace usage of signal() in terminal code with our sigaction() wrapper
   to fix repeated handling for --sigusr1 and --sigusr2, which got subtly
   broken on Linux + glibc by a feature test macro change in mpg123 1.31.

1.33.0
------
- mpg123
-- Fix printout of filenames at end (convert/limit text encoding).
-- Treat HTTP header encoding as unknown/ASCII and formally convert to UTF-8.
-- Make --continue mode work with --random.
-- Handle possible failure of __wgetmainargs on Windows (bug 375).
- mpg123-id3dump: Fix up command line arg handling for Windows.
- out123
-- Finally give zero exit code when generating sounds, not indicating
   spurious failure.
- build:
-- Use CCASFLAGS for assembler tests, to enable builds that enable instruction
   sets that way (bug 377).
-- PIC for compat libs (convenience libs used during build) only if building
   shared libs (github PR 17 by Wouter Wijsman).
- compat:
-- Map strtok use to strtok_r or strtok_s (MS platforms), if possible.
   users only in control_generic and libout123 so far. Out123 itself uses mytok.
   Shall fix bug 376 (build with MSVC again).
-- Enable build on PSP by merging in the hotfix of opmitting signal code
   (github PR 18 by Wouter Wijsman).
- libout123
-- modules/win32: Align waveOutGetDevCapsA to WAVEOUTCAPSA, in anticipation
   of some UNICODE change.
- libmpg123
-- API version 49 with added mpg123_open_handle64(), mpg123_open64(), and
   mpg123_open_fixed64() that are not subject to largefile renaming. This
   means you can still access internal I/O with MPG123_PORTABLE_API. The
   code has been there before, anyway.
-- With MPG123_PORTABLE_API, mpg123_open_handle() is hidden now (use
   mpg123_open_handle64() instead).
-- more silence on errors (sideband limit message)

1.32.10
------
- scripts/tag_lyrics.py: fix for python3 (thanks to cclauss,
  github PR 16)
- libout123: Use strtok_r() to avoid conflicts multithreaded contexts
  (both sides should avoid plain strtok()! Debian-bug 1089543).
- libmpg123:
-- Un-break DLL builds that need I/O functions defined in libmpg123.c
   (like mpg123_open(), bug 374).
- ports/cmake: More fixup to also produce .pc files with Libs.private.

1.32.9
------
- libmpg123:
-- enable 64 bit offset path for MSVCRT and avoid warnings about
   MS's game about POSIX API with and without underscores (bug 373).
-- Increase the library patchlevel, as was forgotten on previous
   release. Now you can check for distversion >= 1.32.8 or
   mpg123 libversion >= 48 patchlevel 3 to see if you're vulnerable
   to CVE-2024-10573.

1.32.8
------
- libmpg123:
-- Add sections to assembly to support PAC/BTI code
   for aarch64 (-mbranch-protection variants), thanks to Bill Roberts
   (github PR 15).
-- Prevent premature application of header info into decoding structure,
   at worst having triggered out-of-bounds writes of decoded PCM data
   (bug 322, again). The bug got named CVE-2024-10573.
- out123: Show --quiet in --longhelp.

1.32.7
------
- ports/cmake: Work around bug in CMake that does not detect FPU on
  Apple ARM CPUs (github PR 14).
- Fix some laziness (func() to func(void)) for standards conformance.

1.32.6
------
- build: Detect forced 64 bit offsets on a dual-mode system that used
  to default to 32 bits and drop ambiguous suffix-less symbols in that
  case. This avoids subtle ABI breakage (causing memory corruption)
  with existing binaries and instead has them fail during runtime linking.
  You trigger that when having -D_FILE_OFFSET_BITS=64 in your compiler
  flags during mpg123 build.

1.32.5
------

- build:
-- CMake port uses CFLAGS for pulse/jack/tinyalsa properly now (bug 366).
-- CMake port links libsyn123 with libm now (bug 370).
- libmpg123:
-- Fix --enable-portable (no usage of LFS_WRAP_NONE, bug 368).
-- Fix dct36 wrapper usage for x86-64 and NEON. Stupid (bug 367) and
   also avoid returning void.
-- Make ARM builds work with nagging (missing feature macros for std=c99).

1.32.4
------
- build:
-- Reorganize shared headers, API headers into src/include.
-- Use relative include paths, avoiding internal directories in
   CPPFLAGS except for config.h.
-- Group C99 feature checks and make several standard headers
   mandatory.
-- Get rid of SIZE_P, OFF_P and friends.
-- Only enforce dummy module together with libout123, to be able
   to build individual modules using --disable-components logic.
- out123:
-- added --libversion
- libmpg123:
-- Avoid indirect branches into the assembly routines by using C wrappers
   also for dct36, relieving us of the need to care for bti / endbr
   instructions for control flow integrity.

1.32.3
------
- ports/cmake: Only enable modules with GetThreadErrorMode() on Windows.
- compat: Define EOVERFLOW for ancient Windows toolchains.
- libmpg123, libsyn123: always ifdef LFS_LARGEFILE_64 (not just if)
- libsyn123: re-introduce _32 wrappers in addition to suffix-less ones
  (regression from 1.31, bug 363)

1.32.2
------
- libmpg123: Re-introduce _64 symbols on native 64 bit offset platforms. This
  was a regression since 1.31 series. Sorry, too much cleanup, not enough
  testing.
- build:
-- Better O_LARGEFILE logic, avoiding redefintion.
- ports/cmake:
-- Require C99 (bug 360, among other points, thanks to Ozkan Sezer).
-- Fix broken O_LARGEFILE logic (bug 360).
-- Typo fix and cleanup, also manual SSE switch for Android on old x86 (bug 359).

1.32.1
------
- Include man pages again in tarball and install. We cannot avoid the empty
  man directory when disabling programs with autoconf.
- Fix signal handler prototype, avoiding some justified warnings.
- ports/cmake:
-- Include CheckTypeSize, which seems to be needed sometimes (bug 357).
-- Avoid O_LARGEFILE redefinition, logic closer to autoconf.

1.32.0
------
- build:
-- Move version handling out of configure.ac to ease other build systems.
-- Include "fmt123.h" instead of <fmt123.h> in main API headers to make it more likely the
   correct one is included (at least gcc picks the one in the same directory as the
   including header first).
-- All headers are build-independent now.
-- Fix build for picky linkers by avoiding definition of wrap_getcpuflags() where it is not
   used (spurious linker error to non-exitent getcpuflags(), bug 353).
-- Handle deprecation of C99 detection macro in autoconf 2.70.
-- No use of AC_SYS_LARGEFILE anymore for explicit handling and differing choice for
   the libraries and frontend programs.
-- Added --enable-portable and --disable-largefile to configure, removing the other
   largefile-related options.
-- Added --disable-components --enable-libmpg123 to only build libmpg123 (and likewise
   --enable-libout123, --enable-libout123-modules, --enable-libsyn123) to autoconf
   build. CMake build has something  similar with BUILD_PROGRAMS and BUILD_LIBOUT123,
   which leave only libmpg123 and libsyn123 if disabled). (bug 351)
-- Consistent formatting of ./configure --help with AS_HELP_STRING().
- ports/Sony_PSP: removed
- mpg123:
-- Added --libversion.
-- Added proper A-B looping with terminal control key 'o', renamed
   --pauseloop to --presetloop.
-- Really get rid of mpg123_position() usage. (It was all lies before!)
-- Fix terminal progress info when seeking in stopped mode (1.31 regression).
-- Patch up interaction of output buffer with generic remote control, adding
   non-interruptible drain after P 3, and dropping buffer on QUIT.
-- Uppercase some generic control replies for consinstency: SILENCE, PROGRESS,
   MUTE, UNMUTE
- libmpg123, libout123, libsyn123:
-- Bumped API version for version query functions.
-- Replaced nearly all symbol renames with explicit INT123_ prefix declarations
   (intsym.h close to empty now).
- libout123:
-- Add sleep builtin output module (silent, but proper timing).
- libsyn123:
-- Introduced SYN123_PORTABLE_API for an API without off_t and ssize_t
   (see NEWS.libsyn123).
- libmpg123:
-- Internal I/O using explicit largefile support via off64_t, lseek64, fallback
   to plain 32 bit off_t.
-- Added explicit 64 bit API with 64 suffix (mpg123_tell64(), not mpg123_tell_64()).
   This allows full avoidance of ambiguus off_t. The API is always using 64 bit
   integers, regardless of internal implementation. (bug 344)
-- Introduced MPG123_PORTABLE_API for an API subset without off_t and
   ssize_t.
-- Made mpg123_seek() and friends ignore offset sign for SEEK_END (always seeking
   towards beginning, assuming negative offset) to make lseek()-conforming usage
   possible. Seeking beyond the end never made sense, so no loss of valid functionality.
- Overall use of INT123_strerror(), trying to use thread-safe strerror_l() if possible.

1.31.3
------

- build:
-- Fix --disable-8bit.
-- Fall back to generic decoder if no yasm for MSVC (bug 346).
-- Fix some pedantic compiler warnings, avoid breaking libtool wrappers.
- mpg123:
-- Fix verbose position printout for new resampling outside libmpg123 (where
   output rate differs from decoding rate).
- libsyn123:
-- Fix reconfiguration of resampler to avoid double free when reducing
   decimator stages to zero (bug 350). Thanks to Youngseok Choi for reporting
   this fuzzed issue.

1.31.2
------
- Fix build --with-network=internal only (configure logic error, bug 348).
- Fix OS/2 build with getaddrinfo() (which may support IPv6 eventually, thanks
  to Dave Yeo).

1.31.1
------
- Fix largefile aliases for the case of a largefile-insensitive build
  that still does define _FILE_OFFSET_BITS from the outside
  (sys/feature_tests.h on Illumos).

1.31.0
------

- mpg123:
-- Finally make terminal control work on Windows, for real. Building it
   was broken in 1.30.x.
-- The --control / -C switch will make mpg123 abort now if terminal
   control cannot be enabled.
-- Revert to internal network code for plain HTTP to ensure continued
   support for original shoutcast servers that do not talk proper HTTP.
   External backends are built at the same time and can be enforced using
   --network <backend>.
-- Try-witout-port for internal network code is gone. We do not need to
   keep each ancient hack for specific hosts.
-- Handle redirections independently of the backend behind net123. 
-- Set proxy environment variables when --proxy is specified, for net123
   backends to use.
-- Continue reading for long commands in generic control, avoiding
   unnecessary unfinished command errors.
-- Change error message from 'unknown command' to
   'unknown command with arguments' to avoid confusion why 'help foo'
   is unknown, as opposed to 'help'.
-- Reduce CPU load while just waiting for terminal input
   (thanks to bolshoytoster on github).
-- Condense terminal control help output and excessive vertical whitespace
   in printouts (inspired by Volkmar Klatt).
-- Fix interaction of pause (looping) with buffer, adding --pauseloop
   to set the loop interval.
-- Numeric option arguments are strictly checked now for conversion errors.
   This also catches -devbuffer, which was interpretd as -d 0 before. This
   also applies to out123.
- libout123:
-- Add same interruption handling to out123_write() as to
   unintr_write(), adding EAGAIN to fix bug 342 (thanks to Steffen Nurpmeso)
   for certain ALSA setups.
-- Add --devbuffer support to win32 output and change default to 0.25 seconds.
-- Fix race condition to deadlock on buffer_sync_param() where parameters after
   the command byte got read as more commands. This got triggered easily by
   using the pause key in terminal mode with buffer (which was discouraged
   before because of buffer flushing). Generally, changing parameters with
   active buffer process was dangerous since libout123 entered the scene.
- some build fixes for compiler pickyness
- Disable largefile renames also for non-sensitive POSIX systems
  (in some distant future, the alias symbols could go away, then …
  bug 330).
- Fix Android NDK x86 builds with GLOBAL_VAR_PTR use in assembly (bug 345).

1.30.2
------
- Only use EWOULDBLOCK if the macro is defined (FreeBSD misses it for
   _POSIX_SOURCE, bug 339).

1.30.1
------
- mpg123:
-- Show stderr of network helpers in -vvv mode.
-- Use curl --http0.9, if available, to support shoutcast v1 streams
   without wget (wget not needing such switch, yet).
-- Support file:// URLs for local access as was intended with the last
   release.
-- Give more helpful error message if neither wget nor curl are usable, also
   allow error messages from curl to appear when not --quiet.
-- Update the man page.

1.30.0
------
- build:
-- Use dummy as default module when no other outputs are enabled. This also
   fixes a non-module build with just the dummy (bug 333).
-- Use CMAKE_CURRENT_SOURCE_DIR in CMake build to help nested use (bug 335).
-- some updates for OS/2 support (fixing up stdin playing, for example)
- mpg123:
-- new network backend using external tools/libraries to also support HTTPS
-- old network backend changed to use h_addr_list[0] instead of h_addr
-- terminal control keys now case-sensitive (fixing smal/big pitch controls)
-- additional terminal control keys for simple equalizer control (A/a for bass,
   J/j for mids, N/n for treble, e for reset, E for printout)
-- terminal volume control now in decibel steps and bounded to +/- 60 dB
-- terminal control now also with audio from stdin (bug 338) via
   /dev/tty or ctermid()
-- terminal control also available for OS/2 and Windows platforms
-- re-print tag info on decrease of terminal width for a bit less mess
-- always print an empty line after tag info for cleaner appearance
-- print lyrics also to stderr
-- remote control API v10 with "@P 3" as additonal message on track end
-- also added PROGRESS command as opposite of SILENCE
-- fix some verbosity, tweak help for --icy-interval
-- added --auth-file
-- also obscure argument to --auth for others
-- Cygwin/MinGW: Provide _win32_utf8_wide and _win32_wide_utf8 unconditionally.
   It is needed by the WASAPI plugins, the underlying conversion functions
   should be present since Windows 2000. Fixes WASAPI support on Cygwin.
   Also needed for new network code.
- libout123:
-- pulse: initialize more error codes to avoid bogus error messages
-- os2: considerable fixup for proper writes of full buffers avoiding
   nasty effects from the ... special audio system, more cleanup still
   nice-to-have, but still lacking

1.29.4
------
- libmpg123:
-- Saturate reader file position at off_t limit to satisfy
   undefined behaviour checkers.
-- Avoid harmless unitialized value in ID3v1 check (filepos, later being
   set before actual use).
- libout123:
-- Build fix for win32_wasapi output for predefined _WIN32_WINNT (bug 329),
   thanks to Vincent Torri.

1.29.3
------
- libmpg123: Catch more NULL pointer arguments in LFS wrappers
  (most prominently: mpg123_feedseek(), bug 328).
- mpg123:
-- Fix regression that did _not_ enable --remote-err on -s anymore.
-- Fix typos in man page (thanks to Naglis Jonaitis).
-- Drop mixed-up value limits on remote control SEQ command. It is up to you
   if you want to distort your sound.
-- Add note about equalizer frequency bands to man page.
- build: add BUILD_PROGRAMS option to ports/cmake

1.29.2
------
- libmpg123: Fix non-live-decoder safeguard for mpg123_framebyframe_decode()
  (was a no-op in practice, bug 324).

1.29.1
------
- mpg123:
-- Keep default output encoding of s16 for raw and file outputs
   also with the new resampler. This reverts the unintentional change in
   1.26.0 of switching to f32 for forced output rate unless the NtoM
   resampler is selected. In any case, you should make sure to specify
   your desired --encoding if you depend on it.
-- Catch error in indexing (mpg123_scan() return value was ignored
   before, bug 322).
- mpg123-strip: Lift the resync limit, as it should be to clean up really
  dirty streams.
- mpg123-id3dump: Also lift resync limit for the same reasons.
- libout123: fix reporting of device property flags for buffer
- libmpg123: more safeguarding against attempts to decode if decoder
  setup failed and user ignored the returned error code (bug 322)

1.29.0
------
- build: added --enable-runtime-tables
- libmpg123:
-- Float deocder runtime table computation is back as option,
   based on suggestion and initial patch by Ethan Halsall for a smaller
   download size of the wasm decoder built from libmpg23. This only
   trims the size of the binary on disk (network), for runtime
   overhead and a bit of uneasyness about concurrency during table
   computation, which happens implicitly on handle initialization,
   only guarded by an integer flag. This does _not_ revive
   mpg123_init().
-- The ID3v2 UTF-16 BOM check is now a straight-on loop and not a
   recursive function.

1.28.2
------
- libout123
-- Complete the fix for bug 314, reopening the device after format
   setup failure.

1.28.1
------
- build:
-- Explain --with-default-audio in configure help better.
-- Fix build of arm_fpu (regression of configure reorg).
-- Re-introduce AC_PROG_C_C99 macro for autoconf 2.69, it's only
   obsolete after that.
-- Un-break CMake build for botched move of CheckCPUArch.c.in (bug 315).
-- Avoid conflict of warning macro with MSVC pragmas in two places. Also
   fix UWP build with strerror check and move down inclusion of intsym.h
   (bug 316).
-- Disable libout123 (and mpg123, out123) on UWP with cmake to get at least
   the decoder lib built (317).
-- Hack around CMake bug(?) with QUERY_HAS_FPU to make ports/cmake also
   work in MinGW (bug 318).
- libmpg123:
-- Make mpg123.h.in usable again with MPG123_NO_CONFIGURE,
   for external uses (bug 313).
-- Use predefined MPG123_API_VERSION in mpg123.h.in for the same.
-- Better handle the ssize_t situation via typedef mpg123_ssize_t, less
   likely to be broken in future MSVC versions.
-- Fix an integer constant definition for the most negative 32 bit numnber to
   avoid justified compiler complaints.
- libsyn123:
-- More support for MPG123_NO_CONFIGURE.
-- Optionally use predefined SYN123_API_VERSION in syn123.h.in for the same.
-- Add a cast to silence integer sign warning for offset in muloffdiv64()
   (bug 317)
- libout123:
-- Pulse module advertises wider format support now, not
   just s16. This makes mpg123 -e s24 work with it, not just out123.
-- Optionally use predefined OUT123_API_VERSION in out123.h.in for
   non-configure use.
-- Fix sndio output to properly query device format support and get
   default fomat on FreeBSD (bug 314).

1.28.0
------
- build:
-- Fix up the build to actually build all library objects with libtool
   consistently, also ensuring no pointless static archives for output
   modules.
-- Adapted things to autoconf 2.71, requiring 2.69 now (the latter tested
   on Debian, with their patches).
-- Improved configure to be more useful --with-default-audio to define
   the search order, fix static build for --with-audio being a list
   (just choosing the first one).
-- Ensure consistent use of LINK_MPG123_DLL in headers.
- build (ports/cmake):
-- Thanks to Evgeni Poberezhnikov for working with us on that.
-- Fix up ports/cmake to really work in MSVC also for users of the lib
   (tested in vcpkg, bug 310).
-- Hardcode ports/cmake CPU detection for x64 and ARM as
   CMAKE_SYSTEM_PROCESSOR is useless crap (bug 298 for real).
-- Add missing io.h for _setmode() MSVC warned about (bug 311).
-- Added BUILD_NO_LARGENAME define to be used by MSVC builds. Note that
   an MSVC build of libmpg123 does not support 64 bit file offsets.
   That would need more morting to the explicit API. Thanks to MS for
   making off_t even more messy and less useful.
-- Added JACK output, fixed handling of compat_str there and in win32_wasapi.
- libsyn123: Fix syn123_mix() to actually do intermediate conversion
  when input and output encoding are the same but non-float. This makes
  out123 --mix work with s16 input and output, which is not that special!
- libmpg123: Fix misguided handling of part2_3_length checks in
  III_get_scale_factors_1() and III_get_scale_factors_2() which invalidated
  decoding of a mono source encoded as ms+i-stereo (bug 312). This was
  a regression introduced with version 1.25.7.
- libout123:
-- Print basic module loading errors only for last one in list.
   This enables use of an output module search list that anticipates module
   files not installed with the main package.
-- Fixes for win32_wasapi build with MSVC.

1.27.2
------

(Trying some svn tag discipline: 1.27.1 has been tagged before, but
not released. Let's increment for any change.)

- Removed ports/Xcode, ports/cmake should handle that case.
- Ensure debug.h is included last where it matters to avoid
  conflicts with debug/warning macros in system headers
  (bug 308).
- Fix some debug/printf integer casts for 32 bit platforms (bug 309).

1.27.0
------

- libmpg123:
-- Running on precomputed tables now, no need to call
   mpg123_init() anymore. That and mpg123_exit() are both just
   empty shells. You can omit them if you do not care about earlier
   libmpg123. You can check for MPG123_API_VERSION >= 46.
-- Added API that avoids enums, mapped-to by default unless
   MPG123_ENUM_API is defined.
- libout123:
-- Added API that avoids enums, mapped-to by default unless
   MPG123_ENUM_API is defined.
-- Added device enumeration for win32, win32_wasapi, alsa, pulse.
   This increments the output module ABI version to 3.
-- You can choose output devices now on Windows.
-- Changed default output module order to put pulse before alsa since
   we now ensure that pulse is not inadvertedly started by the
   autospawn feature. This improves the experience on desktop
   systems with pulse where the alsa to pulse use causes glitches.
   Note that on a modern Linux desktop (Ubuntu), you will not
   escape an instance of pulseaudio being started, with even the
   enumeration of the ALSA default device summoning the daemon.
   If you _want_ sound daemon autospawn behaviour on other platforms,
   you need to trigger it outside of libout123.
- examples: Update for dropped mpg123_init(), more sensible
  copyright notes.
- out123:
-- safer limiting of maximum playback rate
-- Added --list-devices.
- mpg123:
-- Fix --continue output to print track_count+1 as continue
   position after hitting the end of playlist. Makes scripts/conplay
   go to back to the beginning again (regression in 1.24.0, bug 250).
-- Remote control API version 9 with @I { .. @I } wrapping of ID3 and
   playlist display.
-- Added --list-devices.
-- Fix console printout on Windows.
-- Fix terminal control logic to better handle cases where stdin or
   stderr is not a terminal, also avoid enabling control if you specify
   stdin as input file.
- Updated debugging/warning/error message macros to include the function
  name.

1.26.5
------
- Add ./configure --enable-xdebug (for the resampler issue).
- Avoid denormals in the resampler by adding an alternating offset
  (helps performance without -ffast-math, depending on platform).
- libmpg123:
-- Fix ID3v2 APIC parsing when frame length bit is set (bug 306).
-- Also handle the group flag (skip the group byte).
-- Also fix up frame flag handling for ID3v2.3. Did not crop up yet,
   but it was just wrong. Impact was not detecting and bailing out on
   compressed or encrypted frames properly.

1.26.4
------
- Clarify seeking documentation regarding samples and PCM frames.
- Fix build on MorphOS (patch by Ozkan Sezer, bug 295).
- Fix cmake build to install fmt123.h.
- Some cmake build fixes, tinyalsa addition by Maarten (bug 299).
- libmpg123: explicitly handle some irrelevant corner cases in tabinit
  (bug 279)

1.26.3
------
- Fix accurate (--enable-int-quality) and s32 x86-64 assembly for Windows ABI
  (thanks to Robert Kausch of fre:ac). The accurate code just crashed before.

1.26.2
------
- Enable terminal control by default only when both input and output
  are connected to a terminal. This avoids messing with terminal settings
  when piping stderr to a pager, which takes over terminal input anyway,
  while mpg123 still thinks it got control.
- Windows build fixes for UWP and without GetThreadErrorMode when not
  building modules, thanks to Steve LHomme.
- Android build fix regarding off64_t use, thanks to Steve LHomme.
- More CMake build fixes thanks to David Callu (bug 290).
- Use PROG_LIBS for output modules, to reinstate not necessarily proper but
  previous behaviour and fix FreeBSD port build (bug 291).
- Refine LFS support in libsyn123, avoiding architecture-dependent syn123.h
  (debian bug 963205).

1.26.1
------
- Fix cmake build by actually including the read_api_version file in the distro.
- Fix big-endian build, stupid omission of a variable declaration, semicolon
  (bug 289).
- Silence a harmless warning for build without realtime priority.

1.26.0
------

- Starting to intentionally use C99 in the codebase. API headers are still
  supposed to be compatible to C89.
- There is a make check target now with some simple tests.
  It is an open question how that should be developed in relation to the
  external regression and compliance test suite.
- Finally silenced memory checkers about leaking memory from getlopt()
  (main code overwriting values without freeing strdup() strings).
- AUTHORS now in UTF-8;-)
- CMake build files in ports/cmake, as an alternative to create MSVC
  project files and the like (thanks to Vitaly Kirsanov)
- Default build with proper integer rounding (--enable-int-quality) now.
- Cygwin/midipix autoconf fixes (thanks to Redfoxmoon).
- Updated Windows build script, notably renaming .dll.def to .def.
  Requires an argument now for build type, an optional one for
  parallel make (not that useful on MinGW).
- Rework library dependency handling to avoid unnecessary linking for
  lib*123. Also add proper Libs.private to .pc files to enable static
  usage (especially on Windows with shlwapi).
- Updated support for OS/2 in the form of ArcaOS.
- Removed outdated Pascal port (ports/mpg123_.pas). There are others
  out there.
- Updated man pages, been a while.
- mpg123:
-- Fixed-rate playback now prefers the libsyn123 resampler instead of NtoM
   in libmpg123, see --resample parameter.
-- Drop --STDOUT (never properly implemented, use pipe to out123 instead).
-- Make --streamdump use unintr_write() to avoid inconsistencies.
-- Now sets non-zero exit code when any one track of the playlist
   fails to either produce at least one frame of playback, if there
   is data that should produce such (i.e. /dev/zero is bad, /dev/null is
   fine). See man page for details.
-- Print out MPEG header info for each frame for mpg123 -vvvv.
-- Added --no-visual to disable cursor/inverse video games explicitly.
-- Clear progress bar before printing updated metadata within a stream.
-- Filter control/non-printable characters from user data printout, reduce
   ID3v1 data to 7-bit ASCII (no way to know correct 8-bit encoding for sure).
   This should  cover bug 267.
-- Set MPG123_NO_PEEK_END when opening special file '-' (standard input).
   That helps Windows where attempting to seek on the non-seekable stream
   is undefined behaviour (bug 285).
-- Print errors in player code also for --quiet operation (just no messages
   from the libraries).
-- Ignore ID3v1 once a Frankenstein stream was detected.
-- Prevent a cosmetic use-after-free in audio playback during program abortion just after
   starting playback (prebuffer still in use, implication a blip of bad sound and
   a complaining sanitizer).
-- Reformat audio capabilities table, more condensed, fits into 80 columns.
   Forced rate on a separated line.
-- Make --pitch actually work, not just interactive changes. Pitching uses
   a resampler now if a fixed output rate is specified.
-- Added --no-frankenstein.
-- Frameflags as long variable, 32 bits are needed since some time now.
- out123:
-- Document --STDOUT, make it more robust regarding fwrite() interruptions.
-- Removed the implicit phase shift that made generated waves exactly at
   Nyquist freq non-silent, but made little sense overall.
-- Less high-frequency shifts to make waves fit into the table (not insisting
   on even number of samples).
-- Option to work without wave table (setting the limit to zero).
-- Added --wave-direction to also enable backward time without phase shift.
-- Waves now generated by re-usable little synthethizer library dubbed
   libsyn123.
-- Pink noise from libsyn123 added (using code from Phil Burk).
-- White noise from libsyn123.
-- Geiger-Mueller counter simulation from libsyn123.
-- Wave sweep generator from libsyn123.
-- Some rearrangement in help text.
-- Changed output of --test-encodings to list of encoding names
   instead of raw bitmask value.
-- Added --endian, --inputend, and --byteswap.
- libsyn123:
-- Created the library to host some simple signal generators for testing
   output.
-- It also hosts sample format conversions as a necessity to be able to
   directly produce the format output devices need.
-- Well, also channel mixing while we're at it.
-- Oh, and a minimal-latency-and-reasonably-efficient resampler that only
   took me over a year to figure out. I should write a paper about it.
- libout123:
-- Added out123_free() for the benefit of library wrappers. (bug 276)
-- Removed change of effective user ID in the WAV/RAW/AU/CDR writer.
   This was intended as a safeguard to avoid creating files with root
   priviledges. But: Other output modules still allowed root-level
   access to various devices and files, so it was never safe to do
   something awful like installing mpg123 with suid bit or configure
   sudo to allow users to run mpg123 with arbitrary arguments.
   You should treat out123_open just like the regular open(): You can
   write to any file/device depending on your permissions.
-- Finally maybe fixed the damaged playback when using pulse hidden
   behind the ALSA API (on Ubuntu, for example) by setting a high value
   for device start threshold.
-- Fixed out_play() abortion logic to better detect fatal situations
   (broken pipe). Needed on FreeBSD, while Linux buffers the issue away.
   Should resolve bug 283.
-- Limit size of buffer block being written in out123_play to 16K, avoiding
   unnecessary failure with ALSA at least.
-- Using SDL2 now if found. Output module code unchanged.
-- Added hex and txt (plain text) printout.
-- Eliminated spots where error messages would still be printed
   also for OUT123_QUIET being effect.
-- Dummy output accepts any encoding now.
- libmpg123:
-- Added mpg123_open_fixed() to ease API for applications that just
   want to decode well-behaved local files.
-- The user buffers for audio output data are now declared as void* for
   mpg123_read(), mpg123_decode(), and mpg123_replace_buffer() to avoid
   the useless need for casting your nice int16_t buffer to unsigned char
   for decoding MPG123_ENC_SIGNED_16 data to it.
-- Added mpg123_free() for the benefit of library wrappers. (bug 276)
-- Add mpg123_format2() and mpg123_fmt2() supporting special value 0 for all
   rates.
-- Fix changing of decoder (and output format along with that) after stream
   opening. This was never recommened and only now should work at all.
-- Also mpg123_decode_frame() now sets return buffer to NULL and returned byte
   count to zero in case of MPG123_NEED_MORE (or any other early abort).
-- MPG123_NEED_MORE not returned anymore for non-feeder streams. Got in
   there for generic partial frame body reads, but was only intended for
   feeder API.
-- Added mpg123_set_moreinfo() to support the Lame project's frame analyzer,
   disabled by ./configure --disable-moreinfo.
-- Added optional storage and retrieval of raw ID3 data.
-- Fix skipping of ID3v2 footers (too much was attempted to be skipped). This
   is of not much practical consequence as a tag with footer would appear on
   the end of files anyway and files with ID3v2 tags at the end seem to be
   rather rare.
-- Add mpg123_new_string() and mpg123_delete_string() to avoid confusion
   about what mpg123_init_string() and mpg123_free_string() do.
-- Make mpg123_resize_string() terminate the string if shrinking (fill now
   limited to new size).
-- Improve layer III frame parsing/error reporting for bad part2_3_length.
-- Fix crashing on stupidly low NtoM rates (exceeding downsampling factor 31).
   This was only triggered by you specifying a forced sampling rate below 1550 Hz.
-- Do not remove CRC bits twice from possibly available bit reservoir.
   This move needed recomputation of the layer3is reference data for 8 and
   24 kHz. Old mpg123 is _wrong_ in the first few frames.
-- Generally more tight control and early bail out on reading bits of
   frame data for all layers. This reduces the count of error messages
   on badly damaged files a lot and feels a lot safer, too. Note that
   we already silently returned zero bytes instead of actually over-reading
   the frame buffer before, but now it happens with diagnostics and more
   checks before it may happen.
-- Optionally enforce output endianess (big/little) away from native.
-- Fix build without error messages.
-- Fix build without gapless decoding.
-- Disable buffer when neither mmap nor shm functions detected (fixes
   build for Android, thanks to vquicksilver).
-- Some support for extremely small streams (below 128 bytes). Those are
   too short to contain anything useful besides some tiny metadata, but
   serve to find/reproduce parser bugs.
-- Fix mpg123_read() for builds without feeder. It calls mpg123_decode()
   without feeding input, which was disabled by mistake. The use of
   mpg123_read() (instead of mpg123_decode_frame()) with mpg123_open()
   was broken in feederless builds since those were fixed in version 1.15.
-- Fix ID3v2 parser logic for multiple ID3v2 tags being encountered in one
   stream. New tags replace old data instead of appending to it when the
   extended header update flag is not set (ID3v2.4). Update tags only
   replace data that shall be unique. So far, I have never seen an update
   tag in the wild, so the check for the flag is untested. The mechanism
   of replacing parts of existing tag data has been tested, though.
   Note that the updated libmpg123 also avoids a growing ID3 data structure
   when repeatedly seeking back to the beginning in a file with disabled
   seek index.
-- Eliminated a spots where error messages would still be printed
   also for MPG123_QUIET being effect.
-- Added MPG123_NO_FRANKENSTEIN, MPG123_FLOAT_FALLBACK flags.
-- Now actually try floating point encoding if format matrix allows it
   (can be disabled by unsetting MPG123_FLOAT_FALLBACK).
-- Added mpg123_feature2() that takes an int, as enums are not ABI-safe,
   also added feature queries for floating point output. 

1.25.13
-------

This is a bugfix release solely for bug 280 in the parser:

- libmpg123
-- Reset the flag for having a frame to decode before trying to
   parse a new one. This prevents very unkind behaviour (crashes)
   when combinging mpg123_scan() with decoding later on for damaged
   streams that have a mixture of different MPEG versions.

1.25.12
-------

More credit to OSS-Fuzz. The ID3v2 parser code is not yet as hardened
as the actual MPEG decoder. The paranoid can disable it at build-time.
If you do not need it, this is a good idea, anyway: Code that is not
there, cannot be exploited. Speaking about exploits: The recent crop
of bugs trigger a denial of service (crash) worst-case, some invalid
ID3 data normally. Code injection maybe not totally ruled out (that one
write of a zero byte?), but does not seem easy. Update to be sure that
you are only suceptible to as of yet hidden bugs.

- libmpg123
-- Fix an out-of-bounds read of maximal two bytes for truncated RVA2 frames
   (oss-fuzz-bug 15975). The earlier fix around the same location needed
   one thought more. Actually, another though was needed, oss-fuzz-bug 16009
   documents the incomplete fix.
-- Fix an invalid write of one zero byte for empty ID3v2 frames that demand
   de-unsyncing (oss-fuzz-bug 16050).
-- Correct preprocessor syntax in mangle.h, no #error in a #define line.
   (bug 273, thanks to nmlgc).
- Fix dynamic build with gcc -fsanitize=address (check for all dl functions
  before deciding that separate -ldl is not needed).

1.25.11
-------

So, here is a number of bugs found by OSS-Fuzz. Credit to OSS-Fuzz
for the bunch, then.

- libmpg123:
-- Fix out-of-bounds reads in ID3 parser for unsynced frames.
   (oss-fuzz-bug 15852) 
-- Fix out-of-bounds read for RVA2 frames with non-delimited identifier.
   (oss-fuzz-bug 15852)
-- Fix implementation-defined parsing of RVA2 values. (oss-fuzz-bug 15862)
-- Fix undefined parsing of APE header for skipping. Also prevent
   endless loop on premature end of supposed APE header. (oss-fuzz-bug 15864)

1.25.10
-------

- libout123: Fix error messages beginning from OUT123_ARG_ERROR (bug 261).

1.25.9
------
- mpg123: Fix --icy-interval handling to work with stream from stdin.
  (curl | mpg123 --icy-interval=n -)
- libmpg123: Fix another invalid read and segfault on damaged (fuzzed)
  files with part2_3_length == 0 (set maxband=1, pulled from upcoming 1.26.0).

1.25.8
------
- mpg123:
-- Also disable cursor/video games for empty TERM (not just unset and dumb).
- libmpg123:
-- Accept changing mode extension bits when looking for next header for
   detecting free-format streams (bug 257).
-- Fix compute_bpf() for free format streams (needed to estimate track
   length and working fuzzy seeking in absence of an Info tag).

1.25.7
------
- mpg123:
-- Do not play with cursor and inverse video for progress bar
   when TERM=dumb.
-- Fix parsing of host port for numerical IPv6 addresses (just did
   not work before, only for textual host names).
- libmpg123:
-- Proper fix for the xrpnt overflow problems by correctly
   initialising certain tables for MPEG 2.x layer III. The checks that
   catch the resulting overflow are still in place, but likely superfluous
   now. Note that this means certain valid files would have been misdecoded
   before, if anyone actually produced them. Thanks to Robert Hegemann for
   the fix!
-- Silently handle granules with part2_3_length == 0, but
   scalefac_compress != 0 (ignore the latter).

1.25.6
------
- Hotfix for bug 255: Overflow reading frame data bits in layer II decoding.
  Now, all-zero data is returned if the frame data is exhausted. This might
  have a slight impact on performance, but not easily measurable so far.

1.25.5
------
- Avoid another buffer read overflow in the ID3 parser on 32 bit platforms
  (bug 254).

1.25.4
------
- Better configure checks for i?86-apple-darwin (bug 253).
- libmpg123:
-- Prevent harmless call to memcpy(NULL, NULL, 0).
-- More early checking of ID3v2 encoding values to avoid bogus text being
   stored.

1.25.3
------
- libmpg123:
-- Better checks for xrpnt overflow in III_dequantize_sample() before each
   use, avoiding false positives and catching cases that were rendered
   harmless by alignment-enlarged buffers.

1.25.2
------
- libmpg123:
-- Extend pow tables for layer III to properly handle files with i-stereo and
   5-bit scalefactors. Never observed them for real, just as fuzzed input to
   trigger the read overflow. Note: This one goes on record as CVE-2017-11126,
   calling remote denial of service. While the accesses are out of bounds for
   the pow tables, they still are safely within libmpg123's memory (other
   static tables). Just wrong values are used for computation, no actual crash
   unless you use something like GCC's AddressSanitizer, nor any information
   disclosure.
-- Avoid left-shifts of negative integers in layer I decoding.

1.25.1: Hot Fuzz
-------
- libmpg123:
-- Avoid memset(NULL, 0, 0) to calm down the paranoid.
-- Fix bug 252, invalid read of size 1 in ID3v2 parser due to forgotten
   offset from the frame flag bytes (unnoticed in practice for a long
   time). Fuzzers are in the house again. This one got CVE-2017-10683.
-- Avoid a mostly harmless conditional jump depending on uninitialised
   fr->lay in compute_bpf() (mpg123_position()) when track is not ready yet.
-- Fix undefined shifts on signed long mask in layer3.c (worked in practice,
   never right in theory). Code might be a bit faster now, even.
   Thanks to Agostino Sarubbo for reporting.

1.25.0: MP3 now patent-free worldwide!
-------
- Silence test for artsc-config if it is not there.
- Make sure -static-libgcc from LDFLAGS gets through libtool,
  fixing 32 bit Windows builds (depend on libgcc DLL otherwise).
- Fix build with non-GNU make by using plain rm -f instead of silly $(RM)
  in libout123/modules makefile fragment.
- Make build work on iOS, including coreaudio backend.
- libmpg123:
-- Finally provide position-independent code for x86 with assembly
   optimisations.The textrels are gone thanks to Won Kyu Park and Taihei Momma.
-- Clarify some license language in files descending from the original MMX
   optimisation.
-- Fix return value overflow check for MPG123_BUFFERFILL.
-- Introduced mpg123_getformat2() to enable the FORMAT command
   for the generic control not stealing MPG123_NEW_FORMAT from the main
   playback loop. The sequence LOADPAUSED-FORMAT-PAUSE (play) is supposed
   to work now.
-- Enable aarch64 optimisations on *BSD by default, too. You can always
   override that stupid OS whitelist using --with-optimization, anyway.
-- Use of the i486 decoder is now discouraged more prominently, in configure
   output.
- out123: Fix stupid crash with verbose mode and tone generation (print
  the string if the pointer is non-null, not if it is null).
- libout123: More consistent error messages for dynamic and legacy
  (built-in) modules. Namely, you get a hint how if you choose a different
  module than the built-in ones for a static libout123.

1.24.0:
-------
- Avoid repeating genre in metadata printout for specifications like
  (144)Thrash Metal.
- In remote control mode, only enforce --quiet if no verbosity was required.
- Prevent --loop and --shuffle or --random from messing with the remote
  control LOADLIST command (printout of the list would loop without reason).
- Fix the mpg123 command (esp. our provided binaries on Windows) to now find
  modules again relative to the executable directory, not the current working
  directory. This was a regression in 1.23 and might be security-relevant if
  you called mpg123 in working directories with untrusted content.
  Note that mpg123 1.23 looked for modules relative to the current working
  directory only if the installation prefix for modules did not exist.
  So, usage on an intact installation (with /usr/lib/mpg123 or the like) was
  safe. Nevertheless this new version fixes the search to be relative to the
  binary path as it was with 1.22 and before.
- At least consistent behaviour of playlist code in the face of looping.
  Looping is about individual tracks, always. They are looped also in random
  mode. Jumping (prev/next keys) is between tracks and resets the loop counter.
  The display of currently playing track in the playlist is fixed for random
  and looped play now (bug 198).
- Looping is now mentioned for a to-be-repeated track with --verbose.
- Move some compiler nagging from --enable-debug to --enable-nagging, fix up
  some new build failures by adding some pesky feature test macros.
- Try not to pollute the terminal buffer with old progress bars in inverse
  video. Only the currently live one shall be seen. That one is pretty. The
  others are not.
- Using plain dlopen()/LoadLibrary() for opening modules instead of libltdl.
  This also means that --with-module-suffix is gone in configure.
- Windows builds only work when Unicode support is there (older than Windows
  2000/XP will definitely not work anymore).
- The out123 tool now features tone generation, with a mix of differing
  wave patterns. Makes sense to be able to test the audio output by itself,
  and it's fun. See --wave-freq and related parameters.
- libmpg123 version 43:
-- Add flags MPG123_NO_PEEK_END and MPG123_FORCE_SEEKABLE, as suggested
   by Bent Bisballe Nyeng.
-- Build fix for MSVC (consistent definition of ssize_t, spotted by manx,
   bug 243).
-- Build fix for --with-cpu=ppc_nofpu (thanks to Michael Kostylev, bug 244).
-- Add asm optimized MSVC++ Win32|x64 and UWP|x64 builds
-- Remove old, broken MSVC++ builds
- libout123 version 2:
-- Added OUT123_BINDIR.
-- New search order for output plugin directory: MPG123_MODDIR, or (relative
   to executable directory OUT123_BINDIR) ../lib/mpg123, plugins
   libout123/modules/.libs, libout123/modules, ../libout123/modules/.libs,
   ../libout123/modules, and at last the installation prefix $libdir/mpg213/.
   This shall ensure that a build inside a source tree does not try to use old
   modules from the system prefix. The normal libtool wrapper deals with the
   shared libout123 or libmpg123 only, not modules.
   Note that if you set MPG123_MODDIR to a non-existing directory, no modules
   will be found (earlier versions fell back to other choices).
-- The OUT123_NAME parameter is now copied by out123_param_from(), as is
   the newly added OUT123_BINDIR.
-- Coreaudio: Use AudioComponents API on OSX >= 10.6 (thanks to Michael Weiser).
-- Coreaudio: Fix behaviour of out123_drop(), not killing the output anymore
   without re-opening the device (bug 236, thanks to Taihei for the fix).

1.23.8
------
- Fix long-standing bad memory read (via integer underflow) in ID3 parser
  for crafted ID3v2 tags with tiny size information (bug 240). Thanks to
  Han Lee & Jerold Hoong for the detailed report.

1.23.7
------
- Fix the bad RPM spec file (broken since out123 addition, thanks
  to Srikanth Rao for noticing).
- More out123_pause() in generic control mode, working around
  bug 236. The coreaudio output needs to be more robust, though.
- Do not undef MPG123_EXPORT in the headers, rather be prepared for it
  being defined already. This fixes MSVC builds, broken since 1.23.0
  (bug 239).

1.23.6
------
- call out123_pause() instead of out123_stop() in remote control STOP
  command, fixing the regression in 1.23.x of not being able to resume
  playback with another LOAD unless the new track has differing audio
  format (bug 234)

1.23.5
------
- libout123:
-- fix build of portaudio and SDL on win32 (too many parentheses,
   thanks to Sandro Cumerlato for pointing it out)
-- make out123_errcode() return OUT123_BAD_HANDLE as documented
   (adding that value to the error enum, was documented but missing),
   again thanks to Sandro
- fix windows-builds.sh (shell quoting in copying stage) and add some
  bits to shipped header to make it directly usable in MSVC (define ssize_t,
  bug 232)
- no overwriting of LIBS in Makefile (build system regression in 1.23,
  thanks to Peter Korsgaard for reporting that one)
- no printing of message in response to SIGPIPE, as that could trigger
  a hang if stderr itself is the piped culprit (regression from 1.22, bug 233)

1.23.4
------
- mpg123: Fix logic of prebuffering small bits for glitch-free start of
  playback. The logic as introduced in 1.23.0 actually introduced stuttering!
  The fix for this is really minimal and I urge everyone to at least include
  that one. It is the changeset of rev. 4041.
- libout123:
-- Actually make OUT123_KEEP_PLAYING on by default, as documented.
-- Fix buffer logic with regard to draining, use common device writing
   code to handle resuming from pause. This fixes sdl output with buffer,
   possibly other sfifo-based outputs like CoreAudio (those were poorly
   tested with buffer, as the combination is indeed unusual, see bug 230).
-- Buffer pauses devices for prebuffering, to avoid underruns.
-- More reliable playback with SDL, Portaudio and CoreAudio outputs.
   This includes FIFO draining on close to avoid dropping of the end.
   It should fix parts of bug 230.
-- Fixed memory leaks with some outputs where a call to the deinit()
   function is necessary during available/working module checking.
- mpg123, out123: Use the default output flags to get OUT123_KEEP_PLAYING.
  Without this, there is a good chance to abort on SIGSTOP/CONT while playing.
  This is a regression from 1.22 .
- Build fixes (bugs 227 and 228) and some build system hackery.
  Gone are libc feature test macros in compat.h . This means always
  using our own strdup() implementation. Simpler than being bugged by
  feature test macros in strict compiler mode (when _DEFAULT_SOURCE is not
  defined).
- ./configure --enable-nagging does something also without --enable-debug,
  explictly triggers -std=c89, too (hence the above).
- Some fixup to make things work in pedantic C89 mode again.
  It really might be time to swich on some serious C99 for the next release,
  since there's a followup standard to _that_ which we can ignore now.
- Update list of renamed internal symbols to reduce conflicts during static
  linking of libmpg123 or libout123.
- Internal compatibility functions now handled via libtool convenience
  archives, avoiding the hackish code copies.

1.23.3:
-------
- mpg123: Man page fixes by ESR.
- Actually check for sys/select.h (again?) in configure so that it is used.
  Fixes build on a Cygwin install, at least.
- libmpg123: Always default to enabled IEEE 754 hack for rounding on all
  platforms, use ./configure --disable-ieeefloat if you do not want it.
  As a protection for the exotic machine that does not use IEEE floating
  point storage format, mpg123_init() will error out early if the rounding
  does not work out.

1.23.2:
-------
- mpg123: Fix compact ID3 tag printing to take UTF-8 character count
  into account again (thoughtless regression in 1.23.0).

1.23.1:
-------
- libout123:
-- Fix logic to prevent cases of output devices being closed more than once
   (stop after pausing triggered multiple close calls, which broke sndio, for
   example).
-- Fix JACK output handling of port wishlist, was simply broken for more than
   two ports (-o jack -a port1,port2,port3). Now, it is ensured that each
   output ports gets some connection to an out123 channel, possibly splitting
   one to multiple ports or mixing multiple channels into one port (cyclic
   connection scheme). Note that this does only apply for an explicitly given
   list of ports. You can still use --stereo to ensure that two output ports
   (if found) are used also for mono tracks.
-- Also use jack_free() in JACK output for ports list.
-- And finally, ensure that pthread library is linked to JACK module (would need
   hacking to work on non-POSIX, replacing sem_t with equivalent).

- mpg123:
-- Hide networking-related command-line parameters when disabled.

1.23.0:
-------
- libmpg123 version 42
-- This adds mpg123_framelength() and makes mpg123_position() truly obsolete.
-- Equalizer optional now (./configure --disable-equalizer) to save precious
   memory
-- Clip decode tables for large amplification with fixed-point decoders.
   Without that, high-pitched distortion enters really quickly when
   trying to increase volume even if output samples would not be clipped,
   weren't it for fixed-point math.
- libout123 version 1: First incarnation of libout123, a basic library to
  get audio data written to audio devices (or files) in simple blocking
  manner as opposed to callback APIs (which it wraps over). This collects
  the output modules of mpg123 and makes them available to the wider
  masses. Also, the separate shared memory buffer process (contained
  in libout123) got a lot of reworking which should be noticable in the
  interaction with terminal control.
-- Some tuning of several output drivers (modules) regarding flexible
   buffer size, client names, supported formats.
-- Notably the JACK output got a major overhaul and now does not swallow
   audio at the end anymore. Huge latency also reduced and tunable. Encoding
   fixed to floating point, so that libmpg123 actually chooses what is
   sensible.
- Added mpg123 --no-infoframe.
- Detect terminal on input side and enable control keys automatically.
  There is --no-control now to disable terminal control anyway.
- Display stuff:
-- Avoid spillover of status line that caused unwanted terminal scrolling.
   If the terminal width is smaller than the full status string, a cut is
   made to make it fit.
-- Draw a progress bar on the terminal by inversing colors behind status
   line.
-- Rework the format of the status line to be more compact and consistent.
-- Rework smart tag printout for adapting to terminal width.
-- Warning messages also start with a line break now to better fit in with
   verbose playback.
-- Doubly-verbose mode now needed for long MPEG header print out.
   It is a higher level of verbosity than printing the current position.
   The compact header is a better fit.
-- Compact header printout also compacted, example:
   MPEG 1.0 L III cbr128 44100 j-s
-- Reporting of clipped samples also includes a line break now.
-- Keep ID3v2 data around for terminal control to be able to print on
   demand. That was broken for some time.
- Default for --preload now is 0.2 instead of 1 (fill whole buffer before
  playback). The maximum is 0.5 . This is mandated by corrected buffer
  interaction in libout123.
- Improved interaction with buffer process in terminal control mode.
  Seeking is more transparent now, taking dropped samples from buffer into
  account to avoid unintended jumps. Direct seeks with number row do not
  pause playback anymore.
- Silently skip APE tags (thanks to Hans de Goede).
- Some reduction in bitrot on AIX (typos in output module, build with
  --disable-largefile --with-audio=aix, real test welcome).
- Added '[' and ']' keys to skip to previous/next directory in playlist.
- Added support for Haiku to configure script (thanks to Jerome Duval).
- Remove spurious Frankenstein warning when scanning files that have no
  gapless info (the reported value of -1152 gapless sample length should be
  a giveaway anyway).
- Fix a bug in the command line parser that was present from the beginning,
  apparently, causing certain parameters (--au, --cdr) to kill off parsing
  of following ones. Nobody complained in all these years. Astounding.
- Forget content type from HTTP redirects (relate to error pages, not the
  stream redirected to), fixes web radio streams that do not send any
  content type for the actual stream.
- Accept application/pls+xml for PLS playlists. It happens. Don't ask
  mpg123 to actually parse any XML!
- Ignore whitespace after HTTP MIME types (esp. before a ";").
- Added --name to mpg123 and out123 for providing client name p.ex. for JACK.
  There is no default of appending the PID to "mpg123" as client name anymore,
  just plain "mpg123" or "out123".
- Added --devbuffer to mpg123 and out123 for influencing device buffer and
  possible latency a bit (perhaps more so in future when drivers are adapted
  to pay more attention to that).
- Added out123 --channels <n>, --list-encodings, --test-format,
  --test-encodings, --query-format.
- Calling ./configure --enable-nagging does not include --enable-debug anymore,
  you specify that separately.
- Fix for newer glibc that wants higher POSIX feature test for getaddrinfo()
  stuff.

1.22.4:
-------
- Fix stupid regression introduced with a bugfix in 1.14.1 to make
  free format streams work again. It took 3 years for someone to notice.
  I added a regression test for that now!

1.22.3:
-------
- Fix UTF-16 surrogate detection because that used to falsely detect
  characters above 0xDFFF as surrogates (bug 216).

1.22.2:
-------
- Fix buffering for funny sample formats (namely, 24 bit), that do not
  fit nicely into 32768 bytes. Effect was a nasty endless loop where
  mpg123 needs to be externally killed.

1.22.1:
-------
- Fix mpg123-id3dump when writing images with funny (manipulated) MIME type.
  Stupid mistake in length computation of the fallback file extension caused
  junk from memory being appended to the filename if the pointer size
  is less than 64 bit. For 64 bit pointers (or longer) it was correct by
  accident.
- Fix pedantic build by cleaning up out123 source, also now really showing
  the encoding list in --longhelp instead of possibly, again, writing junk
  from memory in there.
- Not linking libmpg123 against libltdl anymore (bug 215).
- Update MSVC++ ports a bit to make them work again.

1.22.0:
-------
- libmpg123 version 41
- Build fix: Avoid name clash on OSX SDK with "normal" being defined in
  an enum already.
- More resilience against folks who do not check errors and rather pass
  NULL pointers around (see NEWS.libmpg123).
  This changes some return values to MPG123_BAD_HANDLE instead of MPG123_ERR
  (always check for != MPG123_OK).
- Fix WAV writing to stdout on Windows (bug 214).
- Rework Xing/Info/Lame tag parsing, also detecting short ones without
  the TOC now.
  In addition, the warning about file size being off is a _lot_ more
  accurate now.

1.21.0:
-------
- Use LL as shortcut for LOADLIST remote command, L is taken already (bug 210).
- Less namespace pollution (MPG123_EXPORT in header instead of EXPORT, bug 212).

1.20.1:
-------
- Make feed reader more efficient when skipping junk by early discarding
  of data from buffers to avoid re-parsing.

1.20.0:
-------
- Added NEON optimized decoder for AArch64 (ARM 64bit environment)
-- enabled for --with-cpu=neon64 (NEON only) or --with-cpu=aarch64 (runtime
   switch between neon and generic_fpu, like arm_fpu) configuration
-- compatible with aarch64-linux-gnu toolchains (from Ubuntu, debian)
   and Xcode 5
- Added new binary out123 only with the audio output part of mpg123.
  This is a precursor to separating out said code into a simple audio
  output library. It also allows plugging in some processing in a pipe
  before feeding to output.
- Prevent opendir(NULL) for unknown module directory when listing modules.
- some build fixes, among those fixing mpg123-id3dump on Windows

1.19.0:
-------
- libmpg123 version 40
- Support float and 32/24 bit integer output also with fixed-point decoders
  (conversion from 16 bit precision).
- A-Law output encoding is actually implemented now (Michael introduced
  the encoding back in the old days without ever implementing theconversion
  table, apparently).
- Added --with-cpu=arm_fpu as decoder choice for runtime switch between
  plain fpu code and NEON.
- Fix ARM builds to work properly on debian systems without special CFLAGS
  (NEON decoder, specifically).
- Make scripts/benchmark-cpu.pl check the return value instead of delivering
  crazy timings for crashed mpg123.
- Trigger track initialization in mpg123_info() to avoid use of uninitialized
  variables (watch out for MPG123_NEED_MORE return value!).
- Fix integer code to 32 bit numbers where it would waste 64 bit on
  modern systems.
- Add non-executable stack marking also to ARM assembly.

1.18.1:
-------
- Do not close buffer twice with mpg123 -R (delete outdated code in
  control_generic(), fixing bug 207.
- Do not mess around with first command line argument to extract program
  name, use a copy instead, fixing bug 205.
- Prevent premature exit on timing of failure to open a track in the
  playlist and the user wanting to skip over it (bug 206).
- Fixup of HTTP socket mess, also avoiding unnecessary FILE objects (bug
  204, patch by Rajeev V. Pillai).
- Fix playlist behaviour on slow HTTP streams, jumping back ('d' key)
  from first track stays at first track (thanks to Rajeev again, sub-bug of
  bug 206).
- Fix Frankenstein check not to stumble over ID3v1 tags. My apologies. As
  a bonus, the position of the concerned code in the parser is now far
  more logical.

1.18.0:
-------
- libmpg123 version 39
- Big version increase for clear distinction regarding the 1.14.x regression
  fixes in libmpg123.
- Regression fix: Ensure decoder reinitialization on combination of seek
  and resync (buffer overflow bug 201, introduced in 1.14.1).
- Regression fix: Make parsing really end on reaching of junk limit
  (introduced in 1.14.4).
- Add check for bad bit allocation value in layer I decoder (removes
  audible glitch in bug 201 test file).
- Avoid wrong error message about Frankenstein streams when gapless
  decoding disabled.
- Be verbose about big header changes (Frankenstein streams). Note that
  changes in samples per frame will confuse the seeking code, but decoding
  can get through.
- Actually use the full routine to close tracks. Avoids socket leak when
  playing multiple HTTP streams from a playlist (bug 203).
- Send correct host header when connecting through HTTP proxy (bug 202,
  figured out by Rajeev V. Pillai).
- The console application now informs about changed major stream properties
  (prints out another header line).

1.17.0:
-------
- mpg123-id3dump --no-scan; for speedup
- hide -C parameter from mpg123 --help when it is not supported
- added tinyalsa Output (by Jarno Lehtinen)
- build system tweaking
- some care for fixing Cygwin builds

1.16.0:
-------
- Taihei strikes again:
-- New Huffman decoding scheme (configurable, on by default) brings nice
   boost to mpg123 to make it the fastest decoder on modern CPUs again.
-- new AVX decoder
-- assembly-optimized DCT36 for SSE and AVX
- added configs for vintage 3DNow(ext) CPUs (AMD K6) utilizing assembly DCT36
- added configs for vintage SSE CPUs (Pentium M), utilizing C DCT36
- added FORMAT command to generic control
- added support for ID3v2 APIC frames
- added mpg123-id3dump as official companion to extract meta data
  (including writing of album art from APIC to files)
- added mpg123-strip as official companion to strip dirt out of MPEG streams
  (including meta data)
- not deleting ID3 data right after printing in generic control
- module loader a bit more flexible with relative MPG123_MODDIR
- Fix chopped-off playback with pulseaudio output: draining the output
  now on closing.
- SDL output fixup, a) not chopping off end and b) non-fatal underrun
- Fix obvious errors in win32 output ... does it now play the end of
  tracks? Need someone to test this.
- added support for screen and iris-ansi terminals with --title (as prompted
  by patch from sf.net user canavan)
- fixes/enhancements for sgi audio output
- libmpg123: proper largefile aliases for proper systems (FreeBSD with
  one one-and-only off_t
  This enables client software that insists on defining pointless
  _FILE_OFFSET_BITS.
- wrapper script src/mpg123-with-modules to ease the pain of running mpg123
  with modules without installation (setting MPG123_MODDIR)
- removed ALSA 0.5 code (unused for longtime, last GPL-only bit)

1.15.4:
-------
- Writing CDDA data via --cdr works again; had also been broken by attempts
  to catch failing writes because of full disk.
- Also, the return values of WAV/CDR writing routines now properly indicate
  error to avoid stupid endless loop of "smart" audio writing code that wants
  to handle interruptions. Really, --cdr could just go and nobody would miss
  it ...
- Fix stupid bug in mpg123_chomp_string() (introduced in 1.15.1), empty
  lines were badly treated. Only usage in mpg123 is for parsing HTTP redirect
  headers; malicious HTTP servers might exploit that (possibility to zero
  bytes in memory).
- some cleanup for nagging mode
- more resync strictness to really catch (all) cases with changing decoder
  structure; in practice badly needed when disabling seekbuffer (so it's
  your fault, somehow ...) for non-seekable streams, otherwise not really
  an issue because of readahead checking
  I repeat: This fixes possibly fatal behaviour in the parser when readahead
  checking is explicitly disabled (p.ex. via mpg123 --no-seekbuffer on
  http streams). By default, readahead checking is _always_ active!
- build system fixed for automake 1.13 (thanks to Nix)

1.15.3
---
- Fix WAV writing. AGAIN. People love to decode WAV to stdout in various
  ways that started to get broken with me starting to care for people who
  like to write to full disks. I frikkin' HATE this rat race! I'm even
  starting to SHOUT. Now, the code prefers to write no header at all (when
  there is no actual output) instead of possibly writing too many misleading
  ones. Getting the blame for breaking dir2ogg repeatedly while trying to
  cope with one fatal situation that you cannot really cope with sucks. Big
  time. I hope that's it now!

1.15.2:
-------
- build fix with older shells (== in configure)

1.15.1:
-------
- libmpg123 API version 37
- Fix corner case in HTTP communication with missing path in Location header
  (bug 187).
- Prevent nasty alignment issues by not guessing about assembler alignment
  when .balign is available (bug 188).

1.15.0:
-------
- Added --continue (also see scripts/conplay).
- Added number row to terminal control keys for 10% jump points (for
  navigating long tracks).
- Set xterm title always if asked, disregarding the -q switch (if you want
  fully quiet, don't specify --title).
- Enable terminal mode in OS/2 by explicitly checking for and using
  os2term library.
- Getting WAV/AU/CDR writing back to a sane state while still catching
  out-of-disk when writing headers (none in case of CDR) but removing
  that initial test that prevented writing on any non-seekable file (like,
  /dev/stdout to a pipe).
- Added native audio output for QNX (thanks to Mike Gorchak), also improving
  portability of configure script while at that.
- more robust recovery from ALSA issues (device suspend)
- Fix crash in module loader on *BSD.
- Extend time display to switch to hours above 60 minutes (hh:mm:ss,
  ditching the sub-second precision)
- really include dithering in default x86-64 build.
- Fix mpg123_scan() not properly seeking back for all types of files (bug
  3582628 ... it got a different number on sf.net now ... brilliant, folks!).
- Prevent false positives for "Frankenstein!" when using mpg123_scan().
- Fix printing of negative positions with buffer (bug 186).
- Accept application/x-scpls as additional MIME type.
- Try to handle certain Windows toolchains that miss EOVERFLOW.

1.14.4:
-------
Who reworks a parsing and data mangling without really making sure that
things still work like before? I hope I won't do so in future. Not again.

- Fix resync logic to properly work again (used to prematurely end stream
  on bad headers). A regression again, this sucks, but at least we got a
  regression test for that now.
- Fix aeon-old regression (since 1.11.0) about short seeks: Bit reservoir
  was reset also for short seeks that did not break continuity.
- Another damned regression got fixed: Sample-accurate seek for files
  without full gapless info.

1.14.3:
-------
- Fix regression from 1.14.1 in parsing of bad free format streams,
  avoiding apparently endless loops (just very slow reading, in fact).

1.14.2:
-------
- Fix writing of WAV to stdout.
  It is still not the best of ideas to do so, though. At least make sure
  to fix rate and channels.

1.14.1:
-------
- Fix subtle bug that could trigger failure to detect a format change on
  resync when using libmpg123's feeder API.
  That bug has been there since ages but was neutralized by other (buggy)
  behaviour of the parser before the little overhaul. The Law of an Even
  Number of Bugs.

1.14.0:
-------
- libmpg123 API version 36 (see NEWS.libmpg123)
- Add --ignore-streamlength.
- But also deal with concatenated (Frankenstein) streams: Not applying
  gapless cutting once we're over the announced number of frames.
- Also, gapless cutting is only applied if relevant information is
  present. Previously, at least the decoder delay has been cut.
- Add --lyrics for printout of lyrics (from USLT in ID3v2).
- Added handling of SIGUSR1 and SIGUSER2 to terminal control code,
  configurable via --ctrlusr1 and --ctrlusr2.
- Some low-level API added (mpg123_framedata(), mpg123_framepos(), buffering
  and resampling control).
- Added info about input buffer fill to mpg123_getstate().
- ReplayGain: Try to detect LAME below 3.95 for the different reference
  level of 83 dB (adding preamp of 6 dB). Version 3.95 itself (not 3.95.1)
  I cannot detect. User-set gain values are not touched.
- Keep silent about missing bit reservoir when ignoring frames. That is
  the whole point (mostly;-).
- Add the new/old WRITE_SAMPLE variant from MPlayer that makes the generic
  decoder faster on older CPUs (x86 at least). Not on x86-64, though (it's
  not enabled per default there).
- disable 3DNow and 3DNowExt DCT36, which is slow on modern CPUs
- Handle out-of-disk in the file writers (a bit, see
  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=67259)
- Added Xcode project files to build libmpg123 on Mac OS and iOS
- 32 bit output for sndio output (patch by Brad Smith).
- Remote control interface knows LOADLIST command now.
- Now freeing meta data memory after printout.
- Some documentation cleanup, including manpage fixes by quadrispro.
- Re-enabled wildcard expansion on Windows (been broken by unicode file
  name support).
- Fix MMX tabinit syntax (thanks to Marcel Müller for pointing that out).
- Fix SGI audio output (been broken since change to modules).
- Fix some fringe behaviour (mpg123_getformat() triggering needless reading
  of next frame, possibly hitting bogus MPG123_NEED_MORE).
- Resync limit now also serves to increase amount of skipped junk on
  beginning.
- Better separation of stream end and read error (in case there is no
  stream opened, even).
- Don't always complain about failed free format header search (only with
  verbosity level 3).

1.13.8:
-------
- Fix build for ARM Thumb (incompatible assembly in some macros).

1.13.7:
-------
- Fix endless loop in module loader when starting mpg123 in a directory
  that does not exist.

1.13.6:
-------
- Fix output of one random character in -vvv mode for ID3v2.2 frames
  (no buffer overflow, move along, folks;-).

1.13.5:
-------
- Fix reading of ReplayGain values from Lame tag (nobody seen this before?!)
  (both actual values and the distinction between audiophile / radio).
- Accept application/octet-stream as input from HTTP.
- Update man page with encodings.
- Build fixes.

1.13.4:
-------
- Fix bogus error on resync with big offsets (hits systems that have bigger
  off_t than int), bug 3393801.
- Fix windows binary package build script again with plugdir.

1.13.3:
-------
- Fix an endless loop on bad headers, bug 3267863.
- Prevent compiler warnings about unused variables with gcc 4.6 .
- Fix return value handling of getaddrinfo(), bug 3288333.
- Make decwin size computation work for OPT_ARM and sizeof(long) != 4
  (bug 3288360).

1.13.2:
-------
- Updated .NET wrapper (MPG123_SKIP_ID3V2, encsize and mpg123_strlen
  functions) by Malcolm Boczek.
- Fix crash when calling mpg123_decoder() before opening a track -- a rare
  use case since one can choose a decoder with mpg123_new() already.
- Fix format change detection for certain (artificial) concatenated streams
  (p.ex. MPEG 1 frames following MPEG 2 frames).
- Prevent the nasty of bug 3154889: No change of pitch without a current
  audio format. No proper solution, but more like earlier behaviour.
- Fix some compiler warnings.
- Fix a memory leak in the module loader, also some in the examples,
  for being pedantic.
- More use of AC_LANG_SOURCE to silence autoconf.

1.13.1:
-------
- Fix --float and --8bit (MPG123_FORCE_FLOAT, MPG123_FORCE_8BIT) regression,
  caused by introduction of 24 bit formats. (bug 3151597).
  Btw: The use of specific format choice via `mpg123 -e f32` and friends
  is encouraged (meaning mpg123_format_none() / mpg123_format() calls in
  libmpg123 API).
- Loosen the parser restrictions: Allow the private header bit to vary. It
  is not mpg123's business anyway (finally suggested by Marcel).

1.13.0:
-------
- libmpg123 API version 29 (see NEWS.libmpg123)
- New optimization: ARM NEON (Cortex A series) -- kudos to Taihei, again!
- Added 24 bit integer output (truncation of 32 bit integer).
- Cleanup of symbols for the static library: Only have global symbols that
  are actually needed, prefix them with INT123_ to avoid conflicts.
- Added --streamdump to get a copy of the data libmpg123 used.
- Added --icy-interval and tweaked libmpg123 to make playback of ICY stream
  dumps possible.
- Added possibility to set module file suffix at build -- to be able to
  avoid .la files for plugins.
- Removed compiler directives for alignment and disable associated tests.
  The tests don't work on a wide range of compilers anyway, and newer gccs
  do have force_align_arg_pointer to fix bad stacks.
- There is no ChangeLog file anymore... it was autogenerated from subversion
  log anyway, so look there if interested.

1.12.5:
-------
- Fix bug with the new meta data printout of the mpg123 app; embedded
  null bytes in UTF-8 strings in non-UTF-8 environment would trigger buffer
  overflow.
  Thanks to Jakub Bogusz of PLD Linux for the tip. And yes, shame on Thomas
  for changing working string handling code. At all.

1.12.4:
-------
- Fix formatting of meta data printout in UTF-8 (string length computing).
  As a collorary, ID3v1 data is reduced to ASCII in UTF-8 environment,
  as we do never know what specific encoding that has.

1.12.3:
-------
- Fix a long-standing bug that subtly broke http streaming with ICY meta
  data when reading a bit more quickly, like when using the buffer.
  I was a very simple and embarrassing bug, actually ... and it made
  me wonder how normal streaming still worked rather well, generally:-/
  Thanks to Lint for staying with us and reporting bug 3022850, to finally
  get a grip on streaming reliability.

1.12.2:
-------
- Fix for nasty memory corruption on configurations that hand out addresses
  in the upper half of the memory space (the poiner alignment function broke
  in that case, bug 2996045).
- Various build and portability fixes (including making some exotic
  configure switches work (again)).
- Add dump_seekindex example
- Sync mpg123_clr to 1.12 feature set, patch provided by Malcolm Boczek
  And actually include it in release tarball!
- Rework mpg123.h logic for large file stuff a bit, clients can control
  it by defining MPG123_NO_LARGENAME or MPG123_LARGESUFFIX.
- Include dumb wrappers to provide names suffixed with _64 on 64 bit
  machines and _32 on 32 bit machines, respectively, to help clients that
  insist on defining _FILE_OFFSET_BITS where it is not needed (or with a
  non-large value).
- Tuning of the internal buffer code for feeder mode to minimize its
  performance impact (works in 4K blocks now).
- Workaround for compiler bugs in Open64/PathScale/SunStudio (bug 3004396,
  suggestion by Doug Gilmore).
  Note that Sun Studio is still a tricky fellow, at least when it comes
  to our preprocessed assembly.
  Also, x86-Open64 recently produced another segfault in layer3.c on my
  box... GNU and intel compilers are what one can use as something stable.
- Make mpg123_getformat() return more error codes (like MPG123_NEED_MORE).
- Fix handle I/O for clients with small file offset (32 bit when libmpg123
  has 64 bit).
- Fix 3DNow(Ext) standalone builds.

1.12.1:
-------
- Update INSTALL for the dual-mode library. No code changes.

1.12.0:
-------
Attention: This reverts the big bad libray name change. People did not
like libmpg123_64.so at all ... so Thomas went along with proving that
being responsible for a open source library package sucks for your life --
he coded large file dual-mode into libmpg123. One library with both APIs,
like glibc.

- libmpg123 25.0.25:
-- The separate libraries are gone again, this one is dual-mode (using
   ca. 750 lines of not very funny code).
-- The library even translates callbacks between large file support modes.
-- Introduce handle-based custom I/O in libmpg123.
-- The header now defines MPG123_API_VERSION to help compile-time detection
   of available functions (lib is version 25.0.25 now... MPG123_API_VERSION
   is 25).
- Make the usage of AI_ADDRCONFIG dependend on a configure check. This
  flag is not available everywhere.


1.11.0:
-------
Attention: There was a re-release of the source archive, because the
initial one missed the actual changes for the library name.
Sorry for the inconvenience:-/

- Big bad libray name change for builds with enabled large file support.
  That will break libmpg123 binary compatibility on Linux/x86 when upgrading
  from mpg123>=1.5.0 with enabled large file support. You need to relink
  with the new library called libmpg123_64.
  If you do not enable large file support, or it is implicit on your
  platform (x86-64), the library keeps the old name of libmpg123 and
  everything is fine.
- Assembler cleanup:
-- no use of compiler-based stack alignment (for SSE), helping portability
-- mostly performance neutral, hint at faster decoding for the dynamic
  build and slower for static, but small change in any case
- Windows networking (access http streams in mingw builds).
- Do not ask for addresses that do not have matching interfaces configured
  (IPv6 on a IPv4-only host, for example). That can help with broken DNS
  servers that choke on IPv6 addresses (T-Online Speedport W502V, for example). 
- Fix a potential ICY reading problem were ICY metadata could be read as
  mp3 data (basically for MPEG frames bigger than the ICY interval).

1.10.1:
-------
- Help multilib setups that boldly assume that headers are invariant
  by removing the consistency check in mpg123.h and instead just adding a
  suffix to relevant functions when _FILE_OFFSET_BITS is defined. Invalid
  setups will now fail at the linking stage instead of the preprocessing stage.
  That should cover bug 2934488.
- Fixes for gapless decoding:
-- Correctly skip padding larger than one MPEG frame (strange, but occurs).
-- Bug 2950218 (proper gapless cuts for seeking near the end).
- Make sure the search for the first header aborts after 64K of one-byte
  reads, as always intended (bug 2951334).
  Certain files (or even random data) were able to fool mpg123 sufficiently
  enough that it basically reads through the whole file in 1-byte steps
  in search for MPEG data.
  The limit of 64K will very likely be configurable in a future mpg123
  version.
- Fix subtle bug with seeking in feeder mode: A seek close to the current
  position (meaning: the needed data offset is already in mpg123's buffer
  chain) resulted in skipped bytes.
- Improve the feeder mode for handling large amounts of junk at the
  beginning, including proper passing of the request for more data when trying
  to determine free format frame size. This also fixes endless looping as
  reported in bug 2951334.
- The parser code still needs overhaul. It is not pretty.
- Compile fix for OpenAL.

1.10.0:
-------
- Confirmed/fixed on OS/2 platform.
  At least a static build works with native audio output and generic decoder.
- Make modules work with libtool-2.2.6b .
- Added pitch command to control interface.
- HTTP header field and MIME type parsing now case-insensitive (fixes
  bug 2904736).
  Also, the MIME-parsing for non-playlist URLs is done the same way as
  from playlists now.
  And, we interpret MIME types only to before a ";" (see bug 2836904).
- There is a build-time option to enable unicode file names on windows
  now. UNIX (Linux) does not need that, UTF-8 works natively.
  An unicode-enabled build of libmpg123 expects file names as UTF-8 strings,
  opening of non-utf8 strings (by old applications) still works via fallback
  when the conversion of the string or opening of the file failed.
- Also, on Windows, --realtime now works, along with added granularity of
  the new --priority parameter. Note that you get the latter functionality
  through nice/renice on UNIX, no need to add that to mpg123.
- Added experimental framebyframe API.
- Added a new Microsoft common language runtime wrapper (aka .NET wrapper)
  written by Malcolm Boczek. See ports\MSVC++\2008clr\mpg123clr\ReadMe.txt
  for further information
- Added Visual Studio 2010 Beta 2 project files for libmpg123
- Updated autotools machinery, autogen.sh is gone, use `autoreconf -iv`.

1.9.2:
------
- Fix logic failure in gapless code: The trailing silence was only cut on
  the first decode. So, seek-back and decode again never was gapless:-(
- Fix linker flags on MacOS 10.6 .
- Improve portability (mainly for Solaris/x86, possibly others).
- Fix reading from standard input in Windows (use binary mode).

1.9.1:
------
- Fix OpenAL output issue (bug 2840085)
- Fix theoretically possible discarding of some audio samples when getting
  a new format.
- Fix unwanted verboseness (some error messages from library even when
  MPG123_QUIET was specified).
- Fix back-to-beginning for feed_skip (fixes bug 2859531).
- Fix the CPU creep bug with NtoM decoding.
  That one has been nasty on you with large files since bad frame fillup
  has been introduced.
- Fix regression (since 1.9.0) in ID3 parsing: Now Foobar2000 RVA fields
  are interpreted again (among others).
- Fix some compiler warnings, minor cleanup.

1.9.0:
------
- Free format support.
- ARM assembly optimizations (yay Taihei again!).
- Dither noise now runtime-generated, thus less bloated binary (thanks
  Taihei...).
  This means that dithered decoding is now included per default.
  Please note that work is ongoing to improve the dithering quality,
  more to come.
  For example: Accurate rounding to 16bits is now always used for generic
  dithered decoder, there are plans to adapt the noise for different
  sampling frequencies.
- Buffer plays any audio type now.
- New output module: OpenAL
- Bug fixes:
-- Broken frame fillup for non-signed 8 bit formats with correct zero
   (bug 2805665)
-- Crash on invalid UTF-16 in ID3 tags fixed (thanks to Andy Hefner)
-- Bad detection of separated UTF-16 strings in ID3 tags (bug 2834636).
- Topic ID3 and UTF: Now we are more tolerant with UTF16, even accepting
  those broken tags that id3v2 produces (multiple conflicing BOMs).
- Build system allows AltiVec on non-Macs now (don't enforce unsupported
  gcc flags).
- Terminal control mode is more verbose (gives hint about pressing 'h').
- The library now offers a switch and small API to defer translation of
  ID3 text data until client app wants to do it (or not).

1.8.1:
------
- Include improvements to integer decoder from SVN trunk.
  They have been accidentally promised on 1.8.0 release announcements,
  though they were not there. Here it is: ISO compliant fixed point decoding
  (speed optimizations are still reserved for next release).
- Fixed build with ./configure --enable-modules (bug in configure script).
- Fix name of binary in help screen when called with path.
- Build fix for old gcc with AltiVec code.
- Update of Sony PSP build files.

1.8.0: (The Taihei Monmament)
------
- New and improved SSE optimizations! For x86-64, too! Also AltiVec! Fast
  float output! Faster stereo!
  Finally, this should put mpg123 into the efficiency-leading position on
  current hardware! Thanks go out to Taihei Monma for pushing lots of new
  assembler code.
- Added proper rounding modes to 16bit integer.
-- Use ./configure --enable-int-quality to prefer accuracy over speed.
-- Accurate code (generic, SSE, 3dnow -- i586 has always been good)
   delivers ISO compliant quality with 16bit output.
-- Uses fast rounding for IEEE754 floats.
-- Mpg123 can do fully ISO compliant MPEG audio decoding to 16bits (of
   course to 32bit float/int, too).
- subtle performance enhancements via broader data alignment
- Prefer SSE code over 3DNowExt.
-- It can be tight, but generally our new SSE code is better on CPUs that
   can do both.
- Remove HF cutoff (SFB21), has been introduced in 0.59r .
- Fix layer 1 regression (been there since version 1.x).
-- Layer 1 ISO compliance test is positive now.
- Fix layer 2 regression (false positives header change).
-- Layer 2 ISO compliance test is positive now.
- more sample-accurateness
-- Clear frame buffers before seek.
-- Decode 4 frames in advance for layer 3 (2 for layer 1 and 2) per default.
-- Number of layer 3 frames to decoded in advance (and fill bit reservoir) is
   runtime tunable (--preframes).
- Do not stop decoding after stray ID3v1 tags in streams (bug 2793677).
- Fix handling of negative RVA2 values in ID3v2 (bug 2792417).
- Discard bitreservoir of previous frames if a resync is needed.
- improve perceived randomness of --random (do not repeat too early)
- Fix special crash case in UTF16 conversion for ID3v2.
- MPG123_MODDIR environment variable for changing module directory at runtime
- arts output fixes (bug 2715128)
- win32 output swallowing less buffers at end (but still some audio is lost,
  bug 2722991)
- tested mpg123 on OS/2; it works, but not the native audio output
  (SDL works)
- WAV output announces supported output formats correctly
- fix buffer startup to make sure the first bits of audio are not discarded
  (bug 2796802)
- re-enable the --gain parameter (the move to modules disabled that),
  untested
- Libltdl is _not_ included anymore.
-- The host system is expected to provide it, otherwise plugins are not used.
-- Our copy does not get in the way anymore.
- enhancements of the MSVC++ builds, including optimizations using yasm
- general build system fixes
- Legacy build system is gone.
- code cleanup
-- signed/unsigned integer usage, make compilers more happy)
-- simplified synth selection code (it is _less_ code now, and does more)
- Fixed behaviour of MPG123_NEW_FORMAT: Now it does not stop you from
  just continuing decoding without querying the (new) output format, this
  behaviour regression had been there since somewhen after 1.4.3 .

1.7.3:
------
- Fix a regression introduced with the --doublespeed fix. Now seeking should
  be a lot smoother again.

1.7.2:
------
- Fix a possible vulnerability in the ID3 code (negative encoding values).

1.7.1:
------
- Just one fix for making the RVA switch in terminal and generic control mode
  work again (instead of plain silence).

1.7.0:
------
- Lots of output format fun!
-- now supporting 8, 16, 32 bit signed/unsigned integers,
   32bit float (64bit float can be hacked in quickly)
-- optimized decoders use fallback routines for non-optimized
   formats transparently
-- flexible resampling is automatically chosen when output does
   not support standard rates (like a JACK server)
-- That meant quite some restructuring in the decoder code...
- Lots of core functionality now optional, enabling small-footprint
  builds of libmpg123.
-- choosing among the MPEG layer codes
-- NtoM resampling
-- downsampling
-- feeder API (mpg123_open_feed())
-- ID3v2
-- String API
-- ICY
-- output formats
-- error/warning message printouts
-- ... a layer3-only shared libmpg123 can be just 107K on x86-64
   or 94K on x86
- --preload (tune prefill before playback for buffered mode)
- win64 support (one report at least;-), modules working on Windows
- Windows/MSVC++: fixed handling of unicode file names,
  mpg123_topen() now actually working there
-- You are obliged to use mpg123_tclose() now!
- using "plugins" subdir relative to mpg123 binary
  (in addition to ../lib/mpg123)
- switch to libtool 2.2 and automake 1.10 for the build scripts
-- though no update to new libtool 2 API, yet
- some portability fixes
- prevent user from creating non-working I/O setups
  (replacing timeout reader, ICY with feeding)
- JACK output accepts port names for -a, stereo gets mixed down
  when only one port is chosen
- added sndio output, contributed by Christian Weisgerber
- Make --doublespeed paramter work, porting of which has been
  forgotten in the 1.x series!
  Along with that, a regression in decoding has been fixed
  (concerning skipping of frames in general). 

1.6.4:
------
- Fix for consistent NtoM resampled decoding and broken frames fillup.

1.6.3:
------
- Fix sf.net bug #2413608: Make sure a new format does not slip through
  after early close.
- Include equalizer example file and a piece of wrapper code for MSVC++
  in the distribution.
- Do not claim to support unsigned 16 bit encoding (never been the case).
- Fix default fifo detection, now it actally activates fifo support!

1.6.2:
------
- Fix default IPv6 detection in configure.ac (a typo has been introduced
  before).

1.6.1:
------
- Fix printing of largefile offsets in remote control interface.
- Some portability fixes (reduced compiler warnings on Solaris, p.ex.).

1.6.0:
------
- small things inside that I forgot to mention
- some new commands for remote control interface:
-- SCAN
-- SAMPLE
-- EQFILE
-- SHOWEQ
- added --keep-open command line flag (for remote control)
- fixed equalizer file parsing to really handle comment lines as example file
  suggests
- more elaborate detection of UTF-8 locale, also --utf8 switch to force it
- added --fuzzy to enable inexact seeking (see below)
- added --index-size parameter for tuning accurate frame seek index
- enabling largefile support via configure
- libmpg123 11.0.11:
-- added mpg123_geteq(), mpg123_tell_stream() and mpg123_getstate()
-- API cleanup (take const char* for mpg123_open())
-- calm down complainling (C++) compilers by completing the mpg123_channels
   enum
-- fixed several possible crashes when user provides NULLs where it isn't
   appropriate
-- workaround for frames that fail decoding (bad frame body, missing bit
   reservoir): fill up with silence
   That also fixes seeking issues related to bad frames since now the
   fixed relation between frame and sample offsets is restored.
-- Finally realized what that the resampling code for integer math
   (generic_nofpu) was just incomplete!
   Now it works, using the defined integer multiplication.
-- Detect UTF-8 in ICY conversion (instead of just assuming CP-1252,
   provided by Torsten Glaser).
-- Prevent ugly noise when the bit reservoir is not fully there
   (p.ex. ignorantly cut mp3 files).
   Concerned frames are silenced, but reservoir for following frames
   is kept.
   Thanks to Patrick Dehne for the investigation and patch!
-- New option for fuzzy seeking; trading sample accuracy for speed.
   With that option, seeks positions are guessed using mean framesize or
   the Xing VBR TOC is used.
-- Feeder streams work with seek index now.
-- Seek frame index is runtime tunable.
-- more caution with alignment issues for varying library users
- new project files to build/use libmpg123 with MSVC++ 2005 and 2008,
  provided by Patrick Dehne
- fixed a regression that made the pause/loop mode in terminal control
  slowly go backwards

Big note for libmpg123 users: Make sure your application is compiled
with the same largefile setting as libmpg123!  If that does not match,
you will get unresolved symbols (which is better than weird errors when
using a nonmatching off_t in arguments;-).

1.5.1:
------
- fix wav/au/cdr writing to stdout (bug #2044423)
- add more sensible --no-resync to replace --resync (bug #2044404)
- libmpg123 7.0.7
-- fix thread safety of SSE decoder (bug #2053181)
-- fix robustness of length handling, added mpg123_set_filesize() (bug #2064322)

1.5.0:
------
- libmpg123 6.0.6
-- Floating point decoding back again, (build time choice for now;
   --with-cpu=generic_float).
-- More robust string handling; extended string API.
-- fixed an (so far) unnoticed ID3 bug that may have obscured comment fields
-- added mpg123_feed() as shortcut; using const input buffer now
-- resync is enabled again for ICY streams (the trouble in the past was
   due to a reader bug, not the streams)
-- decode ICY text data to UTF-8 (thanks, Thorsten)
-- preserve file flags for timeout mode
- More elaborate (helpful?) error message for output format problems.
- Reworked HTTP code... and added IPv6 support!
- Fix the --proxy parameter (has been accidentally ignored before).
- Added --ignore-mime to work with web streams with funny playlist MIME
  types like "audio/megurl".
- Know MIME audio/mpegurl.
- --timeout is now also used for the connection itself (not just reading).
- Now trying to resume ALSA device after suspend.
- subtle build changes (your CFLAGS rule now)

1.4.3:
------
- Fix mpg123_tell() and mpg123_seek() return values with respect to the
  samples in decoding buffer (bug 1947373).
- Fix (bogus) 3DNow detection on IDT C6 (bug 1947982).
- Fix mono playback of win32 output (bug 1955157).
- Fix ABI compatibility with compilers that don't align the stack like
  gcc does (fixing SSE crashes on win32).

1.4.2:
------
- Fix build problems (for Cygwin and Win32, perhaps others, too).

1.4.1:
------
- Fix a serious regression of terminal control mode (forgot to remove a
  term_restore(), bug 1936548).

1.4.0:
------
- Enable runtime check for available and working output modules.
  Now mpg123 tries all built modules (or a list specified in
  mpg123 -o moda,modb,modc) in turn to find a working output. This minimizes the
  situation of having to specify a device when default output doesn't work for
  some reason.  See bug 1910500.
- libmpg123 2.2.2
-- Fixing an endless loop for ICY streams that suddenly end without error
   (just EOF).
-- Further fixes around EOF handling in (buffered/ICY) streams.
- Enable user to interrupt mpg123 when stuck in a loop of failing to open a
  track (with --loop).
- This time with correct RPM spec (hopefully... sorry, Michael!).

1.3.1:
------
- Enable snd_pcm_sw_params_set_xfer_align() for alsa-lib < 1.0.16 (bug 1908603).
- libmpg123 2.1.2 (no-op change)

1.3.0:
------
This is a _major_ fix release for http streaming!
Much more usable than earlier mpg123 1.x versions.

- libmpg123 libtool-version 2.0.2
-- Fix nasty bug in ICY reader that failed to account for partial reads
   from slower network.
-- Now non-seekable streams can get peek-ahead for MPEG sync, too, triggered
   by the MPG123_SEEKBUFFER flag.
-- Do not try to resync on streams with ICY metadata, that won't work.
   Consequently, if there's unreliable network, use --loop -1 to make
   mpg123 reconnect to the server on errors.
-- Applying a few layer 3 decoder fixes from old mhipp CVS (hail to the
   creator;-) That includes the fix for bug 1895025.
-- Fix ID3v2 parser with very invalid claimed ID3v2 frame sizes (could
   have triggered DOS before).
-- Oh, and fixed a steady memory leak in ID3 handling. Should mention that;-)
- Print ICY-NAME and ICY-URL again, as mpg123-0.6x did.
- Added --smooth option for not flusing buffer between tracks but at program
  end only.
- Included some contributed ports/bindings of libmpg123 under ports/ .

1.2.1:
------
- libmpg123 libtool-version 1.2.1 (coincidence!)
-- Earlier check for free format headers to prevent them from screwing up
   resync (free format still not supported)
-- bug 1889051: more flexible resync, not insisting on the format of the
   first frame (which could have been bogus)
- Add an output write loop to handle SIGSTOP/CONT operation (bug 1890563).
- Fixed a bug where playback status for some http streams was not shown.

1.2.0:
------
- libmpg123 libtool-version 1.0.1
-- See NEWS.libmpg123 for details.
-- This adds --resync-limit parameter to mpg123.
- Some build system work, including:
-- It is now possible to build a mpg123 rpm from the source tarball via
   rpmbuild -tb .
-- configure: Accept --with-audio=foo,bar,bla (comma-separated list) in addition
   to --with-audio="foo bar bla".
-- autogen.sh included in distribution.
-- Include the forgotten i486 files in the distribution (now that's embarrasing...).
   Also a little fix for wrong --list-cpu on i486 build.
-- Fix build with MinGW32.
- Fix -v stat output (time display) for MinGW32 build.

1.1.0:
------
- Added arts output.
- More verbosity on lame/xing/info tags (on demand) instead of compile-time
  debugging switch.
- XMMS2 plugin cleanup (submitted to XMMS2 for inclusion)
- Improved ID3v2 robustness (let bad tags not affect playback of the important
  part).
- Terminal control:
-- Key for going to previous track ([d], because it's left of [f] usually...
   no config file yet for that).
-- Key for printing current playlist, [l].
-- Now possible to switch on verbosity also for mpg123 -q -C
-- Key for (re)printing ID3 tag info ([t]).
-- Key for (re)printing MPEG frame header info ([m]).
- Soften the -q option: Now you are able to increase verbosity after -q
  again, like mpg123 -q -v (this fixes cplay's progress display).

1.0.1:
------
- Fix module loader to prevent crash in working paths with more than 49
  characters length (bug 1859413).

1.0.0:
------
- Fixed Pulseaudio.
- Cleaned up configure.
- Pushed remote control version to v3.
- Updated documentation.
- Fix VPATH build for generated mpg123.h .

1.0rc3:
-------
- Fixed JACK output.
- Disable buffer when statically building CoreAudio in (MacOSX); with
  CoreAudio module the buffer works, with static output it doesn't.
  This is the situation because of fork() discrimination by Apple Inc. .
- Added verbosity to tell about ID3v2 text encodings (level 4).
- minor cleanup

1.0rc2:
-------
- Fixed some bugs, the ID3v2 interface of libmpg123 is safer now (there
  were possibly stale pointers in there).
- Buffer mode got vital improvements (yeah, that is sort of feature creep
  during release process, but worth it)
  The improved communication makes it possible to skip tracks in terminal
  control mode without the hack to immediately restart playback.
  To be able to do seeking in terminal mode with buffer properly, buffered
  playback stops on seek keys. You restart playback after you are done
  with seeking.
- Support either portaudio v18 or v19 API (v18 works for me, v19 works
  according to user report).
- Audio output handling got safer and more clean, a byproduct of implementing
  the above. I stumbled over some things and had to fix it (yeah, feature
  creep in parts again, but still: Worth it!;-)
  Any audio access is now restricted to either that standalone mpg123
  process or the buffer process, the output being opened _after_ the fork().
  There is hope that this fixes buffered output on MacOSX.
- More feature creep, this time because of something like that was already
  included in the Debian mpg123:
  --delay parameter to issue a pause before each track (does not make
  sense for file writing outputs, though).
- Even more feature creep: remote control can now give ID3v2 data, also
  in more raw form via new "tag" command.
  This sort of qualifies as bugfix, actually, since it's item 1786430 on
  the tracker;-)
- Make flexible rate computations more safe (especially on 32bit platforms)
  by switching to the looping code instead of direct multiplication/division
  (which blows up with integers). A possible effect was premature track
  ending with a forced rate.
- Flexible rate mode works _at_all_ again with fixed output support
  detection code (comparison of -1 with a size_t ended a loop all too early).
- check for error in flushing output (this ends mpg123 for a broken pipe,
  for example)

1.0rc1:
-------
- In one word: LOTS!
- Many small things that happened while migrating to the new setup.
- The decoder is now a library (libmpg123) which can be installed also
  for other programs to use. This finally provides a heavily improved
  replacement for the aged mpglib. We have doxygen API doc, example codes.
  You can still choose to compile the decoder statically into the mpg123
  binary, though.
- We have a plugin system for audio output! This should be relieving to
  package maintainers for binary distributions, drastically reducing the
  number of builds they have to provide.
  Here, too, you can choose to build one audio output into the binary
  like before; you can have your old-school one-piece mpg123 or the hip
  I-am-legion shared-lib-and-plugin flexible mpg123;-)
  One exception: For now, you have to compile without modules in
  MinGW32/MSYS.
- ID3v2 support has been enhanced and, in the case of specific comments
  (those with a description), fixed.
  The ID3 parsing is part of libmpg123, offering support for virtually
  all textual information in ID3v2.2, ID3v2.3 and ID3v2.4 tags (along with
  the usual 128 bytes of ID3v1 or ID3v1.1 in a block).
  All tag texts are converted to UTF-8, allowing mpg123 to properly display
  special chars in an Unicode terminal without fuzz (for non-UTF locales,
  there is still the ASCII reduction).
- Gapless decoding (of layer 3 streams) is now considered to be a standard
  feature and is enabled per default both at build- and runtime.
- ...

0.68:
-----
- Fix bug 1807964: distorted playback of MPEG 2.5 files

0.67:
-----
Thanks go out to the ROM 106.5FM team (http://www.rom.lu/) for supporting
this release with a donation on sf.net and a bottle of finest Gewuerztraminer
wine from Luxembourg!

- verified that it builds on SGI IRIX 6.5 for MIPS32 and MIPS64
- enable flexible rate for stdout decoding, too
- UTF8 filtering to ASCII finally works thanks to Mika Tiainen, see bug 1745847
- corrected frame offset; -k was off by one
  This means now that -k disagrees with mpg123 0.59r on many files because
  the old version does play a frame of silence when encountering LAME tag
  instead of dropping it for audio.
- added --timeout <n>: Possibility to end playback on a stream that doesn't give
  data for <n> seconds.
- added --loop <n>: for ... well... looping playback of a track; motivation was
  persistent internet streaming with unreliable connection (together with --timeout)
- build fixes
- use movap instruction in SSE assembly when compiler supports the needed
  alignment (idea from MPlayer)
- show decoder options in their priority order in --list-cpu/--test-cpu
- added Perl script to benchmark each of mpg123's CPU optimizations
- portability enhancements and cleanups along with testing on SunOS 4.1.2
  with gcc-2.7.0
- workaround for ugly flexible rate for MMX/SSE/3DNowExt code:
  --with-cpu=mmx also includes i586 code as fallback; similar with the others

0.66:
-----
- support for a combined build of x86 optimizations and runtime selection
  among these The (supposedly) "highest" CPU-supported optimization is chosen
  by default, --cpu, --list-cpu and --test-cpu parameters are there for you to
  take control.
- default build for x86 systems is combined "x86" with generic, i386,
  i586, MMX, 3DNow, SSE, 3DNowExt; "x86_dither" also includes the dithering
  i586 decoder
- no automatic -march compiler flags anymore; the --with-cpu configure option
  selects specific assembler code but special CFLAGS are up to you
- extended 3DNow and SSE optmizations from MPlayer's mp3lib
- x86 assembler optimizations adapted for MacOS X/Intel
- straight support for Windows using MinGW32, reactivated the native
  WinMM output. Core functionality including assembler optmimizations
  and WAV writing is there.
- assembler optimizations also for cygwin
- set remote-err automatically when putting audio to stdout
- a bit more general portability in the new build system
- fix file creation mode for -O
- experimental decoding to 32bit float (raw and WAV file): ./configure
  --with-cpu=generic_float
- generic control interface (-R) can create and read from a named pipe,
  parameter --fifo <path>
- audio bugfix: playback of mono file on stereo-only hardware, better
  error reporting there
- ALSA output handling underruns
- MMX, SSE and 3DNowExt fallback to i586 and below or 3Dnow for forced
  sample rate
- more terminal control: volume, RVA and verbosity controls

0.65:
-----
- now allow crc bit to vary over stream (fixes files with bad lame tag
  and some internet streams)
- do not try to parse id3v2.2 (as opposed to 2.3 and 2.4)
- correct id3v2.3 parsing for not expecting syncsafe integers for framesize,
  2.4 introduced that
- omit gcc specific compiler flags when gcc is not there
- initital attempt to support sgi/irix with configure (please test)

0.64:
-----
- fixing a potential denial of service problem; broken connection to server
  could trigger an endless loop

0.63:
-----
- build fixes, only relevant to developers and people who had problems building

0.62:
-----
- JUMP command in generic frontend accepts offsets/positions in seconds
  (JUMP 4s vs. JUMP 4)
- initial support for ICY meta data in SHOUTcast streams
- a bit of fixing with rva code, added rva and general volume control to
  generic frontend
- accepting more MIME types for http streaming (application/pls and
  audio/x-mpeg)
- ID3v2 info output taking less space per default - more resembling the
  old ID3v1 view for short tags, full view with always one line per item
  via extra --long-tag switch
- generally less verbosity (i.e. noise on console) per default
- ID3v2 now having some kind of support for unicode; trying to print what's
  latin1-compatible and prevent messing up of terminal with unknown bytes
- several bug fixes and small improvements

0.61:
-----
- improved AltiVec code from Taihei Monma
- an i486 optimization by Petr Salinger
- improving interactive experience (terminal, frontends)
-- prevent/lessen bad effect after seeking while paused
-- show targeted position while seeking in terminal mode while paused
-- not messing up terminal on unexpected errors
- decoder robustness - better file sync (weird junk at beginning, some vbr
  frames)
- build system improvements:
-- fixing configure isses on some platforms
-- adding cygwin, kfreebsd
- extended fix for CVE-2006-1655
- generic code should compiling again...

0.60 final: (The Team!)
-----------
- no functional changes

0.60-beta6: (Thomas Orgis)
-----------
- more use of ID3v2 tags, mpg123 now displays both (merged) info from
  ID3v2 and ID3v1; trying to support both ID3v2.3 and ID3v2.4, but ignoring
  encoding (UTF8 should still work if your terminal supports it, straight
  unicode should work except for parsing genre numbers and multiline strings)

0.60-beta5: (Thomas Orgis)
-----------
- more robust playlist support:
-- path/url length not limited to 1023 characters anymore
-- reading in of whole playlist at program start (old operation was not
   really safe with playlist from http)
-- fixed bug where reading of playlist form stdin caused segfault (introduced
   with the pls format support)
- smaller cleanups, screen output cosmetics

0.60-beta4: (Nicholas Humfrey & Thomas Orgis)
-----------
- proper seeking, also for VBR streams
- real two-way seeking in remote control mode at all
- better estimates of remaining frames (on vbr files), exact if Xing header
  is found
- Removed libao support (as it is GPL and we aren't - and we don't need
  it with native Alsa)
- Added ALSA 0.9/1.0 support by Clemens Ladisch (old alsa is in
  audio_alsa05.c but will most likely vanish soon)
- Added PortAudio audio-output support
- Added SDL audio-output support
- Fixed NAS audio-output support
- re-enabled MPEG 2.5, code just seems to work
- improved stream checking; being more willing in general (favor resync
  instead of bail out) but directly give up if free format stream is obvious
- Whee! Initial Relative Volume Adjustment (buzz) support with reading of
  ReplayGain values in lame/info tag, the RVA2 frames in ID3v2.4, ID3v2 TXXX
  tags from foobar2000 (please test, someone!) and custom ID3v2.3 comments
  entitled RVA / RVA_ALBUM / RVA_AUDIOPHILE / RVA_RADIO / RVA_MIX
- more persistence in trying to get http streams

0.60-beta3: (Thomas Orgis)
-----------
- fixed bug with segfault in http code on stream from live365.com -
  bug id 1529266
- made http request HTTP/1.0 compilant again (tested only without proxy) -
  bug id 1529319
- now using http content-type header to check for correct types mpg123 can
  understand
-- you can now always use -@ for a single http resource (direct stream or
   playlist) since a stream will be reopened based on MIME type,
   though omitting it will save you one http request to the server in the
   direct stream case...
- now simple parsing of shoutcast pls playlists (how did you people use
  shoutcast before?)
- playlist mode enhanced with selective playback of one entry in list
  (--listentry parameter)

0.60-beta2: (Thomas Orgis)
-----------
- fixed bug in terminal control mode that caused the f key to quit program
  isntead of advance to next file (introduced by the first attempt to restore
  "normal" Ctrl+C behaviour in terminal control mode)

0.60-beta1: (Thomas Orgis & Nicholas Humfrey)
-----------
On the way to the first new offical realease since years!

- new license: all LGPL except the old audio_alsa.c
- merge with Nicholas' sourceforge package
-- autooled configure/make system
-- MacOSX, Jack, libao (alsa 0.9/1.x support through that)
- experimental gapless playback for layer 3
- merged in MMX and AltiVec optimizations
- security bug fix of GLSA 200607-01 and catching possible crashes found by fuzzing 
- fixed many issues here and there
- polished help messages, updated man page...

UNDERGROUND 0.59r-thor7: (Thomas Orgis <thomas@orgis.org>) (well, I'm going to
------------------------ release a _really_ official mpg123 in future)
- applied relevant stuff from Debian's 22:
-- fix for CVE-2006-1655 (buffer overflow in III_i_stereo())
-- strict aliasing hack in WRITE_SAMPLE of decode_i386.c
-- fixed http streaming through proxy by actually using the request url...
-- buffer resync on Ctrl-C (cleaning, reducing pauses with multiple files)
-- removed unused esdserver variable from mpg123.h
-- did NOT apply the Debian Makefile/manpage changes (going to rewrite that
   stuff anyway)
- made the netbsd-i386 targets visible as netbsd-x86

UNOFFICIAL 0.59r-thor6 (Thomas Orgis <thomas@orgis.org>)
----------------------
- split nedbsd targets for realtime priority selection code; since one
  needs -lpthread with it. standard netbsd target doesn't use realtime code --
  I won't recommend running mpg123 as root anyway!

UNOFFICIAL 0.59r-thor5 (Thomas Orgis <thomas@orgis.org>)
----------------------
- Separated the the use of char* equalfile as filename from the use as
  TRUE/FALSE flag by introducing int have_eq_settings. Compilers kept nagging
  about assigning and integer (TRUE) to char* ... and it feels more right
  this way.
- Made control_generic aware of real being possibly different than float (seq
  command used to raise an FPE on OSF1 when this assumption was not the case.
- Fixed the command line arg parsing to work properly on Alpha (32 and 64
  bit mixup)

UNOFFICIAL 0.59r-thor4 (Thomas Orgis <thomas@orgis.org>)
----------------------
- merged with 0.59r-19 from Debian project (Daniel Kobras
  <kobras@debian.org>), hopefully fixing all those security vulnerabilities
  -> my dirty http_open and open_stream variants now replaced by more
  proper code
  -> still my (rather workloaded) parsing/processing in control_generic,
  but now including the idea to watch out for \n, \r\n and \r (or \n\r,
  for that matter;-)

UNOFFICIAL 0.59r-thor3: (Thomas Orgis <thomas@orgis.org>)
-----------------------
- hacked additional variants of http_open and open_stream that return
  errors instead of exit()ing; makes more sense when used by a frontend
- further cleanup (and return to using continue instead of nested
  if(){}else{if()else{}}) in command processing, better error messages there

UNOFFICIAL 0.59r-ThOr(remote-err,eq,flushing): (Thomas Orgis <thomas@orgis.org>)
----------------------------------------------
- added audio_flush() calls to various places in control_generic.c to
  make sure there is nothing left in there that hurts later (not sure if
  this has effects)
- (re?)enabled (?) code for stream info
- corrected answer of JUMP (now gives actual reached position, +/- 1 frame
  since I'll still have to figure out what frame 0 really is...)

UNOFFICIAL 0.59r-realeq-remoteerr: (Thomas Orgis <thomas@orgis.org>)
----------------------------------
- applied patch from Cool Feet Audio project (nutcase@dtfm.org, see
  README.cfa) to use real-time equalizer in remote mode
- applied patch from AMF (amf.sourceforge.net) by Steve Grundell for remote
  communication not polluting the STDOUT where the audio data is read from
  (instead using STDERR) ... and faster seeking, maybe
  The patches go not cleanly together, but rejects are trivial. Thus,
  a combined patch with both would makes sense.
- modified (IMHO improved) the control_generic command reading: now
  always making sure that the full command is read up to a mandatory \n;
  also reworked the application of the commands afterwards
- added SEQ command: simple eq with only 3 bands
- added SILENCE command: I don't want the playback messages when I don't
  read them (since my frontend is reading the STDOUT it knows what is going on)
- added SLJ command: SILENCE-LOAD-JUMP... a hack for my hacked
  mixplayd... maybe one should remove that again.

0.59r: (MH)
------
- applied audio_alib changes from Ralf Hildebrandt <R.Hildebrandt@TU-BS.DE>
- some 'paetsches' from DK
- minor optimizations in layer3 (dequantize/huffman) 
- BSDOS 4.0 with gcc added to Makefile (<sms@moe.2bsd.com>)
- Solaris-ESD patch from Ryan Prosser <prosser@wam.umd.edu>
- Added Frontend changes from Bertrand Petit <elrond@phoe.netdev.net>
- more DK 'paetsches' (final dk7-clubhaus edition), includes extended term 
  control
- SGI audio fix for non RAD machines from Erik Mouw <J.A.K.Mouw@its.tudelft.nl>
- fixed ugly bug in layer3 dequant for bt==2 (may cause high frequency clitchs)
- AMD-3DNow optimizations in decode and dct64
- OS/2 reworked from Samuel Audet (see audio_os2.c for more)
- added freebsd-esd make-entry from Daniel O'Connor (darius@guppy.dons.net.au)
- added enhanced head_check from D. Skarda <0rfelyus@atrey.karlin.mff.cuni.cz>
- applied 'xterm-title-patch' from "Wilson, Jeff D" <jeff.wilson@wilcom.com>
- more esd changes from Robert Bihlmeyer <robbe@orcus.priv.at>
- applied Hannu Napari's <Hannu.Napari@hut.fi> SGI audio patches
- minor changes in httpget.c and mpg123.c 
- added native AIX support from Juergen.Schoew@unix-ag.uni-siegen.de
- applied playlist patch from <psst@euskalnet.net>
- more SGI audio patches from Gilles Zunino <Gilles.Zunino@hei.fupl.asso.fr>
- applied esdserver patch from Matthew Parslow <roy@alpha.alphalink.com.au>
- added some fixes for control_generic

0.59q: (MH)
------
- ESD fixes
- minor bugfixes (DK patch ;)
- au and cdr 'support' (it's a hack)
- Fixed 'VBR' Bug in get_scale_fac1(). Thanx to <ssonique@hotmail.com> for
  this. (Wasn't really a VBR Bug. The new encoders just triggered it.)
- Added equalizer patch from <dlux@dlux.sch.bme.hu>

0.59p: (MH)
------
- Added mpglib (see mpglib directory)
- 'make generic' is more generic now
- Added HPUX/ALib support from Ducroquet Erwan (ducroque@ufr-info-p7.ibp.fr) 
- Added EsoundD support from <fill it in>
- Added exp. relatime support (compile with -DSET_RT) 
- Added linux-sparc patch from <hmm lost email)
- Added genrepatch from Shane Wegner <shane@CM.NU>
- Added wav-File patch Samuel Audet <guardia@cam.org>
- Added SGI-RAD support from "J. Dean Brederson" <jdb@cs.utah.edu>
- Added sajberplay/FreeBSD patch from Chou Ye-chi <is84002@cis.nctu.edu.tw>
- Added 486 optimizations from Fabrice Bellard <bellard@email.enst.fr>
- Added combined output devices on SUN (ie Speaker and headphones together)
- Added audio_alsa.c (under GPL license) for the ALSA sound system from
   A. Hermansen <ahermans@vf.telia.no> and J. Kysela <perex@jcu.cz>
- Added K6-3DNow patches from  KIMURA Takuhiro <kim@hannah.ipc.miyakyo-u.ac.jp>
- Added MINT patches from Petr Stehlik <stehlik@cas3.zlin.vutbr.cz>
- Fixed minor bug for linux-i486 and mono 

0.59o: (MH)
------
- fixed Bug with stereo streams on mono audio hardware for OSS
- fixed a bug with mono output and 1:1 (no) rate conversion
- again changes in the probe code
- fix in the buffer code for the case, that audio parameters are changing
- more changes to the flexibel rate converter, should now work when
  writing to STDOUT.
- Added Andy's (<andy@snoogie.demon.co.uk>) float2int speed up proposal 
  (check WRITE_SAMPLE in decode_i386.c) .. Maybe someone wanna take the 
  idea and put it into the decode_i586.s part?
- Added TK3Play support from Brian Foutz <foutz@anise.ee.cornell.edu>
  (compiles but untested)
- RIFF Header fix (according to Thomas Niederreiter's
  <tn@tarantel.rz.fh-muenchen.de> patch)
- m68k patch from Stefan Gybas <cab@studbox.uni-stuttgart.de> applied
- minor additional PPC changes applied
- resync and EOF hang fixed
- resync and bitrate correction relaxed 
- Slightly change verbose output; added countdown

0.59n: (MH)
------
- fixed shuffle bug
- added memory mapped IO for file reading
- added MPEG 2.5 12kHz and 8kHz table entry
- started flexibel rate conversion .. 
- new '-Z' / '--random' option 
- minor clean-up
- splitted audio file in audio system dependend smaller parts
- started system stream support (external program: system.c)
- unsigned 8 bit (instead of ulaw) is now default for 8bit operation
- Linux PPC patch from Grant Erickson <eric0139@tc.umn.edu> applied
- added BSDi patch from Peter Berger <peterb@hoopoe.psc.edu>, who reported
  a failure when catching signals
- minor bug fix in the control interface for sajber jukebox
- fixed the ugly 'Ctrl-Z in buffer mode' bug .. YES ;)
- added buffer preload when underrun occurs (preload = 1/8 buffer size)
- minor SUN audio clean up

0.59m: (MH)
------
- Bug with RIFF header streams fixed.
- HTTP auth option patch from Henrik P Johnson <king@one.se>
- NetBSD patch(s) added from <mycroft@NetBSD.ORG> and <augustss@cs.chalmers.se>
- Added advanced shuffle support from Steven Tiger Lang <tiger@tyger.org>
- fixed bug with too large big_value field 
- fixed (hopefully) the bug with the '-a' option 
- work-around for some pedantic compilers in fr->synth init
- some changes for the 'generic' version
- applied NAS bug-fix patch
- new (good) MPEG 2.5 tables (from Niklas Beisert)
- added WIN32 support from Tony Million
- added some bug fixes from Niklas Beisert
- fixed another ugly bug in layer3 dequantize (wrote over the border
  of the 'xr' field)
- a minor HPUX clean up
- added BSD patch from Kevin Brintnall <kbrint@visi.com>
- added Makefile.win32
- added NAS big endian fix

0.59l: (MH)
------
- simple equalizer support (to be continued)
- added NAS patch from Martin Denn <mdenn@unix-ag.uni-kl.de>
- real mono support
- added pentium optimized decode_i586 from Stefan Bieschewski <stb@acm.org>
- fixed a bug in MS dequantize function 

0.59k: (OF)
------
- fixed "Accept" header in httpget.c
- fixed buffer overflow (causing core dumps) in httpget.c
- fixed display of song length
- fixed -b (buffer) problem on SGI / IRIX -- it definitely works now
- fixed problem when files with different sample rates where played,
  it now works with -b (buffer), too
- fixed order of local variables in decode.c to work around a
  compiler bug in ultrix
- fixed Makefile for ultrix
- reverted to old getbits.s (the new one could cause coredumps)
- more compact MPEG header display in non-verbose mode
- small fixes in buffer code and elsewhere

0.59j: (MH)
------
- added sajber jukebox control interface (it's currently a big hack)
  (see 'JUKEBOX' file for more)
- added simple rewind facility .. (only used by sajber interface at the moment)

0.59i: (MH)
-----------
- added front-end (remote) patch from "Brian J. Swetland" <swetland@uiuc.edu>
- added OS2 patches from Niclas Lindstrom <nil@wineasy.se>
- fixed 'rewind bug'
- added patches from Leo Broukhis <leo@zycad.com>
- added shuffle patch from Tillmann Steinbrecher <tst@gmx.de>
- added i386-getbits from M.Stekelenburg <m.stekelenburg@student.utwente.nl>
- added fallback to 8bit if no 16bit samples support (currently linux only)
- added (slightly changed) outburst patch
  from Antti Andreimann <anttix@cyberix.edu.ee>
- added 'http accept' patch from Hur TaeSung <saturn@arari.snu.ac.kr>
- fixed buffer mode bug 

0.59h: (MH)
------
- added '--8bit' option to force 'ULAW 8 BIT' playing
- pcm buffer type changed to 'unsigned char *' 
- plays 2:1 and 4:1 with the real frequency (ie 11025/22050 instead of 44100)
- program (re)sets (changed) frequency for every frame
- buffer mode is broken

0.59g: (MH)
------
- added support for MPEG 2.5 (it's a HACK!) .. mpg123 understands and plays
  2.5 but it does it wrong. (you will hear this!) 
- Fixed wrong values in BandInfo struct for 32kHz mode
- Some performance improvements and minor changes and bug-fixes.
- Tried the new imdct from the maplay1.2+ (version 1.81) package. (but 
  it was slightly slower on my system, currently disabled)

0.59f: (OF)
------
- HP-UX audio fix (provided by Damien Clermonte)
- Buffering (-b option) hopefully fixed.  Please test!

0.59e:
------
- added Audio MPEG 2.0 support (but near untested) (MH)

0.59d: (MH)
------
- minor modifications to dct64_i386.c
- removed duplicated dependency 'dct64.o' in Makefile

0.59c: (OF)
------
- Another complete rework of the buffer system (-b option) (normally uses
  mmap(), but it can also use SYSV-ShMem because mmap() is broken on linux).

0.59: (MH)
-----
- extracted dct64() from decode*.c files.
- some changes to dct64() and decode*.c to allow auto-increment/decrement
- removed bit-counter in getbit-functions. Layer3 part2 now counts it itself.

0.58: (OF)
-----
- Bugfix: not closing the audio device caused a few samples to be lost.
- Bugfix: audio_set_rate() was not called (!?!).
- Additional command line options "--doublespeed" and "--halfspeed" (couldn't
  find better names).  See the manpage.
- Complete redesign of command line options.  See the manpage.
- Changed the buffer algorithm (-b).  I'm not sure whether it's better or worse
  now.
- Supports multiple files on the command line.  Pressing Ctrl-C will skip to the
  next MPEG file, pressing it twice within one second will abort mpg123
  completely.  See the "INTERRUPT" section in the manpage.
- Support for http URLs.  See also the -p option in the manpage.
- Support for list files.  See also the -@ option in the manpage.

0.57: (MH)
-----
- Put the downsampling code together with the full quality decode into one
  binary. (new options -2to1,-4to1)
- Optimizations in the dct12.
- Removed the 'int' version.

0.56: (OF)
-----
- Additional command line option "-rs" to try to resync on "broken" MPEG streams
  (now called "--resync" or "-y").
- Additional command line option "-b" to use audio output buffering. See the
  manpage for additional information.
- Changed a few variable names and some other minor fixes, so the
  source compiles more cleanly (without warnings) on most platforms (for
  example, the FreeBSD port compiles without warnings using "-Wall -ansi
  -pedantic").
- Makefile changes: moved "solaris" to "solaris-gcc", new target
  "solaris" (using Sun's SparcWorks cc, faster tha gcc!), new targets
  "aix" and "generic".

0.55: 
-----
- removed some obsolete code from layer3.c (MH)
- changed scalefac stoing in layer3 (MH)
- decode_4to1.c added again. Renamed decode_lp.c to decode_2to1.c (MH)
  (both not optimized .. still expterimental)
- Minor cleanups and optimizations in layer3. (MH)
- Removed some (probable) minor bugs. (MH)
- Changed 2**(...) scaling (and omitted a few muls) (MH)
- Changed Makefile (OF)
- Changed dequantize to reorder with a mapping table 
  (you can disable this by undefining MAP in layer3.c) (MH)
- removed the 'dummy' scale step for mixed mode (MH)
- Changed copy policy (MH)
- Modified dequant-reorder-mapping (MH)

0.54: (MH)
-----
- Minor changes in the documents .. 
- huffman.c: x->len,y->len removed .. always '15' for the important cases
- audio.c: some additions to the SOLARIS audio code

0.53b: (OF)
------
- Makefile:
-- Renamed SPARC10 to SUNOS (which is more appropriate).
   Tested with SunOS 4.1.4 on a SPARCstation SLC, 20 MHz (322% CPU,
   so no realtime decoding).
-- Added SOLARIS.  Tested with Solaris 2.5.1 on an Ultra 1, 167 MHz (14%
   CPU), a SPARCstation 5, 110 MHz (47% CPU), and a SPARCstation 10, 33 MHz
   (68% CPU).
-- Added FreeBSD.  Tested with 2.1.7 on a Pentium-90 (38% CPU) and 2.2 on a
   Pentium-166 (20% CPU).
-- Added Digital Unix.  Tested with DU 3.2 on a DEC 3000/500 (Alpha AXP
   150 MHz, 33% CPU).  Does not support DEC's audio interface ("AudioFile"),
   decodes to stdout only.
-- Improved "clean" target to remove core files and editor backup files.
-- Added "install" target.
-- Added "dist" target to create a .tar.gz file of the source directory.
-- In the distributed Makefile, all system sections are commented out.  When
   you type "make" without uncommenting one of the sections, an appropriate
   error message will be displayed.
- audio.c
  Fixed problem when opening /dev/audio on Solaris: I had to remove O_NDELAY,
  because writing to /dev/audio didn't block until the requested number of
  samples could be written, but instead it wrote only as much samples as
  it was able too.  Sounded funny.  Removing O_NDELAY fixed the problem.
  I don't think that it hurts SunOS either, so I didn't make another #ifdef.
- common.c
  Fixed bug by adding function finish_output(): The decoder writes the audio
  samples into a buffer, and each time the buffer is full, it is written
  to the audio device (or to stdout).  But when the decoding is done,
  there are some samples left in the buffer which aren't written yet --
  they were just discarded.  This additional function fixes the problem by
  writing the remaining samples from the buffer.  It is called immediately
  after the main frame loop in mpg123.c.
- decode*.c
  Fixed compiler warning on symbol "div": Some compilers issue warnings
  because the symbol div is already used for something else (see "man div"),
  so I changed it to "divv".
- layer*.c Functions do_layer*:
-- Moved the declaration for audio_play_samples into mpg123.h.  Makes the
   code cleaner.
-- I moved the variables pcm_samples and pcm_point to common.c, so they are
   shared between all modules.  This was necessary because the finish_output()
   function (see common.c above) needs to access them.
-- Renamed loop variables "i" and "j" to "k" in order to fix compiler warnings
   for duplicate/hidden symbols (similar to "div" in decode*.c, see above).
   Changed the preprocessor symbol AUDIOBUFSIZE into a global variable
   "audiobufsize".  This makes it possible to change it by a command
   line option.
- layer1.c
  Fixed error in function I_step_one, second parameter: unsigned int
  scale_index[2][]  -->  ...[2][SBLIMIT] This caused an error with the DU
  compiler (which is ok, because [2][] is incorrect according to ANSI).
  I don't know whether [2][SBLIMIT] actually works correctly (I have no
  layer-1 streams to test it), but at least it compiles without error, and
  it appears to be correct (looking at the rest of the source).  Heaven knows
  why gcc doesn't issue an error, and what it actually makes from it.
- mpg123.1
  A simple manual page.  Type "nroff -man mpg123.1 | more" to view it, or
  install it in /usr/local/man/man1 (this is done automatically by "make
  install").
- mpg123.c
  New boolean variable "quiet": If this variable is set to TRUE (command line
  option -q), no messages are printed.