[whatwg] Proposal: downsample while decoding image blobs in createImageBitmap()

David Flanagan dflanagan at mozilla.com
Tue Dec 17 21:36:17 PST 2013


On 12/17/13 8:36 PM, Rik Cabanier wrote:
> Hi David,
>
> is there a reason why you are completely decoding the image when you 
> create the imageBitmap? [1]
I assume that that is the intent of calling createImageBitmap() on a 
blob. Since JPEG decoding probably takes significantly longer than 
blocking on memory access, I assume that lazy decoding is not really 
allowed.

But that misses my point. On the devices I'm concerned with I can never 
completely decode the image whether it is deferred or not.  If I decode 
at full size, apps running in the background are likely to be killed 
because of low memory. I need the ability to do the downsampling during 
the decoding process, so that there is never the memory impact of 
holding the entire full-size image in memory.

> If you detect a situation where this operation causes excessive memory 
> consumption, you could hold on to the compressed data URL and defer 
> decoding until the point where it is actually needed.
> Since exhausting VM will create "undue latency", this workaround 
> follows the spirit of the spec.
>
> If you really want to have the downsampled bits in memory, you could 
> create a canvas and draw your image into it.
I can't do that because I don't have (and cannot have) a full-size 
decoded image.  I've got a blob that is a JPEG encoded 5 megapixel 
image.  And I want to end up with a decoded 320x480 image.  And I want 
to get from A to B without ever allocating 20mb and decoding the image 
at full size.

<snip>
>
>     6) Finally, because image data can take up so much memory, I would
>     like to propose that ImageBitmap have a release() method to explicitly
>     free the memory that holds the decoded image when that decoded image
>     data is no longer needed. This gives web applications more precise
>     control over memory allocation without having to wait for garbage
>     collection.
>
>
> There was an email thread on adding this to canvas [2], it seems 
> reasonable to add it to imageBitmap as well.
>
> 1: 
> http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-createimagebitmap
> 2: 
> http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2013-July/040165.html
Thanks for this link.  It looks like the January message quoted in this 
July message is requesting exactly the same feature as I am for 
discarding or releasing ImageBitmaps.

   David



More information about the whatwg mailing list