gecko-dev/image
Timothy Nikkel 2a8ea92054 Bug 1846055. Fix color management of grayscale avif files. r=gfx-reviewers,lsalzman
Color management is usually handled in the SurfacePipe, but SurfacePipe is RGB(A) only, and qcms can only operator on grayscale images in grayscale format, not RGB(A). So we must handle the qcms operation in the decoder. This is the same as how the png decoder handles this same situation. One additional wrinkle is that gfx::ConvertYCbCrToRGB32 only outputs RGB even for grayscale input data so we have to create an intermediate grayscale copy of the data for qcms to work on.

Recording command lines here that were used to create the test in case it needs to be modified or extended in the future.

Convert png to grayscale or grayscale + alpha

ffmpeg -i file.png -pix_fmt gray file-gray.png
ffmpeg -i file.png -pix_fmt ya8 file-gray.png

Extract icc profile from png

exiftool -icc_profile -b -w icc file.png

Add icc profile to png

exiftool "-icc_profile<=profile.icc" file.png

Encode avif using provided icc profile in file

avifenc --icc profile.icc input.png output.avif

Differential Revision: https://phabricator.services.mozilla.com/D220101
2024-09-09 09:39:12 +00:00
..
build Bug 1866010 p2. Update UpdateContentViewerRegistration to reflect nsIDocumentViewer's new name. r=emilio 2023-11-24 09:10:48 +00:00
decoders Bug 1846055. Fix color management of grayscale avif files. r=gfx-reviewers,lsalzman 2024-09-09 09:39:12 +00:00
encoders Bug 1872536 - Use MakeUniqueFallible for large buffers in image decoders/encoders. r=gfx-reviewers,lsalzman 2023-12-31 22:16:46 +00:00
test Bug 1846055. Fix color management of grayscale avif files. r=gfx-reviewers,lsalzman 2024-09-09 09:39:12 +00:00
AnimationFrameBuffer.cpp
AnimationFrameBuffer.h
AnimationParams.h
AnimationSurfaceProvider.cpp Bug 1892643. Allow checking for shutdown in the image decode pool after the decode pool has been cleared. r=gfx-reviewers,nical 2024-05-25 09:45:37 +00:00
AnimationSurfaceProvider.h
AutoRestoreSVGState.h Bug 1808102 - Move contextPaint to Document class r=emilio 2023-01-17 19:13:41 +00:00
BlobSurfaceProvider.cpp Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
BlobSurfaceProvider.h Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
BMPHeaders.h
ClippedImage.cpp Bug 1276351: apply code formatting via Lando 2023-03-27 07:23:36 +00:00
ClippedImage.h
CopyOnWrite.h
DecodedSurfaceProvider.cpp Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
DecodedSurfaceProvider.h
DecodePool.cpp Bug 1892643. Allow checking for shutdown in the image decode pool after the decode pool has been cleared. r=gfx-reviewers,nical 2024-05-25 09:45:37 +00:00
DecodePool.h Bug 1892643. Allow checking for shutdown in the image decode pool after the decode pool has been cleared. r=gfx-reviewers,nical 2024-05-25 09:45:37 +00:00
Decoder.cpp Bug 1901076 - Part 2. Expose frame count variant of metadata decoders. r=tnikkel 2024-06-24 22:44:30 +00:00
Decoder.h Bug 1901076 - Part 2. Expose frame count variant of metadata decoders. r=tnikkel 2024-06-24 22:44:30 +00:00
DecoderFactory.cpp Bug 1901078 - Implement promise based anonymous image decoder. r=tnikkel 2024-07-24 03:16:16 +00:00
DecoderFactory.h Bug 1901078 - Implement promise based anonymous image decoder. r=tnikkel 2024-07-24 03:16:16 +00:00
DecoderFlags.h Bug 1901076 - Part 2. Expose frame count variant of metadata decoders. r=tnikkel 2024-06-24 22:44:30 +00:00
Downscaler.cpp Bug 1857746 - Remove std max in downscaler. r=sylvestre DONTBUILD 2023-10-30 08:12:41 +00:00
Downscaler.h
DownscalingFilter.h
DynamicImage.cpp Bug 1815404 - Replace most uses of gfxContext::CreateOrNull with stack-allocated contexts. r=gfx-reviewers,lsalzman 2023-02-21 07:28:25 +00:00
DynamicImage.h
FrameAnimator.cpp
FrameAnimator.h
FrameTimeout.h
FrozenImage.cpp
FrozenImage.h
ICOFileHeaders.h
IDecodingTask.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
IDecodingTask.h Bug 1894284. Give image gtests a threadsafe way to wait for decodes in the decode thread pool to finish. r=gfx-reviewers,nical 2024-05-22 03:29:18 +00:00
Image.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
Image.h Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille 2023-03-27 07:20:25 +00:00
ImageBlocker.cpp Bug 1873474 - Use ImageBlocker directly instead of nsIContentPolicy::ShouldProcess in ImageDocument. r=smaug 2024-01-17 09:49:32 +00:00
ImageBlocker.h Bug 1873474 - Use ImageBlocker directly instead of nsIContentPolicy::ShouldProcess in ImageDocument. r=smaug 2024-01-17 09:49:32 +00:00
ImageCacheKey.cpp Bug 1728331 - Part 5: Respect AppType in ImageCacheKey, r=emilio 2024-06-24 23:19:29 +00:00
ImageCacheKey.h Bug 1728331 - Part 5: Respect AppType in ImageCacheKey, r=emilio 2024-06-24 23:19:29 +00:00
ImageFactory.cpp Bug 1624819 - Remove TaskCategory and other quantum dom remnants. r=smaug,media-playback-reviewers,credential-management-reviewers,cookie-reviewers,places-reviewers,win-reviewers,valentin,mhowell,sgalich,alwu 2023-10-10 08:51:12 +00:00
ImageFactory.h
ImageLogging.h
ImageMemoryReporter.cpp
ImageMemoryReporter.h
ImageMetadata.h Bug 1901076 - Part 2. Expose frame count variant of metadata decoders. r=tnikkel 2024-06-24 22:44:30 +00:00
ImageOps.cpp Bug 1901076 - Part 2. Expose frame count variant of metadata decoders. r=tnikkel 2024-06-24 22:44:30 +00:00
ImageOps.h
ImageRegion.h
ImageUtils.cpp Bug 1901078 - Implement promise based anonymous image decoder. r=tnikkel 2024-07-24 03:16:16 +00:00
ImageUtils.h Bug 1901078 - Implement promise based anonymous image decoder. r=tnikkel 2024-07-24 03:16:16 +00:00
ImageWrapper.cpp
ImageWrapper.h
ImgDrawResult.h Bug 1519636 - Reformat recent changes to the Google coding style. r=glandium 2023-02-13 15:02:07 +00:00
imgFrame.cpp Bug 1815404 - Replace most uses of gfxContext::CreateOrNull with stack-allocated contexts. r=gfx-reviewers,lsalzman 2023-02-21 07:28:25 +00:00
imgFrame.h Bug 1856795 - ride along: use = default; on some recently modified files r=emilio 2023-10-15 15:29:03 +00:00
imgICache.idl
imgIContainer.idl
imgIContainerDebug.idl
imgIEncoder.idl
imgILoader.idl
imgINotificationObserver.idl
imgIRequest.idl Bug 1881863 - Part 1: Standardize on boolean over bool in xpidl, r=xpcom-reviewers,necko-reviewers,valentin,extension-reviewers,application-update-reviewers,media-playback-reviewers,credential-management-reviewers,search-reviewers,anti-tracking-reviewers,places-reviewers,nalexander,emilio,zombie,sgalich,karlt,lina,Standard8 2024-04-04 18:45:21 +00:00
imgIScriptedNotificationObserver.idl
imgITools.idl
imgLoader.cpp Bug 1884876 - Add notification about stylesheets loaded from CSSLoader cache. r=necko-reviewers,emilio,arai 2024-09-06 14:47:23 +00:00
imgLoader.h Bug 1907009 - Part 1: Add CacheExpirationTime type. r=emilio 2024-08-06 05:38:23 +00:00
imgRequest.cpp Bug 1907009 - Part 1: Add CacheExpirationTime type. r=emilio 2024-08-06 05:38:23 +00:00
imgRequest.h Bug 1893402 - Part 2: Use minimum cache expiration time in image cache. r=tnikkel 2024-05-17 11:20:59 +00:00
imgRequestProxy.cpp Bug 1624819 - Remove TaskCategory and other quantum dom remnants. r=smaug,media-playback-reviewers,credential-management-reviewers,cookie-reviewers,places-reviewers,win-reviewers,valentin,mhowell,sgalich,alwu 2023-10-10 08:51:12 +00:00
imgRequestProxy.h Bug 1874756 - Simplify and reduce the number of hashtable lookups for LCP implementation r=emilio 2024-07-23 20:42:40 +00:00
imgTools.cpp Bug 1519636 - Reformat recent changes to the Google coding style r=emilio,necko-reviewers,geckoview-reviewers,application-update-reviewers,media-playback-reviewers,devtools-reviewers,anti-tracking-reviewers,profiler-reviewers,win-reviewers,migration-reviewers,padenot,mconley,nchevobbe,kershaw,gstoll,mstange,bytesized,m_kato 2024-07-17 11:15:31 +00:00
imgTools.h
IProgressObserver.h Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
ISurfaceProvider.h Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
LookupResult.h
moz.build Bug 1901078 - Implement promise based anonymous image decoder. r=tnikkel 2024-07-24 03:16:16 +00:00
MultipartImage.cpp Bug 1862059. Handle edge cases of svg images in multipart images. r=aosmond,gfx-reviewers 2024-01-02 07:13:01 +00:00
MultipartImage.h
nsIIconURI.idl Bug 1883217 - Remove unused defines in IDL files r=webdriver-reviewers,necko-reviewers,credential-management-reviewers,places-reviewers,dom-core,Standard8,valentin,mccr8,sgalich 2024-03-06 19:04:25 +00:00
Orientation.h
OrientedImage.cpp Bug 1815404 - Replace most uses of gfxContext::CreateOrNull with stack-allocated contexts. r=gfx-reviewers,lsalzman 2023-02-21 07:28:25 +00:00
OrientedImage.h
PlaybackType.h
ProgressTracker.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
ProgressTracker.h Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
RasterImage.cpp Bug 1910698 - Remove nsIScriptError.sourceLine. r=smaug,devtools-reviewers,webdriver-reviewers,necko-reviewers,nchevobbe,kershaw,jdescottes,credential-management-reviewers,dimi 2024-08-01 17:12:48 +00:00
RasterImage.h Bug 1813466 - Store AVIF prefs as default decoder flags in RasterImage. r=tnikkel 2023-03-17 00:50:07 +00:00
Resolution.h
ScriptedNotificationObserver.cpp
ScriptedNotificationObserver.h
ShutdownTracker.cpp
ShutdownTracker.h
SourceBuffer.cpp Bug 1273714: Remove an imagelib warning that's more spammy than useful at this point. r=tnikkel DONTBUILD 2023-09-27 23:27:13 +00:00
SourceBuffer.h
StreamingLexer.h
SurfaceCache.cpp Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
SurfaceCache.h Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
SurfaceCacheUtils.cpp
SurfaceCacheUtils.h
SurfaceFilters.h
SurfaceFlags.h
SurfacePipe.cpp
SurfacePipe.h Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille 2023-03-27 07:20:25 +00:00
SurfacePipeFactory.h Bug 1915543. Do color management on avifs on non-premultiplied alpha image data. r=gfx-reviewers,lsalzman 2024-09-07 21:43:05 +00:00
SVGDocumentWrapper.cpp Bug 196078 - Part 2: Support displaying arbitrary text/* MIME types as plain text, r=smaug,necko-reviewers,valentin 2024-06-05 00:05:58 +00:00
SVGDocumentWrapper.h Bug 1865480. Rename nsIContentViewer to nsIDocumentViewer. r=layout-reviewers,emilio 2023-11-21 12:45:59 +00:00
SVGDrawingCallback.h
SVGDrawingParameters.h
VectorImage.cpp Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00
VectorImage.h Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille 2023-03-27 07:20:25 +00:00
WebRenderImageProvider.h Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond 2024-05-02 01:45:32 +00:00