mirror of
https://github.com/webmproject/libwebp.git
synced 2024-11-20 04:18:26 +01:00
imagedec: support metadata reading for WebP image decoding
Needs to link imagedec.a to demux/libwebpdemux.a Change-Id: Id8f4068718b0e4a1e84607bccd5af5419120c231
This commit is contained in:
parent
c4cc114785
commit
641cedccd3
@ -192,7 +192,8 @@ if(WEBP_BUILD_CWEBP OR WEBP_BUILD_DWEBP OR
|
|||||||
parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/imageio "IMAGEDEC_SRCS"
|
parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/imageio "IMAGEDEC_SRCS"
|
||||||
"imagedec_[^ ]*")
|
"imagedec_[^ ]*")
|
||||||
add_library(imagedec ${IMAGEDEC_SRCS})
|
add_library(imagedec ${IMAGEDEC_SRCS})
|
||||||
target_link_libraries(imagedec imageioutil webp ${WEBP_DEP_IMG_LIBRARIES})
|
target_link_libraries(imagedec imageioutil webpdemux webp
|
||||||
|
${WEBP_DEP_IMG_LIBRARIES})
|
||||||
|
|
||||||
# Image-encoding utility library.
|
# Image-encoding utility library.
|
||||||
parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/imageio "IMAGEENC_SRCS"
|
parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/imageio "IMAGEENC_SRCS"
|
||||||
|
11
Makefile.vc
11
Makefile.vc
@ -368,9 +368,11 @@ $(DIRBIN)\anim_dump.exe: $(EX_GIF_DEC_OBJS) $(LIBWEBPDEMUX) $(LIBWEBP)
|
|||||||
$(DIRBIN)\anim_dump.exe: $(IMAGEIO_ENC_OBJS)
|
$(DIRBIN)\anim_dump.exe: $(IMAGEIO_ENC_OBJS)
|
||||||
$(DIRBIN)\cwebp.exe: $(DIROBJ)\examples\cwebp.obj $(IMAGEIO_DEC_OBJS)
|
$(DIRBIN)\cwebp.exe: $(DIROBJ)\examples\cwebp.obj $(IMAGEIO_DEC_OBJS)
|
||||||
$(DIRBIN)\cwebp.exe: $(IMAGEIO_UTIL_OBJS)
|
$(DIRBIN)\cwebp.exe: $(IMAGEIO_UTIL_OBJS)
|
||||||
|
$(DIRBIN)\cwebp.exe: $(LIBWEBPDEMUX)
|
||||||
$(DIRBIN)\dwebp.exe: $(DIROBJ)\examples\dwebp.obj $(IMAGEIO_DEC_OBJS)
|
$(DIRBIN)\dwebp.exe: $(DIROBJ)\examples\dwebp.obj $(IMAGEIO_DEC_OBJS)
|
||||||
$(DIRBIN)\dwebp.exe: $(IMAGEIO_ENC_OBJS)
|
$(DIRBIN)\dwebp.exe: $(IMAGEIO_ENC_OBJS)
|
||||||
$(DIRBIN)\dwebp.exe: $(IMAGEIO_UTIL_OBJS)
|
$(DIRBIN)\dwebp.exe: $(IMAGEIO_UTIL_OBJS)
|
||||||
|
$(DIRBIN)\dwebp.exe: $(LIBWEBPDEMUX)
|
||||||
$(DIRBIN)\gif2webp.exe: $(DIROBJ)\examples\gif2webp.obj $(EX_GIF_DEC_OBJS)
|
$(DIRBIN)\gif2webp.exe: $(DIROBJ)\examples\gif2webp.obj $(EX_GIF_DEC_OBJS)
|
||||||
$(DIRBIN)\gif2webp.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS) $(LIBWEBPMUX)
|
$(DIRBIN)\gif2webp.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS) $(LIBWEBPMUX)
|
||||||
$(DIRBIN)\gif2webp.exe: $(LIBWEBP)
|
$(DIRBIN)\gif2webp.exe: $(LIBWEBP)
|
||||||
@ -383,15 +385,18 @@ $(DIRBIN)\webpmux.exe: $(DIROBJ)\examples\webpmux.obj $(LIBWEBPMUX)
|
|||||||
$(DIRBIN)\webpmux.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS) $(LIBWEBP)
|
$(DIRBIN)\webpmux.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS) $(LIBWEBP)
|
||||||
$(DIRBIN)\img2webp.exe: $(DIROBJ)\examples\img2webp.obj $(LIBWEBPMUX)
|
$(DIRBIN)\img2webp.exe: $(DIROBJ)\examples\img2webp.obj $(LIBWEBPMUX)
|
||||||
$(DIRBIN)\img2webp.exe: $(IMAGEIO_DEC_OBJS)
|
$(DIRBIN)\img2webp.exe: $(IMAGEIO_DEC_OBJS)
|
||||||
$(DIRBIN)\img2webp.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS) $(LIBWEBP)
|
$(DIRBIN)\img2webp.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS)
|
||||||
|
$(DIRBIN)\img2webp.exe: $(LIBWEBPDEMUX) $(LIBWEBP)
|
||||||
$(DIRBIN)\get_disto.exe: $(DIROBJ)\extras\get_disto.obj
|
$(DIRBIN)\get_disto.exe: $(DIROBJ)\extras\get_disto.obj
|
||||||
$(DIRBIN)\get_disto.exe: $(IMAGEIO_DEC_OBJS) $(IMAGEIO_UTIL_OBJS) $(LIBWEBP)
|
$(DIRBIN)\get_disto.exe: $(IMAGEIO_DEC_OBJS) $(IMAGEIO_UTIL_OBJS)
|
||||||
|
$(DIRBIN)\get_disto.exe: $(LIBWEBPDEMUX) $(LIBWEBP)
|
||||||
$(DIRBIN)\webp_quality.exe: $(DIROBJ)\extras\webp_quality.obj
|
$(DIRBIN)\webp_quality.exe: $(DIROBJ)\extras\webp_quality.obj
|
||||||
$(DIRBIN)\webp_quality.exe: $(IMAGEIO_UTIL_OBJS)
|
$(DIRBIN)\webp_quality.exe: $(IMAGEIO_UTIL_OBJS)
|
||||||
$(DIRBIN)\webp_quality.exe: $(EXTRAS_OBJS) $(LIBWEBP)
|
$(DIRBIN)\webp_quality.exe: $(EXTRAS_OBJS) $(LIBWEBP)
|
||||||
$(DIRBIN)\webpinfo.exe: $(DIROBJ)\examples\webpinfo.obj
|
$(DIRBIN)\webpinfo.exe: $(DIROBJ)\examples\webpinfo.obj
|
||||||
$(DIRBIN)\webpinfo.exe: $(IMAGEIO_DEC_OBJS)
|
$(DIRBIN)\webpinfo.exe: $(IMAGEIO_DEC_OBJS)
|
||||||
$(DIRBIN)\webpinfo.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS) $(LIBWEBP)
|
$(DIRBIN)\webpinfo.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS)
|
||||||
|
$(DIRBIN)\webpinfo.exe: $(LIBWEBPDEMUX) $(LIBWEBP)
|
||||||
|
|
||||||
$(OUT_EXAMPLES): $(EX_UTIL_OBJS) $(LIBWEBP)
|
$(OUT_EXAMPLES): $(EX_UTIL_OBJS) $(LIBWEBP)
|
||||||
$(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS): $(OUTPUT_DIRS)
|
$(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS): $(OUTPUT_DIRS)
|
||||||
|
@ -289,6 +289,7 @@ model {
|
|||||||
imagedec(NativeLibrarySpec) {
|
imagedec(NativeLibrarySpec) {
|
||||||
binaries {
|
binaries {
|
||||||
all {
|
all {
|
||||||
|
lib library: "webpdemux", linkage: "static"
|
||||||
lib library: "webp", linkage: "static"
|
lib library: "webp", linkage: "static"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -331,6 +332,7 @@ model {
|
|||||||
lib library: "example_util", linkage: "static"
|
lib library: "example_util", linkage: "static"
|
||||||
lib library: "imagedec", linkage: "static"
|
lib library: "imagedec", linkage: "static"
|
||||||
lib library: "imageio_util", linkage: "static"
|
lib library: "imageio_util", linkage: "static"
|
||||||
|
lib library: "webpdemux", linkage: "static"
|
||||||
lib library: "webp", linkage: "static"
|
lib library: "webp", linkage: "static"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -351,6 +353,7 @@ model {
|
|||||||
lib library: "imagedec", linkage: "static"
|
lib library: "imagedec", linkage: "static"
|
||||||
lib library: "imageenc", linkage: "static"
|
lib library: "imageenc", linkage: "static"
|
||||||
lib library: "imageio_util", linkage: "static"
|
lib library: "imageio_util", linkage: "static"
|
||||||
|
lib library: "webpdemux", linkage: "static"
|
||||||
lib library: "webp"
|
lib library: "webp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -390,6 +393,7 @@ model {
|
|||||||
lib library: "imagedec", linkage: "static"
|
lib library: "imagedec", linkage: "static"
|
||||||
lib library: "imageio_util", linkage: "static"
|
lib library: "imageio_util", linkage: "static"
|
||||||
lib library: "webpmux", linkage: "static"
|
lib library: "webpmux", linkage: "static"
|
||||||
|
lib library: "webpdemux", linkage: "static"
|
||||||
lib library: "webp"
|
lib library: "webp"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
11
configure.ac
11
configure.ac
@ -601,7 +601,7 @@ AS_IF([test "x$enable_gif" != "xno"], [
|
|||||||
AM_CONDITIONAL([BUILD_ANIMDIFF], [test "${build_anim_diff}" = "yes"])
|
AM_CONDITIONAL([BUILD_ANIMDIFF], [test "${build_anim_diff}" = "yes"])
|
||||||
AM_CONDITIONAL([BUILD_GIF2WEBP], [test "${build_gif2webp}" = "yes"])
|
AM_CONDITIONAL([BUILD_GIF2WEBP], [test "${build_gif2webp}" = "yes"])
|
||||||
|
|
||||||
if test "$enable_libwebpmux" = "yes"; then
|
if test "$enable_libwebpdemux" = "yes" -a "$enable_libwebpmux" = "yes"; then
|
||||||
build_img2webp=yes
|
build_img2webp=yes
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([BUILD_IMG2WEBP], [test "${build_img2webp}" = "yes"])
|
AM_CONDITIONAL([BUILD_IMG2WEBP], [test "${build_img2webp}" = "yes"])
|
||||||
@ -702,8 +702,9 @@ AM_CONDITIONAL([WANT_MUX], [test "$enable_libwebpmux" = "yes"])
|
|||||||
dnl === Check whether libwebpdemux should be built
|
dnl === Check whether libwebpdemux should be built
|
||||||
AC_MSG_CHECKING(whether libwebpdemux is to be built)
|
AC_MSG_CHECKING(whether libwebpdemux is to be built)
|
||||||
AC_ARG_ENABLE([libwebpdemux],
|
AC_ARG_ENABLE([libwebpdemux],
|
||||||
AS_HELP_STRING([--enable-libwebpdemux],
|
AS_HELP_STRING([--disable-libwebpdemux],
|
||||||
[Build libwebpdemux @<:@default=no@:>@]))
|
[Disable libwebpdemux @<:@default=no@:>@]),
|
||||||
|
[], [enable_libwebpdemux=yes])
|
||||||
AC_MSG_RESULT(${enable_libwebpdemux-no})
|
AC_MSG_RESULT(${enable_libwebpdemux-no})
|
||||||
AM_CONDITIONAL([WANT_DEMUX], [test "$enable_libwebpdemux" = "yes"])
|
AM_CONDITIONAL([WANT_DEMUX], [test "$enable_libwebpdemux" = "yes"])
|
||||||
|
|
||||||
@ -752,14 +753,14 @@ libwebpmux: ${enable_libwebpmux-no}
|
|||||||
libwebpextras: ${enable_libwebpextras-no}
|
libwebpextras: ${enable_libwebpextras-no}
|
||||||
|
|
||||||
Tools:
|
Tools:
|
||||||
cwebp : yes
|
cwebp : ${enable_libwebpdemux-no}
|
||||||
Input format support
|
Input format support
|
||||||
====================
|
====================
|
||||||
JPEG : ${jpeg_support-no}
|
JPEG : ${jpeg_support-no}
|
||||||
PNG : ${png_support-no}
|
PNG : ${png_support-no}
|
||||||
TIFF : ${tiff_support-no}
|
TIFF : ${tiff_support-no}
|
||||||
WIC : ${wic_support-no}
|
WIC : ${wic_support-no}
|
||||||
dwebp : yes
|
dwebp : ${enable_libwebpdemux-no}
|
||||||
Output format support
|
Output format support
|
||||||
=====================
|
=====================
|
||||||
PNG : ${png_support-no}
|
PNG : ${png_support-no}
|
||||||
|
@ -27,7 +27,7 @@ LOCAL_SRC_FILES := \
|
|||||||
|
|
||||||
LOCAL_CFLAGS := $(WEBP_CFLAGS)
|
LOCAL_CFLAGS := $(WEBP_CFLAGS)
|
||||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../src
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../src
|
||||||
LOCAL_STATIC_LIBRARIES := example_util imageio_util imagedec webp
|
LOCAL_STATIC_LIBRARIES := example_util imageio_util imagedec webpdemux webp
|
||||||
|
|
||||||
LOCAL_MODULE := cwebp
|
LOCAL_MODULE := cwebp
|
||||||
|
|
||||||
@ -43,8 +43,7 @@ LOCAL_SRC_FILES := \
|
|||||||
|
|
||||||
LOCAL_CFLAGS := $(WEBP_CFLAGS)
|
LOCAL_CFLAGS := $(WEBP_CFLAGS)
|
||||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../src
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../src
|
||||||
LOCAL_STATIC_LIBRARIES := example_util imagedec imageenc webp
|
LOCAL_STATIC_LIBRARIES := example_util imagedec imageenc webpdemux webp
|
||||||
|
|
||||||
LOCAL_MODULE := dwebp
|
LOCAL_MODULE := dwebp
|
||||||
|
|
||||||
include $(BUILD_EXECUTABLE)
|
include $(BUILD_EXECUTABLE)
|
||||||
@ -75,7 +74,8 @@ LOCAL_SRC_FILES := \
|
|||||||
|
|
||||||
LOCAL_CFLAGS := $(WEBP_CFLAGS)
|
LOCAL_CFLAGS := $(WEBP_CFLAGS)
|
||||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../src
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../src
|
||||||
LOCAL_STATIC_LIBRARIES := example_util imageio_util imagedec webpmux webp
|
LOCAL_STATIC_LIBRARIES := example_util imageio_util imagedec webpmux webpdemux \
|
||||||
|
webp
|
||||||
|
|
||||||
LOCAL_MODULE := img2webp_example
|
LOCAL_MODULE := img2webp_example
|
||||||
|
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
AM_CPPFLAGS += -I$(top_builddir)/src -I$(top_srcdir)/src
|
AM_CPPFLAGS += -I$(top_builddir)/src -I$(top_srcdir)/src
|
||||||
|
|
||||||
bin_PROGRAMS = dwebp cwebp
|
bin_PROGRAMS =
|
||||||
|
if WANT_DEMUX
|
||||||
|
bin_PROGRAMS += dwebp cwebp
|
||||||
|
endif
|
||||||
if BUILD_ANIMDIFF
|
if BUILD_ANIMDIFF
|
||||||
noinst_PROGRAMS = anim_diff anim_dump
|
noinst_PROGRAMS = anim_diff anim_dump
|
||||||
endif
|
endif
|
||||||
|
@ -13,7 +13,10 @@ libwebpextras_la_LDFLAGS = -lm
|
|||||||
libwebpextras_la_LIBADD = ../src/libwebp.la
|
libwebpextras_la_LIBADD = ../src/libwebp.la
|
||||||
|
|
||||||
noinst_PROGRAMS =
|
noinst_PROGRAMS =
|
||||||
noinst_PROGRAMS += get_disto webp_quality
|
noinst_PROGRAMS += webp_quality
|
||||||
|
if WANT_DEMUX
|
||||||
|
noinst_PROGRAMS += get_disto
|
||||||
|
endif
|
||||||
if BUILD_VWEBP_SDL
|
if BUILD_VWEBP_SDL
|
||||||
noinst_PROGRAMS += vwebp_sdl
|
noinst_PROGRAMS += vwebp_sdl
|
||||||
endif
|
endif
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
AM_CPPFLAGS += -I$(top_builddir)/src -I$(top_srcdir)/src
|
AM_CPPFLAGS += -I$(top_builddir)/src -I$(top_srcdir)/src
|
||||||
noinst_LTLIBRARIES =
|
noinst_LTLIBRARIES =
|
||||||
noinst_LTLIBRARIES += libimageio_util.la
|
noinst_LTLIBRARIES += libimageio_util.la
|
||||||
noinst_LTLIBRARIES += libimagedec.la
|
if WANT_DEMUX
|
||||||
|
noinst_LTLIBRARIES += libimagedec.la
|
||||||
|
endif
|
||||||
noinst_LTLIBRARIES += libimageenc.la
|
noinst_LTLIBRARIES += libimageenc.la
|
||||||
|
|
||||||
noinst_HEADERS =
|
noinst_HEADERS =
|
||||||
@ -22,6 +24,7 @@ libimagedec_la_SOURCES += webpdec.c webpdec.h
|
|||||||
libimagedec_la_SOURCES += wicdec.c wicdec.h
|
libimagedec_la_SOURCES += wicdec.c wicdec.h
|
||||||
libimagedec_la_CPPFLAGS = $(JPEG_INCLUDES) $(PNG_INCLUDES) $(TIFF_INCLUDES)
|
libimagedec_la_CPPFLAGS = $(JPEG_INCLUDES) $(PNG_INCLUDES) $(TIFF_INCLUDES)
|
||||||
libimagedec_la_CPPFLAGS += $(AM_CPPFLAGS)
|
libimagedec_la_CPPFLAGS += $(AM_CPPFLAGS)
|
||||||
|
libimagedec_la_LIBADD = ../src/demux/libwebpdemux.la
|
||||||
|
|
||||||
libimageenc_la_SOURCES =
|
libimageenc_la_SOURCES =
|
||||||
libimageenc_la_SOURCES += image_enc.c image_enc.h
|
libimageenc_la_SOURCES += image_enc.c image_enc.h
|
||||||
|
@ -15,10 +15,12 @@
|
|||||||
|
|
||||||
#include "./webpdec.h"
|
#include "./webpdec.h"
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "webp/decode.h"
|
#include "webp/decode.h"
|
||||||
|
#include "webp/demux.h"
|
||||||
#include "webp/encode.h"
|
#include "webp/encode.h"
|
||||||
#include "./imageio_util.h"
|
#include "./imageio_util.h"
|
||||||
#include "./metadata.h"
|
#include "./metadata.h"
|
||||||
@ -102,6 +104,40 @@ VP8StatusCode DecodeWebPIncremental(
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// Metadata
|
||||||
|
|
||||||
|
static int ExtractMetadata(const uint8_t* const data, size_t data_size,
|
||||||
|
Metadata* const metadata) {
|
||||||
|
WebPData webp_data = { data, data_size };
|
||||||
|
WebPDemuxer* const demux = WebPDemux(&webp_data);
|
||||||
|
WebPChunkIterator chunk_iter;
|
||||||
|
uint32_t flags;
|
||||||
|
|
||||||
|
if (demux == NULL) return 0;
|
||||||
|
assert(metadata != NULL);
|
||||||
|
|
||||||
|
flags = WebPDemuxGetI(demux, WEBP_FF_FORMAT_FLAGS);
|
||||||
|
|
||||||
|
if ((flags & ICCP_FLAG) && WebPDemuxGetChunk(demux, "ICCP", 1, &chunk_iter)) {
|
||||||
|
MetadataCopy((const char*)chunk_iter.chunk.bytes, chunk_iter.chunk.size,
|
||||||
|
&metadata->iccp);
|
||||||
|
WebPDemuxReleaseChunkIterator(&chunk_iter);
|
||||||
|
}
|
||||||
|
if ((flags & EXIF_FLAG) && WebPDemuxGetChunk(demux, "EXIF", 1, &chunk_iter)) {
|
||||||
|
MetadataCopy((const char*)chunk_iter.chunk.bytes, chunk_iter.chunk.size,
|
||||||
|
&metadata->exif);
|
||||||
|
WebPDemuxReleaseChunkIterator(&chunk_iter);
|
||||||
|
}
|
||||||
|
if ((flags & XMP_FLAG) && WebPDemuxGetChunk(demux, "XMP ", 1, &chunk_iter)) {
|
||||||
|
MetadataCopy((const char*)chunk_iter.chunk.bytes, chunk_iter.chunk.size,
|
||||||
|
&metadata->xmp);
|
||||||
|
WebPDemuxReleaseChunkIterator(&chunk_iter);
|
||||||
|
}
|
||||||
|
WebPDemuxDelete(demux);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
int ReadWebP(const uint8_t* const data, size_t data_size,
|
int ReadWebP(const uint8_t* const data, size_t data_size,
|
||||||
@ -115,11 +151,6 @@ int ReadWebP(const uint8_t* const data, size_t data_size,
|
|||||||
|
|
||||||
if (data == NULL || data_size == 0 || pic == NULL) return 0;
|
if (data == NULL || data_size == 0 || pic == NULL) return 0;
|
||||||
|
|
||||||
// TODO(jzern): add Exif/XMP/ICC extraction.
|
|
||||||
if (metadata != NULL) {
|
|
||||||
fprintf(stderr, "Warning: metadata extraction from WebP is unsupported.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!WebPInitDecoderConfig(&config)) {
|
if (!WebPInitDecoderConfig(&config)) {
|
||||||
fprintf(stderr, "Library version mismatch!\n");
|
fprintf(stderr, "Library version mismatch!\n");
|
||||||
return 0;
|
return 0;
|
||||||
@ -181,7 +212,6 @@ int ReadWebP(const uint8_t* const data, size_t data_size,
|
|||||||
|
|
||||||
status = DecodeWebP(data, data_size, &config);
|
status = DecodeWebP(data, data_size, &config);
|
||||||
ok = (status == VP8_STATUS_OK);
|
ok = (status == VP8_STATUS_OK);
|
||||||
if (!ok) WebPPictureFree(pic);
|
|
||||||
if (ok && !keep_alpha && pic->use_argb) {
|
if (ok && !keep_alpha && pic->use_argb) {
|
||||||
// Need to wipe out the alpha value, as requested.
|
// Need to wipe out the alpha value, as requested.
|
||||||
int x, y;
|
int x, y;
|
||||||
@ -195,9 +225,18 @@ int ReadWebP(const uint8_t* const data, size_t data_size,
|
|||||||
|
|
||||||
if (status != VP8_STATUS_OK) {
|
if (status != VP8_STATUS_OK) {
|
||||||
PrintWebPError("input data", status);
|
PrintWebPError("input data", status);
|
||||||
|
ok = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
WebPFreeDecBuffer(output_buffer);
|
WebPFreeDecBuffer(output_buffer);
|
||||||
|
|
||||||
|
if (ok && metadata != NULL) {
|
||||||
|
ok = ExtractMetadata(data, data_size, metadata);
|
||||||
|
if (!ok) {
|
||||||
|
PrintWebPError("metadata", VP8_STATUS_BITSTREAM_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!ok) WebPPictureFree(pic);
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,11 +409,13 @@ examples/anim_dump: src/libwebp.a
|
|||||||
examples/anim_dump: EXTRA_LIBS += $(GIF_LIBS) $(DWEBP_LIBS)
|
examples/anim_dump: EXTRA_LIBS += $(GIF_LIBS) $(DWEBP_LIBS)
|
||||||
examples/cwebp: examples/libexample_util.a
|
examples/cwebp: examples/libexample_util.a
|
||||||
examples/cwebp: imageio/libimagedec.a
|
examples/cwebp: imageio/libimagedec.a
|
||||||
|
examples/cwebp: src/demux/libwebpdemux.a
|
||||||
examples/cwebp: imageio/libimageio_util.a
|
examples/cwebp: imageio/libimageio_util.a
|
||||||
examples/cwebp: src/libwebp.a
|
examples/cwebp: src/libwebp.a
|
||||||
examples/cwebp: EXTRA_LIBS += $(CWEBP_LIBS)
|
examples/cwebp: EXTRA_LIBS += $(CWEBP_LIBS)
|
||||||
examples/dwebp: examples/libexample_util.a
|
examples/dwebp: examples/libexample_util.a
|
||||||
examples/dwebp: imageio/libimagedec.a
|
examples/dwebp: imageio/libimagedec.a
|
||||||
|
examples/dwebp: src/demux/libwebpdemux.a
|
||||||
examples/dwebp: imageio/libimageenc.a
|
examples/dwebp: imageio/libimageenc.a
|
||||||
examples/dwebp: imageio/libimageio_util.a
|
examples/dwebp: imageio/libimageio_util.a
|
||||||
examples/dwebp: src/libwebp.a
|
examples/dwebp: src/libwebp.a
|
||||||
@ -430,13 +432,17 @@ examples/webpmux: examples/libexample_util.a imageio/libimageio_util.a
|
|||||||
examples/webpmux: src/mux/libwebpmux.a src/libwebpdecoder.a
|
examples/webpmux: src/mux/libwebpmux.a src/libwebpdecoder.a
|
||||||
examples/img2webp: examples/libexample_util.a imageio/libimageio_util.a
|
examples/img2webp: examples/libexample_util.a imageio/libimageio_util.a
|
||||||
examples/img2webp: imageio/libimagedec.a
|
examples/img2webp: imageio/libimagedec.a
|
||||||
|
examples/img2webp: src/demux/libwebpdemux.a
|
||||||
examples/img2webp: src/mux/libwebpmux.a src/libwebp.a
|
examples/img2webp: src/mux/libwebpmux.a src/libwebp.a
|
||||||
examples/img2webp: EXTRA_LIBS += $(CWEBP_LIBS)
|
examples/img2webp: EXTRA_LIBS += $(CWEBP_LIBS)
|
||||||
examples/webpinfo: examples/libexample_util.a imageio/libimageio_util.a
|
examples/webpinfo: examples/libexample_util.a imageio/libimageio_util.a
|
||||||
examples/webpinfo: src/libwebpdecoder.a
|
examples/webpinfo: src/libwebpdecoder.a
|
||||||
|
|
||||||
extras/get_disto: extras/get_disto.o
|
extras/get_disto: extras/get_disto.o
|
||||||
extras/get_disto: imageio/libimagedec.a imageio/libimageio_util.a src/libwebp.a
|
extras/get_disto: imageio/libimagedec.a
|
||||||
|
extras/get_disto: src/demux/libwebpdemux.a
|
||||||
|
extras/get_disto: imageio/libimageio_util.a
|
||||||
|
extras/get_disto: src/libwebp.a
|
||||||
extras/get_disto: EXTRA_LIBS += $(CWEBP_LIBS)
|
extras/get_disto: EXTRA_LIBS += $(CWEBP_LIBS)
|
||||||
|
|
||||||
extras/webp_quality: extras/webp_quality.o
|
extras/webp_quality: extras/webp_quality.o
|
||||||
|
Loading…
Reference in New Issue
Block a user