New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 742586 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 12
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android
Pri: 1
Type: Bug

Blocked on:
issue 558070

Blocking:
issue 740209



Sign in to add a comment

Reduce unnecessary data storage for images on low-end Android devices

Project Member Reported by chrishtr@chromium.org, Jul 13 2017

Issue description

Encoded image stored twice ( issue 740210 )

SVG images too expensive (issue 741029)

Decoded images which are not completed are unnecessarily stored
(in ImageDecodingStore::Instance())

Images are not decoded to scale (plumbing and implementation of plumbing
not implemented)


Also, there is currently a soft limit on the size of an image
(BlinkPlatformImpl::MaxDecodedImageBytes()), which
JPEGs obey by downsampling, and animated images obey by dropping frames
before the most recent one. Other image formats ignore the limit.

(Aside: it should be verified that the downsampling for JPEGs actually works.)
 
Blocking: 740209
Decode to scale is tracked in  issue 558070 .
And also see  issue 438323 .
Project Member

Comment 4 by bugdroid1@chromium.org, Jul 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e44eebb08dade6f31bc96703f1252f5bbc1df8ee

commit e44eebb08dade6f31bc96703f1252f5bbc1df8ee
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Mon Jul 24 21:47:31 2017

Don't store extra copies of partially decoded images on low-end
devices.

In order to favor reducing peak memory over performance on low devices,
we now decode directly into the compositor's memory (rather than into
ImageDecoder's cache followed by a copy) even if only part of of the
(single-frame) image is available. This means future decodes will
have to start over, but we avoid the extra memory in ImageFrameGenerator.

Also, rename ImageDecoder::FrameBufferAtIndex to
ImageDecoder::DecodeFrameBufferAtIndex.

TBR=danakj@chromium.org

Bug:  742586 
Change-Id: I86c90f07ca599af2144968afe7e98dc1c4d5fe33
Reviewed-on: https://chromium-review.googlesource.com/578512
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Khushal <khushalsagar@chromium.org>
Reviewed-by: Leon Scroggins <scroggo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#489085}
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/base/sys_info.h
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/content/child/blink_platform_impl.cc
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/content/child/blink_platform_impl.h
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/core/exported/WebImageDecoder.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/core/imagebitmap/ImageBitmap.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/modules/notifications/NotificationImageLoader.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/PngFuzzer.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/exported/WebImage.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/graphics/ImageFrameGenerator.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/graphics/ImageFrameGenerator.h
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/graphics/ImageFrameGeneratorTest.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/graphics/PictureSnapshot.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/graphics/test/MockImageDecoder.h
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/image-decoders/ImageDecoderTestHelpers.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/image-decoders/bmp/BMPImageDecoderTest.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoderTest.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/image-decoders/ico/ICOImageDecoder.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/image-decoders/ico/ICOImageDecoderTest.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/image-decoders/jpeg/JPEGImageDecoderTest.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/image-decoders/png/PNGImageDecoderTest.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoderTest.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/Source/platform/testing/ImageDecodeBench.cpp
[modify] https://crrev.com/e44eebb08dade6f31bc96703f1252f5bbc1df8ee/third_party/WebKit/public/platform/Platform.h

Owner: ----
Status: Available (was: Assigned)
Cc: chrishtr@chromium.org
Labels: OS-Android
khushalsagar@ or chrishtr@, what's left to do of the original tasks at the top of this bug? It seems like most of the work is tracked elsewhere. If so, please close this out.
Blockedon: 558070
 issue 740210  - some refactoring has happened to move towards reducing duplicates, but
not done yet.

issue 741029 - investigated, a bunch of the overhead seems to be from tracing, and no
obvious low-hanging fruits found.


Images are not decoded to scale - almost done for JPEGs ( issue 558070 )

Project Member

Comment 8 by sheriffbot@chromium.org, Nov 7

Labels: Hotlist-Recharge-Cold
Status: Untriaged (was: Available)
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue.

Sorry for the inconvenience if the bug really should have been left as Available.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Owner: chrishtr@chromium.org
Status: Assigned (was: Untriaged)
Based on the closed bug on comment #7, it seems now we can close this. chrishtr@, opinion?
Status: Fixed (was: Assigned)

Sign in to add a comment