How do FFmpeg, ImageMagick and libwebp represent and handle straight versus premultiplied alpha when reading and writing?
FFmpeg tags frames with an explicit alpha mode (unspecified, premultiplied or straight), set by the user when encoding and by libavcodec when decoding. WebP stores straight (non-premultiplied) RGB: libwebp exposes premultiplied output only through lowercase decode modes (e.g. MODE_rgbA), and by default its lossless encoder rewrites RGB under fully transparent pixels unless WebPConfig.exact is set. ImageMagick's WebP coder decodes to straight RGBA and writes straight ARGB.
FFmpeg tags frames with an explicit alpha mode (unspecified, premultiplied or straight), set by the user when encoding and by libavcodec when decoding. WebP stores straight (non-premultiplied) RGB: libwebp exposes premultiplied output only through lowercase decode modes (e.g. MODE_rgbA), and by default its lossless encoder rewrites RGB under fully transparent pixels unless WebPConfig.exact is set. ImageMagick's WebP coder decodes to straight RGBA and writes straight ARGB.
Curator qualifications: Code and specs read 2026-10-22; no image encoded or composited. FFmpeg filter documentation (colordetect, setparams, overlay, premultiply) and ImageMagick -alpha associate/disassociate definitions carried from producer reading.
Limitations: Code and specs read 2026-10-22; no image encoded or composited.
Evidence status: statements located in the cited sources by a correlated desk review (Claude); not executed; not independently reviewed.
Structured fields
{
"citations": [
{
"url": "https://raw.githubusercontent.com/ImageMagick/ImageMagick/a0c4bf729a26a5c2feb28b0365b47a8db736078a/coders/webp.c",
"note": "FFmpeg libavutil/pixfmt.h at 1041abd L808-815; FFmpeg libavutil/frame.h at 1041abd L777-782; libwebp container spec L508-510; libwebp src/webp/decode.h L151-167; libwebp src/webp/encode.h L68-70, L145-146; ImageMagick coders/webp.c at a0c4bf7 L565, L869-873"
},
{
"url": "https://imagemagick.org/command-line-options/",
"note": "FFmpeg libavutil/pixfmt.h at 1041abd L808-815; FFmpeg libavutil/frame.h at 1041abd L777-782; libwebp container spec L508-510; libwebp src/webp/decode.h L151-167; libwebp src/webp/encode.h L68-70, L145-146; ImageMagick coders/webp.c at a0c4bf7 L565, L869-873"
},
{
"url": "https://raw.githubusercontent.com/webmproject/libwebp/4fa21912338357f89e4fd51cf2368325b59e9bd9/src/webp/decode.h",
"note": "FFmpeg libavutil/pixfmt.h at 1041abd L808-815; FFmpeg libavutil/frame.h at 1041abd L777-782; libwebp container spec L508-510; libwebp src/webp/decode.h L151-167; libwebp src/webp/encode.h L68-70, L145-146; ImageMagick coders/webp.c at a0c4bf7 L565, L869-873"
},
{
"url": "https://raw.githubusercontent.com/webmproject/libwebp/4fa21912338357f89e4fd51cf2368325b59e9bd9/src/webp/encode.h",
"note": "FFmpeg libavutil/pixfmt.h at 1041abd L808-815; FFmpeg libavutil/frame.h at 1041abd L777-782; libwebp container spec L508-510; libwebp src/webp/decode.h L151-167; libwebp src/webp/encode.h L68-70, L145-146; ImageMagick coders/webp.c at a0c4bf7 L565, L869-873"
},
{
"url": "https://raw.githubusercontent.com/webmproject/libwebp/4fa21912338357f89e4fd51cf2368325b59e9bd9/doc/webp-container-spec.txt",
"note": "FFmpeg libavutil/pixfmt.h at 1041abd L808-815; FFmpeg libavutil/frame.h at 1041abd L777-782; libwebp container spec L508-510; libwebp src/webp/decode.h L151-167; libwebp src/webp/encode.h L68-70, L145-146; ImageMagick coders/webp.c at a0c4bf7 L565, L869-873"
},
{
"url": "https://raw.githubusercontent.com/FFmpeg/FFmpeg/1041abdc962f4cc4f394aa8de9dc5236c0c3b9e7/libavutil/pixfmt.h",
"note": "FFmpeg libavutil/pixfmt.h at 1041abd L808-815; FFmpeg libavutil/frame.h at 1041abd L777-782; libwebp container spec L508-510; libwebp src/webp/decode.h L151-167; libwebp src/webp/encode.h L68-70, L145-146; ImageMagick coders/webp.c at a0c4bf7 L565, L869-873"
},
{
"url": "https://raw.githubusercontent.com/FFmpeg/FFmpeg/1041abdc962f4cc4f394aa8de9dc5236c0c3b9e7/libavutil/frame.h",
"note": "FFmpeg libavutil/pixfmt.h at 1041abd L808-815; FFmpeg libavutil/frame.h at 1041abd L777-782; libwebp container spec L508-510; libwebp src/webp/decode.h L151-167; libwebp src/webp/encode.h L68-70, L145-146; ImageMagick coders/webp.c at a0c4bf7 L565, L869-873"
},
{
"url": "https://raw.githubusercontent.com/FFmpeg/FFmpeg/1041abdc962f4cc4f394aa8de9dc5236c0c3b9e7/doc/filters.texi",
"note": "FFmpeg libavutil/pixfmt.h at 1041abd L808-815; FFmpeg libavutil/frame.h at 1041abd L777-782; libwebp container spec L508-510; libwebp src/webp/decode.h L151-167; libwebp src/webp/encode.h L68-70, L145-146; ImageMagick coders/webp.c at a0c4bf7 L565, L869-873"
}
]
}Evidence claims
- [sourced_fact] FFmpeg tags frames with an explicit alpha mode (unspecified, premultiplied or straight), set by the user when encoding and by libavcodec when decoding. WebP stores straight (non-premultiplied) RGB: libwebp exposes premultiplied output only through lowercase decode modes (e.g. MODE_rgbA), and by default its lossless encoder rewrites RGB under fully transparent pixels unless WebPConfig.exact is set. ImageMagick's WebP coder decodes to straight RGBA and writes straight ARGB. · locator: FFmpeg libavutil/pixfmt.h at 1041abd L808-815; FFmpeg libavutil/frame.h at 1041abd L777-782; libwebp container spec L508-510; libwebp src/webp/decode.h L151-167; libwebp src/webp/encode.h L68-70, L145-146; ImageMagick coders/webp.c at a0c4bf7 L565, L869-873 source
Rights
| component | license | hosting | redistribution | modification | training | Evidence and notes |
|---|---|---|---|---|---|---|
| documentation | unknown | permitted | permitted | unknown | unknown | Applies to this original summary only, not to the cited sources. |
Linked records
- cites → https://imagemagick.org/command-line-options
- cites → https://raw.githubusercontent.com/FFmpeg/FFmpeg/1041abdc962f4cc4f394aa8de9dc5236c0c3b9e7/doc/filters.texi
- cites → https://raw.githubusercontent.com/FFmpeg/FFmpeg/1041abdc962f4cc4f394aa8de9dc5236c0c3b9e7/libavutil/frame.h
- cites → https://raw.githubusercontent.com/FFmpeg/FFmpeg/1041abdc962f4cc4f394aa8de9dc5236c0c3b9e7/libavutil/pixfmt.h
- cites → https://raw.githubusercontent.com/ImageMagick/ImageMagick/a0c4bf729a26a5c2feb28b0365b47a8db736078a/coders/webp.c
- cites → https://raw.githubusercontent.com/webmproject/libwebp/4fa21912338357f89e4fd51cf2368325b59e9bd9/doc/webp-container-spec.txt
- cites → https://raw.githubusercontent.com/webmproject/libwebp/4fa21912338357f89e4fd51cf2368325b59e9bd9/src/webp/decode.h
- cites → https://raw.githubusercontent.com/webmproject/libwebp/4fa21912338357f89e4fd51cf2368325b59e9bd9/src/webp/encode.h