From 68111ab02ff1aca1d88172f53ba55e9bb07733f8 Mon Sep 17 00:00:00 2001 From: Pascal Massimino <pascal.massimino@gmail.com> Date: Fri, 29 Mar 2013 04:28:49 -0700 Subject: [PATCH] add missing YUVA->ARGB automatic conversion in WebPEncode() user can now call WebPEncode() with any YUVA or ARGB format, for lossy or lossless compression also: simplified error reporting, which is done in WebPPictureARGBToYUVA() and WebPPictureYUVAToARGB() Change-Id: Ifb68909217175bcf5a050e5c68d06de9849468f7 (cherry picked from commit 07d87bda1b4a534a5a96ed6c2457875f153f8943) --- src/enc/webpenc.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/enc/webpenc.c b/src/enc/webpenc.c index 5e13ddc1..20fbac4d 100644 --- a/src/enc/webpenc.c +++ b/src/enc/webpenc.c @@ -374,11 +374,8 @@ int WebPEncode(const WebPConfig* config, WebPPicture* pic) { if (!config->lossless) { VP8Encoder* enc = NULL; if (pic->y == NULL || pic->u == NULL || pic->v == NULL) { - if (pic->argb != NULL) { - if (!WebPPictureARGBToYUVA(pic, WEBP_YUV420)) return 0; - } else { - return WebPEncodingSetError(pic, VP8_ENC_ERROR_NULL_PARAMETER); - } + // Make sure we have YUVA samples. + if (!WebPPictureARGBToYUVA(pic, WEBP_YUV420)) return 0; } enc = InitVP8Encoder(config, pic); @@ -405,8 +402,10 @@ int WebPEncode(const WebPConfig* config, WebPPicture* pic) { } ok &= DeleteVP8Encoder(enc); // must always be called, even if !ok } else { - if (pic->argb == NULL) - return WebPEncodingSetError(pic, VP8_ENC_ERROR_NULL_PARAMETER); + // Make sure we have ARGB samples. + if (pic->argb == NULL && !WebPPictureYUVAToARGB(pic)) { + return 0; + } ok = VP8LEncodeImage(config, pic); // Sets pic->error in case of problem. }