Commit 3b94e476 authored by noel@chromium.org's avatar noel@chromium.org

[Android] ImageBuffer toDataURL("image/webp") has RGBA pixel input

On Android, a premultiplied ImageBuffer source has RGBA pixels. Import
its bitmap for encoding in that form, rather than BGRA.

Covered by fast/canvas/canvas-toDataURL-webp.html

BUG=421454

Review URL: https://codereview.chromium.org/645333002

git-svn-id: svn://svn.chromium.org/blink/trunk@183712 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 04ec642d
...@@ -83,6 +83,14 @@ template <bool Premultiplied> inline bool importPictureRGBX(const unsigned char* ...@@ -83,6 +83,14 @@ template <bool Premultiplied> inline bool importPictureRGBX(const unsigned char*
return rgbPictureImport(pixels, Premultiplied, &WebPPictureImportRGBX, &WebPPictureImportRGB, picture); return rgbPictureImport(pixels, Premultiplied, &WebPPictureImportRGBX, &WebPPictureImportRGB, picture);
} }
static bool platformPremultipliedImportPicture(const unsigned char* pixels, WebPPicture* picture)
{
if (SK_B32_SHIFT) // Android
return importPictureRGBX<true>(pixels, picture);
return importPictureBGRX<true>(pixels, picture);
}
static bool encodePixels(IntSize imageSize, const unsigned char* pixels, bool premultiplied, int quality, Vector<unsigned char>* output) static bool encodePixels(IntSize imageSize, const unsigned char* pixels, bool premultiplied, int quality, Vector<unsigned char>* output)
{ {
WebPConfig config; WebPConfig config;
...@@ -100,7 +108,7 @@ static bool encodePixels(IntSize imageSize, const unsigned char* pixels, bool pr ...@@ -100,7 +108,7 @@ static bool encodePixels(IntSize imageSize, const unsigned char* pixels, bool pr
return false; return false;
picture.height = imageSize.height(); picture.height = imageSize.height();
if (premultiplied && !importPictureBGRX<true>(pixels, &picture)) if (premultiplied && !platformPremultipliedImportPicture(pixels, &picture))
return false; return false;
if (!premultiplied && !importPictureRGBX<false>(pixels, &picture)) if (!premultiplied && !importPictureRGBX<false>(pixels, &picture))
return false; return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment