Commit Graph

192 Commits

Author SHA1 Message Date
Andrew Osmond
09266efcbc Bug 1732115 - Part 3. Refactor decoder pipeline to partially use Unoriented/OrientedPixel. r=tnikkel
Rather than change every use of IntSize/Rect/Point in image/, this patch
attempts to draw the line at the relevant parts of the decoding pipeline
to prevent confusion about which size and orientation we are working
with.

Differential Revision: https://phabricator.services.mozilla.com/D126381
2021-10-06 14:41:17 +00:00
Emilio Cobos Álvarez
3f5561a2f7 Bug 1678487 - Make CMSMode an enum class. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D104945
2021-02-13 03:59:23 +00:00
Mihai Alexandru Michis
afd69c4be3 Backed out 3 changesets (bug 1678487) for causing reftest failures.
CLOSED TREE

Backed out changeset f6519420f910 (bug 1678487)
Backed out changeset 9beae015d19b (bug 1678487)
Backed out changeset 029cc10d2477 (bug 1678487)
2021-02-13 05:18:54 +02:00
Emilio Cobos Álvarez
ba4d1a3c68 Bug 1678487 - Make CMSMode an enum class. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D104945
2021-02-13 02:15:22 +00:00
Brindusan Cristian
d930c1c648 Backed out 5 changesets (bug 1678487) for multiple failures. CLOSED TREE
Backed out changeset 00242b4230f2 (bug 1678487)
Backed out changeset 63612a51cfee (bug 1678487)
Backed out changeset bd0321ad1968 (bug 1678487)
Backed out changeset c6a4d3c17d39 (bug 1678487)
Backed out changeset 5de112a29a87 (bug 1678487)
2021-02-13 02:41:17 +02:00
Emilio Cobos Álvarez
d7aca6b47c Bug 1678487 - Make CMSMode an enum class. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D104945
2021-02-12 23:23:31 +00:00
Andrew Osmond
03a8e2e93b Bug 1645042 - Revert bug 1631615 and color manage untagged images. r=tnikkel
We really should be color managing them. It was a mistake and
misunderstanding of how Chrome worked because of differences in how we
color manage canvas.

Differential Revision: https://phabricator.services.mozilla.com/D79295
2020-06-11 21:46:45 +00:00
Andrew Osmond
02334060e0 Bug 1631615 - Don't color manage PNG/JPG/WebP if not tagged. r=tnikkel
It appears some websites assume we will not color manage untagged images
and encode metadata in the image's surface data. Chrome matches this
behaviour. We should probably do the same for webcompat.

Differential Revision: https://phabricator.services.mozilla.com/D73737
2020-05-04 21:51:25 +00:00
Andrew Osmond
da72652618 Bug 1620600 - Add flags to allow image decoders to produce sRGB output. r=tnikkel
Currently we can only use the gfx.color_management.force_srgb pref to
force all images to sRGB, or just accept device space. It would be nice
to be able to test device space in our tests, as well as sRGB. This
patch adds a surface flag which allows us to selectively output sRGB.

This will also be useful for clipboard and re-encoding purposes, since
they want a neutral output. In an ideal world we would just output the
color profile and the pixel data in the original color space, but for
now this is a relatively simple approach that works on all platforms and
interops well with all applications.

Differential Revision: https://phabricator.services.mozilla.com/D65734

--HG--
extra : moz-landing-system : lando
2020-04-10 16:26:33 +00:00
Arthur Iakab
6990ddf5e2 Backed out changeset e6e5816403d9 (bug 1620600) for causing Gtest failures.
CLOSED TREE
2020-03-12 04:44:59 +02:00
Andrew Osmond
5c7e1dd283 Bug 1620600 - Add flags to allow image decoders to produce sRGB output. r=tnikkel
Currently we can only use the gfx.color_management.force_srgb pref to
force all images to sRGB, or just accept device space. It would be nice
to be able to test device space in our tests, as well as sRGB. This
patch adds a surface flag which allows us to selectively output sRGB.

This will also be useful for clipboard and re-encoding purposes, since
they want a neutral output. In an ideal world we would just output the
color profile and the pixel data in the original color space, but for
now this is a relatively simple approach that works on all platforms and
interops well with all applications.

Differential Revision: https://phabricator.services.mozilla.com/D65734

--HG--
extra : moz-landing-system : lando
2020-03-12 00:37:53 +00:00
Andrew Osmond
5b52ff522e Bug 1619946 - Ensure PNG decoder does not recreate sRGB transforms unnecessarily. r=tnikkel
In the PNG decoder, when an image is tagged as sRGB, we create a new
sRGB profile, and a new transform to map that to device space. Creating
a transform is fairly expensive, and we already cache sRGB to device
space transforms in gfxPlatform. This patch ensures that we use the
cached transforms instead. It should be noted that we ignore the intent
from the sRGB tag; nominally we could transform differently as a result
of that, but qcms does not actually implement any of that.

Differential Revision: https://phabricator.services.mozilla.com/D65320

--HG--
extra : moz-landing-system : lando
2020-03-05 11:51:15 +00:00
Gabriele Svelto
69790bc62e Bug 1600545 - Remove useless inclusions of header files generated from IDL files in accessible/, browser/, caps/, chrome/, devtools/, docshell/, editor/, extensions/, gfx/, hal/, image/, intl/, ipc/, js/, layout/, and media/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55443

--HG--
extra : moz-landing-system : lando
2019-12-06 09:16:44 +00:00
Andrew Osmond
877d22c39e Bug 1594425 - Part 2. Switch image decoders to use SurfaceFormat::OS_RGBA. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D52008

--HG--
extra : moz-landing-system : lando
2019-11-12 18:22:33 +00:00
Csoregi Natalia
8fdd443c49 Backed out 3 changesets (bug 1594425) for failures on SwizzleSSE2.cpp. CLOSED TREE
Backed out changeset 90ce21e7e469 (bug 1594425)
Backed out changeset 54a28220958b (bug 1594425)
Backed out changeset f1c1e5f12327 (bug 1594425)
2019-11-08 22:52:02 +02:00
Andrew Osmond
b492d7bd13 Bug 1594425 - Part 2. Switch image decoders to use SurfaceFormat::OS_RGBA. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D52008

--HG--
extra : moz-landing-system : lando
2019-11-08 14:58:43 +00:00
Andrew Osmond
e9dc497c47 Bug 1551088 - Part 6. Make image decoders use accelerated methods for swizzling and premultiplication. r=tnikkel
The PNG decoder lacks fast implementations for swizzling/unpacking
inside the library, and both PNG and WebP may need to perform
premultiplication due to the alpha channel. This patch adds a new filter
allowing us to take advantage of our accelerated implementations to
perform these transformations on their behalf.

Differential Revision: https://phabricator.services.mozilla.com/D46449

--HG--
extra : moz-landing-system : lando
2019-10-02 13:37:29 +00:00
Cosmin Sabou
6da90eb0b7 Backed out 9 changesets (bug 1551088) for causing Bug 1583848. a=backout
Backed out changeset d0ab25c226a7 (bug 1551088)
Backed out changeset 9ef391e20fa6 (bug 1551088)
Backed out changeset 3e6f25b21f8c (bug 1551088)
Backed out changeset 5d72c8de4daf (bug 1551088)
Backed out changeset f77c43bcc75b (bug 1551088)
Backed out changeset 9e954d6765de (bug 1551088)
Backed out changeset d90a571e581f (bug 1551088)
Backed out changeset 25a5f5563e9d (bug 1551088)
Backed out changeset bed9c93eeb2d (bug 1551088)
2019-09-25 18:42:48 +03:00
Andrew Osmond
4bf69333a2 Bug 1551088 - Part 6. Make image decoders use accelerated methods for swizzling and premultiplication. r=tnikkel
The PNG decoder lacks fast implementations for swizzling/unpacking
inside the library, and both PNG and WebP may need to perform
premultiplication due to the alpha channel. This patch adds a new filter
allowing us to take advantage of our accelerated implementations to
perform these transformations on their behalf.

Differential Revision: https://phabricator.services.mozilla.com/D46449

--HG--
extra : moz-landing-system : lando
2019-09-24 20:42:47 +00:00
Oana Pop Rus
4f9a3f24ba Backed out 8 changesets (bug 1551088) for causing reftest failures in SwizzleAVX2.cpp and SwizzleSSSE3.cpp on a CLOSED TREE
Backed out changeset b3760d42e3bf (bug 1551088)
Backed out changeset 222e856b5bc3 (bug 1551088)
Backed out changeset b259c9fb5ad6 (bug 1551088)
Backed out changeset 5fe283ceaa0b (bug 1551088)
Backed out changeset d4dadb6ef0bd (bug 1551088)
Backed out changeset 925e26e17abe (bug 1551088)
Backed out changeset a011360f5018 (bug 1551088)
Backed out changeset 229c3d631d2e (bug 1551088)
2019-09-24 18:12:39 +03:00
Andrew Osmond
dda166a96c Bug 1551088 - Part 6. Make image decoders use accelerated methods for swizzling and premultiplication. r=tnikkel
The PNG decoder lacks fast implementations for swizzling/unpacking
inside the library, and both PNG and WebP may need to perform
premultiplication due to the alpha channel. This patch adds a new filter
allowing us to take advantage of our accelerated implementations to
perform these transformations on their behalf.

Differential Revision: https://phabricator.services.mozilla.com/D46449

--HG--
extra : moz-landing-system : lando
2019-09-24 13:31:32 +00:00
Cosmin Sabou
69acba5002 Backed out 8 changesets (bug 1551088) for causing build bustages. CLOSED TREE
Backed out changeset 02d9dc4d39a5 (bug 1551088)
Backed out changeset d7684ca35c0d (bug 1551088)
Backed out changeset b061b1bf8281 (bug 1551088)
Backed out changeset 4760b8b22ffd (bug 1551088)
Backed out changeset 4685fc022257 (bug 1551088)
Backed out changeset 91300f9f99bb (bug 1551088)
Backed out changeset 6da767c8d55c (bug 1551088)
Backed out changeset ec69be661551 (bug 1551088)
2019-09-21 14:52:41 +03:00
Andrew Osmond
7f20ed4927 Bug 1551088 - Part 6. Make image decoders use accelerated methods for swizzling and premultiplication. r=tnikkel
The PNG decoder lacks fast implementations for swizzling/unpacking
inside the library, and both PNG and WebP may need to perform
premultiplication due to the alpha channel. This patch adds a new filter
allowing us to take advantage of our accelerated implementations to
perform these transformations on their behalf.

Differential Revision: https://phabricator.services.mozilla.com/D46449

--HG--
extra : moz-landing-system : lando
2019-09-21 07:13:45 +00:00
Timothy Nikkel
dc486dab60 Bug 1567418. Try to diagnose crash in png decoder. r=aosmond
Call WriteRow from a different line number if we have an interlacing buffer. I think the compiler shouldn't be able to optimize these into the same code, and so we should be able to distinguish them.

Differential Revision: https://phabricator.services.mozilla.com/D44061

--HG--
extra : moz-landing-system : lando
2019-08-30 11:27:58 +00:00
Andrew Osmond
006448f8a5 Bug 1560441 - Don't create QCMS profiles/transforms during PNG metadata decoding. r=tnikkel
Creating QCMS profiles and transforms are fairly expensive operations
and not necessary for metadata decoding. We can reduce the time required
for PNG metadata decoding by skipping this. The JPEG and WebP decoders
already do this.

Differential Revision: https://phabricator.services.mozilla.com/D35500
2019-06-21 09:08:31 -07:00
Andrew Osmond
008cb2a2d8 Bug 1555934 - Partially backout bug 1255106 part 3 to fix decoders with transparency. r=aosmond 2019-06-11 13:06:15 -04:00
Andrew Osmond
741028ad6b Bug 1255106 - Part 3. Use color management filter with decoders using SurfacePipe. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D26371
2019-05-28 11:38:46 -04:00
Andrew Osmond
a445258270 Bug 1255106 - Part 1. Move color transform state to image decoder base class. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D26369
2019-05-28 11:38:46 -04:00
Andrew Osmond
3befab3ee9 Bug 1530774 - Part 3. Remove decoder support for producing paletted frames. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D23716
2019-03-18 07:30:34 -04:00
Timothy Nikkel
48052cc9cb Bug 1526717. Guard against libpng calling the info callback more than once. r=aosmond
libpng uses the first IDAT chunk it encounters as a signal that it has read all header chunks and to send the info callback.

The testcase png has an IDAT chunk, then a z chunk (not a known chunk type), and then another IDAT chunk.

libpng tracks if we are in an "after idat" state, and throws a benign error if it encounters another IDAT chunk in "after idat" mode, but it just continues normally, processing the idat chunk as if it were the first and therefore sends the info callback again. This seems silly.

https://searchfox.org/mozilla-central/rev/f1c7ba91fad60bfea184006f3728dd6ac48c8e56/media/libpng/pngpread.c#307
2019-03-14 14:32:37 -05:00
Andrew Osmond
b4b0a26151 Bug 1530222 - Allow libpng to allocate larger chunks for decoding purposes. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D21533
2019-03-01 09:47:53 -05:00
Ehsan Akhgari
e5e885ae31 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset

--HG--
extra : amend_source : 7221c8d15a765df71171099468e7c7faa648f37c
extra : histedit_source : a0cce6015636202bff09e35a13f72e03257a7695
2019-01-18 10:16:18 +01:00
Sylvestre Ledru
265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Andrew Osmond
5024f42bc6 Bug 1337111 - Part 2. Add an image decoder flag to request complete frames. r=tnikkel
DecoderFlags::BLEND_ANIMATION will cause the decoder to inject the
BlendAnimationFilter from the previous patch into the SurfacePipe filter
chain. All frames produced by this decoder will be complete, and
should be equivalent to the result outputted by FrameAnimator.
2018-09-17 15:06:28 -04:00
Coroiu Cristina
de5411772c Backed out 6 changesets (bug 1337111) for build bustages at builds/worker/workspace/build/src/image/SurfaceFilters.h on a CLOSED TREE
Backed out changeset ca0caa556dc9 (bug 1337111)
Backed out changeset d7d7fa868d0d (bug 1337111)
Backed out changeset 93e956e89a21 (bug 1337111)
Backed out changeset f36337c1309b (bug 1337111)
Backed out changeset 1b1e25b0b345 (bug 1337111)
Backed out changeset 3785cdebe6a3 (bug 1337111)
2018-09-17 20:42:30 +03:00
Andrew Osmond
d923b67d0f Bug 1337111 - Part 2. Add an image decoder flag to request complete frames. r=tnikkel
DecoderFlags::BLEND_ANIMATION will cause the decoder to inject the
BlendAnimationFilter from the previous patch into the SurfacePipe filter
chain. All frames produced by this decoder will be complete, and
should be equivalent to the result outputted by FrameAnimator.
2018-09-17 13:21:38 -04:00
Emilio Cobos Álvarez
fffb25b74f Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
This was done automatically replacing:

  s/mozilla::Move/std::move/
  s/ Move(/ std::move(/
  s/(Move(/(std::move(/

Removing the 'using mozilla::Move;' lines.

And then with a few manual fixups, see the bug for the split series..

MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +02:00
Andrew Osmond
01907fa0e3 Bug 1462355 - Part 1c. Make individual image decoders to use updated Decoder/SurfacePipe methods. r=tnikkel 2018-05-29 08:36:12 -04:00
Glenn Randers-Pehrson
a439abac9e Bug 1402140 - Add "eXIf" to unused_chunks list in PNG decoder. r=jrmuizel 2017-09-21 15:35:00 -04:00
Milan Sreckovic
5c01b5706c Bug 1387514: Upgrade BaseRect (derived classes) width and height direct member variable use to instead use Width()/SetWidth() and Height()/SetHeight() in image/*. r=aosmond
MozReview-Commit-ID: 8gyxxLziVe7

--HG--
extra : rebase_source : c79e81e10c54106645539c590bf81a03a300a909
2017-08-14 08:29:56 -04:00
Andrew Osmond
93efb56fbf Bug 1315554 - Part 3. Expose Decoder::IsValidICOResource for all decoders. r=tnikkel 2017-07-22 07:50:31 -04:00
Sebastian Hengst
7197a59a77 Backed out changeset 9780a01b3e94 (bug 1315554) 2017-07-22 11:04:17 +02:00
Andrew Osmond
a5bb792dc9 Bug 1315554 - Part 3. Expose Decoder::IsValidICOResource for all decoders. r=tnikkel 2017-07-22 00:14:59 -04:00
Glenn Randers-Pehrson
cec136b369 Bug 1368407 - Check for too-large PNG width. r=tn
--HG--
extra : source : 76404bf85ef79bacff8fd82b364698af17275d6b
2017-06-03 14:37:00 -04:00
Ryan VanderMeulen
f6491af56c Backed out changeset 76404bf85ef7 for landing with the wrong bug number in the commit message. 2017-06-07 22:43:58 -04:00
Glenn Randers-Pehrson
a20fe96562 Bug 1367496 - Check for too-large PNG width. r=tn
--HG--
extra : rebase_source : 0c4a6e639e803bceff110cab600aadb3779a79fe
2017-06-03 14:37:00 -04:00
Timothy Nikkel
0e7000fdce Bug 1352282. Always fill in the number of loops when decoding an APNG file. r=aosmond
If we were doing a first frame only decode we wouldn't fill in this value. The spec says this chunk must come before any image data so it should always be available at the end of any full decode (whether it be truly full or first frame only).
2017-04-05 11:28:40 -05:00
Vedant Sareen
7d4bd52fae Bug 1330907 - Rename Telemetry::ID to Telemetry::HistogramID. r=dexter
Changed |print("enum ID : uint32_t {", file=output)| to |print("enum HistogramID : uint32_t {", file=output)| at line 53 of the file |toolkit/components/telemetry/gen-histogram-enum.py|, and then replaced all the textual occurrences of |Telemetry::ID| to |Telemetry::HistogramID| and |ID| to |HistogramID| in 43 other files.
2017-02-16 00:45:15 +05:30
Phil Ringnalda
c7b01ecbda Backed out 5 changesets (bug 1290292, bug 1290293) for gfx assertions
CLOSED TREE

Backed out changeset 652c909b75ad (bug 1290293)
Backed out changeset 90a284ea19e3 (bug 1290292)
Backed out changeset 8401d12fe936 (bug 1290293)
Backed out changeset d87488b69c18 (bug 1290293)
Backed out changeset 7368aa665fae (bug 1290293)
2017-02-13 19:28:45 -08:00
Andrew Osmond
6679005d2a Bug 1290293 - Part 2e. Make SurfacePipe users clear unwritten pixels if the image is truncated. r=tnikkel 2016-08-18 09:55:45 -04:00