mirror of
https://github.com/webmproject/libwebp.git
synced 2024-12-27 22:28:22 +01:00
Introduce a generic WebPGetImageReader(type) function
Also introduce an always-failing 'reader' for unknown formats. So we don't have to check reader==NULL, code is more regular. -> We can get read of specific ReadPNG(), ReadJPEG(), ... declaration and use. Change-Id: I290759705420878f00c7223c726d4ad404afd9c4
This commit is contained in:
parent
4eb5df28d1
commit
ce8733209d
@ -107,7 +107,7 @@ static int ReadPicture(const char* const filename, WebPPicture* const pic,
|
|||||||
|
|
||||||
if (pic->width == 0 || pic->height == 0) {
|
if (pic->width == 0 || pic->height == 0) {
|
||||||
WebPImageReader reader = WebPGuessImageReader(data, data_size);
|
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 {
|
} else {
|
||||||
// If image size is specified, infer it as YUV format.
|
// If image size is specified, infer it as YUV format.
|
||||||
ok = ReadYUV(data, data_size, pic);
|
ok = ReadYUV(data, data_size, pic);
|
||||||
|
@ -34,13 +34,28 @@ WebPInputFileFormat WebPGuessImageType(const uint8_t* const data,
|
|||||||
return format;
|
return format;
|
||||||
}
|
}
|
||||||
|
|
||||||
WebPImageReader WebPGuessImageReader(const uint8_t* const data,
|
static int FailReader(const uint8_t* const data, size_t data_size,
|
||||||
size_t data_size) {
|
struct WebPPicture* const pic,
|
||||||
switch (WebPGuessImageType(data, data_size)) {
|
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_PNG_FORMAT: return ReadPNG;
|
||||||
case WEBP_JPEG_FORMAT: return ReadJPEG;
|
case WEBP_JPEG_FORMAT: return ReadJPEG;
|
||||||
case WEBP_TIFF_FORMAT: return ReadTIFF;
|
case WEBP_TIFF_FORMAT: return ReadTIFF;
|
||||||
case WEBP_WEBP_FORMAT: return ReadWebP;
|
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));
|
||||||
|
}
|
||||||
|
@ -49,8 +49,12 @@ typedef int (*WebPImageReader)(const uint8_t* const data, size_t data_size,
|
|||||||
struct WebPPicture* const pic,
|
struct WebPPicture* const pic,
|
||||||
int keep_alpha, struct Metadata* const metadata);
|
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
|
// 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,
|
WebPImageReader WebPGuessImageReader(const uint8_t* const data,
|
||||||
size_t data_size);
|
size_t data_size);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user