4 ms·
HEIC/AVIF container is a complicated kitchen sink. It's closer to being a PowerPoint file than an image format. It's an unnecessarily large attack surface and a
by pornel 7y ago
HEIC/AVIF container is a complicated kitchen sink. It's closer to being a PowerPoint file than an image format. It's an unnecessarily large attack surface and a ton of features that nobody will (correctly) use anyway. The reference implementation is a ton of C++ code I would not dare to use in a security-sensitive application. OTOH libpng is a single C file, and it just wraps a single HEVC payload.
For that reason I'd say that if you can license HEVC, use BPG, not HEIF. And I'd love to have an AV1-based BPG version.
- littlestymaar 7y agosmall typo: libbpg, not libpng
- anoncareer0212 7y agoThanks, very small but led me to jump to complete misunderstandings about bpg, png, and libpng
- arghwhat 7y ago> HEIC/AVIF container is a complicated kitchen sink. It's closer to being a PowerPoint file than an image format. This is untrue. While anything written by a working group that isn't trying to get to the moon with a below-average calculator will be more complicated than necessary, it is not a kitchen sink. Both AVIF and HEIF store just a sequence of images with metadata (EXIF, depth maps, animation frame timings, profiles, ...). It's comprehensive, sure, but not a kitchen sink. The AVIF spec is quite readable: https://aomediacodec.github.io/av1-avif/ https://aomediacodec.github.io/av1-avif/ > The reference implementation is a ton of C++ code I would not dare to use in a security-sensitive application. You shouldn't be concerned because the implementation is big—you should be concerned because it is of non-zero length and parsing wild data. You need a safe port regardless if you're going to play the security sensitive card. BGP being C is an equal liability. I don't want neither BGP nor HEIF to become popular at the cost of AVIF due to being based on HEVC, but I see no significant differentiation between them—HEIF is already established and does the trick.
- TD-Linux 7y agoThe underlying HEIF container is unfortunately super complex, but the AVIF specification is based on the subset known as MIAF, which makes it a lot saner to implement.