Merge "Introduce a generic WebPGetImageReader(type) function"

This commit is contained in:
Pascal Massimino 2016-10-13 07:21:59 +00:00 committed by Gerrit Code Review
commit f7601aa686
3 changed files with 26 additions and 7 deletions

View File

@ -107,7 +107,7 @@ static int ReadPicture(const char* const filename, WebPPicture* const pic,
if (pic->width == 0 || pic->height == 0) {
WebPImageReader reader = WebPGuessImageReader(data, data_size);
ok = (reader != NULL) && reader(data, data_size, pic, keep_alpha, metadata);
ok = reader(data, data_size, pic, keep_alpha, metadata);
} else {
// If image size is specified, infer it as YUV format.
ok = ReadYUV(data, data_size, pic);

View File

@ -34,13 +34,28 @@ WebPInputFileFormat WebPGuessImageType(const uint8_t* const data,
return format;
}
WebPImageReader WebPGuessImageReader(const uint8_t* const data,
size_t data_size) {
switch (WebPGuessImageType(data, data_size)) {
static int FailReader(const uint8_t* const data, size_t data_size,
struct WebPPicture* const pic,
int keep_alpha, struct Metadata* const metadata) {
(void)data;
(void)data_size;
(void)pic;
(void)keep_alpha;
(void)metadata;
return 0;
}
WebPImageReader WebPGetImageReader(WebPInputFileFormat format) {
switch (format) {
case WEBP_PNG_FORMAT: return ReadPNG;
case WEBP_JPEG_FORMAT: return ReadJPEG;
case WEBP_TIFF_FORMAT: return ReadTIFF;
case WEBP_WEBP_FORMAT: return ReadWebP;
default: return NULL;
default: return FailReader;
}
}
}
WebPImageReader WebPGuessImageReader(const uint8_t* const data,
size_t data_size) {
return WebPGetImageReader(WebPGuessImageType(data, data_size));
}

View File

@ -49,8 +49,12 @@ typedef int (*WebPImageReader)(const uint8_t* const data, size_t data_size,
struct WebPPicture* const pic,
int keep_alpha, struct Metadata* const metadata);
// Return the reader associated to a given file format.
WebPImageReader WebPGetImageReader(WebPInputFileFormat format);
// This function is similar to WebPGuessImageType(), but returns a
// suitable reader function. Or NULL if the image can't be guessed.
// suitable reader function. The returned reader is never NULL, but
// unknown formats will return an always-failing valid reader.
WebPImageReader WebPGuessImageReader(const uint8_t* const data,
size_t data_size);