Regression fix for alpha channels using color cache:

Considering the fact that insert to/lookup from the color cache is always 32
bit, use DecodeImageData() variant in that case.

Conflicts:
	src/dec/vp8l.c

Change-Id: I6c665a6cfbd9bd10651c1e82fa54e687cbd54a2b
(cherry picked from commit a37eff47d6b6f0a3721a9710235cd894c2982e9b)
This commit is contained in:
Urvang Joshi 2013-06-17 03:45:09 -07:00 committed by James Zern
parent 2e377b53b0
commit 7288950b88

View File

@ -1142,11 +1142,12 @@ int VP8LDecodeAlphaImageStream(int width, int height, const uint8_t* const data,
dec->action_ = READ_HDR; dec->action_ = READ_HDR;
if (!DecodeImageStream(width, height, 1, dec, NULL)) goto Err; if (!DecodeImageStream(width, height, 1, dec, NULL)) goto Err;
// Special case: if alpha data contains only the color indexing transform // Special case: if alpha data uses only the color indexing transform and
// (a frequent case), we will use DecodeAlphaData() method that only needs // doesn't use color cache (a frequent case), we will use DecodeAlphaData()
// allocation of 1 byte per pixel (alpha channel). // method that only needs allocation of 1 byte per pixel (alpha channel).
if (dec->next_transform_ == 1 && if (dec->next_transform_ == 1 &&
dec->transforms_[0].type_ == COLOR_INDEXING_TRANSFORM) { dec->transforms_[0].type_ == COLOR_INDEXING_TRANSFORM &&
dec->hdr_.color_cache_size_ == 0) {
bytes_per_pixel = sizeof(uint8_t); bytes_per_pixel = sizeof(uint8_t);
} }