Skip to content

Commit fe58c53

Browse files
committed
Merge tag 'v0.24.6'
release v0.24.6
2 parents 706e625 + c426749 commit fe58c53

File tree

10 files changed

+96
-71
lines changed

10 files changed

+96
-71
lines changed

NEWS

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ ver 0.25 (not yet released)
1010
* switch to C++23
1111
* require Meson 1.2
1212

13-
ver 0.24.6 (not yet released)
13+
ver 0.24.6 (2025/10/20)
1414
* decoder
15+
- ffmpeg: handle "*.opus" files
1516
- mpg123: another workaround for libmpg123 ID3 corruption bug
1617
- opus: fix seeking in files with large OpusTags
18+
- opus, vorbis: remove METADATA_BLOCK_PICTURE size limit
1719

1820
ver 0.24.5 (2025/07/31)
1921
* database

python/build/libs.py

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
)
3737

3838
libopenmpt = AutotoolsProject(
39-
'https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-0.7.13+release.autotools.tar.gz',
40-
'dcd7cde4f9c498eb496c4556e1c1b81353e2a74747e8270a42565117ea42e1f1',
39+
'https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-0.8.3+release.autotools.tar.gz',
40+
'0b18a9b67674e300f4915f52ef902a9bb184b96a0d93efbc2058ec9526dc97039e0da53d9605e7fda97c46734529813008c2110e2cb4822e04e411444ff21db9',
4141
'lib/libopenmpt.a',
4242
[
4343
'--disable-shared', '--enable-static',
@@ -49,7 +49,7 @@
4949
'--without-portaudio', '--without-portaudiocpp', '--without-sndfile',
5050
'--without-flac',
5151
],
52-
base='libopenmpt-0.7.13+release.autotools',
52+
base='libopenmpt-0.8.3+release.autotools',
5353
)
5454

5555
wildmidi = CmakeProject(
@@ -79,8 +79,8 @@
7979
)
8080

8181
ffmpeg = FfmpegProject(
82-
'http://ffmpeg.org/releases/ffmpeg-7.1.1.tar.xz',
83-
'733984395e0dbbe5c046abda2dc49a5544e7e0e1e2366bba849222ae9e3a03b1',
82+
'http://ffmpeg.org/releases/ffmpeg-8.0.tar.xz',
83+
'b2751fccb6cc4c77708113cd78b561059b6fa904b24162fa0be2d60273d27b8e',
8484
'lib/libavcodec.a',
8585
[
8686
'--disable-shared', '--enable-static',
@@ -92,7 +92,6 @@
9292
'--disable-avdevice',
9393
'--disable-swresample',
9494
'--disable-swscale',
95-
'--disable-postproc',
9695
'--disable-avfilter',
9796
'--disable-faan',
9897
'--disable-pixelutils',
@@ -107,8 +106,10 @@
107106

108107
'--disable-sdl2',
109108
'--disable-vulkan',
109+
'--disable-videotoolbox',
110110
'--disable-xlib',
111111

112+
'--disable-parser=av1',
112113
'--disable-parser=bmp',
113114
'--disable-parser=cavsvideo',
114115
'--disable-parser=dvbsub',
@@ -127,9 +128,8 @@
127128
'--disable-parser=mpeg4video',
128129
'--disable-parser=mpegvideo',
129130
'--disable-parser=opus',
131+
'--disable-parser=prores',
130132
'--disable-parser=qoi',
131-
'--disable-parser=rv30',
132-
'--disable-parser=rv40',
133133
'--disable-parser=vc1',
134134
'--disable-parser=vp3',
135135
'--disable-parser=vp8',
@@ -139,6 +139,8 @@
139139
'--disable-parser=webp',
140140
'--disable-parser=xma',
141141

142+
'--disable-demuxer=av1',
143+
'--disable-demuxer=avi',
142144
'--disable-demuxer=aqtitle',
143145
'--disable-demuxer=ass',
144146
'--disable-demuxer=bethsoftvid',
@@ -147,6 +149,7 @@
147149
'--disable-demuxer=cdxl',
148150
'--disable-demuxer=dvbsub',
149151
'--disable-demuxer=dvbtxt',
152+
'--disable-demuxer=dvdvideo',
150153
'--disable-demuxer=h261',
151154
'--disable-demuxer=h263',
152155
'--disable-demuxer=h264',
@@ -210,6 +213,8 @@
210213
'--disable-demuxer=tedcaptions',
211214
'--disable-demuxer=vobsub',
212215
'--disable-demuxer=vplayer',
216+
'--disable-demuxer=vc1t',
217+
'--disable-demuxer=vpk',
213218
'--disable-demuxer=webm_dash_manifest',
214219
'--disable-demuxer=webvtt',
215220
'--disable-demuxer=yuv4mpegpipe',
@@ -240,6 +245,9 @@
240245
'--disable-decoder=qdmc',
241246

242247
# disable lots of image and video codecs
248+
'--disable-decoder=av1',
249+
'--disable-decoder=av1_amf',
250+
'--disable-decoder=av1_cuvid',
243251
'--disable-decoder=acelp_kelvin',
244252
'--disable-decoder=agm',
245253
'--disable-decoder=aic',
@@ -256,7 +264,6 @@
256264
'--disable-decoder=avrn',
257265
'--disable-decoder=avrp',
258266
'--disable-decoder=avui',
259-
'--disable-decoder=ayuv',
260267
'--disable-decoder=bethsoftvid',
261268
'--disable-decoder=bfi',
262269
'--disable-decoder=bink',
@@ -320,9 +327,12 @@
320327
'--disable-decoder=h263',
321328
'--disable-decoder=h263i',
322329
'--disable-decoder=h263p',
330+
'--disable-decoder=h263_v4l2m2m',
323331
'--disable-decoder=h264',
332+
'--disable-decoder=h264_v4l2m2m',
324333
'--disable-decoder=hap',
325334
'--disable-decoder=hevc',
335+
'--disable-decoder=hevc_v4l2m2m',
326336
'--disable-decoder=hnm4_video',
327337
'--disable-decoder=hq_hqa',
328338
'--disable-decoder=hqx',
@@ -360,12 +370,14 @@
360370
'--disable-decoder=motionpixels',
361371
'--disable-decoder=movtext',
362372
'--disable-decoder=mpeg1video',
373+
'--disable-decoder=mpeg1_v4l2m2m',
363374
'--disable-decoder=mpeg2video',
375+
'--disable-decoder=mpeg2_v4l2m2m',
364376
'--disable-decoder=mpeg4',
377+
'--disable-decoder=mpeg4_v4l2m2m',
365378
'--disable-decoder=mpegvideo',
366379
'--disable-decoder=msa1',
367380
'--disable-decoder=mscc',
368-
'--disable-decoder=msmpeg4_crystalhd',
369381
'--disable-decoder=msmpeg4v1',
370382
'--disable-decoder=msmpeg4v2',
371383
'--disable-decoder=msmpeg4v3',
@@ -402,6 +414,7 @@
402414
'--disable-decoder=pjs',
403415
'--disable-decoder=ppm',
404416
'--disable-decoder=prores',
417+
'--disable-decoder=prores_raw',
405418
'--disable-decoder=prosumer',
406419
'--disable-decoder=psd',
407420
'--disable-decoder=ptx',
@@ -448,6 +461,7 @@
448461
'--disable-decoder=targa',
449462
'--disable-decoder=targa_y216',
450463
'--disable-decoder=text',
464+
'--disable-decoder=theora',
451465
'--disable-decoder=tiff',
452466
'--disable-decoder=tiertexseqvideo',
453467
'--disable-decoder=tmv',
@@ -469,15 +483,35 @@
469483
'--disable-decoder=vble',
470484
'--disable-decoder=vbn',
471485
'--disable-decoder=vc1',
486+
'--disable-decoder=vc1image',
487+
'--disable-decoder=vc1_cuvid',
488+
'--disable-decoder=vc1_mmal',
489+
'--disable-decoder=vc1_qsv',
490+
'--disable-decoder=vc1_v4l2m2m',
472491
'--disable-decoder=vcr1',
473492
'--disable-decoder=vmdvideo',
474493
'--disable-decoder=vmnc',
475494
'--disable-decoder=vp3',
495+
'--disable-decoder=vp4',
476496
'--disable-decoder=vp5',
477497
'--disable-decoder=vp6',
498+
'--disable-decoder=vp6a',
499+
'--disable-decoder=vp6f',
478500
'--disable-decoder=vp7',
479501
'--disable-decoder=vp8',
502+
'--disable-decoder=vp8_cuvid',
503+
'--disable-decoder=vp8_mediacodec',
504+
'--disable-decoder=vp8_qsv',
505+
'--disable-decoder=vp8_rkmpp',
506+
'--disable-decoder=vp8_v4l2m2m',
480507
'--disable-decoder=vp9',
508+
'--disable-decoder=vp9_amf',
509+
'--disable-decoder=vp9_cuvid',
510+
'--disable-decoder=vp9_mediacodec',
511+
'--disable-decoder=vp9_qsv',
512+
'--disable-decoder=vp9_rkmpp',
513+
'--disable-decoder=vp9_v4l2m2m',
514+
'--disable-decoder=vp9_vucid',
481515
'--disable-decoder=vplayer',
482516
'--disable-decoder=vqa',
483517
'--disable-decoder=webvtt',
@@ -517,6 +551,7 @@
517551
'--disable-bsf=mjpeg2jpeg',
518552
'--disable-bsf=opus_metadata',
519553
'--disable-bsf=pgs_frame_merge',
554+
'--disable-bsf=prores',
520555
'--disable-bsf=text2movsub',
521556
'--disable-bsf=vp9_metadata',
522557
'--disable-bsf=vp9_raw_reorder',

src/decoder/plugins/FfmpegDecoderPlugin.cxx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,12 +730,18 @@ ffmpeg_suffixes() noexcept
730730

731731
void *codec_opaque = nullptr;
732732
while (const auto codec = av_codec_iterate(&codec_opaque)) {
733+
if (codec->type != AVMEDIA_TYPE_AUDIO)
734+
continue;
735+
733736
if (StringStartsWith(codec->name, "dsd_"sv)) {
734737
/* FFmpeg was compiled with DSD support */
735738
suffixes.emplace("dff"sv);
736739
suffixes.emplace("dsf"sv);
737740
} else if (StringIsEqual(codec->name, "dst")) {
738741
suffixes.emplace("dst"sv);
742+
} else if (StringIsEqual(codec->name, "opus") ||
743+
StringIsEqual(codec->name, "libopus")) {
744+
suffixes.emplace("opus"sv);
739745
} else if (StringStartsWith(codec->name, "wma"sv)) {
740746
/* there are codecs "wmav1", "wmav2" etc. and
741747
they usually come in "*.wma" files */

src/event/ServerSocket.cxx

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#include "net/Resolver.hxx"
1616
#include "net/AddressInfo.hxx"
1717
#include "event/SocketEvent.hxx"
18-
#include "fs/AllocatedPath.hxx"
18+
#include "fs/Path.hxx"
1919
#include "util/Domain.hxx"
2020
#include "Log.hxx"
2121

@@ -33,10 +33,6 @@ class ServerSocket::OneServerSocket final {
3333

3434
const unsigned serial;
3535

36-
#ifdef HAVE_UN
37-
AllocatedPath path;
38-
#endif
39-
4036
const AllocatedSocketAddress address;
4137

4238
public:
@@ -47,9 +43,6 @@ class ServerSocket::OneServerSocket final {
4743
:parent(_parent),
4844
event(_loop, BIND_THIS_METHOD(OnSocketReady)),
4945
serial(_serial),
50-
#ifdef HAVE_UN
51-
path(nullptr),
52-
#endif
5346
address(std::forward<A>(_address))
5447
{
5548
}
@@ -65,14 +58,6 @@ class ServerSocket::OneServerSocket final {
6558
return serial;
6659
}
6760

68-
#ifdef HAVE_UN
69-
void SetPath(AllocatedPath &&_path) noexcept {
70-
assert(path.IsNull());
71-
72-
path = std::move(_path);
73-
}
74-
#endif
75-
7661
[[nodiscard]] bool IsDefined() const noexcept {
7762
return event.IsDefined();
7863
}
@@ -157,8 +142,8 @@ ServerSocket::OneServerSocket::Open()
157142
#ifdef HAVE_UN
158143
/* allow everybody to connect */
159144

160-
if (!path.IsNull())
161-
chmod(path.c_str(), 0666);
145+
if (const char *path = address.GetLocalPath())
146+
chmod(path, 0666);
162147
#endif
163148

164149
/* register in the EventLoop */
@@ -345,16 +330,15 @@ ServerSocket::AddHost(const char *hostname, unsigned port)
345330
}
346331

347332
void
348-
ServerSocket::AddPath(AllocatedPath &&path)
333+
ServerSocket::AddPath(Path path)
349334
{
350335
#ifdef HAVE_UN
351336
unlink(path.c_str());
352337

353338
AllocatedSocketAddress address;
354339
address.SetLocal(path.c_str());
355340

356-
OneServerSocket &s = AddAddress(std::move(address));
357-
s.SetPath(std::move(path));
341+
AddAddress(std::move(address));
358342
#else /* !HAVE_UN */
359343
(void)path;
360344

src/event/ServerSocket.hxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class SocketAddress;
1212
class AllocatedSocketAddress;
1313
class UniqueSocketDescriptor;
1414
class EventLoop;
15-
class AllocatedPath;
15+
class Path;
1616

1717
/**
1818
* A socket that accepts incoming stream connections (e.g. TCP).
@@ -96,7 +96,7 @@ public:
9696
*
9797
* @param path the absolute socket path
9898
*/
99-
void AddPath(AllocatedPath &&path);
99+
void AddPath(Path path);
100100

101101
/**
102102
* Add a listener on an abstract local socket (Linux specific).

src/lib/xiph/VorbisComments.cxx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
#include <tremor/ivorbiscodec.h>
1919
#endif /* HAVE_TREMOR */
2020

21+
using std::string_view_literals::operator""sv;
22+
2123
template<typename F>
2224
static void
2325
ForEachUserComment(const vorbis_comment &vc, F &&f)
@@ -49,11 +51,11 @@ VorbisCommentToReplayGain(ReplayGainInfo &rgi,
4951
static void
5052
vorbis_scan_comment(std::string_view comment, TagHandler &handler) noexcept
5153
{
52-
const auto picture_b64 = handler.WantPicture()
53-
? GetVorbisCommentValue(comment, "METADATA_BLOCK_PICTURE")
54-
: std::string_view{};
55-
if (picture_b64.data() != nullptr)
56-
return ScanVorbisPicture(picture_b64, handler);
54+
if (handler.WantPicture()) {
55+
if (const auto picture_b64 = GetVorbisCommentValue(comment, "METADATA_BLOCK_PICTURE"sv);
56+
picture_b64.data() != nullptr)
57+
return ScanVorbisPicture(picture_b64, handler);
58+
}
5759

5860
ScanVorbisComment(comment, handler);
5961
}

src/lib/xiph/VorbisPicture.cxx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@ void
1111
ScanVorbisPicture(std::string_view value, TagHandler &handler) noexcept
1212
{
1313
#ifdef HAVE_BASE64
14-
if (value.size() > 1024 * 1024)
15-
/* ignore image files which are too huge */
16-
return;
17-
1814
try {
1915
return ScanId3Apic(DecodeBase64(value), handler);
2016
} catch (...) {

subprojects/expat.wrap

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
[wrap-file]
2-
directory = expat-2.7.1
3-
source_url = https://github.com/libexpat/libexpat/releases/download/R_2_7_1/expat-2.7.1.tar.xz
4-
source_filename = expat-2.7.1.tar.bz2
5-
source_hash = 354552544b8f99012e5062f7d570ec77f14b412a3ff5c7d8d0dae62c0d217c30
6-
patch_filename = expat_2.7.1-1_patch.zip
7-
patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.7.1-1/get_patch
8-
patch_hash = fe28cbbc427a7c9787d08b969ad54d19f59d8dd18294b4a18651cecfc789d4ef
9-
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.7.1-1/expat-2.7.1.tar.bz2
10-
wrapdb_version = 2.7.1-1
2+
directory = expat-2.7.3
3+
source_url = https://github.com/libexpat/libexpat/releases/download/R_2_7_3/expat-2.7.3.tar.xz
4+
source_filename = expat-2.7.3.tar.bz2
5+
source_hash = 71df8f40706a7bb0a80a5367079ea75d91da4f8c65c58ec59bcdfbf7decdab9f
6+
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.7.3-1/expat-2.7.3.tar.bz2
7+
patch_filename = expat_2.7.3-1_patch.zip
8+
patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.7.3-1/get_patch
9+
patch_hash = e870eb4b2e3c142ce1d18ed24309aa40e07c6c911a4625fa1c6fc493ba18153a
10+
wrapdb_version = 2.7.3-1
1111

1212
[provide]
1313
expat = expat_dep

0 commit comments

Comments
 (0)