Stejně, není divné, že něco jako podporu formátů jako je právě AVIF a další si implementují prohlížeče sami? Architektonicky by mně přišlo mnohem flexibilnější, aby jim podporu pro tohle poskytoval sám systém a prohlížeče pak nemusely být takové molochy a jenom volaly něco co by jim to vrátilo už vykreslené.
Kdysi jsem si to taky říkal. Pokud jde o podporu formátů, které si prohlížeč vybere, že je chce podporovat, pak to může poskytovat nějaká (klidně sdílená) knihovna. Nemusí si to každý prohlížeč implementovat sám, a dost možná to ani prohlížeče nedělají. (Nemám ale detailní přehled.) Nevím, jestli tomu říkáte, že to „poskytuje systém“. Výhody toho, kdy to „poskytuje systém“, tu jsou, zároveň to nevyžaduje, aby ta knihovna byla i v systémech, kde nic takového potřeba není. Není potřeba řešit, jestli má systém poskytovat podporu pro zvukové formáty, obrazové formáty, video formáty, AI, GUI, rozpoznání řeči a já nevím co ještě. Není potřeba řešit, jaké formáty má systém podporovat. Není potřeba řešit, že API nestačí dnešním potřebám.
Třeba v Gentoo má Firefox tyto volby, podle kterých se buď použije knihovna systému, nebo ta dodávaná s Firefoxem.
+ - system-av1 : Use the system-wide media-libs/dav1d and media-libs/libaom library instead of bundled. + - system-harfbuzz : Use the system-wide media-libs/harfbuzz and media-gfx/graphite2 instead of bundled. + - system-icu : Use the system-wide dev-libs/icu instead of bundled. + + system-jpeg : Use the system-wide media-libs/libjpeg-turbo instead of bundled. + - system-libevent : Use the system-wide dev-libs/libevent instead of bundled. + - system-libvpx : Use the system-wide media-libs/libvpx instead of bundled. + - system-webp : Use the system-wide media-libs/libwebp instead of bundled.
Jiné distibuce si to přeloží, jak uznají za vhodné. Třeba v Ubuntu to vypadá, že Firefox systémové knihovny nepoužívá:
$ldd /usr/lib/firefox/firefox
linux-vdso.so.1 (0x00007f40a5320000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f40a520b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f40a5205000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f40a5023000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f40a4ed4000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f40a4eb9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f40a4cc7000)
/lib64/ld-linux-x86-64.so.2 (0x00007f40a5322000)
Knihovna dodávaná s Firefoxem nemusí znamenat vlastní implementaci, prostě jen může Mozilla vzít konkrétní verzi (s případnými patchi) v konkrétní konfiguraci, protože tu kombinaci mají otestovanou.
V případě Ubuntu nevím. Firefox používá víceprocesovou architekturu, má tedy i renderer proces, na který může mít separátní binárku. Možná by víc napovědělo lsof.