Updated to libwebp version 1.0.0
authorSam Lantinga <slouken@libsdl.org>
Fri, 26 Oct 2018 14:38:19 -0700
changeset 61677ea31fee372
parent 615 923efa629d1c
child 617 d64228a395fc
Updated to libwebp version 1.0.0
VisualC/external/include/webp/decode.h
VisualC/external/include/webp/demux.h
VisualC/external/include/webp/encode.h
VisualC/external/include/webp/mux_types.h
VisualC/external/include/webp/types.h
VisualC/external/lib/x64/LICENSE.jpeg.txt
VisualC/external/lib/x64/LICENSE.png.txt
VisualC/external/lib/x64/LICENSE.tiff.txt
VisualC/external/lib/x64/LICENSE.webp.txt
VisualC/external/lib/x64/LICENSE.zlib.txt
VisualC/external/lib/x64/libwebp-7.dll
VisualC/external/lib/x86/LICENSE.jpeg.txt
VisualC/external/lib/x86/LICENSE.png.txt
VisualC/external/lib/x86/LICENSE.tiff.txt
VisualC/external/lib/x86/LICENSE.webp.txt
VisualC/external/lib/x86/LICENSE.zlib.txt
VisualC/external/lib/x86/libwebp-7.dll
Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/decode.h
Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/demux.h
Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/encode.h
Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/mux_types.h
Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/types.h
Xcode/Frameworks/webp.framework/Versions/A/webp
external/libwebp-0.6.0.patch
external/libwebp-0.6.0/AUTHORS
external/libwebp-0.6.0/Android.mk
external/libwebp-0.6.0/CMakeLists.txt
external/libwebp-0.6.0/COPYING
external/libwebp-0.6.0/ChangeLog
external/libwebp-0.6.0/Makefile.am
external/libwebp-0.6.0/Makefile.vc
external/libwebp-0.6.0/NEWS
external/libwebp-0.6.0/PATENTS
external/libwebp-0.6.0/README
external/libwebp-0.6.0/README.mux
external/libwebp-0.6.0/autogen.sh
external/libwebp-0.6.0/build.gradle
external/libwebp-0.6.0/cmake/config.h.cmake
external/libwebp-0.6.0/cmake/config.h.in
external/libwebp-0.6.0/cmake/cpu.cmake
external/libwebp-0.6.0/configure.ac
external/libwebp-0.6.0/doc/README
external/libwebp-0.6.0/doc/TODO
external/libwebp-0.6.0/doc/template.html
external/libwebp-0.6.0/doc/webp-container-spec.txt
external/libwebp-0.6.0/doc/webp-lossless-bitstream-spec.txt
external/libwebp-0.6.0/examples/Android.mk
external/libwebp-0.6.0/examples/Makefile.am
external/libwebp-0.6.0/examples/anim_diff.c
external/libwebp-0.6.0/examples/anim_util.c
external/libwebp-0.6.0/examples/anim_util.h
external/libwebp-0.6.0/examples/cwebp.c
external/libwebp-0.6.0/examples/dwebp.c
external/libwebp-0.6.0/examples/example_util.c
external/libwebp-0.6.0/examples/example_util.h
external/libwebp-0.6.0/examples/gif2webp.c
external/libwebp-0.6.0/examples/gifdec.c
external/libwebp-0.6.0/examples/gifdec.h
external/libwebp-0.6.0/examples/img2webp.c
external/libwebp-0.6.0/examples/stopwatch.h
external/libwebp-0.6.0/examples/test.webp
external/libwebp-0.6.0/examples/test_ref.ppm
external/libwebp-0.6.0/examples/vwebp.c
external/libwebp-0.6.0/examples/webpmux.c
external/libwebp-0.6.0/extras/Makefile.am
external/libwebp-0.6.0/extras/extras.c
external/libwebp-0.6.0/extras/extras.h
external/libwebp-0.6.0/extras/get_disto.c
external/libwebp-0.6.0/extras/quality_estimate.c
external/libwebp-0.6.0/extras/webp_quality.c
external/libwebp-0.6.0/gradle.properties
external/libwebp-0.6.0/gradle/wrapper/gradle-wrapper.jar
external/libwebp-0.6.0/gradle/wrapper/gradle-wrapper.properties
external/libwebp-0.6.0/gradlew
external/libwebp-0.6.0/gradlew.bat
external/libwebp-0.6.0/imageio/Android.mk
external/libwebp-0.6.0/imageio/Makefile.am
external/libwebp-0.6.0/imageio/image_dec.c
external/libwebp-0.6.0/imageio/image_dec.h
external/libwebp-0.6.0/imageio/image_enc.c
external/libwebp-0.6.0/imageio/image_enc.h
external/libwebp-0.6.0/imageio/imageio_util.c
external/libwebp-0.6.0/imageio/imageio_util.h
external/libwebp-0.6.0/imageio/jpegdec.c
external/libwebp-0.6.0/imageio/jpegdec.h
external/libwebp-0.6.0/imageio/metadata.c
external/libwebp-0.6.0/imageio/metadata.h
external/libwebp-0.6.0/imageio/pngdec.c
external/libwebp-0.6.0/imageio/pngdec.h
external/libwebp-0.6.0/imageio/tiffdec.c
external/libwebp-0.6.0/imageio/tiffdec.h
external/libwebp-0.6.0/imageio/webpdec.c
external/libwebp-0.6.0/imageio/webpdec.h
external/libwebp-0.6.0/imageio/wicdec.c
external/libwebp-0.6.0/imageio/wicdec.h
external/libwebp-0.6.0/iosbuild.sh
external/libwebp-0.6.0/m4/ax_pthread.m4
external/libwebp-0.6.0/makefile.unix
external/libwebp-0.6.0/man/Makefile.am
external/libwebp-0.6.0/man/cwebp.1
external/libwebp-0.6.0/man/dwebp.1
external/libwebp-0.6.0/man/gif2webp.1
external/libwebp-0.6.0/man/img2webp.1
external/libwebp-0.6.0/man/vwebp.1
external/libwebp-0.6.0/man/webpmux.1
external/libwebp-0.6.0/src/Makefile.am
external/libwebp-0.6.0/src/dec/Makefile.am
external/libwebp-0.6.0/src/dec/alpha_dec.c
external/libwebp-0.6.0/src/dec/alphai_dec.h
external/libwebp-0.6.0/src/dec/buffer_dec.c
external/libwebp-0.6.0/src/dec/common_dec.h
external/libwebp-0.6.0/src/dec/frame_dec.c
external/libwebp-0.6.0/src/dec/idec_dec.c
external/libwebp-0.6.0/src/dec/io_dec.c
external/libwebp-0.6.0/src/dec/quant_dec.c
external/libwebp-0.6.0/src/dec/tree_dec.c
external/libwebp-0.6.0/src/dec/vp8_dec.c
external/libwebp-0.6.0/src/dec/vp8_dec.h
external/libwebp-0.6.0/src/dec/vp8i_dec.h
external/libwebp-0.6.0/src/dec/vp8l_dec.c
external/libwebp-0.6.0/src/dec/vp8li_dec.h
external/libwebp-0.6.0/src/dec/webp_dec.c
external/libwebp-0.6.0/src/dec/webpi_dec.h
external/libwebp-0.6.0/src/demux/Makefile.am
external/libwebp-0.6.0/src/demux/anim_decode.c
external/libwebp-0.6.0/src/demux/demux.c
external/libwebp-0.6.0/src/demux/libwebpdemux.pc.in
external/libwebp-0.6.0/src/demux/libwebpdemux.rc
external/libwebp-0.6.0/src/dsp/Makefile.am
external/libwebp-0.6.0/src/dsp/alpha_processing.c
external/libwebp-0.6.0/src/dsp/alpha_processing_mips_dsp_r2.c
external/libwebp-0.6.0/src/dsp/alpha_processing_neon.c
external/libwebp-0.6.0/src/dsp/alpha_processing_sse2.c
external/libwebp-0.6.0/src/dsp/alpha_processing_sse41.c
external/libwebp-0.6.0/src/dsp/argb.c
external/libwebp-0.6.0/src/dsp/argb_mips_dsp_r2.c
external/libwebp-0.6.0/src/dsp/argb_sse2.c
external/libwebp-0.6.0/src/dsp/common_sse2.h
external/libwebp-0.6.0/src/dsp/cost.c
external/libwebp-0.6.0/src/dsp/cost_mips32.c
external/libwebp-0.6.0/src/dsp/cost_mips_dsp_r2.c
external/libwebp-0.6.0/src/dsp/cost_sse2.c
external/libwebp-0.6.0/src/dsp/cpu.c
external/libwebp-0.6.0/src/dsp/dec.c
external/libwebp-0.6.0/src/dsp/dec_clip_tables.c
external/libwebp-0.6.0/src/dsp/dec_mips32.c
external/libwebp-0.6.0/src/dsp/dec_mips_dsp_r2.c
external/libwebp-0.6.0/src/dsp/dec_msa.c
external/libwebp-0.6.0/src/dsp/dec_neon.c
external/libwebp-0.6.0/src/dsp/dec_sse2.c
external/libwebp-0.6.0/src/dsp/dec_sse41.c
external/libwebp-0.6.0/src/dsp/dsp.h
external/libwebp-0.6.0/src/dsp/enc.c
external/libwebp-0.6.0/src/dsp/enc_avx2.c
external/libwebp-0.6.0/src/dsp/enc_mips32.c
external/libwebp-0.6.0/src/dsp/enc_mips_dsp_r2.c
external/libwebp-0.6.0/src/dsp/enc_msa.c
external/libwebp-0.6.0/src/dsp/enc_neon.c
external/libwebp-0.6.0/src/dsp/enc_sse2.c
external/libwebp-0.6.0/src/dsp/enc_sse41.c
external/libwebp-0.6.0/src/dsp/filters.c
external/libwebp-0.6.0/src/dsp/filters_mips_dsp_r2.c
external/libwebp-0.6.0/src/dsp/filters_msa.c
external/libwebp-0.6.0/src/dsp/filters_neon.c
external/libwebp-0.6.0/src/dsp/filters_sse2.c
external/libwebp-0.6.0/src/dsp/lossless.c
external/libwebp-0.6.0/src/dsp/lossless.h
external/libwebp-0.6.0/src/dsp/lossless_common.h
external/libwebp-0.6.0/src/dsp/lossless_enc.c
external/libwebp-0.6.0/src/dsp/lossless_enc_mips32.c
external/libwebp-0.6.0/src/dsp/lossless_enc_mips_dsp_r2.c
external/libwebp-0.6.0/src/dsp/lossless_enc_msa.c
external/libwebp-0.6.0/src/dsp/lossless_enc_neon.c
external/libwebp-0.6.0/src/dsp/lossless_enc_sse2.c
external/libwebp-0.6.0/src/dsp/lossless_enc_sse41.c
external/libwebp-0.6.0/src/dsp/lossless_mips_dsp_r2.c
external/libwebp-0.6.0/src/dsp/lossless_msa.c
external/libwebp-0.6.0/src/dsp/lossless_neon.c
external/libwebp-0.6.0/src/dsp/lossless_sse2.c
external/libwebp-0.6.0/src/dsp/mips_macro.h
external/libwebp-0.6.0/src/dsp/msa_macro.h
external/libwebp-0.6.0/src/dsp/neon.h
external/libwebp-0.6.0/src/dsp/rescaler.c
external/libwebp-0.6.0/src/dsp/rescaler_mips32.c
external/libwebp-0.6.0/src/dsp/rescaler_mips_dsp_r2.c
external/libwebp-0.6.0/src/dsp/rescaler_msa.c
external/libwebp-0.6.0/src/dsp/rescaler_neon.c
external/libwebp-0.6.0/src/dsp/rescaler_sse2.c
external/libwebp-0.6.0/src/dsp/upsampling.c
external/libwebp-0.6.0/src/dsp/upsampling_mips_dsp_r2.c
external/libwebp-0.6.0/src/dsp/upsampling_msa.c
external/libwebp-0.6.0/src/dsp/upsampling_neon.c
external/libwebp-0.6.0/src/dsp/upsampling_sse2.c
external/libwebp-0.6.0/src/dsp/yuv.c
external/libwebp-0.6.0/src/dsp/yuv.h
external/libwebp-0.6.0/src/dsp/yuv_mips32.c
external/libwebp-0.6.0/src/dsp/yuv_mips_dsp_r2.c
external/libwebp-0.6.0/src/dsp/yuv_sse2.c
external/libwebp-0.6.0/src/enc/Makefile.am
external/libwebp-0.6.0/src/enc/alpha_enc.c
external/libwebp-0.6.0/src/enc/analysis_enc.c
external/libwebp-0.6.0/src/enc/backward_references_enc.c
external/libwebp-0.6.0/src/enc/backward_references_enc.h
external/libwebp-0.6.0/src/enc/config_enc.c
external/libwebp-0.6.0/src/enc/cost_enc.c
external/libwebp-0.6.0/src/enc/cost_enc.h
external/libwebp-0.6.0/src/enc/delta_palettization_enc.c
external/libwebp-0.6.0/src/enc/delta_palettization_enc.h
external/libwebp-0.6.0/src/enc/filter_enc.c
external/libwebp-0.6.0/src/enc/frame_enc.c
external/libwebp-0.6.0/src/enc/histogram_enc.c
external/libwebp-0.6.0/src/enc/histogram_enc.h
external/libwebp-0.6.0/src/enc/iterator_enc.c
external/libwebp-0.6.0/src/enc/near_lossless_enc.c
external/libwebp-0.6.0/src/enc/picture_csp_enc.c
external/libwebp-0.6.0/src/enc/picture_enc.c
external/libwebp-0.6.0/src/enc/picture_psnr_enc.c
external/libwebp-0.6.0/src/enc/picture_rescale_enc.c
external/libwebp-0.6.0/src/enc/picture_tools_enc.c
external/libwebp-0.6.0/src/enc/predictor_enc.c
external/libwebp-0.6.0/src/enc/quant_enc.c
external/libwebp-0.6.0/src/enc/syntax_enc.c
external/libwebp-0.6.0/src/enc/token_enc.c
external/libwebp-0.6.0/src/enc/tree_enc.c
external/libwebp-0.6.0/src/enc/vp8i_enc.h
external/libwebp-0.6.0/src/enc/vp8l_enc.c
external/libwebp-0.6.0/src/enc/vp8li_enc.h
external/libwebp-0.6.0/src/enc/webp_enc.c
external/libwebp-0.6.0/src/libwebp.pc.in
external/libwebp-0.6.0/src/libwebp.rc
external/libwebp-0.6.0/src/libwebpdecoder.pc.in
external/libwebp-0.6.0/src/libwebpdecoder.rc
external/libwebp-0.6.0/src/mux/Makefile.am
external/libwebp-0.6.0/src/mux/anim_encode.c
external/libwebp-0.6.0/src/mux/animi.h
external/libwebp-0.6.0/src/mux/libwebpmux.pc.in
external/libwebp-0.6.0/src/mux/libwebpmux.rc
external/libwebp-0.6.0/src/mux/muxedit.c
external/libwebp-0.6.0/src/mux/muxi.h
external/libwebp-0.6.0/src/mux/muxinternal.c
external/libwebp-0.6.0/src/mux/muxread.c
external/libwebp-0.6.0/src/utils/Makefile.am
external/libwebp-0.6.0/src/utils/bit_reader_inl_utils.h
external/libwebp-0.6.0/src/utils/bit_reader_utils.c
external/libwebp-0.6.0/src/utils/bit_reader_utils.h
external/libwebp-0.6.0/src/utils/bit_writer_utils.c
external/libwebp-0.6.0/src/utils/bit_writer_utils.h
external/libwebp-0.6.0/src/utils/color_cache_utils.c
external/libwebp-0.6.0/src/utils/color_cache_utils.h
external/libwebp-0.6.0/src/utils/endian_inl_utils.h
external/libwebp-0.6.0/src/utils/filters_utils.c
external/libwebp-0.6.0/src/utils/filters_utils.h
external/libwebp-0.6.0/src/utils/huffman_encode_utils.c
external/libwebp-0.6.0/src/utils/huffman_encode_utils.h
external/libwebp-0.6.0/src/utils/huffman_utils.c
external/libwebp-0.6.0/src/utils/huffman_utils.h
external/libwebp-0.6.0/src/utils/quant_levels_dec_utils.c
external/libwebp-0.6.0/src/utils/quant_levels_dec_utils.h
external/libwebp-0.6.0/src/utils/quant_levels_utils.c
external/libwebp-0.6.0/src/utils/quant_levels_utils.h
external/libwebp-0.6.0/src/utils/random_utils.c
external/libwebp-0.6.0/src/utils/random_utils.h
external/libwebp-0.6.0/src/utils/rescaler_utils.c
external/libwebp-0.6.0/src/utils/rescaler_utils.h
external/libwebp-0.6.0/src/utils/thread_utils.c
external/libwebp-0.6.0/src/utils/thread_utils.h
external/libwebp-0.6.0/src/utils/utils.c
external/libwebp-0.6.0/src/utils/utils.h
external/libwebp-0.6.0/src/webp/decode.h
external/libwebp-0.6.0/src/webp/demux.h
external/libwebp-0.6.0/src/webp/encode.h
external/libwebp-0.6.0/src/webp/format_constants.h
external/libwebp-0.6.0/src/webp/mux.h
external/libwebp-0.6.0/src/webp/mux_types.h
external/libwebp-0.6.0/src/webp/types.h
external/libwebp-0.6.0/swig/README
external/libwebp-0.6.0/swig/libwebp.go
external/libwebp-0.6.0/swig/libwebp.jar
external/libwebp-0.6.0/swig/libwebp.py
external/libwebp-0.6.0/swig/libwebp.swig
external/libwebp-0.6.0/swig/libwebp_gc.c
external/libwebp-0.6.0/swig/libwebp_go_wrap.c
external/libwebp-0.6.0/swig/libwebp_java_wrap.c
external/libwebp-0.6.0/swig/libwebp_python_wrap.c
external/libwebp-0.6.0/swig/setup.py
external/libwebp-1.0.0.patch
external/libwebp-1.0.0/AUTHORS
external/libwebp-1.0.0/Android.mk
external/libwebp-1.0.0/CMakeLists.txt
external/libwebp-1.0.0/COPYING
external/libwebp-1.0.0/ChangeLog
external/libwebp-1.0.0/Makefile.am
external/libwebp-1.0.0/Makefile.in
external/libwebp-1.0.0/Makefile.vc
external/libwebp-1.0.0/NEWS
external/libwebp-1.0.0/PATENTS
external/libwebp-1.0.0/README
external/libwebp-1.0.0/README.mux
external/libwebp-1.0.0/README.webp_js
external/libwebp-1.0.0/aclocal.m4
external/libwebp-1.0.0/ar-lib
external/libwebp-1.0.0/autogen.sh
external/libwebp-1.0.0/build.gradle
external/libwebp-1.0.0/cmake/WebPConfig.cmake.in
external/libwebp-1.0.0/cmake/config.h.in
external/libwebp-1.0.0/cmake/cpu.cmake
external/libwebp-1.0.0/cmake/deps.cmake
external/libwebp-1.0.0/compile
external/libwebp-1.0.0/config.guess
external/libwebp-1.0.0/config.sub
external/libwebp-1.0.0/configure
external/libwebp-1.0.0/configure.ac
external/libwebp-1.0.0/depcomp
external/libwebp-1.0.0/doc/README
external/libwebp-1.0.0/doc/template.html
external/libwebp-1.0.0/doc/webp-container-spec.txt
external/libwebp-1.0.0/doc/webp-lossless-bitstream-spec.txt
external/libwebp-1.0.0/examples/Android.mk
external/libwebp-1.0.0/examples/Makefile.am
external/libwebp-1.0.0/examples/Makefile.in
external/libwebp-1.0.0/examples/anim_diff.c
external/libwebp-1.0.0/examples/anim_dump.c
external/libwebp-1.0.0/examples/anim_util.c
external/libwebp-1.0.0/examples/anim_util.h
external/libwebp-1.0.0/examples/cwebp.c
external/libwebp-1.0.0/examples/dwebp.c
external/libwebp-1.0.0/examples/example_util.c
external/libwebp-1.0.0/examples/example_util.h
external/libwebp-1.0.0/examples/gif2webp.c
external/libwebp-1.0.0/examples/gifdec.c
external/libwebp-1.0.0/examples/gifdec.h
external/libwebp-1.0.0/examples/img2webp.c
external/libwebp-1.0.0/examples/stopwatch.h
external/libwebp-1.0.0/examples/test.webp
external/libwebp-1.0.0/examples/test_ref.ppm
external/libwebp-1.0.0/examples/vwebp.c
external/libwebp-1.0.0/examples/webpinfo.c
external/libwebp-1.0.0/examples/webpmux.c
external/libwebp-1.0.0/extras/Makefile.am
external/libwebp-1.0.0/extras/Makefile.in
external/libwebp-1.0.0/extras/extras.c
external/libwebp-1.0.0/extras/extras.h
external/libwebp-1.0.0/extras/get_disto.c
external/libwebp-1.0.0/extras/quality_estimate.c
external/libwebp-1.0.0/extras/vwebp_sdl.c
external/libwebp-1.0.0/extras/webp_quality.c
external/libwebp-1.0.0/extras/webp_to_sdl.c
external/libwebp-1.0.0/extras/webp_to_sdl.h
external/libwebp-1.0.0/gradle.properties
external/libwebp-1.0.0/gradle/wrapper/gradle-wrapper.jar
external/libwebp-1.0.0/gradle/wrapper/gradle-wrapper.properties
external/libwebp-1.0.0/gradlew
external/libwebp-1.0.0/gradlew.bat
external/libwebp-1.0.0/imageio/Android.mk
external/libwebp-1.0.0/imageio/Makefile.am
external/libwebp-1.0.0/imageio/Makefile.in
external/libwebp-1.0.0/imageio/image_dec.c
external/libwebp-1.0.0/imageio/image_dec.h
external/libwebp-1.0.0/imageio/image_enc.c
external/libwebp-1.0.0/imageio/image_enc.h
external/libwebp-1.0.0/imageio/imageio_util.c
external/libwebp-1.0.0/imageio/imageio_util.h
external/libwebp-1.0.0/imageio/jpegdec.c
external/libwebp-1.0.0/imageio/jpegdec.h
external/libwebp-1.0.0/imageio/metadata.c
external/libwebp-1.0.0/imageio/metadata.h
external/libwebp-1.0.0/imageio/pngdec.c
external/libwebp-1.0.0/imageio/pngdec.h
external/libwebp-1.0.0/imageio/pnmdec.c
external/libwebp-1.0.0/imageio/pnmdec.h
external/libwebp-1.0.0/imageio/tiffdec.c
external/libwebp-1.0.0/imageio/tiffdec.h
external/libwebp-1.0.0/imageio/webpdec.c
external/libwebp-1.0.0/imageio/webpdec.h
external/libwebp-1.0.0/imageio/wicdec.c
external/libwebp-1.0.0/imageio/wicdec.h
external/libwebp-1.0.0/install-sh
external/libwebp-1.0.0/iosbuild.sh
external/libwebp-1.0.0/ltmain.sh
external/libwebp-1.0.0/m4/ax_pthread.m4
external/libwebp-1.0.0/m4/libtool.m4
external/libwebp-1.0.0/m4/ltoptions.m4
external/libwebp-1.0.0/m4/ltsugar.m4
external/libwebp-1.0.0/m4/ltversion.m4
external/libwebp-1.0.0/m4/lt~obsolete.m4
external/libwebp-1.0.0/makefile.unix
external/libwebp-1.0.0/man/Makefile.am
external/libwebp-1.0.0/man/Makefile.in
external/libwebp-1.0.0/man/cwebp.1
external/libwebp-1.0.0/man/dwebp.1
external/libwebp-1.0.0/man/gif2webp.1
external/libwebp-1.0.0/man/img2webp.1
external/libwebp-1.0.0/man/vwebp.1
external/libwebp-1.0.0/man/webpinfo.1
external/libwebp-1.0.0/man/webpmux.1
external/libwebp-1.0.0/missing
external/libwebp-1.0.0/src/Makefile.am
external/libwebp-1.0.0/src/Makefile.in
external/libwebp-1.0.0/src/dec/Makefile.am
external/libwebp-1.0.0/src/dec/Makefile.in
external/libwebp-1.0.0/src/dec/alpha_dec.c
external/libwebp-1.0.0/src/dec/alphai_dec.h
external/libwebp-1.0.0/src/dec/buffer_dec.c
external/libwebp-1.0.0/src/dec/common_dec.h
external/libwebp-1.0.0/src/dec/frame_dec.c
external/libwebp-1.0.0/src/dec/idec_dec.c
external/libwebp-1.0.0/src/dec/io_dec.c
external/libwebp-1.0.0/src/dec/quant_dec.c
external/libwebp-1.0.0/src/dec/tree_dec.c
external/libwebp-1.0.0/src/dec/vp8_dec.c
external/libwebp-1.0.0/src/dec/vp8_dec.h
external/libwebp-1.0.0/src/dec/vp8i_dec.h
external/libwebp-1.0.0/src/dec/vp8l_dec.c
external/libwebp-1.0.0/src/dec/vp8li_dec.h
external/libwebp-1.0.0/src/dec/webp_dec.c
external/libwebp-1.0.0/src/dec/webpi_dec.h
external/libwebp-1.0.0/src/demux/Makefile.am
external/libwebp-1.0.0/src/demux/Makefile.in
external/libwebp-1.0.0/src/demux/anim_decode.c
external/libwebp-1.0.0/src/demux/demux.c
external/libwebp-1.0.0/src/demux/libwebpdemux.pc.in
external/libwebp-1.0.0/src/demux/libwebpdemux.rc
external/libwebp-1.0.0/src/dsp/Makefile.am
external/libwebp-1.0.0/src/dsp/Makefile.in
external/libwebp-1.0.0/src/dsp/alpha_processing.c
external/libwebp-1.0.0/src/dsp/alpha_processing_mips_dsp_r2.c
external/libwebp-1.0.0/src/dsp/alpha_processing_neon.c
external/libwebp-1.0.0/src/dsp/alpha_processing_sse2.c
external/libwebp-1.0.0/src/dsp/alpha_processing_sse41.c
external/libwebp-1.0.0/src/dsp/common_sse2.h
external/libwebp-1.0.0/src/dsp/common_sse41.h
external/libwebp-1.0.0/src/dsp/cost.c
external/libwebp-1.0.0/src/dsp/cost_mips32.c
external/libwebp-1.0.0/src/dsp/cost_mips_dsp_r2.c
external/libwebp-1.0.0/src/dsp/cost_sse2.c
external/libwebp-1.0.0/src/dsp/cpu.c
external/libwebp-1.0.0/src/dsp/dec.c
external/libwebp-1.0.0/src/dsp/dec_clip_tables.c
external/libwebp-1.0.0/src/dsp/dec_mips32.c
external/libwebp-1.0.0/src/dsp/dec_mips_dsp_r2.c
external/libwebp-1.0.0/src/dsp/dec_msa.c
external/libwebp-1.0.0/src/dsp/dec_neon.c
external/libwebp-1.0.0/src/dsp/dec_sse2.c
external/libwebp-1.0.0/src/dsp/dec_sse41.c
external/libwebp-1.0.0/src/dsp/dsp.h
external/libwebp-1.0.0/src/dsp/enc.c
external/libwebp-1.0.0/src/dsp/enc_avx2.c
external/libwebp-1.0.0/src/dsp/enc_mips32.c
external/libwebp-1.0.0/src/dsp/enc_mips_dsp_r2.c
external/libwebp-1.0.0/src/dsp/enc_msa.c
external/libwebp-1.0.0/src/dsp/enc_neon.c
external/libwebp-1.0.0/src/dsp/enc_sse2.c
external/libwebp-1.0.0/src/dsp/enc_sse41.c
external/libwebp-1.0.0/src/dsp/filters.c
external/libwebp-1.0.0/src/dsp/filters_mips_dsp_r2.c
external/libwebp-1.0.0/src/dsp/filters_msa.c
external/libwebp-1.0.0/src/dsp/filters_neon.c
external/libwebp-1.0.0/src/dsp/filters_sse2.c
external/libwebp-1.0.0/src/dsp/lossless.c
external/libwebp-1.0.0/src/dsp/lossless.h
external/libwebp-1.0.0/src/dsp/lossless_common.h
external/libwebp-1.0.0/src/dsp/lossless_enc.c
external/libwebp-1.0.0/src/dsp/lossless_enc_mips32.c
external/libwebp-1.0.0/src/dsp/lossless_enc_mips_dsp_r2.c
external/libwebp-1.0.0/src/dsp/lossless_enc_msa.c
external/libwebp-1.0.0/src/dsp/lossless_enc_neon.c
external/libwebp-1.0.0/src/dsp/lossless_enc_sse2.c
external/libwebp-1.0.0/src/dsp/lossless_enc_sse41.c
external/libwebp-1.0.0/src/dsp/lossless_mips_dsp_r2.c
external/libwebp-1.0.0/src/dsp/lossless_msa.c
external/libwebp-1.0.0/src/dsp/lossless_neon.c
external/libwebp-1.0.0/src/dsp/lossless_sse2.c
external/libwebp-1.0.0/src/dsp/mips_macro.h
external/libwebp-1.0.0/src/dsp/msa_macro.h
external/libwebp-1.0.0/src/dsp/neon.h
external/libwebp-1.0.0/src/dsp/rescaler.c
external/libwebp-1.0.0/src/dsp/rescaler_mips32.c
external/libwebp-1.0.0/src/dsp/rescaler_mips_dsp_r2.c
external/libwebp-1.0.0/src/dsp/rescaler_msa.c
external/libwebp-1.0.0/src/dsp/rescaler_neon.c
external/libwebp-1.0.0/src/dsp/rescaler_sse2.c
external/libwebp-1.0.0/src/dsp/ssim.c
external/libwebp-1.0.0/src/dsp/ssim_sse2.c
external/libwebp-1.0.0/src/dsp/upsampling.c
external/libwebp-1.0.0/src/dsp/upsampling_mips_dsp_r2.c
external/libwebp-1.0.0/src/dsp/upsampling_msa.c
external/libwebp-1.0.0/src/dsp/upsampling_neon.c
external/libwebp-1.0.0/src/dsp/upsampling_sse2.c
external/libwebp-1.0.0/src/dsp/upsampling_sse41.c
external/libwebp-1.0.0/src/dsp/yuv.c
external/libwebp-1.0.0/src/dsp/yuv.h
external/libwebp-1.0.0/src/dsp/yuv_mips32.c
external/libwebp-1.0.0/src/dsp/yuv_mips_dsp_r2.c
external/libwebp-1.0.0/src/dsp/yuv_neon.c
external/libwebp-1.0.0/src/dsp/yuv_sse2.c
external/libwebp-1.0.0/src/dsp/yuv_sse41.c
external/libwebp-1.0.0/src/enc/Makefile.am
external/libwebp-1.0.0/src/enc/Makefile.in
external/libwebp-1.0.0/src/enc/alpha_enc.c
external/libwebp-1.0.0/src/enc/analysis_enc.c
external/libwebp-1.0.0/src/enc/backward_references_cost_enc.c
external/libwebp-1.0.0/src/enc/backward_references_enc.c
external/libwebp-1.0.0/src/enc/backward_references_enc.h
external/libwebp-1.0.0/src/enc/config_enc.c
external/libwebp-1.0.0/src/enc/cost_enc.c
external/libwebp-1.0.0/src/enc/cost_enc.h
external/libwebp-1.0.0/src/enc/filter_enc.c
external/libwebp-1.0.0/src/enc/frame_enc.c
external/libwebp-1.0.0/src/enc/histogram_enc.c
external/libwebp-1.0.0/src/enc/histogram_enc.h
external/libwebp-1.0.0/src/enc/iterator_enc.c
external/libwebp-1.0.0/src/enc/near_lossless_enc.c
external/libwebp-1.0.0/src/enc/picture_csp_enc.c
external/libwebp-1.0.0/src/enc/picture_enc.c
external/libwebp-1.0.0/src/enc/picture_psnr_enc.c
external/libwebp-1.0.0/src/enc/picture_rescale_enc.c
external/libwebp-1.0.0/src/enc/picture_tools_enc.c
external/libwebp-1.0.0/src/enc/predictor_enc.c
external/libwebp-1.0.0/src/enc/quant_enc.c
external/libwebp-1.0.0/src/enc/syntax_enc.c
external/libwebp-1.0.0/src/enc/token_enc.c
external/libwebp-1.0.0/src/enc/tree_enc.c
external/libwebp-1.0.0/src/enc/vp8i_enc.h
external/libwebp-1.0.0/src/enc/vp8l_enc.c
external/libwebp-1.0.0/src/enc/vp8li_enc.h
external/libwebp-1.0.0/src/enc/webp_enc.c
external/libwebp-1.0.0/src/libwebp.pc.in
external/libwebp-1.0.0/src/libwebp.rc
external/libwebp-1.0.0/src/libwebpdecoder.pc.in
external/libwebp-1.0.0/src/libwebpdecoder.rc
external/libwebp-1.0.0/src/mux/Makefile.am
external/libwebp-1.0.0/src/mux/Makefile.in
external/libwebp-1.0.0/src/mux/anim_encode.c
external/libwebp-1.0.0/src/mux/animi.h
external/libwebp-1.0.0/src/mux/libwebpmux.pc.in
external/libwebp-1.0.0/src/mux/libwebpmux.rc
external/libwebp-1.0.0/src/mux/muxedit.c
external/libwebp-1.0.0/src/mux/muxi.h
external/libwebp-1.0.0/src/mux/muxinternal.c
external/libwebp-1.0.0/src/mux/muxread.c
external/libwebp-1.0.0/src/utils/Makefile.am
external/libwebp-1.0.0/src/utils/Makefile.in
external/libwebp-1.0.0/src/utils/bit_reader_inl_utils.h
external/libwebp-1.0.0/src/utils/bit_reader_utils.c
external/libwebp-1.0.0/src/utils/bit_reader_utils.h
external/libwebp-1.0.0/src/utils/bit_writer_utils.c
external/libwebp-1.0.0/src/utils/bit_writer_utils.h
external/libwebp-1.0.0/src/utils/color_cache_utils.c
external/libwebp-1.0.0/src/utils/color_cache_utils.h
external/libwebp-1.0.0/src/utils/endian_inl_utils.h
external/libwebp-1.0.0/src/utils/filters_utils.c
external/libwebp-1.0.0/src/utils/filters_utils.h
external/libwebp-1.0.0/src/utils/huffman_encode_utils.c
external/libwebp-1.0.0/src/utils/huffman_encode_utils.h
external/libwebp-1.0.0/src/utils/huffman_utils.c
external/libwebp-1.0.0/src/utils/huffman_utils.h
external/libwebp-1.0.0/src/utils/quant_levels_dec_utils.c
external/libwebp-1.0.0/src/utils/quant_levels_dec_utils.h
external/libwebp-1.0.0/src/utils/quant_levels_utils.c
external/libwebp-1.0.0/src/utils/quant_levels_utils.h
external/libwebp-1.0.0/src/utils/random_utils.c
external/libwebp-1.0.0/src/utils/random_utils.h
external/libwebp-1.0.0/src/utils/rescaler_utils.c
external/libwebp-1.0.0/src/utils/rescaler_utils.h
external/libwebp-1.0.0/src/utils/thread_utils.c
external/libwebp-1.0.0/src/utils/thread_utils.h
external/libwebp-1.0.0/src/utils/utils.c
external/libwebp-1.0.0/src/utils/utils.h
external/libwebp-1.0.0/src/webp/config.h.in
external/libwebp-1.0.0/src/webp/decode.h
external/libwebp-1.0.0/src/webp/demux.h
external/libwebp-1.0.0/src/webp/encode.h
external/libwebp-1.0.0/src/webp/format_constants.h
external/libwebp-1.0.0/src/webp/mux.h
external/libwebp-1.0.0/src/webp/mux_types.h
external/libwebp-1.0.0/src/webp/types.h
external/libwebp-1.0.0/swig/README
external/libwebp-1.0.0/swig/libwebp.go
external/libwebp-1.0.0/swig/libwebp.jar
external/libwebp-1.0.0/swig/libwebp.py
external/libwebp-1.0.0/swig/libwebp.swig
external/libwebp-1.0.0/swig/libwebp_gc.c
external/libwebp-1.0.0/swig/libwebp_go_wrap.c
external/libwebp-1.0.0/swig/libwebp_java_wrap.c
external/libwebp-1.0.0/swig/libwebp_python_wrap.c
external/libwebp-1.0.0/swig/setup.py
external/libwebp-1.0.0/webp_js/index.html
external/libwebp-1.0.0/webp_js/index_wasm.html
external/libwebp-1.0.0/webp_js/test_webp_js.webp
external/libwebp-1.0.0/webp_js/test_webp_wasm.webp
     1.1 --- a/VisualC/external/include/webp/decode.h	Fri Oct 26 10:07:53 2018 -0700
     1.2 +++ b/VisualC/external/include/webp/decode.h	Fri Oct 26 14:38:19 2018 -0700
     1.3 @@ -36,39 +36,39 @@
     1.4  
     1.5  // Return the decoder's version number, packed in hexadecimal using 8bits for
     1.6  // each of major/minor/revision. E.g: v2.5.7 is 0x020507.
     1.7 -WEBP_EXTERN(int) WebPGetDecoderVersion(void);
     1.8 +WEBP_EXTERN int WebPGetDecoderVersion(void);
     1.9  
    1.10  // Retrieve basic header information: width, height.
    1.11  // This function will also validate the header, returning true on success,
    1.12  // false otherwise. '*width' and '*height' are only valid on successful return.
    1.13  // Pointers 'width' and 'height' can be passed NULL if deemed irrelevant.
    1.14 -WEBP_EXTERN(int) WebPGetInfo(const uint8_t* data, size_t data_size,
    1.15 -                             int* width, int* height);
    1.16 +WEBP_EXTERN int WebPGetInfo(const uint8_t* data, size_t data_size,
    1.17 +                            int* width, int* height);
    1.18  
    1.19  // Decodes WebP images pointed to by 'data' and returns RGBA samples, along
    1.20  // with the dimensions in *width and *height. The ordering of samples in
    1.21  // memory is R, G, B, A, R, G, B, A... in scan order (endian-independent).
    1.22  // The returned pointer should be deleted calling WebPFree().
    1.23  // Returns NULL in case of error.
    1.24 -WEBP_EXTERN(uint8_t*) WebPDecodeRGBA(const uint8_t* data, size_t data_size,
    1.25 -                                     int* width, int* height);
    1.26 +WEBP_EXTERN uint8_t* WebPDecodeRGBA(const uint8_t* data, size_t data_size,
    1.27 +                                    int* width, int* height);
    1.28  
    1.29  // Same as WebPDecodeRGBA, but returning A, R, G, B, A, R, G, B... ordered data.
    1.30 -WEBP_EXTERN(uint8_t*) WebPDecodeARGB(const uint8_t* data, size_t data_size,
    1.31 -                                     int* width, int* height);
    1.32 +WEBP_EXTERN uint8_t* WebPDecodeARGB(const uint8_t* data, size_t data_size,
    1.33 +                                    int* width, int* height);
    1.34  
    1.35  // Same as WebPDecodeRGBA, but returning B, G, R, A, B, G, R, A... ordered data.
    1.36 -WEBP_EXTERN(uint8_t*) WebPDecodeBGRA(const uint8_t* data, size_t data_size,
    1.37 -                                     int* width, int* height);
    1.38 +WEBP_EXTERN uint8_t* WebPDecodeBGRA(const uint8_t* data, size_t data_size,
    1.39 +                                    int* width, int* height);
    1.40  
    1.41  // Same as WebPDecodeRGBA, but returning R, G, B, R, G, B... ordered data.
    1.42  // If the bitstream contains transparency, it is ignored.
    1.43 -WEBP_EXTERN(uint8_t*) WebPDecodeRGB(const uint8_t* data, size_t data_size,
    1.44 -                                    int* width, int* height);
    1.45 +WEBP_EXTERN uint8_t* WebPDecodeRGB(const uint8_t* data, size_t data_size,
    1.46 +                                   int* width, int* height);
    1.47  
    1.48  // Same as WebPDecodeRGB, but returning B, G, R, B, G, R... ordered data.
    1.49 -WEBP_EXTERN(uint8_t*) WebPDecodeBGR(const uint8_t* data, size_t data_size,
    1.50 -                                    int* width, int* height);
    1.51 +WEBP_EXTERN uint8_t* WebPDecodeBGR(const uint8_t* data, size_t data_size,
    1.52 +                                   int* width, int* height);
    1.53  
    1.54  
    1.55  // Decode WebP images pointed to by 'data' to Y'UV format(*). The pointer
    1.56 @@ -80,13 +80,13 @@
    1.57  // have a common stride returned as '*uv_stride'.
    1.58  // Return NULL in case of error.
    1.59  // (*) Also named Y'CbCr. See: http://en.wikipedia.org/wiki/YCbCr
    1.60 -WEBP_EXTERN(uint8_t*) WebPDecodeYUV(const uint8_t* data, size_t data_size,
    1.61 -                                    int* width, int* height,
    1.62 -                                    uint8_t** u, uint8_t** v,
    1.63 -                                    int* stride, int* uv_stride);
    1.64 +WEBP_EXTERN uint8_t* WebPDecodeYUV(const uint8_t* data, size_t data_size,
    1.65 +                                   int* width, int* height,
    1.66 +                                   uint8_t** u, uint8_t** v,
    1.67 +                                   int* stride, int* uv_stride);
    1.68  
    1.69  // Releases memory returned by the WebPDecode*() functions above.
    1.70 -WEBP_EXTERN(void) WebPFree(void* ptr);
    1.71 +WEBP_EXTERN void WebPFree(void* ptr);
    1.72  
    1.73  // These five functions are variants of the above ones, that decode the image
    1.74  // directly into a pre-allocated buffer 'output_buffer'. The maximum storage
    1.75 @@ -96,22 +96,22 @@
    1.76  // The parameter 'output_stride' specifies the distance (in bytes)
    1.77  // between scanlines. Hence, output_buffer_size is expected to be at least
    1.78  // output_stride x picture-height.
    1.79 -WEBP_EXTERN(uint8_t*) WebPDecodeRGBAInto(
    1.80 +WEBP_EXTERN uint8_t* WebPDecodeRGBAInto(
    1.81      const uint8_t* data, size_t data_size,
    1.82      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
    1.83 -WEBP_EXTERN(uint8_t*) WebPDecodeARGBInto(
    1.84 +WEBP_EXTERN uint8_t* WebPDecodeARGBInto(
    1.85      const uint8_t* data, size_t data_size,
    1.86      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
    1.87 -WEBP_EXTERN(uint8_t*) WebPDecodeBGRAInto(
    1.88 +WEBP_EXTERN uint8_t* WebPDecodeBGRAInto(
    1.89      const uint8_t* data, size_t data_size,
    1.90      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
    1.91  
    1.92  // RGB and BGR variants. Here too the transparency information, if present,
    1.93  // will be dropped and ignored.
    1.94 -WEBP_EXTERN(uint8_t*) WebPDecodeRGBInto(
    1.95 +WEBP_EXTERN uint8_t* WebPDecodeRGBInto(
    1.96      const uint8_t* data, size_t data_size,
    1.97      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
    1.98 -WEBP_EXTERN(uint8_t*) WebPDecodeBGRInto(
    1.99 +WEBP_EXTERN uint8_t* WebPDecodeBGRInto(
   1.100      const uint8_t* data, size_t data_size,
   1.101      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
   1.102  
   1.103 @@ -122,7 +122,7 @@
   1.104  // 'u_size' and 'v_size' respectively.
   1.105  // Pointer to the luma plane ('*luma') is returned or NULL if an error occurred
   1.106  // during decoding (or because some buffers were found to be too small).
   1.107 -WEBP_EXTERN(uint8_t*) WebPDecodeYUVInto(
   1.108 +WEBP_EXTERN uint8_t* WebPDecodeYUVInto(
   1.109      const uint8_t* data, size_t data_size,
   1.110      uint8_t* luma, size_t luma_size, int luma_stride,
   1.111      uint8_t* u, size_t u_size, int u_stride,
   1.112 @@ -213,7 +213,7 @@
   1.113  };
   1.114  
   1.115  // Internal, version-checked, entry point
   1.116 -WEBP_EXTERN(int) WebPInitDecBufferInternal(WebPDecBuffer*, int);
   1.117 +WEBP_EXTERN int WebPInitDecBufferInternal(WebPDecBuffer*, int);
   1.118  
   1.119  // Initialize the structure as empty. Must be called before any other use.
   1.120  // Returns false in case of version mismatch
   1.121 @@ -223,7 +223,7 @@
   1.122  
   1.123  // Free any memory associated with the buffer. Must always be called last.
   1.124  // Note: doesn't free the 'buffer' structure itself.
   1.125 -WEBP_EXTERN(void) WebPFreeDecBuffer(WebPDecBuffer* buffer);
   1.126 +WEBP_EXTERN void WebPFreeDecBuffer(WebPDecBuffer* buffer);
   1.127  
   1.128  //------------------------------------------------------------------------------
   1.129  // Enumeration of the status codes
   1.130 @@ -277,7 +277,7 @@
   1.131  // within valid bounds.
   1.132  // All other fields of WebPDecBuffer MUST remain constant between calls.
   1.133  // Returns NULL if the allocation failed.
   1.134 -WEBP_EXTERN(WebPIDecoder*) WebPINewDecoder(WebPDecBuffer* output_buffer);
   1.135 +WEBP_EXTERN WebPIDecoder* WebPINewDecoder(WebPDecBuffer* output_buffer);
   1.136  
   1.137  // This function allocates and initializes an incremental-decoder object, which
   1.138  // will output the RGB/A samples specified by 'csp' into a preallocated
   1.139 @@ -289,7 +289,7 @@
   1.140  // colorspace 'csp' is taken into account for allocating this buffer. All other
   1.141  // parameters are ignored.
   1.142  // Returns NULL if the allocation failed, or if some parameters are invalid.
   1.143 -WEBP_EXTERN(WebPIDecoder*) WebPINewRGB(
   1.144 +WEBP_EXTERN WebPIDecoder* WebPINewRGB(
   1.145      WEBP_CSP_MODE csp,
   1.146      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
   1.147  
   1.148 @@ -304,7 +304,7 @@
   1.149  // In this case, the output buffer will be automatically allocated (using
   1.150  // MODE_YUVA) when decoding starts. All parameters are then ignored.
   1.151  // Returns NULL if the allocation failed or if a parameter is invalid.
   1.152 -WEBP_EXTERN(WebPIDecoder*) WebPINewYUVA(
   1.153 +WEBP_EXTERN WebPIDecoder* WebPINewYUVA(
   1.154      uint8_t* luma, size_t luma_size, int luma_stride,
   1.155      uint8_t* u, size_t u_size, int u_stride,
   1.156      uint8_t* v, size_t v_size, int v_stride,
   1.157 @@ -312,19 +312,19 @@
   1.158  
   1.159  // Deprecated version of the above, without the alpha plane.
   1.160  // Kept for backward compatibility.
   1.161 -WEBP_EXTERN(WebPIDecoder*) WebPINewYUV(
   1.162 +WEBP_EXTERN WebPIDecoder* WebPINewYUV(
   1.163      uint8_t* luma, size_t luma_size, int luma_stride,
   1.164      uint8_t* u, size_t u_size, int u_stride,
   1.165      uint8_t* v, size_t v_size, int v_stride);
   1.166  
   1.167  // Deletes the WebPIDecoder object and associated memory. Must always be called
   1.168  // if WebPINewDecoder, WebPINewRGB or WebPINewYUV succeeded.
   1.169 -WEBP_EXTERN(void) WebPIDelete(WebPIDecoder* idec);
   1.170 +WEBP_EXTERN void WebPIDelete(WebPIDecoder* idec);
   1.171  
   1.172  // Copies and decodes the next available data. Returns VP8_STATUS_OK when
   1.173  // the image is successfully decoded. Returns VP8_STATUS_SUSPENDED when more
   1.174  // data is expected. Returns error in other cases.
   1.175 -WEBP_EXTERN(VP8StatusCode) WebPIAppend(
   1.176 +WEBP_EXTERN VP8StatusCode WebPIAppend(
   1.177      WebPIDecoder* idec, const uint8_t* data, size_t data_size);
   1.178  
   1.179  // A variant of the above function to be used when data buffer contains
   1.180 @@ -332,7 +332,7 @@
   1.181  // to the internal memory.
   1.182  // Note that the value of the 'data' pointer can change between calls to
   1.183  // WebPIUpdate, for instance when the data buffer is resized to fit larger data.
   1.184 -WEBP_EXTERN(VP8StatusCode) WebPIUpdate(
   1.185 +WEBP_EXTERN VP8StatusCode WebPIUpdate(
   1.186      WebPIDecoder* idec, const uint8_t* data, size_t data_size);
   1.187  
   1.188  // Returns the RGB/A image decoded so far. Returns NULL if output params
   1.189 @@ -340,15 +340,16 @@
   1.190  // specified during call to WebPINewDecoder() or WebPINewRGB().
   1.191  // *last_y is the index of last decoded row in raster scan order. Some pointers
   1.192  // (*last_y, *width etc.) can be NULL if corresponding information is not
   1.193 -// needed.
   1.194 -WEBP_EXTERN(uint8_t*) WebPIDecGetRGB(
   1.195 +// needed. The values in these pointers are only valid on successful (non-NULL)
   1.196 +// return.
   1.197 +WEBP_EXTERN uint8_t* WebPIDecGetRGB(
   1.198      const WebPIDecoder* idec, int* last_y,
   1.199      int* width, int* height, int* stride);
   1.200  
   1.201  // Same as above function to get a YUVA image. Returns pointer to the luma
   1.202  // plane or NULL in case of error. If there is no alpha information
   1.203  // the alpha pointer '*a' will be returned NULL.
   1.204 -WEBP_EXTERN(uint8_t*) WebPIDecGetYUVA(
   1.205 +WEBP_EXTERN uint8_t* WebPIDecGetYUVA(
   1.206      const WebPIDecoder* idec, int* last_y,
   1.207      uint8_t** u, uint8_t** v, uint8_t** a,
   1.208      int* width, int* height, int* stride, int* uv_stride, int* a_stride);
   1.209 @@ -368,7 +369,7 @@
   1.210  // Returns NULL in case the incremental decoder object is in an invalid state.
   1.211  // Otherwise returns the pointer to the internal representation. This structure
   1.212  // is read-only, tied to WebPIDecoder's lifespan and should not be modified.
   1.213 -WEBP_EXTERN(const WebPDecBuffer*) WebPIDecodedArea(
   1.214 +WEBP_EXTERN const WebPDecBuffer* WebPIDecodedArea(
   1.215      const WebPIDecoder* idec, int* left, int* top, int* width, int* height);
   1.216  
   1.217  //------------------------------------------------------------------------------
   1.218 @@ -416,7 +417,7 @@
   1.219  };
   1.220  
   1.221  // Internal, version-checked, entry point
   1.222 -WEBP_EXTERN(VP8StatusCode) WebPGetFeaturesInternal(
   1.223 +WEBP_EXTERN VP8StatusCode WebPGetFeaturesInternal(
   1.224      const uint8_t*, size_t, WebPBitstreamFeatures*, int);
   1.225  
   1.226  // Retrieve features from the bitstream. The *features structure is filled
   1.227 @@ -457,7 +458,7 @@
   1.228  };
   1.229  
   1.230  // Internal, version-checked, entry point
   1.231 -WEBP_EXTERN(int) WebPInitDecoderConfigInternal(WebPDecoderConfig*, int);
   1.232 +WEBP_EXTERN int WebPInitDecoderConfigInternal(WebPDecoderConfig*, int);
   1.233  
   1.234  // Initialize the configuration as empty. This function must always be
   1.235  // called first, unless WebPGetFeatures() is to be called.
   1.236 @@ -477,14 +478,14 @@
   1.237  // The return WebPIDecoder object must always be deleted calling WebPIDelete().
   1.238  // Returns NULL in case of error (and config->status will then reflect
   1.239  // the error condition, if available).
   1.240 -WEBP_EXTERN(WebPIDecoder*) WebPIDecode(const uint8_t* data, size_t data_size,
   1.241 -                                       WebPDecoderConfig* config);
   1.242 +WEBP_EXTERN WebPIDecoder* WebPIDecode(const uint8_t* data, size_t data_size,
   1.243 +                                      WebPDecoderConfig* config);
   1.244  
   1.245  // Non-incremental version. This version decodes the full data at once, taking
   1.246  // 'config' into account. Returns decoding status (which should be VP8_STATUS_OK
   1.247  // if the decoding was successful). Note that 'config' cannot be NULL.
   1.248 -WEBP_EXTERN(VP8StatusCode) WebPDecode(const uint8_t* data, size_t data_size,
   1.249 -                                      WebPDecoderConfig* config);
   1.250 +WEBP_EXTERN VP8StatusCode WebPDecode(const uint8_t* data, size_t data_size,
   1.251 +                                     WebPDecoderConfig* config);
   1.252  
   1.253  #ifdef __cplusplus
   1.254  }    // extern "C"
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/VisualC/external/include/webp/demux.h	Fri Oct 26 14:38:19 2018 -0700
     2.3 @@ -0,0 +1,363 @@
     2.4 +// Copyright 2012 Google Inc. All Rights Reserved.
     2.5 +//
     2.6 +// Use of this source code is governed by a BSD-style license
     2.7 +// that can be found in the COPYING file in the root of the source
     2.8 +// tree. An additional intellectual property rights grant can be found
     2.9 +// in the file PATENTS. All contributing project authors may
    2.10 +// be found in the AUTHORS file in the root of the source tree.
    2.11 +// -----------------------------------------------------------------------------
    2.12 +//
    2.13 +// Demux API.
    2.14 +// Enables extraction of image and extended format data from WebP files.
    2.15 +
    2.16 +// Code Example: Demuxing WebP data to extract all the frames, ICC profile
    2.17 +// and EXIF/XMP metadata.
    2.18 +/*
    2.19 +  WebPDemuxer* demux = WebPDemux(&webp_data);
    2.20 +
    2.21 +  uint32_t width = WebPDemuxGetI(demux, WEBP_FF_CANVAS_WIDTH);
    2.22 +  uint32_t height = WebPDemuxGetI(demux, WEBP_FF_CANVAS_HEIGHT);
    2.23 +  // ... (Get information about the features present in the WebP file).
    2.24 +  uint32_t flags = WebPDemuxGetI(demux, WEBP_FF_FORMAT_FLAGS);
    2.25 +
    2.26 +  // ... (Iterate over all frames).
    2.27 +  WebPIterator iter;
    2.28 +  if (WebPDemuxGetFrame(demux, 1, &iter)) {
    2.29 +    do {
    2.30 +      // ... (Consume 'iter'; e.g. Decode 'iter.fragment' with WebPDecode(),
    2.31 +      // ... and get other frame properties like width, height, offsets etc.
    2.32 +      // ... see 'struct WebPIterator' below for more info).
    2.33 +    } while (WebPDemuxNextFrame(&iter));
    2.34 +    WebPDemuxReleaseIterator(&iter);
    2.35 +  }
    2.36 +
    2.37 +  // ... (Extract metadata).
    2.38 +  WebPChunkIterator chunk_iter;
    2.39 +  if (flags & ICCP_FLAG) WebPDemuxGetChunk(demux, "ICCP", 1, &chunk_iter);
    2.40 +  // ... (Consume the ICC profile in 'chunk_iter.chunk').
    2.41 +  WebPDemuxReleaseChunkIterator(&chunk_iter);
    2.42 +  if (flags & EXIF_FLAG) WebPDemuxGetChunk(demux, "EXIF", 1, &chunk_iter);
    2.43 +  // ... (Consume the EXIF metadata in 'chunk_iter.chunk').
    2.44 +  WebPDemuxReleaseChunkIterator(&chunk_iter);
    2.45 +  if (flags & XMP_FLAG) WebPDemuxGetChunk(demux, "XMP ", 1, &chunk_iter);
    2.46 +  // ... (Consume the XMP metadata in 'chunk_iter.chunk').
    2.47 +  WebPDemuxReleaseChunkIterator(&chunk_iter);
    2.48 +  WebPDemuxDelete(demux);
    2.49 +*/
    2.50 +
    2.51 +#ifndef WEBP_WEBP_DEMUX_H_
    2.52 +#define WEBP_WEBP_DEMUX_H_
    2.53 +
    2.54 +#include "./decode.h"     // for WEBP_CSP_MODE
    2.55 +#include "./mux_types.h"
    2.56 +
    2.57 +#ifdef __cplusplus
    2.58 +extern "C" {
    2.59 +#endif
    2.60 +
    2.61 +#define WEBP_DEMUX_ABI_VERSION 0x0107    // MAJOR(8b) + MINOR(8b)
    2.62 +
    2.63 +// Note: forward declaring enumerations is not allowed in (strict) C and C++,
    2.64 +// the types are left here for reference.
    2.65 +// typedef enum WebPDemuxState WebPDemuxState;
    2.66 +// typedef enum WebPFormatFeature WebPFormatFeature;
    2.67 +typedef struct WebPDemuxer WebPDemuxer;
    2.68 +typedef struct WebPIterator WebPIterator;
    2.69 +typedef struct WebPChunkIterator WebPChunkIterator;
    2.70 +typedef struct WebPAnimInfo WebPAnimInfo;
    2.71 +typedef struct WebPAnimDecoderOptions WebPAnimDecoderOptions;
    2.72 +
    2.73 +//------------------------------------------------------------------------------
    2.74 +
    2.75 +// Returns the version number of the demux library, packed in hexadecimal using
    2.76 +// 8bits for each of major/minor/revision. E.g: v2.5.7 is 0x020507.
    2.77 +WEBP_EXTERN int WebPGetDemuxVersion(void);
    2.78 +
    2.79 +//------------------------------------------------------------------------------
    2.80 +// Life of a Demux object
    2.81 +
    2.82 +typedef enum WebPDemuxState {
    2.83 +  WEBP_DEMUX_PARSE_ERROR    = -1,  // An error occurred while parsing.
    2.84 +  WEBP_DEMUX_PARSING_HEADER =  0,  // Not enough data to parse full header.
    2.85 +  WEBP_DEMUX_PARSED_HEADER  =  1,  // Header parsing complete,
    2.86 +                                   // data may be available.
    2.87 +  WEBP_DEMUX_DONE           =  2   // Entire file has been parsed.
    2.88 +} WebPDemuxState;
    2.89 +
    2.90 +// Internal, version-checked, entry point
    2.91 +WEBP_EXTERN WebPDemuxer* WebPDemuxInternal(
    2.92 +    const WebPData*, int, WebPDemuxState*, int);
    2.93 +
    2.94 +// Parses the full WebP file given by 'data'. For single images the WebP file
    2.95 +// header alone or the file header and the chunk header may be absent.
    2.96 +// Returns a WebPDemuxer object on successful parse, NULL otherwise.
    2.97 +static WEBP_INLINE WebPDemuxer* WebPDemux(const WebPData* data) {
    2.98 +  return WebPDemuxInternal(data, 0, NULL, WEBP_DEMUX_ABI_VERSION);
    2.99 +}
   2.100 +
   2.101 +// Parses the possibly incomplete WebP file given by 'data'.
   2.102 +// If 'state' is non-NULL it will be set to indicate the status of the demuxer.
   2.103 +// Returns NULL in case of error or if there isn't enough data to start parsing;
   2.104 +// and a WebPDemuxer object on successful parse.
   2.105 +// Note that WebPDemuxer keeps internal pointers to 'data' memory segment.
   2.106 +// If this data is volatile, the demuxer object should be deleted (by calling
   2.107 +// WebPDemuxDelete()) and WebPDemuxPartial() called again on the new data.
   2.108 +// This is usually an inexpensive operation.
   2.109 +static WEBP_INLINE WebPDemuxer* WebPDemuxPartial(
   2.110 +    const WebPData* data, WebPDemuxState* state) {
   2.111 +  return WebPDemuxInternal(data, 1, state, WEBP_DEMUX_ABI_VERSION);
   2.112 +}
   2.113 +
   2.114 +// Frees memory associated with 'dmux'.
   2.115 +WEBP_EXTERN void WebPDemuxDelete(WebPDemuxer* dmux);
   2.116 +
   2.117 +//------------------------------------------------------------------------------
   2.118 +// Data/information extraction.
   2.119 +
   2.120 +typedef enum WebPFormatFeature {
   2.121 +  WEBP_FF_FORMAT_FLAGS,      // bit-wise combination of WebPFeatureFlags
   2.122 +                             // corresponding to the 'VP8X' chunk (if present).
   2.123 +  WEBP_FF_CANVAS_WIDTH,
   2.124 +  WEBP_FF_CANVAS_HEIGHT,
   2.125 +  WEBP_FF_LOOP_COUNT,        // only relevant for animated file
   2.126 +  WEBP_FF_BACKGROUND_COLOR,  // idem.
   2.127 +  WEBP_FF_FRAME_COUNT        // Number of frames present in the demux object.
   2.128 +                             // In case of a partial demux, this is the number
   2.129 +                             // of frames seen so far, with the last frame
   2.130 +                             // possibly being partial.
   2.131 +} WebPFormatFeature;
   2.132 +
   2.133 +// Get the 'feature' value from the 'dmux'.
   2.134 +// NOTE: values are only valid if WebPDemux() was used or WebPDemuxPartial()
   2.135 +// returned a state > WEBP_DEMUX_PARSING_HEADER.
   2.136 +// If 'feature' is WEBP_FF_FORMAT_FLAGS, the returned value is a bit-wise
   2.137 +// combination of WebPFeatureFlags values.
   2.138 +// If 'feature' is WEBP_FF_LOOP_COUNT, WEBP_FF_BACKGROUND_COLOR, the returned
   2.139 +// value is only meaningful if the bitstream is animated.
   2.140 +WEBP_EXTERN uint32_t WebPDemuxGetI(
   2.141 +    const WebPDemuxer* dmux, WebPFormatFeature feature);
   2.142 +
   2.143 +//------------------------------------------------------------------------------
   2.144 +// Frame iteration.
   2.145 +
   2.146 +struct WebPIterator {
   2.147 +  int frame_num;
   2.148 +  int num_frames;          // equivalent to WEBP_FF_FRAME_COUNT.
   2.149 +  int x_offset, y_offset;  // offset relative to the canvas.
   2.150 +  int width, height;       // dimensions of this frame.
   2.151 +  int duration;            // display duration in milliseconds.
   2.152 +  WebPMuxAnimDispose dispose_method;  // dispose method for the frame.
   2.153 +  int complete;   // true if 'fragment' contains a full frame. partial images
   2.154 +                  // may still be decoded with the WebP incremental decoder.
   2.155 +  WebPData fragment;  // The frame given by 'frame_num'. Note for historical
   2.156 +                      // reasons this is called a fragment.
   2.157 +  int has_alpha;      // True if the frame contains transparency.
   2.158 +  WebPMuxAnimBlend blend_method;  // Blend operation for the frame.
   2.159 +
   2.160 +  uint32_t pad[2];         // padding for later use.
   2.161 +  void* private_;          // for internal use only.
   2.162 +};
   2.163 +
   2.164 +// Retrieves frame 'frame_number' from 'dmux'.
   2.165 +// 'iter->fragment' points to the frame on return from this function.
   2.166 +// Setting 'frame_number' equal to 0 will return the last frame of the image.
   2.167 +// Returns false if 'dmux' is NULL or frame 'frame_number' is not present.
   2.168 +// Call WebPDemuxReleaseIterator() when use of the iterator is complete.
   2.169 +// NOTE: 'dmux' must persist for the lifetime of 'iter'.
   2.170 +WEBP_EXTERN int WebPDemuxGetFrame(
   2.171 +    const WebPDemuxer* dmux, int frame_number, WebPIterator* iter);
   2.172 +
   2.173 +// Sets 'iter->fragment' to point to the next ('iter->frame_num' + 1) or
   2.174 +// previous ('iter->frame_num' - 1) frame. These functions do not loop.
   2.175 +// Returns true on success, false otherwise.
   2.176 +WEBP_EXTERN int WebPDemuxNextFrame(WebPIterator* iter);
   2.177 +WEBP_EXTERN int WebPDemuxPrevFrame(WebPIterator* iter);
   2.178 +
   2.179 +// Releases any memory associated with 'iter'.
   2.180 +// Must be called before any subsequent calls to WebPDemuxGetChunk() on the same
   2.181 +// iter. Also, must be called before destroying the associated WebPDemuxer with
   2.182 +// WebPDemuxDelete().
   2.183 +WEBP_EXTERN void WebPDemuxReleaseIterator(WebPIterator* iter);
   2.184 +
   2.185 +//------------------------------------------------------------------------------
   2.186 +// Chunk iteration.
   2.187 +
   2.188 +struct WebPChunkIterator {
   2.189 +  // The current and total number of chunks with the fourcc given to
   2.190 +  // WebPDemuxGetChunk().
   2.191 +  int chunk_num;
   2.192 +  int num_chunks;
   2.193 +  WebPData chunk;    // The payload of the chunk.
   2.194 +
   2.195 +  uint32_t pad[6];   // padding for later use
   2.196 +  void* private_;
   2.197 +};
   2.198 +
   2.199 +// Retrieves the 'chunk_number' instance of the chunk with id 'fourcc' from
   2.200 +// 'dmux'.
   2.201 +// 'fourcc' is a character array containing the fourcc of the chunk to return,
   2.202 +// e.g., "ICCP", "XMP ", "EXIF", etc.
   2.203 +// Setting 'chunk_number' equal to 0 will return the last chunk in a set.
   2.204 +// Returns true if the chunk is found, false otherwise. Image related chunk
   2.205 +// payloads are accessed through WebPDemuxGetFrame() and related functions.
   2.206 +// Call WebPDemuxReleaseChunkIterator() when use of the iterator is complete.
   2.207 +// NOTE: 'dmux' must persist for the lifetime of the iterator.
   2.208 +WEBP_EXTERN int WebPDemuxGetChunk(const WebPDemuxer* dmux,
   2.209 +                                  const char fourcc[4], int chunk_number,
   2.210 +                                  WebPChunkIterator* iter);
   2.211 +
   2.212 +// Sets 'iter->chunk' to point to the next ('iter->chunk_num' + 1) or previous
   2.213 +// ('iter->chunk_num' - 1) chunk. These functions do not loop.
   2.214 +// Returns true on success, false otherwise.
   2.215 +WEBP_EXTERN int WebPDemuxNextChunk(WebPChunkIterator* iter);
   2.216 +WEBP_EXTERN int WebPDemuxPrevChunk(WebPChunkIterator* iter);
   2.217 +
   2.218 +// Releases any memory associated with 'iter'.
   2.219 +// Must be called before destroying the associated WebPDemuxer with
   2.220 +// WebPDemuxDelete().
   2.221 +WEBP_EXTERN void WebPDemuxReleaseChunkIterator(WebPChunkIterator* iter);
   2.222 +
   2.223 +//------------------------------------------------------------------------------
   2.224 +// WebPAnimDecoder API
   2.225 +//
   2.226 +// This API allows decoding (possibly) animated WebP images.
   2.227 +//
   2.228 +// Code Example:
   2.229 +/*
   2.230 +  WebPAnimDecoderOptions dec_options;
   2.231 +  WebPAnimDecoderOptionsInit(&dec_options);
   2.232 +  // Tune 'dec_options' as needed.
   2.233 +  WebPAnimDecoder* dec = WebPAnimDecoderNew(webp_data, &dec_options);
   2.234 +  WebPAnimInfo anim_info;
   2.235 +  WebPAnimDecoderGetInfo(dec, &anim_info);
   2.236 +  for (uint32_t i = 0; i < anim_info.loop_count; ++i) {
   2.237 +    while (WebPAnimDecoderHasMoreFrames(dec)) {
   2.238 +      uint8_t* buf;
   2.239 +      int timestamp;
   2.240 +      WebPAnimDecoderGetNext(dec, &buf, &timestamp);
   2.241 +      // ... (Render 'buf' based on 'timestamp').
   2.242 +      // ... (Do NOT free 'buf', as it is owned by 'dec').
   2.243 +    }
   2.244 +    WebPAnimDecoderReset(dec);
   2.245 +  }
   2.246 +  const WebPDemuxer* demuxer = WebPAnimDecoderGetDemuxer(dec);
   2.247 +  // ... (Do something using 'demuxer'; e.g. get EXIF/XMP/ICC data).
   2.248 +  WebPAnimDecoderDelete(dec);
   2.249 +*/
   2.250 +
   2.251 +typedef struct WebPAnimDecoder WebPAnimDecoder;  // Main opaque object.
   2.252 +
   2.253 +// Global options.
   2.254 +struct WebPAnimDecoderOptions {
   2.255 +  // Output colorspace. Only the following modes are supported:
   2.256 +  // MODE_RGBA, MODE_BGRA, MODE_rgbA and MODE_bgrA.
   2.257 +  WEBP_CSP_MODE color_mode;
   2.258 +  int use_threads;           // If true, use multi-threaded decoding.
   2.259 +  uint32_t padding[7];       // Padding for later use.
   2.260 +};
   2.261 +
   2.262 +// Internal, version-checked, entry point.
   2.263 +WEBP_EXTERN int WebPAnimDecoderOptionsInitInternal(
   2.264 +    WebPAnimDecoderOptions*, int);
   2.265 +
   2.266 +// Should always be called, to initialize a fresh WebPAnimDecoderOptions
   2.267 +// structure before modification. Returns false in case of version mismatch.
   2.268 +// WebPAnimDecoderOptionsInit() must have succeeded before using the
   2.269 +// 'dec_options' object.
   2.270 +static WEBP_INLINE int WebPAnimDecoderOptionsInit(
   2.271 +    WebPAnimDecoderOptions* dec_options) {
   2.272 +  return WebPAnimDecoderOptionsInitInternal(dec_options,
   2.273 +                                            WEBP_DEMUX_ABI_VERSION);
   2.274 +}
   2.275 +
   2.276 +// Internal, version-checked, entry point.
   2.277 +WEBP_EXTERN WebPAnimDecoder* WebPAnimDecoderNewInternal(
   2.278 +    const WebPData*, const WebPAnimDecoderOptions*, int);
   2.279 +
   2.280 +// Creates and initializes a WebPAnimDecoder object.
   2.281 +// Parameters:
   2.282 +//   webp_data - (in) WebP bitstream. This should remain unchanged during the
   2.283 +//                    lifetime of the output WebPAnimDecoder object.
   2.284 +//   dec_options - (in) decoding options. Can be passed NULL to choose
   2.285 +//                      reasonable defaults (in particular, color mode MODE_RGBA
   2.286 +//                      will be picked).
   2.287 +// Returns:
   2.288 +//   A pointer to the newly created WebPAnimDecoder object, or NULL in case of
   2.289 +//   parsing error, invalid option or memory error.
   2.290 +static WEBP_INLINE WebPAnimDecoder* WebPAnimDecoderNew(
   2.291 +    const WebPData* webp_data, const WebPAnimDecoderOptions* dec_options) {
   2.292 +  return WebPAnimDecoderNewInternal(webp_data, dec_options,
   2.293 +                                    WEBP_DEMUX_ABI_VERSION);
   2.294 +}
   2.295 +
   2.296 +// Global information about the animation..
   2.297 +struct WebPAnimInfo {
   2.298 +  uint32_t canvas_width;
   2.299 +  uint32_t canvas_height;
   2.300 +  uint32_t loop_count;
   2.301 +  uint32_t bgcolor;
   2.302 +  uint32_t frame_count;
   2.303 +  uint32_t pad[4];   // padding for later use
   2.304 +};
   2.305 +
   2.306 +// Get global information about the animation.
   2.307 +// Parameters:
   2.308 +//   dec - (in) decoder instance to get information from.
   2.309 +//   info - (out) global information fetched from the animation.
   2.310 +// Returns:
   2.311 +//   True on success.
   2.312 +WEBP_EXTERN int WebPAnimDecoderGetInfo(const WebPAnimDecoder* dec,
   2.313 +                                       WebPAnimInfo* info);
   2.314 +
   2.315 +// Fetch the next frame from 'dec' based on options supplied to
   2.316 +// WebPAnimDecoderNew(). This will be a fully reconstructed canvas of size
   2.317 +// 'canvas_width * 4 * canvas_height', and not just the frame sub-rectangle. The
   2.318 +// returned buffer 'buf' is valid only until the next call to
   2.319 +// WebPAnimDecoderGetNext(), WebPAnimDecoderReset() or WebPAnimDecoderDelete().
   2.320 +// Parameters:
   2.321 +//   dec - (in/out) decoder instance from which the next frame is to be fetched.
   2.322 +//   buf - (out) decoded frame.
   2.323 +//   timestamp - (out) timestamp of the frame in milliseconds.
   2.324 +// Returns:
   2.325 +//   False if any of the arguments are NULL, or if there is a parsing or
   2.326 +//   decoding error, or if there are no more frames. Otherwise, returns true.
   2.327 +WEBP_EXTERN int WebPAnimDecoderGetNext(WebPAnimDecoder* dec,
   2.328 +                                       uint8_t** buf, int* timestamp);
   2.329 +
   2.330 +// Check if there are more frames left to decode.
   2.331 +// Parameters:
   2.332 +//   dec - (in) decoder instance to be checked.
   2.333 +// Returns:
   2.334 +//   True if 'dec' is not NULL and some frames are yet to be decoded.
   2.335 +//   Otherwise, returns false.
   2.336 +WEBP_EXTERN int WebPAnimDecoderHasMoreFrames(const WebPAnimDecoder* dec);
   2.337 +
   2.338 +// Resets the WebPAnimDecoder object, so that next call to
   2.339 +// WebPAnimDecoderGetNext() will restart decoding from 1st frame. This would be
   2.340 +// helpful when all frames need to be decoded multiple times (e.g.
   2.341 +// info.loop_count times) without destroying and recreating the 'dec' object.
   2.342 +// Parameters:
   2.343 +//   dec - (in/out) decoder instance to be reset
   2.344 +WEBP_EXTERN void WebPAnimDecoderReset(WebPAnimDecoder* dec);
   2.345 +
   2.346 +// Grab the internal demuxer object.
   2.347 +// Getting the demuxer object can be useful if one wants to use operations only
   2.348 +// available through demuxer; e.g. to get XMP/EXIF/ICC metadata. The returned
   2.349 +// demuxer object is owned by 'dec' and is valid only until the next call to
   2.350 +// WebPAnimDecoderDelete().
   2.351 +//
   2.352 +// Parameters:
   2.353 +//   dec - (in) decoder instance from which the demuxer object is to be fetched.
   2.354 +WEBP_EXTERN const WebPDemuxer* WebPAnimDecoderGetDemuxer(
   2.355 +    const WebPAnimDecoder* dec);
   2.356 +
   2.357 +// Deletes the WebPAnimDecoder object.
   2.358 +// Parameters:
   2.359 +//   dec - (in/out) decoder instance to be deleted
   2.360 +WEBP_EXTERN void WebPAnimDecoderDelete(WebPAnimDecoder* dec);
   2.361 +
   2.362 +#ifdef __cplusplus
   2.363 +}    // extern "C"
   2.364 +#endif
   2.365 +
   2.366 +#endif  /* WEBP_WEBP_DEMUX_H_ */
     3.1 --- a/VisualC/external/include/webp/encode.h	Fri Oct 26 10:07:53 2018 -0700
     3.2 +++ b/VisualC/external/include/webp/encode.h	Fri Oct 26 14:38:19 2018 -0700
     3.3 @@ -35,7 +35,7 @@
     3.4  
     3.5  // Return the encoder's version number, packed in hexadecimal using 8bits for
     3.6  // each of major/minor/revision. E.g: v2.5.7 is 0x020507.
     3.7 -WEBP_EXTERN(int) WebPGetEncoderVersion(void);
     3.8 +WEBP_EXTERN int WebPGetEncoderVersion(void);
     3.9  
    3.10  //------------------------------------------------------------------------------
    3.11  // One-stop-shop call! No questions asked:
    3.12 @@ -46,37 +46,37 @@
    3.13  // These functions compress using the lossy format, and the quality_factor
    3.14  // can go from 0 (smaller output, lower quality) to 100 (best quality,
    3.15  // larger output).
    3.16 -WEBP_EXTERN(size_t) WebPEncodeRGB(const uint8_t* rgb,
    3.17 +WEBP_EXTERN size_t WebPEncodeRGB(const uint8_t* rgb,
    3.18 +                                 int width, int height, int stride,
    3.19 +                                 float quality_factor, uint8_t** output);
    3.20 +WEBP_EXTERN size_t WebPEncodeBGR(const uint8_t* bgr,
    3.21 +                                 int width, int height, int stride,
    3.22 +                                 float quality_factor, uint8_t** output);
    3.23 +WEBP_EXTERN size_t WebPEncodeRGBA(const uint8_t* rgba,
    3.24                                    int width, int height, int stride,
    3.25                                    float quality_factor, uint8_t** output);
    3.26 -WEBP_EXTERN(size_t) WebPEncodeBGR(const uint8_t* bgr,
    3.27 +WEBP_EXTERN size_t WebPEncodeBGRA(const uint8_t* bgra,
    3.28                                    int width, int height, int stride,
    3.29                                    float quality_factor, uint8_t** output);
    3.30 -WEBP_EXTERN(size_t) WebPEncodeRGBA(const uint8_t* rgba,
    3.31 -                                   int width, int height, int stride,
    3.32 -                                   float quality_factor, uint8_t** output);
    3.33 -WEBP_EXTERN(size_t) WebPEncodeBGRA(const uint8_t* bgra,
    3.34 -                                   int width, int height, int stride,
    3.35 -                                   float quality_factor, uint8_t** output);
    3.36  
    3.37  // These functions are the equivalent of the above, but compressing in a
    3.38  // lossless manner. Files are usually larger than lossy format, but will
    3.39  // not suffer any compression loss.
    3.40 -WEBP_EXTERN(size_t) WebPEncodeLosslessRGB(const uint8_t* rgb,
    3.41 +WEBP_EXTERN size_t WebPEncodeLosslessRGB(const uint8_t* rgb,
    3.42 +                                         int width, int height, int stride,
    3.43 +                                         uint8_t** output);
    3.44 +WEBP_EXTERN size_t WebPEncodeLosslessBGR(const uint8_t* bgr,
    3.45 +                                         int width, int height, int stride,
    3.46 +                                         uint8_t** output);
    3.47 +WEBP_EXTERN size_t WebPEncodeLosslessRGBA(const uint8_t* rgba,
    3.48                                            int width, int height, int stride,
    3.49                                            uint8_t** output);
    3.50 -WEBP_EXTERN(size_t) WebPEncodeLosslessBGR(const uint8_t* bgr,
    3.51 +WEBP_EXTERN size_t WebPEncodeLosslessBGRA(const uint8_t* bgra,
    3.52                                            int width, int height, int stride,
    3.53                                            uint8_t** output);
    3.54 -WEBP_EXTERN(size_t) WebPEncodeLosslessRGBA(const uint8_t* rgba,
    3.55 -                                           int width, int height, int stride,
    3.56 -                                           uint8_t** output);
    3.57 -WEBP_EXTERN(size_t) WebPEncodeLosslessBGRA(const uint8_t* bgra,
    3.58 -                                           int width, int height, int stride,
    3.59 -                                           uint8_t** output);
    3.60  
    3.61  // Releases memory returned by the WebPEncode*() functions above.
    3.62 -WEBP_EXTERN(void) WebPFree(void* ptr);
    3.63 +WEBP_EXTERN void WebPFree(void* ptr);
    3.64  
    3.65  //------------------------------------------------------------------------------
    3.66  // Coding parameters
    3.67 @@ -93,12 +93,15 @@
    3.68  // Compression parameters.
    3.69  struct WebPConfig {
    3.70    int lossless;           // Lossless encoding (0=lossy(default), 1=lossless).
    3.71 -  float quality;          // between 0 (smallest file) and 100 (biggest)
    3.72 +  float quality;          // between 0 and 100. For lossy, 0 gives the smallest
    3.73 +                          // size and 100 the largest. For lossless, this
    3.74 +                          // parameter is the amount of effort put into the
    3.75 +                          // compression: 0 is the fastest but gives larger
    3.76 +                          // files compared to the slowest, but best, 100.
    3.77    int method;             // quality/speed trade-off (0=fast, 6=slower-better)
    3.78  
    3.79    WebPImageHint image_hint;  // Hint for image type (lossless only for now).
    3.80  
    3.81 -  // Parameters related to lossy compression only:
    3.82    int target_size;        // if non-zero, set the desired target size in bytes.
    3.83                            // Takes precedence over the 'compression' parameter.
    3.84    float target_PSNR;      // if non-zero, specifies the minimal distortion to
    3.85 @@ -159,7 +162,7 @@
    3.86  } WebPPreset;
    3.87  
    3.88  // Internal, version-checked, entry point
    3.89 -WEBP_EXTERN(int) WebPConfigInitInternal(WebPConfig*, WebPPreset, float, int);
    3.90 +WEBP_EXTERN int WebPConfigInitInternal(WebPConfig*, WebPPreset, float, int);
    3.91  
    3.92  // Should always be called, to initialize a fresh WebPConfig structure before
    3.93  // modification. Returns false in case of version mismatch. WebPConfigInit()
    3.94 @@ -186,15 +189,15 @@
    3.95  // speed and final compressed size.
    3.96  // This function will overwrite several fields from config: 'method', 'quality'
    3.97  // and 'lossless'. Returns false in case of parameter error.
    3.98 -WEBP_EXTERN(int) WebPConfigLosslessPreset(WebPConfig* config, int level);
    3.99 +WEBP_EXTERN int WebPConfigLosslessPreset(WebPConfig* config, int level);
   3.100  
   3.101  // Returns true if 'config' is non-NULL and all configuration parameters are
   3.102  // within their valid ranges.
   3.103 -WEBP_EXTERN(int) WebPValidateConfig(const WebPConfig* config);
   3.104 +WEBP_EXTERN int WebPValidateConfig(const WebPConfig* config);
   3.105  
   3.106  //------------------------------------------------------------------------------
   3.107  // Input / Output
   3.108 -// Structure for storing auxiliary statistics (mostly for lossy encoding).
   3.109 +// Structure for storing auxiliary statistics.
   3.110  
   3.111  struct WebPAuxStats {
   3.112    int coded_size;         // final size
   3.113 @@ -242,16 +245,16 @@
   3.114  };
   3.115  
   3.116  // The following must be called first before any use.
   3.117 -WEBP_EXTERN(void) WebPMemoryWriterInit(WebPMemoryWriter* writer);
   3.118 +WEBP_EXTERN void WebPMemoryWriterInit(WebPMemoryWriter* writer);
   3.119  
   3.120  // The following must be called to deallocate writer->mem memory. The 'writer'
   3.121  // object itself is not deallocated.
   3.122 -WEBP_EXTERN(void) WebPMemoryWriterClear(WebPMemoryWriter* writer);
   3.123 +WEBP_EXTERN void WebPMemoryWriterClear(WebPMemoryWriter* writer);
   3.124  // The custom writer to be used with WebPMemoryWriter as custom_ptr. Upon
   3.125  // completion, writer.mem and writer.size will hold the coded data.
   3.126  // writer.mem must be freed by calling WebPMemoryWriterClear.
   3.127 -WEBP_EXTERN(int) WebPMemoryWrite(const uint8_t* data, size_t data_size,
   3.128 -                                 const WebPPicture* picture);
   3.129 +WEBP_EXTERN int WebPMemoryWrite(const uint8_t* data, size_t data_size,
   3.130 +                                const WebPPicture* picture);
   3.131  
   3.132  // Progress hook, called from time to time to report progress. It can return
   3.133  // false to request an abort of the encoding process, or true otherwise if
   3.134 @@ -354,7 +357,7 @@
   3.135  };
   3.136  
   3.137  // Internal, version-checked, entry point
   3.138 -WEBP_EXTERN(int) WebPPictureInitInternal(WebPPicture*, int);
   3.139 +WEBP_EXTERN int WebPPictureInitInternal(WebPPicture*, int);
   3.140  
   3.141  // Should always be called, to initialize the structure. Returns false in case
   3.142  // of version mismatch. WebPPictureInit() must have succeeded before using the
   3.143 @@ -371,20 +374,20 @@
   3.144  // Allocate y/u/v buffers as per colorspace/width/height specification.
   3.145  // Note! This function will free the previous buffer if needed.
   3.146  // Returns false in case of memory error.
   3.147 -WEBP_EXTERN(int) WebPPictureAlloc(WebPPicture* picture);
   3.148 +WEBP_EXTERN int WebPPictureAlloc(WebPPicture* picture);
   3.149  
   3.150  // Release the memory allocated by WebPPictureAlloc() or WebPPictureImport*().
   3.151  // Note that this function does _not_ free the memory used by the 'picture'
   3.152  // object itself.
   3.153  // Besides memory (which is reclaimed) all other fields of 'picture' are
   3.154  // preserved.
   3.155 -WEBP_EXTERN(void) WebPPictureFree(WebPPicture* picture);
   3.156 +WEBP_EXTERN void WebPPictureFree(WebPPicture* picture);
   3.157  
   3.158  // Copy the pixels of *src into *dst, using WebPPictureAlloc. Upon return, *dst
   3.159  // will fully own the copied pixels (this is not a view). The 'dst' picture need
   3.160  // not be initialized as its content is overwritten.
   3.161  // Returns false in case of memory allocation error.
   3.162 -WEBP_EXTERN(int) WebPPictureCopy(const WebPPicture* src, WebPPicture* dst);
   3.163 +WEBP_EXTERN int WebPPictureCopy(const WebPPicture* src, WebPPicture* dst);
   3.164  
   3.165  // Compute the single distortion for packed planes of samples.
   3.166  // 'src' will be compared to 'ref', and the raw distortion stored into
   3.167 @@ -393,19 +396,19 @@
   3.168  // 'x_step' is the horizontal stride (in bytes) between samples.
   3.169  // 'src/ref_stride' is the byte distance between rows.
   3.170  // Returns false in case of error (bad parameter, memory allocation error, ...).
   3.171 -WEBP_EXTERN(int) WebPPlaneDistortion(const uint8_t* src, size_t src_stride,
   3.172 -                                     const uint8_t* ref, size_t ref_stride,
   3.173 -                                     int width, int height,
   3.174 -                                     size_t x_step,
   3.175 -                                     int type,   // 0 = PSNR, 1 = SSIM, 2 = LSIM
   3.176 -                                     float* distortion, float* result);
   3.177 +WEBP_EXTERN int WebPPlaneDistortion(const uint8_t* src, size_t src_stride,
   3.178 +                                    const uint8_t* ref, size_t ref_stride,
   3.179 +                                    int width, int height,
   3.180 +                                    size_t x_step,
   3.181 +                                    int type,   // 0 = PSNR, 1 = SSIM, 2 = LSIM
   3.182 +                                    float* distortion, float* result);
   3.183  
   3.184  // Compute PSNR, SSIM or LSIM distortion metric between two pictures. Results
   3.185  // are in dB, stored in result[] in the B/G/R/A/All order. The distortion is
   3.186  // always performed using ARGB samples. Hence if the input is YUV(A), the
   3.187  // picture will be internally converted to ARGB (just for the measurement).
   3.188  // Warning: this function is rather CPU-intensive.
   3.189 -WEBP_EXTERN(int) WebPPictureDistortion(
   3.190 +WEBP_EXTERN int WebPPictureDistortion(
   3.191      const WebPPicture* src, const WebPPicture* ref,
   3.192      int metric_type,           // 0 = PSNR, 1 = SSIM, 2 = LSIM
   3.193      float result[5]);
   3.194 @@ -418,8 +421,8 @@
   3.195  // must be fully be comprised inside the 'src' source picture. If the source
   3.196  // picture uses the YUV420 colorspace, the top and left coordinates will be
   3.197  // snapped to even values.
   3.198 -WEBP_EXTERN(int) WebPPictureCrop(WebPPicture* picture,
   3.199 -                                 int left, int top, int width, int height);
   3.200 +WEBP_EXTERN int WebPPictureCrop(WebPPicture* picture,
   3.201 +                                int left, int top, int width, int height);
   3.202  
   3.203  // Extracts a view from 'src' picture into 'dst'. The rectangle for the view
   3.204  // is defined by the top-left corner pixel coordinates (left, top) as well
   3.205 @@ -432,42 +435,42 @@
   3.206  // with WebPPictureInit() if it is different from 'src', since its content will
   3.207  // be overwritten.
   3.208  // Returns false in case of memory allocation error or invalid parameters.
   3.209 -WEBP_EXTERN(int) WebPPictureView(const WebPPicture* src,
   3.210 -                                 int left, int top, int width, int height,
   3.211 -                                 WebPPicture* dst);
   3.212 +WEBP_EXTERN int WebPPictureView(const WebPPicture* src,
   3.213 +                                int left, int top, int width, int height,
   3.214 +                                WebPPicture* dst);
   3.215  
   3.216  // Returns true if the 'picture' is actually a view and therefore does
   3.217  // not own the memory for pixels.
   3.218 -WEBP_EXTERN(int) WebPPictureIsView(const WebPPicture* picture);
   3.219 +WEBP_EXTERN int WebPPictureIsView(const WebPPicture* picture);
   3.220  
   3.221  // Rescale a picture to new dimension width x height.
   3.222  // If either 'width' or 'height' (but not both) is 0 the corresponding
   3.223  // dimension will be calculated preserving the aspect ratio.
   3.224  // No gamma correction is applied.
   3.225  // Returns false in case of error (invalid parameter or insufficient memory).
   3.226 -WEBP_EXTERN(int) WebPPictureRescale(WebPPicture* pic, int width, int height);
   3.227 +WEBP_EXTERN int WebPPictureRescale(WebPPicture* pic, int width, int height);
   3.228  
   3.229  // Colorspace conversion function to import RGB samples.
   3.230  // Previous buffer will be free'd, if any.
   3.231  // *rgb buffer should have a size of at least height * rgb_stride.
   3.232  // Returns false in case of memory error.
   3.233 -WEBP_EXTERN(int) WebPPictureImportRGB(
   3.234 +WEBP_EXTERN int WebPPictureImportRGB(
   3.235      WebPPicture* picture, const uint8_t* rgb, int rgb_stride);
   3.236  // Same, but for RGBA buffer.
   3.237 -WEBP_EXTERN(int) WebPPictureImportRGBA(
   3.238 +WEBP_EXTERN int WebPPictureImportRGBA(
   3.239      WebPPicture* picture, const uint8_t* rgba, int rgba_stride);
   3.240  // Same, but for RGBA buffer. Imports the RGB direct from the 32-bit format
   3.241  // input buffer ignoring the alpha channel. Avoids needing to copy the data
   3.242  // to a temporary 24-bit RGB buffer to import the RGB only.
   3.243 -WEBP_EXTERN(int) WebPPictureImportRGBX(
   3.244 +WEBP_EXTERN int WebPPictureImportRGBX(
   3.245      WebPPicture* picture, const uint8_t* rgbx, int rgbx_stride);
   3.246  
   3.247  // Variants of the above, but taking BGR(A|X) input.
   3.248 -WEBP_EXTERN(int) WebPPictureImportBGR(
   3.249 +WEBP_EXTERN int WebPPictureImportBGR(
   3.250      WebPPicture* picture, const uint8_t* bgr, int bgr_stride);
   3.251 -WEBP_EXTERN(int) WebPPictureImportBGRA(
   3.252 +WEBP_EXTERN int WebPPictureImportBGRA(
   3.253      WebPPicture* picture, const uint8_t* bgra, int bgra_stride);
   3.254 -WEBP_EXTERN(int) WebPPictureImportBGRX(
   3.255 +WEBP_EXTERN int WebPPictureImportBGRX(
   3.256      WebPPicture* picture, const uint8_t* bgrx, int bgrx_stride);
   3.257  
   3.258  // Converts picture->argb data to the YUV420A format. The 'colorspace'
   3.259 @@ -476,14 +479,14 @@
   3.260  // non-opaque transparent values is detected, and 'colorspace' will be
   3.261  // adjusted accordingly. Note that this method is lossy.
   3.262  // Returns false in case of error.
   3.263 -WEBP_EXTERN(int) WebPPictureARGBToYUVA(WebPPicture* picture,
   3.264 -                                       WebPEncCSP /*colorspace = WEBP_YUV420*/);
   3.265 +WEBP_EXTERN int WebPPictureARGBToYUVA(WebPPicture* picture,
   3.266 +                                      WebPEncCSP /*colorspace = WEBP_YUV420*/);
   3.267  
   3.268  // Same as WebPPictureARGBToYUVA(), but the conversion is done using
   3.269  // pseudo-random dithering with a strength 'dithering' between
   3.270  // 0.0 (no dithering) and 1.0 (maximum dithering). This is useful
   3.271  // for photographic picture.
   3.272 -WEBP_EXTERN(int) WebPPictureARGBToYUVADithered(
   3.273 +WEBP_EXTERN int WebPPictureARGBToYUVADithered(
   3.274      WebPPicture* picture, WebPEncCSP colorspace, float dithering);
   3.275  
   3.276  // Performs 'sharp' RGBA->YUVA420 downsampling and colorspace conversion.
   3.277 @@ -491,9 +494,9 @@
   3.278  // method is roughly 2x slower than WebPPictureARGBToYUVA() but produces better
   3.279  // and sharper YUV representation.
   3.280  // Returns false in case of error.
   3.281 -WEBP_EXTERN(int) WebPPictureSharpARGBToYUVA(WebPPicture* picture);
   3.282 +WEBP_EXTERN int WebPPictureSharpARGBToYUVA(WebPPicture* picture);
   3.283  // kept for backward compatibility:
   3.284 -WEBP_EXTERN(int) WebPPictureSmartARGBToYUVA(WebPPicture* picture);
   3.285 +WEBP_EXTERN int WebPPictureSmartARGBToYUVA(WebPPicture* picture);
   3.286  
   3.287  // Converts picture->yuv to picture->argb and sets picture->use_argb to true.
   3.288  // The input format must be YUV_420 or YUV_420A. The conversion from YUV420 to
   3.289 @@ -501,22 +504,22 @@
   3.290  // Note that the use of this colorspace is discouraged if one has access to the
   3.291  // raw ARGB samples, since using YUV420 is comparatively lossy.
   3.292  // Returns false in case of error.
   3.293 -WEBP_EXTERN(int) WebPPictureYUVAToARGB(WebPPicture* picture);
   3.294 +WEBP_EXTERN int WebPPictureYUVAToARGB(WebPPicture* picture);
   3.295  
   3.296  // Helper function: given a width x height plane of RGBA or YUV(A) samples
   3.297 -// clean-up the YUV or RGB samples under fully transparent area, to help
   3.298 -// compressibility (no guarantee, though).
   3.299 -WEBP_EXTERN(void) WebPCleanupTransparentArea(WebPPicture* picture);
   3.300 +// clean-up or smoothen the YUV or RGB samples under fully transparent area,
   3.301 +// to help compressibility (no guarantee, though).
   3.302 +WEBP_EXTERN void WebPCleanupTransparentArea(WebPPicture* picture);
   3.303  
   3.304  // Scan the picture 'picture' for the presence of non fully opaque alpha values.
   3.305  // Returns true in such case. Otherwise returns false (indicating that the
   3.306  // alpha plane can be ignored altogether e.g.).
   3.307 -WEBP_EXTERN(int) WebPPictureHasTransparency(const WebPPicture* picture);
   3.308 +WEBP_EXTERN int WebPPictureHasTransparency(const WebPPicture* picture);
   3.309  
   3.310  // Remove the transparency information (if present) by blending the color with
   3.311  // the background color 'background_rgb' (specified as 24bit RGB triplet).
   3.312  // After this call, all alpha values are reset to 0xff.
   3.313 -WEBP_EXTERN(void) WebPBlendAlpha(WebPPicture* pic, uint32_t background_rgb);
   3.314 +WEBP_EXTERN void WebPBlendAlpha(WebPPicture* pic, uint32_t background_rgb);
   3.315  
   3.316  //------------------------------------------------------------------------------
   3.317  // Main call
   3.318 @@ -531,7 +534,7 @@
   3.319  // the former for lossy encoding, and the latter for lossless encoding
   3.320  // (when config.lossless is true). Automatic conversion from one format to
   3.321  // another is provided but they both incur some loss.
   3.322 -WEBP_EXTERN(int) WebPEncode(const WebPConfig* config, WebPPicture* picture);
   3.323 +WEBP_EXTERN int WebPEncode(const WebPConfig* config, WebPPicture* picture);
   3.324  
   3.325  //------------------------------------------------------------------------------
   3.326  
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/VisualC/external/include/webp/mux_types.h	Fri Oct 26 14:38:19 2018 -0700
     4.3 @@ -0,0 +1,98 @@
     4.4 +// Copyright 2012 Google Inc. All Rights Reserved.
     4.5 +//
     4.6 +// Use of this source code is governed by a BSD-style license
     4.7 +// that can be found in the COPYING file in the root of the source
     4.8 +// tree. An additional intellectual property rights grant can be found
     4.9 +// in the file PATENTS. All contributing project authors may
    4.10 +// be found in the AUTHORS file in the root of the source tree.
    4.11 +// -----------------------------------------------------------------------------
    4.12 +//
    4.13 +// Data-types common to the mux and demux libraries.
    4.14 +//
    4.15 +// Author: Urvang (urvang@google.com)
    4.16 +
    4.17 +#ifndef WEBP_WEBP_MUX_TYPES_H_
    4.18 +#define WEBP_WEBP_MUX_TYPES_H_
    4.19 +
    4.20 +#include <stdlib.h>  // free()
    4.21 +#include <string.h>  // memset()
    4.22 +#include "./types.h"
    4.23 +
    4.24 +#ifdef __cplusplus
    4.25 +extern "C" {
    4.26 +#endif
    4.27 +
    4.28 +// Note: forward declaring enumerations is not allowed in (strict) C and C++,
    4.29 +// the types are left here for reference.
    4.30 +// typedef enum WebPFeatureFlags WebPFeatureFlags;
    4.31 +// typedef enum WebPMuxAnimDispose WebPMuxAnimDispose;
    4.32 +// typedef enum WebPMuxAnimBlend WebPMuxAnimBlend;
    4.33 +typedef struct WebPData WebPData;
    4.34 +
    4.35 +// VP8X Feature Flags.
    4.36 +typedef enum WebPFeatureFlags {
    4.37 +  ANIMATION_FLAG  = 0x00000002,
    4.38 +  XMP_FLAG        = 0x00000004,
    4.39 +  EXIF_FLAG       = 0x00000008,
    4.40 +  ALPHA_FLAG      = 0x00000010,
    4.41 +  ICCP_FLAG       = 0x00000020,
    4.42 +
    4.43 +  ALL_VALID_FLAGS = 0x0000003e
    4.44 +} WebPFeatureFlags;
    4.45 +
    4.46 +// Dispose method (animation only). Indicates how the area used by the current
    4.47 +// frame is to be treated before rendering the next frame on the canvas.
    4.48 +typedef enum WebPMuxAnimDispose {
    4.49 +  WEBP_MUX_DISPOSE_NONE,       // Do not dispose.
    4.50 +  WEBP_MUX_DISPOSE_BACKGROUND  // Dispose to background color.
    4.51 +} WebPMuxAnimDispose;
    4.52 +
    4.53 +// Blend operation (animation only). Indicates how transparent pixels of the
    4.54 +// current frame are blended with those of the previous canvas.
    4.55 +typedef enum WebPMuxAnimBlend {
    4.56 +  WEBP_MUX_BLEND,              // Blend.
    4.57 +  WEBP_MUX_NO_BLEND            // Do not blend.
    4.58 +} WebPMuxAnimBlend;
    4.59 +
    4.60 +// Data type used to describe 'raw' data, e.g., chunk data
    4.61 +// (ICC profile, metadata) and WebP compressed image data.
    4.62 +struct WebPData {
    4.63 +  const uint8_t* bytes;
    4.64 +  size_t size;
    4.65 +};
    4.66 +
    4.67 +// Initializes the contents of the 'webp_data' object with default values.
    4.68 +static WEBP_INLINE void WebPDataInit(WebPData* webp_data) {
    4.69 +  if (webp_data != NULL) {
    4.70 +    memset(webp_data, 0, sizeof(*webp_data));
    4.71 +  }
    4.72 +}
    4.73 +
    4.74 +// Clears the contents of the 'webp_data' object by calling free(). Does not
    4.75 +// deallocate the object itself.
    4.76 +static WEBP_INLINE void WebPDataClear(WebPData* webp_data) {
    4.77 +  if (webp_data != NULL) {
    4.78 +    free((void*)webp_data->bytes);
    4.79 +    WebPDataInit(webp_data);
    4.80 +  }
    4.81 +}
    4.82 +
    4.83 +// Allocates necessary storage for 'dst' and copies the contents of 'src'.
    4.84 +// Returns true on success.
    4.85 +static WEBP_INLINE int WebPDataCopy(const WebPData* src, WebPData* dst) {
    4.86 +  if (src == NULL || dst == NULL) return 0;
    4.87 +  WebPDataInit(dst);
    4.88 +  if (src->bytes != NULL && src->size != 0) {
    4.89 +    dst->bytes = (uint8_t*)malloc(src->size);
    4.90 +    if (dst->bytes == NULL) return 0;
    4.91 +    memcpy((void*)dst->bytes, src->bytes, src->size);
    4.92 +    dst->size = src->size;
    4.93 +  }
    4.94 +  return 1;
    4.95 +}
    4.96 +
    4.97 +#ifdef __cplusplus
    4.98 +}    // extern "C"
    4.99 +#endif
   4.100 +
   4.101 +#endif  /* WEBP_WEBP_MUX_TYPES_H_ */
     5.1 --- a/VisualC/external/include/webp/types.h	Fri Oct 26 10:07:53 2018 -0700
     5.2 +++ b/VisualC/external/include/webp/types.h	Fri Oct 26 14:38:19 2018 -0700
     5.3 @@ -40,9 +40,9 @@
     5.4  // This explicitly marks library functions and allows for changing the
     5.5  // signature for e.g., Windows DLL builds.
     5.6  # if defined(__GNUC__) && __GNUC__ >= 4
     5.7 -#  define WEBP_EXTERN(type) extern __attribute__ ((visibility ("default"))) type
     5.8 +#  define WEBP_EXTERN extern __attribute__ ((visibility ("default")))
     5.9  # else
    5.10 -#  define WEBP_EXTERN(type) extern type
    5.11 +#  define WEBP_EXTERN extern
    5.12  # endif  /* __GNUC__ >= 4 */
    5.13  #endif  /* WEBP_EXTERN */
    5.14  
     6.1 --- a/VisualC/external/lib/x64/LICENSE.jpeg.txt	Fri Oct 26 10:07:53 2018 -0700
     6.2 +++ b/VisualC/external/lib/x64/LICENSE.jpeg.txt	Fri Oct 26 14:38:19 2018 -0700
     6.3 @@ -1,5 +1,5 @@
     6.4  The source code to this library used with SDL_image can be found here:
     6.5 -http://www.libsdl.org/projects/SDL_image/libs/
     6.6 +https://hg.libsdl.org/SDL_image/file/default/external
     6.7  ---
     6.8  
     6.9  LEGAL ISSUES
     7.1 --- a/VisualC/external/lib/x64/LICENSE.png.txt	Fri Oct 26 10:07:53 2018 -0700
     7.2 +++ b/VisualC/external/lib/x64/LICENSE.png.txt	Fri Oct 26 14:38:19 2018 -0700
     7.3 @@ -1,5 +1,5 @@
     7.4  The source code to this library used with SDL_image can be found here:
     7.5 -http://www.libsdl.org/projects/SDL_image/libs/
     7.6 +https://hg.libsdl.org/SDL_image/file/default/external
     7.7  ---
     7.8  
     7.9  This copy of the libpng notices is provided for your convenience.  In case of
     8.1 --- a/VisualC/external/lib/x64/LICENSE.tiff.txt	Fri Oct 26 10:07:53 2018 -0700
     8.2 +++ b/VisualC/external/lib/x64/LICENSE.tiff.txt	Fri Oct 26 14:38:19 2018 -0700
     8.3 @@ -1,5 +1,5 @@
     8.4  The source code to this library used with SDL_image can be found here:
     8.5 -http://www.libsdl.org/projects/SDL_image/libs/
     8.6 +https://hg.libsdl.org/SDL_image/file/default/external
     8.7  ---
     8.8  
     8.9  Copyright (c) 1988-1997 Sam Leffler
     9.1 --- a/VisualC/external/lib/x64/LICENSE.webp.txt	Fri Oct 26 10:07:53 2018 -0700
     9.2 +++ b/VisualC/external/lib/x64/LICENSE.webp.txt	Fri Oct 26 14:38:19 2018 -0700
     9.3 @@ -1,5 +1,5 @@
     9.4  The source code to this library used with SDL_image can be found here:
     9.5 -http://www.libsdl.org/projects/SDL_image/libs/
     9.6 +https://hg.libsdl.org/SDL_image/file/default/external
     9.7  ---
     9.8  
     9.9  Copyright (c) 2010, Google Inc. All rights reserved.
    10.1 --- a/VisualC/external/lib/x64/LICENSE.zlib.txt	Fri Oct 26 10:07:53 2018 -0700
    10.2 +++ b/VisualC/external/lib/x64/LICENSE.zlib.txt	Fri Oct 26 14:38:19 2018 -0700
    10.3 @@ -1,5 +1,5 @@
    10.4  The source code to this library used with SDL_image can be found here:
    10.5 -http://www.libsdl.org/projects/SDL_image/libs/
    10.6 +https://hg.libsdl.org/SDL_image/file/default/external
    10.7  ---
    10.8  
    10.9  Copyright notice:
    11.1 Binary file VisualC/external/lib/x64/libwebp-7.dll has changed
    12.1 --- a/VisualC/external/lib/x86/LICENSE.jpeg.txt	Fri Oct 26 10:07:53 2018 -0700
    12.2 +++ b/VisualC/external/lib/x86/LICENSE.jpeg.txt	Fri Oct 26 14:38:19 2018 -0700
    12.3 @@ -1,5 +1,5 @@
    12.4  The source code to this library used with SDL_image can be found here:
    12.5 -http://www.libsdl.org/projects/SDL_image/libs/
    12.6 +https://hg.libsdl.org/SDL_image/file/default/external
    12.7  ---
    12.8  
    12.9  LEGAL ISSUES
    13.1 --- a/VisualC/external/lib/x86/LICENSE.png.txt	Fri Oct 26 10:07:53 2018 -0700
    13.2 +++ b/VisualC/external/lib/x86/LICENSE.png.txt	Fri Oct 26 14:38:19 2018 -0700
    13.3 @@ -1,5 +1,5 @@
    13.4  The source code to this library used with SDL_image can be found here:
    13.5 -http://www.libsdl.org/projects/SDL_image/libs/
    13.6 +https://hg.libsdl.org/SDL_image/file/default/external
    13.7  ---
    13.8  
    13.9  This copy of the libpng notices is provided for your convenience.  In case of
    14.1 --- a/VisualC/external/lib/x86/LICENSE.tiff.txt	Fri Oct 26 10:07:53 2018 -0700
    14.2 +++ b/VisualC/external/lib/x86/LICENSE.tiff.txt	Fri Oct 26 14:38:19 2018 -0700
    14.3 @@ -1,5 +1,5 @@
    14.4  The source code to this library used with SDL_image can be found here:
    14.5 -http://www.libsdl.org/projects/SDL_image/libs/
    14.6 +https://hg.libsdl.org/SDL_image/file/default/external
    14.7  ---
    14.8  
    14.9  Copyright (c) 1988-1997 Sam Leffler
    15.1 --- a/VisualC/external/lib/x86/LICENSE.webp.txt	Fri Oct 26 10:07:53 2018 -0700
    15.2 +++ b/VisualC/external/lib/x86/LICENSE.webp.txt	Fri Oct 26 14:38:19 2018 -0700
    15.3 @@ -1,5 +1,5 @@
    15.4  The source code to this library used with SDL_image can be found here:
    15.5 -http://www.libsdl.org/projects/SDL_image/libs/
    15.6 +https://hg.libsdl.org/SDL_image/file/default/external
    15.7  ---
    15.8  
    15.9  Copyright (c) 2010, Google Inc. All rights reserved.
    16.1 --- a/VisualC/external/lib/x86/LICENSE.zlib.txt	Fri Oct 26 10:07:53 2018 -0700
    16.2 +++ b/VisualC/external/lib/x86/LICENSE.zlib.txt	Fri Oct 26 14:38:19 2018 -0700
    16.3 @@ -1,5 +1,5 @@
    16.4  The source code to this library used with SDL_image can be found here:
    16.5 -http://www.libsdl.org/projects/SDL_image/libs/
    16.6 +https://hg.libsdl.org/SDL_image/file/default/external
    16.7  ---
    16.8  
    16.9  Copyright notice:
    17.1 Binary file VisualC/external/lib/x86/libwebp-7.dll has changed
    18.1 --- a/Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/decode.h	Fri Oct 26 10:07:53 2018 -0700
    18.2 +++ b/Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/decode.h	Fri Oct 26 14:38:19 2018 -0700
    18.3 @@ -36,39 +36,39 @@
    18.4  
    18.5  // Return the decoder's version number, packed in hexadecimal using 8bits for
    18.6  // each of major/minor/revision. E.g: v2.5.7 is 0x020507.
    18.7 -WEBP_EXTERN(int) WebPGetDecoderVersion(void);
    18.8 +WEBP_EXTERN int WebPGetDecoderVersion(void);
    18.9  
   18.10  // Retrieve basic header information: width, height.
   18.11  // This function will also validate the header, returning true on success,
   18.12  // false otherwise. '*width' and '*height' are only valid on successful return.
   18.13  // Pointers 'width' and 'height' can be passed NULL if deemed irrelevant.
   18.14 -WEBP_EXTERN(int) WebPGetInfo(const uint8_t* data, size_t data_size,
   18.15 -                             int* width, int* height);
   18.16 +WEBP_EXTERN int WebPGetInfo(const uint8_t* data, size_t data_size,
   18.17 +                            int* width, int* height);
   18.18  
   18.19  // Decodes WebP images pointed to by 'data' and returns RGBA samples, along
   18.20  // with the dimensions in *width and *height. The ordering of samples in
   18.21  // memory is R, G, B, A, R, G, B, A... in scan order (endian-independent).
   18.22  // The returned pointer should be deleted calling WebPFree().
   18.23  // Returns NULL in case of error.
   18.24 -WEBP_EXTERN(uint8_t*) WebPDecodeRGBA(const uint8_t* data, size_t data_size,
   18.25 -                                     int* width, int* height);
   18.26 +WEBP_EXTERN uint8_t* WebPDecodeRGBA(const uint8_t* data, size_t data_size,
   18.27 +                                    int* width, int* height);
   18.28  
   18.29  // Same as WebPDecodeRGBA, but returning A, R, G, B, A, R, G, B... ordered data.
   18.30 -WEBP_EXTERN(uint8_t*) WebPDecodeARGB(const uint8_t* data, size_t data_size,
   18.31 -                                     int* width, int* height);
   18.32 +WEBP_EXTERN uint8_t* WebPDecodeARGB(const uint8_t* data, size_t data_size,
   18.33 +                                    int* width, int* height);
   18.34  
   18.35  // Same as WebPDecodeRGBA, but returning B, G, R, A, B, G, R, A... ordered data.
   18.36 -WEBP_EXTERN(uint8_t*) WebPDecodeBGRA(const uint8_t* data, size_t data_size,
   18.37 -                                     int* width, int* height);
   18.38 +WEBP_EXTERN uint8_t* WebPDecodeBGRA(const uint8_t* data, size_t data_size,
   18.39 +                                    int* width, int* height);
   18.40  
   18.41  // Same as WebPDecodeRGBA, but returning R, G, B, R, G, B... ordered data.
   18.42  // If the bitstream contains transparency, it is ignored.
   18.43 -WEBP_EXTERN(uint8_t*) WebPDecodeRGB(const uint8_t* data, size_t data_size,
   18.44 -                                    int* width, int* height);
   18.45 +WEBP_EXTERN uint8_t* WebPDecodeRGB(const uint8_t* data, size_t data_size,
   18.46 +                                   int* width, int* height);
   18.47  
   18.48  // Same as WebPDecodeRGB, but returning B, G, R, B, G, R... ordered data.
   18.49 -WEBP_EXTERN(uint8_t*) WebPDecodeBGR(const uint8_t* data, size_t data_size,
   18.50 -                                    int* width, int* height);
   18.51 +WEBP_EXTERN uint8_t* WebPDecodeBGR(const uint8_t* data, size_t data_size,
   18.52 +                                   int* width, int* height);
   18.53  
   18.54  
   18.55  // Decode WebP images pointed to by 'data' to Y'UV format(*). The pointer
   18.56 @@ -80,13 +80,13 @@
   18.57  // have a common stride returned as '*uv_stride'.
   18.58  // Return NULL in case of error.
   18.59  // (*) Also named Y'CbCr. See: http://en.wikipedia.org/wiki/YCbCr
   18.60 -WEBP_EXTERN(uint8_t*) WebPDecodeYUV(const uint8_t* data, size_t data_size,
   18.61 -                                    int* width, int* height,
   18.62 -                                    uint8_t** u, uint8_t** v,
   18.63 -                                    int* stride, int* uv_stride);
   18.64 +WEBP_EXTERN uint8_t* WebPDecodeYUV(const uint8_t* data, size_t data_size,
   18.65 +                                   int* width, int* height,
   18.66 +                                   uint8_t** u, uint8_t** v,
   18.67 +                                   int* stride, int* uv_stride);
   18.68  
   18.69  // Releases memory returned by the WebPDecode*() functions above.
   18.70 -WEBP_EXTERN(void) WebPFree(void* ptr);
   18.71 +WEBP_EXTERN void WebPFree(void* ptr);
   18.72  
   18.73  // These five functions are variants of the above ones, that decode the image
   18.74  // directly into a pre-allocated buffer 'output_buffer'. The maximum storage
   18.75 @@ -96,22 +96,22 @@
   18.76  // The parameter 'output_stride' specifies the distance (in bytes)
   18.77  // between scanlines. Hence, output_buffer_size is expected to be at least
   18.78  // output_stride x picture-height.
   18.79 -WEBP_EXTERN(uint8_t*) WebPDecodeRGBAInto(
   18.80 +WEBP_EXTERN uint8_t* WebPDecodeRGBAInto(
   18.81      const uint8_t* data, size_t data_size,
   18.82      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
   18.83 -WEBP_EXTERN(uint8_t*) WebPDecodeARGBInto(
   18.84 +WEBP_EXTERN uint8_t* WebPDecodeARGBInto(
   18.85      const uint8_t* data, size_t data_size,
   18.86      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
   18.87 -WEBP_EXTERN(uint8_t*) WebPDecodeBGRAInto(
   18.88 +WEBP_EXTERN uint8_t* WebPDecodeBGRAInto(
   18.89      const uint8_t* data, size_t data_size,
   18.90      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
   18.91  
   18.92  // RGB and BGR variants. Here too the transparency information, if present,
   18.93  // will be dropped and ignored.
   18.94 -WEBP_EXTERN(uint8_t*) WebPDecodeRGBInto(
   18.95 +WEBP_EXTERN uint8_t* WebPDecodeRGBInto(
   18.96      const uint8_t* data, size_t data_size,
   18.97      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
   18.98 -WEBP_EXTERN(uint8_t*) WebPDecodeBGRInto(
   18.99 +WEBP_EXTERN uint8_t* WebPDecodeBGRInto(
  18.100      const uint8_t* data, size_t data_size,
  18.101      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
  18.102  
  18.103 @@ -122,7 +122,7 @@
  18.104  // 'u_size' and 'v_size' respectively.
  18.105  // Pointer to the luma plane ('*luma') is returned or NULL if an error occurred
  18.106  // during decoding (or because some buffers were found to be too small).
  18.107 -WEBP_EXTERN(uint8_t*) WebPDecodeYUVInto(
  18.108 +WEBP_EXTERN uint8_t* WebPDecodeYUVInto(
  18.109      const uint8_t* data, size_t data_size,
  18.110      uint8_t* luma, size_t luma_size, int luma_stride,
  18.111      uint8_t* u, size_t u_size, int u_stride,
  18.112 @@ -213,7 +213,7 @@
  18.113  };
  18.114  
  18.115  // Internal, version-checked, entry point
  18.116 -WEBP_EXTERN(int) WebPInitDecBufferInternal(WebPDecBuffer*, int);
  18.117 +WEBP_EXTERN int WebPInitDecBufferInternal(WebPDecBuffer*, int);
  18.118  
  18.119  // Initialize the structure as empty. Must be called before any other use.
  18.120  // Returns false in case of version mismatch
  18.121 @@ -223,7 +223,7 @@
  18.122  
  18.123  // Free any memory associated with the buffer. Must always be called last.
  18.124  // Note: doesn't free the 'buffer' structure itself.
  18.125 -WEBP_EXTERN(void) WebPFreeDecBuffer(WebPDecBuffer* buffer);
  18.126 +WEBP_EXTERN void WebPFreeDecBuffer(WebPDecBuffer* buffer);
  18.127  
  18.128  //------------------------------------------------------------------------------
  18.129  // Enumeration of the status codes
  18.130 @@ -277,7 +277,7 @@
  18.131  // within valid bounds.
  18.132  // All other fields of WebPDecBuffer MUST remain constant between calls.
  18.133  // Returns NULL if the allocation failed.
  18.134 -WEBP_EXTERN(WebPIDecoder*) WebPINewDecoder(WebPDecBuffer* output_buffer);
  18.135 +WEBP_EXTERN WebPIDecoder* WebPINewDecoder(WebPDecBuffer* output_buffer);
  18.136  
  18.137  // This function allocates and initializes an incremental-decoder object, which
  18.138  // will output the RGB/A samples specified by 'csp' into a preallocated
  18.139 @@ -289,7 +289,7 @@
  18.140  // colorspace 'csp' is taken into account for allocating this buffer. All other
  18.141  // parameters are ignored.
  18.142  // Returns NULL if the allocation failed, or if some parameters are invalid.
  18.143 -WEBP_EXTERN(WebPIDecoder*) WebPINewRGB(
  18.144 +WEBP_EXTERN WebPIDecoder* WebPINewRGB(
  18.145      WEBP_CSP_MODE csp,
  18.146      uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
  18.147  
  18.148 @@ -304,7 +304,7 @@
  18.149  // In this case, the output buffer will be automatically allocated (using
  18.150  // MODE_YUVA) when decoding starts. All parameters are then ignored.
  18.151  // Returns NULL if the allocation failed or if a parameter is invalid.
  18.152 -WEBP_EXTERN(WebPIDecoder*) WebPINewYUVA(
  18.153 +WEBP_EXTERN WebPIDecoder* WebPINewYUVA(
  18.154      uint8_t* luma, size_t luma_size, int luma_stride,
  18.155      uint8_t* u, size_t u_size, int u_stride,
  18.156      uint8_t* v, size_t v_size, int v_stride,
  18.157 @@ -312,19 +312,19 @@
  18.158  
  18.159  // Deprecated version of the above, without the alpha plane.
  18.160  // Kept for backward compatibility.
  18.161 -WEBP_EXTERN(WebPIDecoder*) WebPINewYUV(
  18.162 +WEBP_EXTERN WebPIDecoder* WebPINewYUV(
  18.163      uint8_t* luma, size_t luma_size, int luma_stride,
  18.164      uint8_t* u, size_t u_size, int u_stride,
  18.165      uint8_t* v, size_t v_size, int v_stride);
  18.166  
  18.167  // Deletes the WebPIDecoder object and associated memory. Must always be called
  18.168  // if WebPINewDecoder, WebPINewRGB or WebPINewYUV succeeded.
  18.169 -WEBP_EXTERN(void) WebPIDelete(WebPIDecoder* idec);
  18.170 +WEBP_EXTERN void WebPIDelete(WebPIDecoder* idec);
  18.171  
  18.172  // Copies and decodes the next available data. Returns VP8_STATUS_OK when
  18.173  // the image is successfully decoded. Returns VP8_STATUS_SUSPENDED when more
  18.174  // data is expected. Returns error in other cases.
  18.175 -WEBP_EXTERN(VP8StatusCode) WebPIAppend(
  18.176 +WEBP_EXTERN VP8StatusCode WebPIAppend(
  18.177      WebPIDecoder* idec, const uint8_t* data, size_t data_size);
  18.178  
  18.179  // A variant of the above function to be used when data buffer contains
  18.180 @@ -332,7 +332,7 @@
  18.181  // to the internal memory.
  18.182  // Note that the value of the 'data' pointer can change between calls to
  18.183  // WebPIUpdate, for instance when the data buffer is resized to fit larger data.
  18.184 -WEBP_EXTERN(VP8StatusCode) WebPIUpdate(
  18.185 +WEBP_EXTERN VP8StatusCode WebPIUpdate(
  18.186      WebPIDecoder* idec, const uint8_t* data, size_t data_size);
  18.187  
  18.188  // Returns the RGB/A image decoded so far. Returns NULL if output params
  18.189 @@ -340,15 +340,16 @@
  18.190  // specified during call to WebPINewDecoder() or WebPINewRGB().
  18.191  // *last_y is the index of last decoded row in raster scan order. Some pointers
  18.192  // (*last_y, *width etc.) can be NULL if corresponding information is not
  18.193 -// needed.
  18.194 -WEBP_EXTERN(uint8_t*) WebPIDecGetRGB(
  18.195 +// needed. The values in these pointers are only valid on successful (non-NULL)
  18.196 +// return.
  18.197 +WEBP_EXTERN uint8_t* WebPIDecGetRGB(
  18.198      const WebPIDecoder* idec, int* last_y,
  18.199      int* width, int* height, int* stride);
  18.200  
  18.201  // Same as above function to get a YUVA image. Returns pointer to the luma
  18.202  // plane or NULL in case of error. If there is no alpha information
  18.203  // the alpha pointer '*a' will be returned NULL.
  18.204 -WEBP_EXTERN(uint8_t*) WebPIDecGetYUVA(
  18.205 +WEBP_EXTERN uint8_t* WebPIDecGetYUVA(
  18.206      const WebPIDecoder* idec, int* last_y,
  18.207      uint8_t** u, uint8_t** v, uint8_t** a,
  18.208      int* width, int* height, int* stride, int* uv_stride, int* a_stride);
  18.209 @@ -368,7 +369,7 @@
  18.210  // Returns NULL in case the incremental decoder object is in an invalid state.
  18.211  // Otherwise returns the pointer to the internal representation. This structure
  18.212  // is read-only, tied to WebPIDecoder's lifespan and should not be modified.
  18.213 -WEBP_EXTERN(const WebPDecBuffer*) WebPIDecodedArea(
  18.214 +WEBP_EXTERN const WebPDecBuffer* WebPIDecodedArea(
  18.215      const WebPIDecoder* idec, int* left, int* top, int* width, int* height);
  18.216  
  18.217  //------------------------------------------------------------------------------
  18.218 @@ -416,7 +417,7 @@
  18.219  };
  18.220  
  18.221  // Internal, version-checked, entry point
  18.222 -WEBP_EXTERN(VP8StatusCode) WebPGetFeaturesInternal(
  18.223 +WEBP_EXTERN VP8StatusCode WebPGetFeaturesInternal(
  18.224      const uint8_t*, size_t, WebPBitstreamFeatures*, int);
  18.225  
  18.226  // Retrieve features from the bitstream. The *features structure is filled
  18.227 @@ -457,7 +458,7 @@
  18.228  };
  18.229  
  18.230  // Internal, version-checked, entry point
  18.231 -WEBP_EXTERN(int) WebPInitDecoderConfigInternal(WebPDecoderConfig*, int);
  18.232 +WEBP_EXTERN int WebPInitDecoderConfigInternal(WebPDecoderConfig*, int);
  18.233  
  18.234  // Initialize the configuration as empty. This function must always be
  18.235  // called first, unless WebPGetFeatures() is to be called.
  18.236 @@ -477,14 +478,14 @@
  18.237  // The return WebPIDecoder object must always be deleted calling WebPIDelete().
  18.238  // Returns NULL in case of error (and config->status will then reflect
  18.239  // the error condition, if available).
  18.240 -WEBP_EXTERN(WebPIDecoder*) WebPIDecode(const uint8_t* data, size_t data_size,
  18.241 -                                       WebPDecoderConfig* config);
  18.242 +WEBP_EXTERN WebPIDecoder* WebPIDecode(const uint8_t* data, size_t data_size,
  18.243 +                                      WebPDecoderConfig* config);
  18.244  
  18.245  // Non-incremental version. This version decodes the full data at once, taking
  18.246  // 'config' into account. Returns decoding status (which should be VP8_STATUS_OK
  18.247  // if the decoding was successful). Note that 'config' cannot be NULL.
  18.248 -WEBP_EXTERN(VP8StatusCode) WebPDecode(const uint8_t* data, size_t data_size,
  18.249 -                                      WebPDecoderConfig* config);
  18.250 +WEBP_EXTERN VP8StatusCode WebPDecode(const uint8_t* data, size_t data_size,
  18.251 +                                     WebPDecoderConfig* config);
  18.252  
  18.253  #ifdef __cplusplus
  18.254  }    // extern "C"
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/demux.h	Fri Oct 26 14:38:19 2018 -0700
    19.3 @@ -0,0 +1,363 @@
    19.4 +// Copyright 2012 Google Inc. All Rights Reserved.
    19.5 +//
    19.6 +// Use of this source code is governed by a BSD-style license
    19.7 +// that can be found in the COPYING file in the root of the source
    19.8 +// tree. An additional intellectual property rights grant can be found
    19.9 +// in the file PATENTS. All contributing project authors may
   19.10 +// be found in the AUTHORS file in the root of the source tree.
   19.11 +// -----------------------------------------------------------------------------
   19.12 +//
   19.13 +// Demux API.
   19.14 +// Enables extraction of image and extended format data from WebP files.
   19.15 +
   19.16 +// Code Example: Demuxing WebP data to extract all the frames, ICC profile
   19.17 +// and EXIF/XMP metadata.
   19.18 +/*
   19.19 +  WebPDemuxer* demux = WebPDemux(&webp_data);
   19.20 +
   19.21 +  uint32_t width = WebPDemuxGetI(demux, WEBP_FF_CANVAS_WIDTH);
   19.22 +  uint32_t height = WebPDemuxGetI(demux, WEBP_FF_CANVAS_HEIGHT);
   19.23 +  // ... (Get information about the features present in the WebP file).
   19.24 +  uint32_t flags = WebPDemuxGetI(demux, WEBP_FF_FORMAT_FLAGS);
   19.25 +
   19.26 +  // ... (Iterate over all frames).
   19.27 +  WebPIterator iter;
   19.28 +  if (WebPDemuxGetFrame(demux, 1, &iter)) {
   19.29 +    do {
   19.30 +      // ... (Consume 'iter'; e.g. Decode 'iter.fragment' with WebPDecode(),
   19.31 +      // ... and get other frame properties like width, height, offsets etc.
   19.32 +      // ... see 'struct WebPIterator' below for more info).
   19.33 +    } while (WebPDemuxNextFrame(&iter));
   19.34 +    WebPDemuxReleaseIterator(&iter);
   19.35 +  }
   19.36 +
   19.37 +  // ... (Extract metadata).
   19.38 +  WebPChunkIterator chunk_iter;
   19.39 +  if (flags & ICCP_FLAG) WebPDemuxGetChunk(demux, "ICCP", 1, &chunk_iter);
   19.40 +  // ... (Consume the ICC profile in 'chunk_iter.chunk').
   19.41 +  WebPDemuxReleaseChunkIterator(&chunk_iter);
   19.42 +  if (flags & EXIF_FLAG) WebPDemuxGetChunk(demux, "EXIF", 1, &chunk_iter);
   19.43 +  // ... (Consume the EXIF metadata in 'chunk_iter.chunk').
   19.44 +  WebPDemuxReleaseChunkIterator(&chunk_iter);
   19.45 +  if (flags & XMP_FLAG) WebPDemuxGetChunk(demux, "XMP ", 1, &chunk_iter);
   19.46 +  // ... (Consume the XMP metadata in 'chunk_iter.chunk').
   19.47 +  WebPDemuxReleaseChunkIterator(&chunk_iter);
   19.48 +  WebPDemuxDelete(demux);
   19.49 +*/
   19.50 +
   19.51 +#ifndef WEBP_WEBP_DEMUX_H_
   19.52 +#define WEBP_WEBP_DEMUX_H_
   19.53 +
   19.54 +#include "./decode.h"     // for WEBP_CSP_MODE
   19.55 +#include "./mux_types.h"
   19.56 +
   19.57 +#ifdef __cplusplus
   19.58 +extern "C" {
   19.59 +#endif
   19.60 +
   19.61 +#define WEBP_DEMUX_ABI_VERSION 0x0107    // MAJOR(8b) + MINOR(8b)
   19.62 +
   19.63 +// Note: forward declaring enumerations is not allowed in (strict) C and C++,
   19.64 +// the types are left here for reference.
   19.65 +// typedef enum WebPDemuxState WebPDemuxState;
   19.66 +// typedef enum WebPFormatFeature WebPFormatFeature;
   19.67 +typedef struct WebPDemuxer WebPDemuxer;
   19.68 +typedef struct WebPIterator WebPIterator;
   19.69 +typedef struct WebPChunkIterator WebPChunkIterator;
   19.70 +typedef struct WebPAnimInfo WebPAnimInfo;
   19.71 +typedef struct WebPAnimDecoderOptions WebPAnimDecoderOptions;
   19.72 +
   19.73 +//------------------------------------------------------------------------------
   19.74 +
   19.75 +// Returns the version number of the demux library, packed in hexadecimal using
   19.76 +// 8bits for each of major/minor/revision. E.g: v2.5.7 is 0x020507.
   19.77 +WEBP_EXTERN int WebPGetDemuxVersion(void);
   19.78 +
   19.79 +//------------------------------------------------------------------------------
   19.80 +// Life of a Demux object
   19.81 +
   19.82 +typedef enum WebPDemuxState {
   19.83 +  WEBP_DEMUX_PARSE_ERROR    = -1,  // An error occurred while parsing.
   19.84 +  WEBP_DEMUX_PARSING_HEADER =  0,  // Not enough data to parse full header.
   19.85 +  WEBP_DEMUX_PARSED_HEADER  =  1,  // Header parsing complete,
   19.86 +                                   // data may be available.
   19.87 +  WEBP_DEMUX_DONE           =  2   // Entire file has been parsed.
   19.88 +} WebPDemuxState;
   19.89 +
   19.90 +// Internal, version-checked, entry point
   19.91 +WEBP_EXTERN WebPDemuxer* WebPDemuxInternal(
   19.92 +    const WebPData*, int, WebPDemuxState*, int);
   19.93 +
   19.94 +// Parses the full WebP file given by 'data'. For single images the WebP file
   19.95 +// header alone or the file header and the chunk header may be absent.
   19.96 +// Returns a WebPDemuxer object on successful parse, NULL otherwise.
   19.97 +static WEBP_INLINE WebPDemuxer* WebPDemux(const WebPData* data) {
   19.98 +  return WebPDemuxInternal(data, 0, NULL, WEBP_DEMUX_ABI_VERSION);
   19.99 +}
  19.100 +
  19.101 +// Parses the possibly incomplete WebP file given by 'data'.
  19.102 +// If 'state' is non-NULL it will be set to indicate the status of the demuxer.
  19.103 +// Returns NULL in case of error or if there isn't enough data to start parsing;
  19.104 +// and a WebPDemuxer object on successful parse.
  19.105 +// Note that WebPDemuxer keeps internal pointers to 'data' memory segment.
  19.106 +// If this data is volatile, the demuxer object should be deleted (by calling
  19.107 +// WebPDemuxDelete()) and WebPDemuxPartial() called again on the new data.
  19.108 +// This is usually an inexpensive operation.
  19.109 +static WEBP_INLINE WebPDemuxer* WebPDemuxPartial(
  19.110 +    const WebPData* data, WebPDemuxState* state) {
  19.111 +  return WebPDemuxInternal(data, 1, state, WEBP_DEMUX_ABI_VERSION);
  19.112 +}
  19.113 +
  19.114 +// Frees memory associated with 'dmux'.
  19.115 +WEBP_EXTERN void WebPDemuxDelete(WebPDemuxer* dmux);
  19.116 +
  19.117 +//------------------------------------------------------------------------------
  19.118 +// Data/information extraction.
  19.119 +
  19.120 +typedef enum WebPFormatFeature {
  19.121 +  WEBP_FF_FORMAT_FLAGS,      // bit-wise combination of WebPFeatureFlags
  19.122 +                             // corresponding to the 'VP8X' chunk (if present).
  19.123 +  WEBP_FF_CANVAS_WIDTH,
  19.124 +  WEBP_FF_CANVAS_HEIGHT,
  19.125 +  WEBP_FF_LOOP_COUNT,        // only relevant for animated file
  19.126 +  WEBP_FF_BACKGROUND_COLOR,  // idem.
  19.127 +  WEBP_FF_FRAME_COUNT        // Number of frames present in the demux object.
  19.128 +                             // In case of a partial demux, this is the number
  19.129 +                             // of frames seen so far, with the last frame
  19.130 +                             // possibly being partial.
  19.131 +} WebPFormatFeature;
  19.132 +
  19.133 +// Get the 'feature' value from the 'dmux'.
  19.134 +// NOTE: values are only valid if WebPDemux() was used or WebPDemuxPartial()
  19.135 +// returned a state > WEBP_DEMUX_PARSING_HEADER.
  19.136 +// If 'feature' is WEBP_FF_FORMAT_FLAGS, the returned value is a bit-wise
  19.137 +// combination of WebPFeatureFlags values.
  19.138 +// If 'feature' is WEBP_FF_LOOP_COUNT, WEBP_FF_BACKGROUND_COLOR, the returned
  19.139 +// value is only meaningful if the bitstream is animated.
  19.140 +WEBP_EXTERN uint32_t WebPDemuxGetI(
  19.141 +    const WebPDemuxer* dmux, WebPFormatFeature feature);
  19.142 +
  19.143 +//------------------------------------------------------------------------------
  19.144 +// Frame iteration.
  19.145 +
  19.146 +struct WebPIterator {
  19.147 +  int frame_num;
  19.148 +  int num_frames;          // equivalent to WEBP_FF_FRAME_COUNT.
  19.149 +  int x_offset, y_offset;  // offset relative to the canvas.
  19.150 +  int width, height;       // dimensions of this frame.
  19.151 +  int duration;            // display duration in milliseconds.
  19.152 +  WebPMuxAnimDispose dispose_method;  // dispose method for the frame.
  19.153 +  int complete;   // true if 'fragment' contains a full frame. partial images
  19.154 +                  // may still be decoded with the WebP incremental decoder.
  19.155 +  WebPData fragment;  // The frame given by 'frame_num'. Note for historical
  19.156 +                      // reasons this is called a fragment.
  19.157 +  int has_alpha;      // True if the frame contains transparency.
  19.158 +  WebPMuxAnimBlend blend_method;  // Blend operation for the frame.
  19.159 +
  19.160 +  uint32_t pad[2];         // padding for later use.
  19.161 +  void* private_;          // for internal use only.
  19.162 +};
  19.163 +
  19.164 +// Retrieves frame 'frame_number' from 'dmux'.
  19.165 +// 'iter->fragment' points to the frame on return from this function.
  19.166 +// Setting 'frame_number' equal to 0 will return the last frame of the image.
  19.167 +// Returns false if 'dmux' is NULL or frame 'frame_number' is not present.
  19.168 +// Call WebPDemuxReleaseIterator() when use of the iterator is complete.
  19.169 +// NOTE: 'dmux' must persist for the lifetime of 'iter'.
  19.170 +WEBP_EXTERN int WebPDemuxGetFrame(
  19.171 +    const WebPDemuxer* dmux, int frame_number, WebPIterator* iter);
  19.172 +
  19.173 +// Sets 'iter->fragment' to point to the next ('iter->frame_num' + 1) or
  19.174 +// previous ('iter->frame_num' - 1) frame. These functions do not loop.
  19.175 +// Returns true on success, false otherwise.
  19.176 +WEBP_EXTERN int WebPDemuxNextFrame(WebPIterator* iter);
  19.177 +WEBP_EXTERN int WebPDemuxPrevFrame(WebPIterator* iter);
  19.178 +
  19.179 +// Releases any memory associated with 'iter'.
  19.180 +// Must be called before any subsequent calls to WebPDemuxGetChunk() on the same
  19.181 +// iter. Also, must be called before destroying the associated WebPDemuxer with
  19.182 +// WebPDemuxDelete().
  19.183 +WEBP_EXTERN void WebPDemuxReleaseIterator(WebPIterator* iter);
  19.184 +
  19.185 +//------------------------------------------------------------------------------
  19.186 +// Chunk iteration.
  19.187 +
  19.188 +struct WebPChunkIterator {
  19.189 +  // The current and total number of chunks with the fourcc given to
  19.190 +  // WebPDemuxGetChunk().
  19.191 +  int chunk_num;
  19.192 +  int num_chunks;
  19.193 +  WebPData chunk;    // The payload of the chunk.
  19.194 +
  19.195 +  uint32_t pad[6];   // padding for later use
  19.196 +  void* private_;
  19.197 +};
  19.198 +
  19.199 +// Retrieves the 'chunk_number' instance of the chunk with id 'fourcc' from
  19.200 +// 'dmux'.
  19.201 +// 'fourcc' is a character array containing the fourcc of the chunk to return,
  19.202 +// e.g., "ICCP", "XMP ", "EXIF", etc.
  19.203 +// Setting 'chunk_number' equal to 0 will return the last chunk in a set.
  19.204 +// Returns true if the chunk is found, false otherwise. Image related chunk
  19.205 +// payloads are accessed through WebPDemuxGetFrame() and related functions.
  19.206 +// Call WebPDemuxReleaseChunkIterator() when use of the iterator is complete.
  19.207 +// NOTE: 'dmux' must persist for the lifetime of the iterator.
  19.208 +WEBP_EXTERN int WebPDemuxGetChunk(const WebPDemuxer* dmux,
  19.209 +                                  const char fourcc[4], int chunk_number,
  19.210 +                                  WebPChunkIterator* iter);
  19.211 +
  19.212 +// Sets 'iter->chunk' to point to the next ('iter->chunk_num' + 1) or previous
  19.213 +// ('iter->chunk_num' - 1) chunk. These functions do not loop.
  19.214 +// Returns true on success, false otherwise.
  19.215 +WEBP_EXTERN int WebPDemuxNextChunk(WebPChunkIterator* iter);
  19.216 +WEBP_EXTERN int WebPDemuxPrevChunk(WebPChunkIterator* iter);
  19.217 +
  19.218 +// Releases any memory associated with 'iter'.
  19.219 +// Must be called before destroying the associated WebPDemuxer with
  19.220 +// WebPDemuxDelete().
  19.221 +WEBP_EXTERN void WebPDemuxReleaseChunkIterator(WebPChunkIterator* iter);
  19.222 +
  19.223 +//------------------------------------------------------------------------------
  19.224 +// WebPAnimDecoder API
  19.225 +//
  19.226 +// This API allows decoding (possibly) animated WebP images.
  19.227 +//
  19.228 +// Code Example:
  19.229 +/*
  19.230 +  WebPAnimDecoderOptions dec_options;
  19.231 +  WebPAnimDecoderOptionsInit(&dec_options);
  19.232 +  // Tune 'dec_options' as needed.
  19.233 +  WebPAnimDecoder* dec = WebPAnimDecoderNew(webp_data, &dec_options);
  19.234 +  WebPAnimInfo anim_info;
  19.235 +  WebPAnimDecoderGetInfo(dec, &anim_info);
  19.236 +  for (uint32_t i = 0; i < anim_info.loop_count; ++i) {
  19.237 +    while (WebPAnimDecoderHasMoreFrames(dec)) {
  19.238 +      uint8_t* buf;
  19.239 +      int timestamp;
  19.240 +      WebPAnimDecoderGetNext(dec, &buf, &timestamp);
  19.241 +      // ... (Render 'buf' based on 'timestamp').
  19.242 +      // ... (Do NOT free 'buf', as it is owned by 'dec').
  19.243 +    }
  19.244 +    WebPAnimDecoderReset(dec);
  19.245 +  }
  19.246 +  const WebPDemuxer* demuxer = WebPAnimDecoderGetDemuxer(dec);
  19.247 +  // ... (Do something using 'demuxer'; e.g. get EXIF/XMP/ICC data).
  19.248 +  WebPAnimDecoderDelete(dec);
  19.249 +*/
  19.250 +
  19.251 +typedef struct WebPAnimDecoder WebPAnimDecoder;  // Main opaque object.
  19.252 +
  19.253 +// Global options.
  19.254 +struct WebPAnimDecoderOptions {
  19.255 +  // Output colorspace. Only the following modes are supported:
  19.256 +  // MODE_RGBA, MODE_BGRA, MODE_rgbA and MODE_bgrA.
  19.257 +  WEBP_CSP_MODE color_mode;
  19.258 +  int use_threads;           // If true, use multi-threaded decoding.
  19.259 +  uint32_t padding[7];       // Padding for later use.
  19.260 +};
  19.261 +
  19.262 +// Internal, version-checked, entry point.
  19.263 +WEBP_EXTERN int WebPAnimDecoderOptionsInitInternal(
  19.264 +    WebPAnimDecoderOptions*, int);
  19.265 +
  19.266 +// Should always be called, to initialize a fresh WebPAnimDecoderOptions
  19.267 +// structure before modification. Returns false in case of version mismatch.
  19.268 +// WebPAnimDecoderOptionsInit() must have succeeded before using the
  19.269 +// 'dec_options' object.
  19.270 +static WEBP_INLINE int WebPAnimDecoderOptionsInit(
  19.271 +    WebPAnimDecoderOptions* dec_options) {
  19.272 +  return WebPAnimDecoderOptionsInitInternal(dec_options,
  19.273 +                                            WEBP_DEMUX_ABI_VERSION);
  19.274 +}
  19.275 +
  19.276 +// Internal, version-checked, entry point.
  19.277 +WEBP_EXTERN WebPAnimDecoder* WebPAnimDecoderNewInternal(
  19.278 +    const WebPData*, const WebPAnimDecoderOptions*, int);
  19.279 +
  19.280 +// Creates and initializes a WebPAnimDecoder object.
  19.281 +// Parameters:
  19.282 +//   webp_data - (in) WebP bitstream. This should remain unchanged during the
  19.283 +//                    lifetime of the output WebPAnimDecoder object.
  19.284 +//   dec_options - (in) decoding options. Can be passed NULL to choose
  19.285 +//                      reasonable defaults (in particular, color mode MODE_RGBA
  19.286 +//                      will be picked).
  19.287 +// Returns:
  19.288 +//   A pointer to the newly created WebPAnimDecoder object, or NULL in case of
  19.289 +//   parsing error, invalid option or memory error.
  19.290 +static WEBP_INLINE WebPAnimDecoder* WebPAnimDecoderNew(
  19.291 +    const WebPData* webp_data, const WebPAnimDecoderOptions* dec_options) {
  19.292 +  return WebPAnimDecoderNewInternal(webp_data, dec_options,
  19.293 +                                    WEBP_DEMUX_ABI_VERSION);
  19.294 +}
  19.295 +
  19.296 +// Global information about the animation..
  19.297 +struct WebPAnimInfo {
  19.298 +  uint32_t canvas_width;
  19.299 +  uint32_t canvas_height;
  19.300 +  uint32_t loop_count;
  19.301 +  uint32_t bgcolor;
  19.302 +  uint32_t frame_count;
  19.303 +  uint32_t pad[4];   // padding for later use
  19.304 +};
  19.305 +
  19.306 +// Get global information about the animation.
  19.307 +// Parameters:
  19.308 +//   dec - (in) decoder instance to get information from.
  19.309 +//   info - (out) global information fetched from the animation.
  19.310 +// Returns:
  19.311 +//   True on success.
  19.312 +WEBP_EXTERN int WebPAnimDecoderGetInfo(const WebPAnimDecoder* dec,
  19.313 +                                       WebPAnimInfo* info);
  19.314 +
  19.315 +// Fetch the next frame from 'dec' based on options supplied to
  19.316 +// WebPAnimDecoderNew(). This will be a fully reconstructed canvas of size
  19.317 +// 'canvas_width * 4 * canvas_height', and not just the frame sub-rectangle. The
  19.318 +// returned buffer 'buf' is valid only until the next call to
  19.319 +// WebPAnimDecoderGetNext(), WebPAnimDecoderReset() or WebPAnimDecoderDelete().
  19.320 +// Parameters:
  19.321 +//   dec - (in/out) decoder instance from which the next frame is to be fetched.
  19.322 +//   buf - (out) decoded frame.
  19.323 +//   timestamp - (out) timestamp of the frame in milliseconds.
  19.324 +// Returns:
  19.325 +//   False if any of the arguments are NULL, or if there is a parsing or
  19.326 +//   decoding error, or if there are no more frames. Otherwise, returns true.
  19.327 +WEBP_EXTERN int WebPAnimDecoderGetNext(WebPAnimDecoder* dec,
  19.328 +                                       uint8_t** buf, int* timestamp);
  19.329 +
  19.330 +// Check if there are more frames left to decode.
  19.331 +// Parameters:
  19.332 +//   dec - (in) decoder instance to be checked.
  19.333 +// Returns:
  19.334 +//   True if 'dec' is not NULL and some frames are yet to be decoded.
  19.335 +//   Otherwise, returns false.
  19.336 +WEBP_EXTERN int WebPAnimDecoderHasMoreFrames(const WebPAnimDecoder* dec);
  19.337 +
  19.338 +// Resets the WebPAnimDecoder object, so that next call to
  19.339 +// WebPAnimDecoderGetNext() will restart decoding from 1st frame. This would be
  19.340 +// helpful when all frames need to be decoded multiple times (e.g.
  19.341 +// info.loop_count times) without destroying and recreating the 'dec' object.
  19.342 +// Parameters:
  19.343 +//   dec - (in/out) decoder instance to be reset
  19.344 +WEBP_EXTERN void WebPAnimDecoderReset(WebPAnimDecoder* dec);
  19.345 +
  19.346 +// Grab the internal demuxer object.
  19.347 +// Getting the demuxer object can be useful if one wants to use operations only
  19.348 +// available through demuxer; e.g. to get XMP/EXIF/ICC metadata. The returned
  19.349 +// demuxer object is owned by 'dec' and is valid only until the next call to
  19.350 +// WebPAnimDecoderDelete().
  19.351 +//
  19.352 +// Parameters:
  19.353 +//   dec - (in) decoder instance from which the demuxer object is to be fetched.
  19.354 +WEBP_EXTERN const WebPDemuxer* WebPAnimDecoderGetDemuxer(
  19.355 +    const WebPAnimDecoder* dec);
  19.356 +
  19.357 +// Deletes the WebPAnimDecoder object.
  19.358 +// Parameters:
  19.359 +//   dec - (in/out) decoder instance to be deleted
  19.360 +WEBP_EXTERN void WebPAnimDecoderDelete(WebPAnimDecoder* dec);
  19.361 +
  19.362 +#ifdef __cplusplus
  19.363 +}    // extern "C"
  19.364 +#endif
  19.365 +
  19.366 +#endif  /* WEBP_WEBP_DEMUX_H_ */
    20.1 --- a/Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/encode.h	Fri Oct 26 10:07:53 2018 -0700
    20.2 +++ b/Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/encode.h	Fri Oct 26 14:38:19 2018 -0700
    20.3 @@ -35,7 +35,7 @@
    20.4  
    20.5  // Return the encoder's version number, packed in hexadecimal using 8bits for
    20.6  // each of major/minor/revision. E.g: v2.5.7 is 0x020507.
    20.7 -WEBP_EXTERN(int) WebPGetEncoderVersion(void);
    20.8 +WEBP_EXTERN int WebPGetEncoderVersion(void);
    20.9  
   20.10  //------------------------------------------------------------------------------
   20.11  // One-stop-shop call! No questions asked:
   20.12 @@ -46,37 +46,37 @@
   20.13  // These functions compress using the lossy format, and the quality_factor
   20.14  // can go from 0 (smaller output, lower quality) to 100 (best quality,
   20.15  // larger output).
   20.16 -WEBP_EXTERN(size_t) WebPEncodeRGB(const uint8_t* rgb,
   20.17 +WEBP_EXTERN size_t WebPEncodeRGB(const uint8_t* rgb,
   20.18 +                                 int width, int height, int stride,
   20.19 +                                 float quality_factor, uint8_t** output);
   20.20 +WEBP_EXTERN size_t WebPEncodeBGR(const uint8_t* bgr,
   20.21 +                                 int width, int height, int stride,
   20.22 +                                 float quality_factor, uint8_t** output);
   20.23 +WEBP_EXTERN size_t WebPEncodeRGBA(const uint8_t* rgba,
   20.24                                    int width, int height, int stride,
   20.25                                    float quality_factor, uint8_t** output);
   20.26 -WEBP_EXTERN(size_t) WebPEncodeBGR(const uint8_t* bgr,
   20.27 +WEBP_EXTERN size_t WebPEncodeBGRA(const uint8_t* bgra,
   20.28                                    int width, int height, int stride,
   20.29                                    float quality_factor, uint8_t** output);
   20.30 -WEBP_EXTERN(size_t) WebPEncodeRGBA(const uint8_t* rgba,
   20.31 -                                   int width, int height, int stride,
   20.32 -                                   float quality_factor, uint8_t** output);
   20.33 -WEBP_EXTERN(size_t) WebPEncodeBGRA(const uint8_t* bgra,
   20.34 -                                   int width, int height, int stride,
   20.35 -                                   float quality_factor, uint8_t** output);
   20.36  
   20.37  // These functions are the equivalent of the above, but compressing in a
   20.38  // lossless manner. Files are usually larger than lossy format, but will
   20.39  // not suffer any compression loss.
   20.40 -WEBP_EXTERN(size_t) WebPEncodeLosslessRGB(const uint8_t* rgb,
   20.41 +WEBP_EXTERN size_t WebPEncodeLosslessRGB(const uint8_t* rgb,
   20.42 +                                         int width, int height, int stride,
   20.43 +                                         uint8_t** output);
   20.44 +WEBP_EXTERN size_t WebPEncodeLosslessBGR(const uint8_t* bgr,
   20.45 +                                         int width, int height, int stride,
   20.46 +                                         uint8_t** output);
   20.47 +WEBP_EXTERN size_t WebPEncodeLosslessRGBA(const uint8_t* rgba,
   20.48                                            int width, int height, int stride,
   20.49                                            uint8_t** output);
   20.50 -WEBP_EXTERN(size_t) WebPEncodeLosslessBGR(const uint8_t* bgr,
   20.51 +WEBP_EXTERN size_t WebPEncodeLosslessBGRA(const uint8_t* bgra,
   20.52                                            int width, int height, int stride,
   20.53                                            uint8_t** output);
   20.54 -WEBP_EXTERN(size_t) WebPEncodeLosslessRGBA(const uint8_t* rgba,
   20.55 -                                           int width, int height, int stride,
   20.56 -                                           uint8_t** output);
   20.57 -WEBP_EXTERN(size_t) WebPEncodeLosslessBGRA(const uint8_t* bgra,
   20.58 -                                           int width, int height, int stride,
   20.59 -                                           uint8_t** output);
   20.60  
   20.61  // Releases memory returned by the WebPEncode*() functions above.
   20.62 -WEBP_EXTERN(void) WebPFree(void* ptr);
   20.63 +WEBP_EXTERN void WebPFree(void* ptr);
   20.64  
   20.65  //------------------------------------------------------------------------------
   20.66  // Coding parameters
   20.67 @@ -93,12 +93,15 @@
   20.68  // Compression parameters.
   20.69  struct WebPConfig {
   20.70    int lossless;           // Lossless encoding (0=lossy(default), 1=lossless).
   20.71 -  float quality;          // between 0 (smallest file) and 100 (biggest)
   20.72 +  float quality;          // between 0 and 100. For lossy, 0 gives the smallest
   20.73 +                          // size and 100 the largest. For lossless, this
   20.74 +                          // parameter is the amount of effort put into the
   20.75 +                          // compression: 0 is the fastest but gives larger
   20.76 +                          // files compared to the slowest, but best, 100.
   20.77    int method;             // quality/speed trade-off (0=fast, 6=slower-better)
   20.78  
   20.79    WebPImageHint image_hint;  // Hint for image type (lossless only for now).
   20.80  
   20.81 -  // Parameters related to lossy compression only:
   20.82    int target_size;        // if non-zero, set the desired target size in bytes.
   20.83                            // Takes precedence over the 'compression' parameter.
   20.84    float target_PSNR;      // if non-zero, specifies the minimal distortion to
   20.85 @@ -159,7 +162,7 @@
   20.86  } WebPPreset;
   20.87  
   20.88  // Internal, version-checked, entry point
   20.89 -WEBP_EXTERN(int) WebPConfigInitInternal(WebPConfig*, WebPPreset, float, int);
   20.90 +WEBP_EXTERN int WebPConfigInitInternal(WebPConfig*, WebPPreset, float, int);
   20.91  
   20.92  // Should always be called, to initialize a fresh WebPConfig structure before
   20.93  // modification. Returns false in case of version mismatch. WebPConfigInit()
   20.94 @@ -186,15 +189,15 @@
   20.95  // speed and final compressed size.
   20.96  // This function will overwrite several fields from config: 'method', 'quality'
   20.97  // and 'lossless'. Returns false in case of parameter error.
   20.98 -WEBP_EXTERN(int) WebPConfigLosslessPreset(WebPConfig* config, int level);
   20.99 +WEBP_EXTERN int WebPConfigLosslessPreset(WebPConfig* config, int level);
  20.100  
  20.101  // Returns true if 'config' is non-NULL and all configuration parameters are
  20.102  // within their valid ranges.
  20.103 -WEBP_EXTERN(int) WebPValidateConfig(const WebPConfig* config);
  20.104 +WEBP_EXTERN int WebPValidateConfig(const WebPConfig* config);
  20.105  
  20.106  //------------------------------------------------------------------------------
  20.107  // Input / Output
  20.108 -// Structure for storing auxiliary statistics (mostly for lossy encoding).
  20.109 +// Structure for storing auxiliary statistics.
  20.110  
  20.111  struct WebPAuxStats {
  20.112    int coded_size;         // final size
  20.113 @@ -242,16 +245,16 @@
  20.114  };
  20.115  
  20.116  // The following must be called first before any use.
  20.117 -WEBP_EXTERN(void) WebPMemoryWriterInit(WebPMemoryWriter* writer);
  20.118 +WEBP_EXTERN void WebPMemoryWriterInit(WebPMemoryWriter* writer);
  20.119  
  20.120  // The following must be called to deallocate writer->mem memory. The 'writer'
  20.121  // object itself is not deallocated.
  20.122 -WEBP_EXTERN(void) WebPMemoryWriterClear(WebPMemoryWriter* writer);
  20.123 +WEBP_EXTERN void WebPMemoryWriterClear(WebPMemoryWriter* writer);
  20.124  // The custom writer to be used with WebPMemoryWriter as custom_ptr. Upon
  20.125  // completion, writer.mem and writer.size will hold the coded data.
  20.126  // writer.mem must be freed by calling WebPMemoryWriterClear.
  20.127 -WEBP_EXTERN(int) WebPMemoryWrite(const uint8_t* data, size_t data_size,
  20.128 -                                 const WebPPicture* picture);
  20.129 +WEBP_EXTERN int WebPMemoryWrite(const uint8_t* data, size_t data_size,
  20.130 +                                const WebPPicture* picture);
  20.131  
  20.132  // Progress hook, called from time to time to report progress. It can return
  20.133  // false to request an abort of the encoding process, or true otherwise if
  20.134 @@ -354,7 +357,7 @@
  20.135  };
  20.136  
  20.137  // Internal, version-checked, entry point
  20.138 -WEBP_EXTERN(int) WebPPictureInitInternal(WebPPicture*, int);
  20.139 +WEBP_EXTERN int WebPPictureInitInternal(WebPPicture*, int);
  20.140  
  20.141  // Should always be called, to initialize the structure. Returns false in case
  20.142  // of version mismatch. WebPPictureInit() must have succeeded before using the
  20.143 @@ -371,20 +374,20 @@
  20.144  // Allocate y/u/v buffers as per colorspace/width/height specification.
  20.145  // Note! This function will free the previous buffer if needed.
  20.146  // Returns false in case of memory error.
  20.147 -WEBP_EXTERN(int) WebPPictureAlloc(WebPPicture* picture);
  20.148 +WEBP_EXTERN int WebPPictureAlloc(WebPPicture* picture);
  20.149  
  20.150  // Release the memory allocated by WebPPictureAlloc() or WebPPictureImport*().
  20.151  // Note that this function does _not_ free the memory used by the 'picture'
  20.152  // object itself.
  20.153  // Besides memory (which is reclaimed) all other fields of 'picture' are
  20.154  // preserved.
  20.155 -WEBP_EXTERN(void) WebPPictureFree(WebPPicture* picture);
  20.156 +WEBP_EXTERN void WebPPictureFree(WebPPicture* picture);
  20.157  
  20.158  // Copy the pixels of *src into *dst, using WebPPictureAlloc. Upon return, *dst
  20.159  // will fully own the copied pixels (this is not a view). The 'dst' picture need
  20.160  // not be initialized as its content is overwritten.
  20.161  // Returns false in case of memory allocation error.
  20.162 -WEBP_EXTERN(int) WebPPictureCopy(const WebPPicture* src, WebPPicture* dst);
  20.163 +WEBP_EXTERN int WebPPictureCopy(const WebPPicture* src, WebPPicture* dst);
  20.164  
  20.165  // Compute the single distortion for packed planes of samples.
  20.166  // 'src' will be compared to 'ref', and the raw distortion stored into
  20.167 @@ -393,19 +396,19 @@
  20.168  // 'x_step' is the horizontal stride (in bytes) between samples.
  20.169  // 'src/ref_stride' is the byte distance between rows.
  20.170  // Returns false in case of error (bad parameter, memory allocation error, ...).
  20.171 -WEBP_EXTERN(int) WebPPlaneDistortion(const uint8_t* src, size_t src_stride,
  20.172 -                                     const uint8_t* ref, size_t ref_stride,
  20.173 -                                     int width, int height,
  20.174 -                                     size_t x_step,
  20.175 -                                     int type,   // 0 = PSNR, 1 = SSIM, 2 = LSIM
  20.176 -                                     float* distortion, float* result);
  20.177 +WEBP_EXTERN int WebPPlaneDistortion(const uint8_t* src, size_t src_stride,
  20.178 +                                    const uint8_t* ref, size_t ref_stride,
  20.179 +                                    int width, int height,
  20.180 +                                    size_t x_step,
  20.181 +                                    int type,   // 0 = PSNR, 1 = SSIM, 2 = LSIM
  20.182 +                                    float* distortion, float* result);
  20.183  
  20.184  // Compute PSNR, SSIM or LSIM distortion metric between two pictures. Results
  20.185  // are in dB, stored in result[] in the B/G/R/A/All order. The distortion is
  20.186  // always performed using ARGB samples. Hence if the input is YUV(A), the
  20.187  // picture will be internally converted to ARGB (just for the measurement).
  20.188  // Warning: this function is rather CPU-intensive.
  20.189 -WEBP_EXTERN(int) WebPPictureDistortion(
  20.190 +WEBP_EXTERN int WebPPictureDistortion(
  20.191      const WebPPicture* src, const WebPPicture* ref,
  20.192      int metric_type,           // 0 = PSNR, 1 = SSIM, 2 = LSIM
  20.193      float result[5]);
  20.194 @@ -418,8 +421,8 @@
  20.195  // must be fully be comprised inside the 'src' source picture. If the source
  20.196  // picture uses the YUV420 colorspace, the top and left coordinates will be
  20.197  // snapped to even values.
  20.198 -WEBP_EXTERN(int) WebPPictureCrop(WebPPicture* picture,
  20.199 -                                 int left, int top, int width, int height);
  20.200 +WEBP_EXTERN int WebPPictureCrop(WebPPicture* picture,
  20.201 +                                int left, int top, int width, int height);
  20.202  
  20.203  // Extracts a view from 'src' picture into 'dst'. The rectangle for the view
  20.204  // is defined by the top-left corner pixel coordinates (left, top) as well
  20.205 @@ -432,42 +435,42 @@
  20.206  // with WebPPictureInit() if it is different from 'src', since its content will
  20.207  // be overwritten.
  20.208  // Returns false in case of memory allocation error or invalid parameters.
  20.209 -WEBP_EXTERN(int) WebPPictureView(const WebPPicture* src,
  20.210 -                                 int left, int top, int width, int height,
  20.211 -                                 WebPPicture* dst);
  20.212 +WEBP_EXTERN int WebPPictureView(const WebPPicture* src,
  20.213 +                                int left, int top, int width, int height,
  20.214 +                                WebPPicture* dst);
  20.215  
  20.216  // Returns true if the 'picture' is actually a view and therefore does
  20.217  // not own the memory for pixels.
  20.218 -WEBP_EXTERN(int) WebPPictureIsView(const WebPPicture* picture);
  20.219 +WEBP_EXTERN int WebPPictureIsView(const WebPPicture* picture);
  20.220  
  20.221  // Rescale a picture to new dimension width x height.
  20.222  // If either 'width' or 'height' (but not both) is 0 the corresponding
  20.223  // dimension will be calculated preserving the aspect ratio.
  20.224  // No gamma correction is applied.
  20.225  // Returns false in case of error (invalid parameter or insufficient memory).
  20.226 -WEBP_EXTERN(int) WebPPictureRescale(WebPPicture* pic, int width, int height);
  20.227 +WEBP_EXTERN int WebPPictureRescale(WebPPicture* pic, int width, int height);
  20.228  
  20.229  // Colorspace conversion function to import RGB samples.
  20.230  // Previous buffer will be free'd, if any.
  20.231  // *rgb buffer should have a size of at least height * rgb_stride.
  20.232  // Returns false in case of memory error.
  20.233 -WEBP_EXTERN(int) WebPPictureImportRGB(
  20.234 +WEBP_EXTERN int WebPPictureImportRGB(
  20.235      WebPPicture* picture, const uint8_t* rgb, int rgb_stride);
  20.236  // Same, but for RGBA buffer.
  20.237 -WEBP_EXTERN(int) WebPPictureImportRGBA(
  20.238 +WEBP_EXTERN int WebPPictureImportRGBA(
  20.239      WebPPicture* picture, const uint8_t* rgba, int rgba_stride);
  20.240  // Same, but for RGBA buffer. Imports the RGB direct from the 32-bit format
  20.241  // input buffer ignoring the alpha channel. Avoids needing to copy the data
  20.242  // to a temporary 24-bit RGB buffer to import the RGB only.
  20.243 -WEBP_EXTERN(int) WebPPictureImportRGBX(
  20.244 +WEBP_EXTERN int WebPPictureImportRGBX(
  20.245      WebPPicture* picture, const uint8_t* rgbx, int rgbx_stride);
  20.246  
  20.247  // Variants of the above, but taking BGR(A|X) input.
  20.248 -WEBP_EXTERN(int) WebPPictureImportBGR(
  20.249 +WEBP_EXTERN int WebPPictureImportBGR(
  20.250      WebPPicture* picture, const uint8_t* bgr, int bgr_stride);
  20.251 -WEBP_EXTERN(int) WebPPictureImportBGRA(
  20.252 +WEBP_EXTERN int WebPPictureImportBGRA(
  20.253      WebPPicture* picture, const uint8_t* bgra, int bgra_stride);
  20.254 -WEBP_EXTERN(int) WebPPictureImportBGRX(
  20.255 +WEBP_EXTERN int WebPPictureImportBGRX(
  20.256      WebPPicture* picture, const uint8_t* bgrx, int bgrx_stride);
  20.257  
  20.258  // Converts picture->argb data to the YUV420A format. The 'colorspace'
  20.259 @@ -476,14 +479,14 @@
  20.260  // non-opaque transparent values is detected, and 'colorspace' will be
  20.261  // adjusted accordingly. Note that this method is lossy.
  20.262  // Returns false in case of error.
  20.263 -WEBP_EXTERN(int) WebPPictureARGBToYUVA(WebPPicture* picture,
  20.264 -                                       WebPEncCSP /*colorspace = WEBP_YUV420*/);
  20.265 +WEBP_EXTERN int WebPPictureARGBToYUVA(WebPPicture* picture,
  20.266 +                                      WebPEncCSP /*colorspace = WEBP_YUV420*/);
  20.267  
  20.268  // Same as WebPPictureARGBToYUVA(), but the conversion is done using
  20.269  // pseudo-random dithering with a strength 'dithering' between
  20.270  // 0.0 (no dithering) and 1.0 (maximum dithering). This is useful
  20.271  // for photographic picture.
  20.272 -WEBP_EXTERN(int) WebPPictureARGBToYUVADithered(
  20.273 +WEBP_EXTERN int WebPPictureARGBToYUVADithered(
  20.274      WebPPicture* picture, WebPEncCSP colorspace, float dithering);
  20.275  
  20.276  // Performs 'sharp' RGBA->YUVA420 downsampling and colorspace conversion.
  20.277 @@ -491,9 +494,9 @@
  20.278  // method is roughly 2x slower than WebPPictureARGBToYUVA() but produces better
  20.279  // and sharper YUV representation.
  20.280  // Returns false in case of error.
  20.281 -WEBP_EXTERN(int) WebPPictureSharpARGBToYUVA(WebPPicture* picture);
  20.282 +WEBP_EXTERN int WebPPictureSharpARGBToYUVA(WebPPicture* picture);
  20.283  // kept for backward compatibility:
  20.284 -WEBP_EXTERN(int) WebPPictureSmartARGBToYUVA(WebPPicture* picture);
  20.285 +WEBP_EXTERN int WebPPictureSmartARGBToYUVA(WebPPicture* picture);
  20.286  
  20.287  // Converts picture->yuv to picture->argb and sets picture->use_argb to true.
  20.288  // The input format must be YUV_420 or YUV_420A. The conversion from YUV420 to
  20.289 @@ -501,22 +504,22 @@
  20.290  // Note that the use of this colorspace is discouraged if one has access to the
  20.291  // raw ARGB samples, since using YUV420 is comparatively lossy.
  20.292  // Returns false in case of error.
  20.293 -WEBP_EXTERN(int) WebPPictureYUVAToARGB(WebPPicture* picture);
  20.294 +WEBP_EXTERN int WebPPictureYUVAToARGB(WebPPicture* picture);
  20.295  
  20.296  // Helper function: given a width x height plane of RGBA or YUV(A) samples
  20.297 -// clean-up the YUV or RGB samples under fully transparent area, to help
  20.298 -// compressibility (no guarantee, though).
  20.299 -WEBP_EXTERN(void) WebPCleanupTransparentArea(WebPPicture* picture);
  20.300 +// clean-up or smoothen the YUV or RGB samples under fully transparent area,
  20.301 +// to help compressibility (no guarantee, though).
  20.302 +WEBP_EXTERN void WebPCleanupTransparentArea(WebPPicture* picture);
  20.303  
  20.304  // Scan the picture 'picture' for the presence of non fully opaque alpha values.
  20.305  // Returns true in such case. Otherwise returns false (indicating that the
  20.306  // alpha plane can be ignored altogether e.g.).
  20.307 -WEBP_EXTERN(int) WebPPictureHasTransparency(const WebPPicture* picture);
  20.308 +WEBP_EXTERN int WebPPictureHasTransparency(const WebPPicture* picture);
  20.309  
  20.310  // Remove the transparency information (if present) by blending the color with
  20.311  // the background color 'background_rgb' (specified as 24bit RGB triplet).
  20.312  // After this call, all alpha values are reset to 0xff.
  20.313 -WEBP_EXTERN(void) WebPBlendAlpha(WebPPicture* pic, uint32_t background_rgb);
  20.314 +WEBP_EXTERN void WebPBlendAlpha(WebPPicture* pic, uint32_t background_rgb);
  20.315  
  20.316  //------------------------------------------------------------------------------
  20.317  // Main call
  20.318 @@ -531,7 +534,7 @@
  20.319  // the former for lossy encoding, and the latter for lossless encoding
  20.320  // (when config.lossless is true). Automatic conversion from one format to
  20.321  // another is provided but they both incur some loss.
  20.322 -WEBP_EXTERN(int) WebPEncode(const WebPConfig* config, WebPPicture* picture);
  20.323 +WEBP_EXTERN int WebPEncode(const WebPConfig* config, WebPPicture* picture);
  20.324  
  20.325  //------------------------------------------------------------------------------
  20.326  
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/mux_types.h	Fri Oct 26 14:38:19 2018 -0700
    21.3 @@ -0,0 +1,98 @@
    21.4 +// Copyright 2012 Google Inc. All Rights Reserved.
    21.5 +//
    21.6 +// Use of this source code is governed by a BSD-style license
    21.7 +// that can be found in the COPYING file in the root of the source
    21.8 +// tree. An additional intellectual property rights grant can be found
    21.9 +// in the file PATENTS. All contributing project authors may
   21.10 +// be found in the AUTHORS file in the root of the source tree.
   21.11 +// -----------------------------------------------------------------------------
   21.12 +//
   21.13 +// Data-types common to the mux and demux libraries.
   21.14 +//
   21.15 +// Author: Urvang (urvang@google.com)
   21.16 +
   21.17 +#ifndef WEBP_WEBP_MUX_TYPES_H_
   21.18 +#define WEBP_WEBP_MUX_TYPES_H_
   21.19 +
   21.20 +#include <stdlib.h>  // free()
   21.21 +#include <string.h>  // memset()
   21.22 +#include "./types.h"
   21.23 +
   21.24 +#ifdef __cplusplus
   21.25 +extern "C" {
   21.26 +#endif
   21.27 +
   21.28 +// Note: forward declaring enumerations is not allowed in (strict) C and C++,
   21.29 +// the types are left here for reference.
   21.30 +// typedef enum WebPFeatureFlags WebPFeatureFlags;
   21.31 +// typedef enum WebPMuxAnimDispose WebPMuxAnimDispose;
   21.32 +// typedef enum WebPMuxAnimBlend WebPMuxAnimBlend;
   21.33 +typedef struct WebPData WebPData;
   21.34 +
   21.35 +// VP8X Feature Flags.
   21.36 +typedef enum WebPFeatureFlags {
   21.37 +  ANIMATION_FLAG  = 0x00000002,
   21.38 +  XMP_FLAG        = 0x00000004,
   21.39 +  EXIF_FLAG       = 0x00000008,
   21.40 +  ALPHA_FLAG      = 0x00000010,
   21.41 +  ICCP_FLAG       = 0x00000020,
   21.42 +
   21.43 +  ALL_VALID_FLAGS = 0x0000003e
   21.44 +} WebPFeatureFlags;
   21.45 +
   21.46 +// Dispose method (animation only). Indicates how the area used by the current
   21.47 +// frame is to be treated before rendering the next frame on the canvas.
   21.48 +typedef enum WebPMuxAnimDispose {
   21.49 +  WEBP_MUX_DISPOSE_NONE,       // Do not dispose.
   21.50 +  WEBP_MUX_DISPOSE_BACKGROUND  // Dispose to background color.
   21.51 +} WebPMuxAnimDispose;
   21.52 +
   21.53 +// Blend operation (animation only). Indicates how transparent pixels of the
   21.54 +// current frame are blended with those of the previous canvas.
   21.55 +typedef enum WebPMuxAnimBlend {
   21.56 +  WEBP_MUX_BLEND,              // Blend.
   21.57 +  WEBP_MUX_NO_BLEND            // Do not blend.
   21.58 +} WebPMuxAnimBlend;
   21.59 +
   21.60 +// Data type used to describe 'raw' data, e.g., chunk data
   21.61 +// (ICC profile, metadata) and WebP compressed image data.
   21.62 +struct WebPData {
   21.63 +  const uint8_t* bytes;
   21.64 +  size_t size;
   21.65 +};
   21.66 +
   21.67 +// Initializes the contents of the 'webp_data' object with default values.
   21.68 +static WEBP_INLINE void WebPDataInit(WebPData* webp_data) {
   21.69 +  if (webp_data != NULL) {
   21.70 +    memset(webp_data, 0, sizeof(*webp_data));
   21.71 +  }
   21.72 +}
   21.73 +
   21.74 +// Clears the contents of the 'webp_data' object by calling free(). Does not
   21.75 +// deallocate the object itself.
   21.76 +static WEBP_INLINE void WebPDataClear(WebPData* webp_data) {
   21.77 +  if (webp_data != NULL) {
   21.78 +    free((void*)webp_data->bytes);
   21.79 +    WebPDataInit(webp_data);
   21.80 +  }
   21.81 +}
   21.82 +
   21.83 +// Allocates necessary storage for 'dst' and copies the contents of 'src'.
   21.84 +// Returns true on success.
   21.85 +static WEBP_INLINE int WebPDataCopy(const WebPData* src, WebPData* dst) {
   21.86 +  if (src == NULL || dst == NULL) return 0;
   21.87 +  WebPDataInit(dst);
   21.88 +  if (src->bytes != NULL && src->size != 0) {
   21.89 +    dst->bytes = (uint8_t*)malloc(src->size);
   21.90 +    if (dst->bytes == NULL) return 0;
   21.91 +    memcpy((void*)dst->bytes, src->bytes, src->size);
   21.92 +    dst->size = src->size;
   21.93 +  }
   21.94 +  return 1;
   21.95 +}
   21.96 +
   21.97 +#ifdef __cplusplus
   21.98 +}    // extern "C"
   21.99 +#endif
  21.100 +
  21.101 +#endif  /* WEBP_WEBP_MUX_TYPES_H_ */
    22.1 --- a/Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/types.h	Fri Oct 26 10:07:53 2018 -0700
    22.2 +++ b/Xcode/Frameworks/webp.framework/Versions/A/Headers/webp/types.h	Fri Oct 26 14:38:19 2018 -0700
    22.3 @@ -40,9 +40,9 @@
    22.4  // This explicitly marks library functions and allows for changing the
    22.5  // signature for e.g., Windows DLL builds.
    22.6  # if defined(__GNUC__) && __GNUC__ >= 4
    22.7 -#  define WEBP_EXTERN(type) extern __attribute__ ((visibility ("default"))) type
    22.8 +#  define WEBP_EXTERN extern __attribute__ ((visibility ("default")))
    22.9  # else
   22.10 -#  define WEBP_EXTERN(type) extern type
   22.11 +#  define WEBP_EXTERN extern
   22.12  # endif  /* __GNUC__ >= 4 */
   22.13  #endif  /* WEBP_EXTERN */
   22.14  
    23.1 Binary file Xcode/Frameworks/webp.framework/Versions/A/webp has changed
    24.1 --- a/external/libwebp-0.6.0.patch	Fri Oct 26 10:07:53 2018 -0700
    24.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.3 @@ -1,12 +0,0 @@
    24.4 -diff -ruN libwebp-0.6.0.orig/Android.mk libwebp-0.6.0/Android.mk
    24.5 ---- libwebp-0.6.0.orig/Android.mk	2017-10-22 10:55:55.645170270 -0700
    24.6 -+++ libwebp-0.6.0/Android.mk	2017-10-22 12:31:09.944186793 -0700
    24.7 -@@ -259,7 +259,7 @@
    24.8 - 
    24.9 - WEBP_SRC_PATH := $(LOCAL_PATH)
   24.10 - include $(WEBP_SRC_PATH)/imageio/Android.mk
   24.11 --include $(WEBP_SRC_PATH)/examples/Android.mk
   24.12 -+#include $(WEBP_SRC_PATH)/examples/Android.mk
   24.13 - 
   24.14 - ifeq ($(USE_CPUFEATURES),yes)
   24.15 -   $(call import-module,android/cpufeatures)
    25.1 --- a/external/libwebp-0.6.0/AUTHORS	Fri Oct 26 10:07:53 2018 -0700
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,38 +0,0 @@
    25.4 -Contributors:
    25.5 -- Charles Munger (clm at google dot com)
    25.6 -- Christian Duvivier (cduvivier at google dot com)
    25.7 -- Djordje Pesut (djordje dot pesut at imgtec dot com)
    25.8 -- Hui Su (huisu at google dot com)
    25.9 -- James Zern (jzern at google dot com)
   25.10 -- Jan Engelhardt (jengelh at medozas dot de)
   25.11 -- Jehan (jehan at girinstud dot io)
   25.12 -- Johann (johann dot koenig at duck dot com)
   25.13 -- Jovan Zelincevic (jovan dot zelincevic at imgtec dot com)
   25.14 -- Jyrki Alakuijala (jyrki at google dot com)
   25.15 -- Lode Vandevenne (lode at google dot com)
   25.16 -- Lou Quillio (louquillio at google dot com)
   25.17 -- Mans Rullgard (mans at mansr dot com)
   25.18 -- Marcin Kowalczyk (qrczak at google dot com)
   25.19 -- Martin Olsson (mnemo at minimum dot se)
   25.20 -- Mikołaj Zalewski (mikolajz at google dot com)
   25.21 -- Mislav Bradac (mislavm at google dot com)
   25.22 -- Nico Weber (thakis at chromium dot org)
   25.23 -- Noel Chromium (noel at chromium dot org)
   25.24 -- Owen Rodley (orodley at google dot com)
   25.25 -- Parag Salasakar (img dot mips1 at gmail dot com)
   25.26 -- Pascal Massimino (pascal dot massimino at gmail dot com)
   25.27 -- Paweł Hajdan, Jr (phajdan dot jr at chromium dot org)
   25.28 -- Pierre Joye (pierre dot php at gmail dot com)
   25.29 -- Sam Clegg (sbc at chromium dot org)
   25.30 -- Scott Hancher (seh at google dot com)
   25.31 -- Scott LaVarnway (slavarnway at google dot com)
   25.32 -- Scott Talbot (s at chikachow dot org)
   25.33 -- Slobodan Prijic (slobodan dot prijic at imgtec dot com)
   25.34 -- Somnath Banerjee (somnath dot banerjee at gmail dot com)
   25.35 -- Sriraman Tallam (tmsriram at google dot com)
   25.36 -- Tamar Levy (tamar dot levy at intel dot com)
   25.37 -- Timothy Gu (timothygu99 at gmail dot com)
   25.38 -- Urvang Joshi (urvang at google dot com)
   25.39 -- Vikas Arora (vikasa at google dot com)
   25.40 -- Vincent Rabaud (vrabaud at google dot com)
   25.41 -- Yang Zhang (yang dot zhang at arm dot com)
    26.1 --- a/external/libwebp-0.6.0/Android.mk	Fri Oct 26 10:07:53 2018 -0700
    26.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.3 @@ -1,266 +0,0 @@
    26.4 -LOCAL_PATH := $(call my-dir)
    26.5 -
    26.6 -WEBP_CFLAGS := -Wall -DANDROID -DHAVE_MALLOC_H -DHAVE_PTHREAD -DWEBP_USE_THREAD
    26.7 -WEBP_CFLAGS += -fvisibility=hidden
    26.8 -
    26.9 -ifeq ($(APP_OPTIM),release)
   26.10 -  WEBP_CFLAGS += -finline-functions -ffast-math \
   26.11 -                 -ffunction-sections -fdata-sections
   26.12 -  ifeq ($(findstring clang,$(NDK_TOOLCHAIN_VERSION)),)
   26.13 -    WEBP_CFLAGS += -frename-registers -s
   26.14 -  endif
   26.15 -endif
   26.16 -
   26.17 -ifneq ($(findstring armeabi-v7a, $(TARGET_ARCH_ABI)),)
   26.18 -  # Setting LOCAL_ARM_NEON will enable -mfpu=neon which may cause illegal
   26.19 -  # instructions to be generated for armv7a code. Instead target the neon code
   26.20 -  # specifically.
   26.21 -  NEON := c.neon
   26.22 -  USE_CPUFEATURES := yes
   26.23 -else
   26.24 -  NEON := c
   26.25 -endif
   26.26 -
   26.27 -dec_srcs := \
   26.28 -    src/dec/alpha_dec.c \
   26.29 -    src/dec/buffer_dec.c \
   26.30 -    src/dec/frame_dec.c \
   26.31 -    src/dec/idec_dec.c \
   26.32 -    src/dec/io_dec.c \
   26.33 -    src/dec/quant_dec.c \
   26.34 -    src/dec/tree_dec.c \
   26.35 -    src/dec/vp8_dec.c \
   26.36 -    src/dec/vp8l_dec.c \
   26.37 -    src/dec/webp_dec.c \
   26.38 -
   26.39 -demux_srcs := \
   26.40 -    src/demux/anim_decode.c \
   26.41 -    src/demux/demux.c \
   26.42 -
   26.43 -dsp_dec_srcs := \
   26.44 -    src/dsp/alpha_processing.c \
   26.45 -    src/dsp/alpha_processing_mips_dsp_r2.c \
   26.46 -    src/dsp/alpha_processing_neon.$(NEON) \
   26.47 -    src/dsp/alpha_processing_sse2.c \
   26.48 -    src/dsp/alpha_processing_sse41.c \
   26.49 -    src/dsp/argb.c \
   26.50 -    src/dsp/argb_mips_dsp_r2.c \
   26.51 -    src/dsp/argb_sse2.c \
   26.52 -    src/dsp/cpu.c \
   26.53 -    src/dsp/dec.c \
   26.54 -    src/dsp/dec_clip_tables.c \
   26.55 -    src/dsp/dec_mips32.c \
   26.56 -    src/dsp/dec_mips_dsp_r2.c \
   26.57 -    src/dsp/dec_msa.c \
   26.58 -    src/dsp/dec_neon.$(NEON) \
   26.59 -    src/dsp/dec_sse2.c \
   26.60 -    src/dsp/dec_sse41.c \
   26.61 -    src/dsp/filters.c \
   26.62 -    src/dsp/filters_mips_dsp_r2.c \
   26.63 -    src/dsp/filters_msa.c \
   26.64 -    src/dsp/filters_neon.$(NEON) \
   26.65 -    src/dsp/filters_sse2.c \
   26.66 -    src/dsp/lossless.c \
   26.67 -    src/dsp/lossless_mips_dsp_r2.c \
   26.68 -    src/dsp/lossless_msa.c \
   26.69 -    src/dsp/lossless_neon.$(NEON) \
   26.70 -    src/dsp/lossless_sse2.c \
   26.71 -    src/dsp/rescaler.c \
   26.72 -    src/dsp/rescaler_mips32.c \
   26.73 -    src/dsp/rescaler_mips_dsp_r2.c \
   26.74 -    src/dsp/rescaler_msa.c \
   26.75 -    src/dsp/rescaler_neon.$(NEON) \
   26.76 -    src/dsp/rescaler_sse2.c \
   26.77 -    src/dsp/upsampling.c \
   26.78 -    src/dsp/upsampling_mips_dsp_r2.c \
   26.79 -    src/dsp/upsampling_msa.c \
   26.80 -    src/dsp/upsampling_neon.$(NEON) \
   26.81 -    src/dsp/upsampling_sse2.c \
   26.82 -    src/dsp/yuv.c \
   26.83 -    src/dsp/yuv_mips32.c \
   26.84 -    src/dsp/yuv_mips_dsp_r2.c \
   26.85 -    src/dsp/yuv_sse2.c \
   26.86 -
   26.87 -dsp_enc_srcs := \
   26.88 -    src/dsp/cost.c \
   26.89 -    src/dsp/cost_mips32.c \
   26.90 -    src/dsp/cost_mips_dsp_r2.c \
   26.91 -    src/dsp/cost_sse2.c \
   26.92 -    src/dsp/enc.c \
   26.93 -    src/dsp/enc_avx2.c \
   26.94 -    src/dsp/enc_mips32.c \
   26.95 -    src/dsp/enc_mips_dsp_r2.c \
   26.96 -    src/dsp/enc_msa.c \
   26.97 -    src/dsp/enc_neon.$(NEON) \
   26.98 -    src/dsp/enc_sse2.c \
   26.99 -    src/dsp/enc_sse41.c \
  26.100 -    src/dsp/lossless_enc.c \
  26.101 -    src/dsp/lossless_enc_mips32.c \
  26.102 -    src/dsp/lossless_enc_mips_dsp_r2.c \
  26.103 -    src/dsp/lossless_enc_msa.c \
  26.104 -    src/dsp/lossless_enc_neon.$(NEON) \
  26.105 -    src/dsp/lossless_enc_sse2.c \
  26.106 -    src/dsp/lossless_enc_sse41.c \
  26.107 -
  26.108 -enc_srcs := \
  26.109 -    src/enc/alpha_enc.c \
  26.110 -    src/enc/analysis_enc.c \
  26.111 -    src/enc/backward_references_enc.c \
  26.112 -    src/enc/config_enc.c \
  26.113 -    src/enc/cost_enc.c \
  26.114 -    src/enc/delta_palettization_enc.c \
  26.115 -    src/enc/filter_enc.c \
  26.116 -    src/enc/frame_enc.c \
  26.117 -    src/enc/histogram_enc.c \
  26.118 -    src/enc/iterator_enc.c \
  26.119 -    src/enc/near_lossless_enc.c \
  26.120 -    src/enc/picture_enc.c \
  26.121 -    src/enc/picture_csp_enc.c \
  26.122 -    src/enc/picture_psnr_enc.c \
  26.123 -    src/enc/picture_rescale_enc.c \
  26.124 -    src/enc/picture_tools_enc.c \
  26.125 -    src/enc/predictor_enc.c \
  26.126 -    src/enc/quant_enc.c \
  26.127 -    src/enc/syntax_enc.c \
  26.128 -    src/enc/token_enc.c \
  26.129 -    src/enc/tree_enc.c \
  26.130 -    src/enc/vp8l_enc.c \
  26.131 -    src/enc/webp_enc.c \
  26.132 -
  26.133 -mux_srcs := \
  26.134 -    src/mux/anim_encode.c \
  26.135 -    src/mux/muxedit.c \
  26.136 -    src/mux/muxinternal.c \
  26.137 -    src/mux/muxread.c \
  26.138 -
  26.139 -utils_dec_srcs := \
  26.140 -    src/utils/bit_reader_utils.c \
  26.141 -    src/utils/color_cache_utils.c \
  26.142 -    src/utils/filters_utils.c \
  26.143 -    src/utils/huffman_utils.c \
  26.144 -    src/utils/quant_levels_dec_utils.c \
  26.145 -    src/utils/random_utils.c \
  26.146 -    src/utils/rescaler_utils.c \
  26.147 -    src/utils/thread_utils.c \
  26.148 -    src/utils/utils.c \
  26.149 -
  26.150 -utils_enc_srcs := \
  26.151 -    src/utils/bit_writer_utils.c \
  26.152 -    src/utils/huffman_encode_utils.c \
  26.153 -    src/utils/quant_levels_utils.c \
  26.154 -
  26.155 -################################################################################
  26.156 -# libwebpdecoder
  26.157 -
  26.158 -include $(CLEAR_VARS)
  26.159 -
  26.160 -LOCAL_SRC_FILES := \
  26.161 -    $(dec_srcs) \
  26.162 -    $(dsp_dec_srcs) \
  26.163 -    $(utils_dec_srcs) \
  26.164 -
  26.165 -LOCAL_CFLAGS := $(WEBP_CFLAGS)
  26.166 -LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
  26.167 -
  26.168 -# prefer arm over thumb mode for performance gains
  26.169 -LOCAL_ARM_MODE := arm
  26.170 -
  26.171 -ifeq ($(USE_CPUFEATURES),yes)
  26.172 -  LOCAL_STATIC_LIBRARIES := cpufeatures
  26.173 -endif
  26.174 -
  26.175 -LOCAL_MODULE := webpdecoder_static
  26.176 -
  26.177 -include $(BUILD_STATIC_LIBRARY)
  26.178 -
  26.179 -ifeq ($(ENABLE_SHARED),1)
  26.180 -include $(CLEAR_VARS)
  26.181 -
  26.182 -LOCAL_WHOLE_STATIC_LIBRARIES := webpdecoder_static
  26.183 -
  26.184 -LOCAL_MODULE := webpdecoder
  26.185 -
  26.186 -include $(BUILD_SHARED_LIBRARY)
  26.187 -endif  # ENABLE_SHARED=1
  26.188 -
  26.189 -################################################################################
  26.190 -# libwebp
  26.191 -
  26.192 -include $(CLEAR_VARS)
  26.193 -
  26.194 -LOCAL_SRC_FILES := \
  26.195 -    $(dsp_enc_srcs) \
  26.196 -    $(enc_srcs) \
  26.197 -    $(utils_enc_srcs) \
  26.198 -
  26.199 -LOCAL_CFLAGS := $(WEBP_CFLAGS)
  26.200 -LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
  26.201 -
  26.202 -# prefer arm over thumb mode for performance gains
  26.203 -LOCAL_ARM_MODE := arm
  26.204 -
  26.205 -LOCAL_WHOLE_STATIC_LIBRARIES := webpdecoder_static
  26.206 -
  26.207 -LOCAL_MODULE := webp
  26.208 -
  26.209 -ifeq ($(ENABLE_SHARED),1)
  26.210 -  include $(BUILD_SHARED_LIBRARY)
  26.211 -else
  26.212 -  include $(BUILD_STATIC_LIBRARY)
  26.213 -endif
  26.214 -
  26.215 -################################################################################
  26.216 -# libwebpdemux
  26.217 -
  26.218 -include $(CLEAR_VARS)
  26.219 -
  26.220 -LOCAL_SRC_FILES := $(demux_srcs)
  26.221 -
  26.222 -LOCAL_CFLAGS := $(WEBP_CFLAGS)
  26.223 -LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
  26.224 -
  26.225 -# prefer arm over thumb mode for performance gains
  26.226 -LOCAL_ARM_MODE := arm
  26.227 -
  26.228 -LOCAL_MODULE := webpdemux
  26.229 -
  26.230 -ifeq ($(ENABLE_SHARED),1)
  26.231 -  LOCAL_SHARED_LIBRARIES := webp
  26.232 -  include $(BUILD_SHARED_LIBRARY)
  26.233 -else
  26.234 -  LOCAL_STATIC_LIBRARIES := webp
  26.235 -  include $(BUILD_STATIC_LIBRARY)
  26.236 -endif
  26.237 -
  26.238 -################################################################################
  26.239 -# libwebpmux
  26.240 -
  26.241 -include $(CLEAR_VARS)
  26.242 -
  26.243 -LOCAL_SRC_FILES := $(mux_srcs)
  26.244 -
  26.245 -LOCAL_CFLAGS := $(WEBP_CFLAGS)
  26.246 -LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
  26.247 -
  26.248 -# prefer arm over thumb mode for performance gains
  26.249 -LOCAL_ARM_MODE := arm
  26.250 -
  26.251 -LOCAL_MODULE := webpmux
  26.252 -
  26.253 -ifeq ($(ENABLE_SHARED),1)
  26.254 -  LOCAL_SHARED_LIBRARIES := webp
  26.255 -  include $(BUILD_SHARED_LIBRARY)
  26.256 -else
  26.257 -  LOCAL_STATIC_LIBRARIES := webp
  26.258 -  include $(BUILD_STATIC_LIBRARY)
  26.259 -endif
  26.260 -
  26.261 -################################################################################
  26.262 -
  26.263 -WEBP_SRC_PATH := $(LOCAL_PATH)
  26.264 -include $(WEBP_SRC_PATH)/imageio/Android.mk
  26.265 -#include $(WEBP_SRC_PATH)/examples/Android.mk
  26.266 -
  26.267 -ifeq ($(USE_CPUFEATURES),yes)
  26.268 -  $(call import-module,android/cpufeatures)
  26.269 -endif
    27.1 --- a/external/libwebp-0.6.0/CMakeLists.txt	Fri Oct 26 10:07:53 2018 -0700
    27.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.3 @@ -1,189 +0,0 @@
    27.4 -cmake_minimum_required(VERSION 2.8.7)
    27.5 -
    27.6 -project(libwebp C)
    27.7 -
    27.8 -# Options for coder / decoder executables.
    27.9 -option(WEBP_BUILD_CWEBP "Build the cwebp command line tool." OFF)
   27.10 -option(WEBP_BUILD_DWEBP "Build the dwebp command line tool." OFF)
   27.11 -option(WEBP_BUILD_GIF2WEBP "Build the gif2webp conversion tool." OFF)
   27.12 -option(WEBP_BUILD_IMG2WEBP "Build the img2webp animation tool." OFF)
   27.13 -option(WEBP_EXPERIMENTAL_FEATURES "Build with experimental features." OFF)
   27.14 -option(WEBP_ENABLE_SWAP_16BIT_CSP "Enable byte swap for 16 bit colorspaces." OFF)
   27.15 -
   27.16 -set(WEBP_DEP_LIBRARIES)
   27.17 -set(WEBP_DEP_INCLUDE_DIRS)
   27.18 -
   27.19 -if(NOT CMAKE_BUILD_TYPE)
   27.20 -  set(CMAKE_BUILD_TYPE "Release" CACHE
   27.21 -    "Build type: Release, Debug or RelWithDebInfo" STRING FORCE
   27.22 -  )
   27.23 -endif()
   27.24 -
   27.25 -include(cmake/config.h.cmake)
   27.26 -
   27.27 -################################################################################
   27.28 -# Options.
   27.29 -if(WEBP_ENABLE_SWAP_16BIT_CSP)
   27.30 -  add_definitions(-DWEBP_SWAP_16BIT_CSP)
   27.31 -endif()
   27.32 -
   27.33 -################################################################################
   27.34 -# Android only.
   27.35 -if(ANDROID)
   27.36 -  include_directories(${ANDROID_NDK}/sources/android/cpufeatures)
   27.37 -  add_library(cpufeatures STATIC
   27.38 -    ${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c
   27.39 -  )
   27.40 -  target_link_libraries(cpufeatures dl)
   27.41 -  set(WEBP_DEP_LIBRARIES ${WEBP_DEP_LIBRARIES} cpufeatures)
   27.42 -  set(WEBP_DEP_INCLUDE_DIRS ${WEBP_DEP_INCLUDE_DIRS}
   27.43 -    ${ANDROID_NDK}/sources/android/cpufeatures
   27.44 -  )
   27.45 -endif()
   27.46 -
   27.47 -################################################################################
   27.48 -# WebP source files.
   27.49 -# Read the Makefile.am to get the source files.
   27.50 -
   27.51 -function(parse_Makefile_am FOLDER VAR)
   27.52 -  file(READ ${FOLDER}/Makefile.am MAKEFILE_AM)
   27.53 -  string(REGEX MATCHALL "_SOURCES \\+= [^\n]*"
   27.54 -    FILES_PER_LINE ${MAKEFILE_AM}
   27.55 -  )
   27.56 -  set(SRCS ${${VAR}})
   27.57 -  foreach(FILES ${FILES_PER_LINE})
   27.58 -    string(SUBSTRING ${FILES} 12 -1 FILES)
   27.59 -    string(REGEX MATCHALL "[0-9a-z\\._]+"
   27.60 -      FILES ${FILES}
   27.61 -    )
   27.62 -    foreach(FILE ${FILES})
   27.63 -      list(APPEND SRCS ${FOLDER}/${FILE})
   27.64 -    endforeach()
   27.65 -  endforeach()
   27.66 -  set(${VAR} ${SRCS} PARENT_SCOPE)
   27.67 -endfunction()
   27.68 -
   27.69 -set(WEBP_SRCS)
   27.70 -parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/src/dec "WEBP_SRCS")
   27.71 -parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/src/demux "WEBP_SRCS")
   27.72 -parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/src/dsp "WEBP_SRCS")
   27.73 -parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/src/enc "WEBP_SRCS")
   27.74 -parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/src/utils "WEBP_SRCS")
   27.75 -
   27.76 -# Remove the files specific to SIMD we don't use.
   27.77 -foreach(FILE ${WEBP_SIMD_FILES_NOT_TO_INCLUDE})
   27.78 -  list(REMOVE_ITEM WEBP_SRCS ${FILE})
   27.79 -endforeach()
   27.80 -
   27.81 -# Build the library.
   27.82 -add_definitions(-Wall)
   27.83 -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/ ${WEBP_DEP_INCLUDE_DIRS})
   27.84 -add_library(webp ${WEBP_SRCS})
   27.85 -target_link_libraries(webp ${WEBP_DEP_LIBRARIES})
   27.86 -
   27.87 -# Change the compile flags for SIMD files we use.
   27.88 -list(LENGTH WEBP_SIMD_FILES_TO_INCLUDE WEBP_SIMD_FILES_TO_INCLUDE_LENGTH)
   27.89 -math(EXPR WEBP_SIMD_FILES_TO_INCLUDE_RANGE
   27.90 -  "${WEBP_SIMD_FILES_TO_INCLUDE_LENGTH}-1"
   27.91 -)
   27.92 -
   27.93 -foreach(I_FILE RANGE ${WEBP_SIMD_FILES_TO_INCLUDE_RANGE})
   27.94 -  list(GET WEBP_SIMD_FILES_TO_INCLUDE ${I_FILE} FILE)
   27.95 -  list(GET WEBP_SIMD_FLAGS_TO_INCLUDE ${I_FILE} SIMD_COMPILE_FLAG)
   27.96 -  set_source_files_properties(${FILE} PROPERTIES
   27.97 -    COMPILE_FLAGS ${SIMD_COMPILE_FLAG}
   27.98 -  )
   27.99 -endforeach()
  27.100 -
  27.101 -# Build the executables if asked for.
  27.102 -if(WEBP_BUILD_CWEBP OR WEBP_BUILD_DWEBP OR
  27.103 -   WEBP_BUILD_GIF2WEBP OR WEBP_BUILD_IMG2WEBP)
  27.104 -  # Example utility library.
  27.105 -  set(exampleutil_SRCS
  27.106 -    ${CMAKE_CURRENT_SOURCE_DIR}/examples/stopwatch.h
  27.107 -    ${CMAKE_CURRENT_SOURCE_DIR}/examples/example_util.c
  27.108 -    ${CMAKE_CURRENT_SOURCE_DIR}/examples/example_util.h)
  27.109 -  add_library(exampleutil ${exampleutil_SRCS})
  27.110 -  target_link_libraries(exampleutil webp ${WEBP_DEP_LIBRARIES})
  27.111 -
  27.112 -  set(imageioutil_SRCS
  27.113 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/imageio_util.c
  27.114 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/imageio_util.h)
  27.115 -  add_library(imageioutil ${imageioutil_SRCS})
  27.116 -  target_link_libraries(imageioutil ${WEBP_DEP_LIBRARIES})
  27.117 -
  27.118 -  # Image-decoding utility library.
  27.119 -  set(imagedec_SRCS
  27.120 -    ${CMAKE_CURRENT_SOURCE_DIR}/examples/gifdec.c
  27.121 -    ${CMAKE_CURRENT_SOURCE_DIR}/examples/gifdec.h
  27.122 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/image_dec.c
  27.123 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/image_dec.h
  27.124 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/jpegdec.c
  27.125 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/jpegdec.h
  27.126 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/metadata.c
  27.127 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/metadata.h
  27.128 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/pngdec.c
  27.129 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/pngdec.h
  27.130 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/tiffdec.c
  27.131 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/tiffdec.h
  27.132 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/webpdec.c
  27.133 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/webpdec.h
  27.134 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/wicdec.c
  27.135 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/wicdec.h)
  27.136 -  add_library(imagedec ${imagedec_SRCS})
  27.137 -  target_link_libraries(imagedec webp ${WEBP_DEP_LIBRARIES}
  27.138 -    ${WEBP_DEP_IMG_LIBRARIES})
  27.139 -
  27.140 -  # Image-encoding utility library.
  27.141 -  set(imageenc_SRCS
  27.142 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/image_enc.c
  27.143 -    ${CMAKE_CURRENT_SOURCE_DIR}/imageio/image_enc.h)
  27.144 -  add_library(imageenc ${imageenc_SRCS})
  27.145 -  target_link_libraries(imageenc webp imageioutil
  27.146 -    ${WEBP_DEP_LIBRARIES} ${WEBP_DEP_IMG_LIBRARIES})
  27.147 -endif()
  27.148 -
  27.149 -if(WEBP_BUILD_DWEBP)
  27.150 -  # dwebp
  27.151 -  include_directories(${WEBP_DEP_IMG_INCLUDE_DIRS})
  27.152 -  add_executable(dwebp
  27.153 -    ${CMAKE_CURRENT_SOURCE_DIR}/examples/dwebp.c
  27.154 -    ${CMAKE_CURRENT_SOURCE_DIR}/examples/stopwatch.h)
  27.155 -  target_link_libraries(dwebp imagedec imageenc webp
  27.156 -    exampleutil imageioutil
  27.157 -    ${WEBP_DEP_LIBRARIES} ${WEBP_DEP_IMG_LIBRARIES}
  27.158 -  )
  27.159 -endif()
  27.160 -
  27.161 -if(WEBP_BUILD_CWEBP)
  27.162 -  # cwebp
  27.163 -  include_directories(${WEBP_DEP_IMG_INCLUDE_DIRS})
  27.164 -  add_executable(cwebp
  27.165 -    ${CMAKE_CURRENT_SOURCE_DIR}/examples/cwebp.c
  27.166 -    ${CMAKE_CURRENT_SOURCE_DIR}/examples/stopwatch.h)
  27.167 -  target_link_libraries(cwebp imagedec webp exampleutil imageioutil
  27.168 -    ${WEBP_DEP_LIBRARIES} ${WEBP_DEP_IMG_LIBRARIES}
  27.169 -  )
  27.170 -endif()
  27.171 -
  27.172 -if(WEBP_BUILD_GIF2WEBP)
  27.173 -  # gif2webp
  27.174 -  include_directories(${WEBP_DEP_IMG_INCLUDE_DIRS})
  27.175 -  set(GIF2WEBP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/examples/gif2webp.c)
  27.176 -  parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/src/mux "GIF2WEBP_SRCS")
  27.177 -  add_executable(gif2webp ${GIF2WEBP_SRCS})
  27.178 -  target_link_libraries(gif2webp imagedec webp exampleutil imageioutil
  27.179 -    ${WEBP_DEP_LIBRARIES} ${WEBP_DEP_IMG_LIBRARIES}
  27.180 -  )
  27.181 -endif()
  27.182 -
  27.183 -if(WEBP_BUILD_IMG2WEBP)
  27.184 -  # img2webp
  27.185 -  include_directories(${WEBP_DEP_IMG_INCLUDE_DIRS})
  27.186 -  set(IMG2WEBP_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/examples/img2webp.c)
  27.187 -  parse_Makefile_am(${CMAKE_CURRENT_SOURCE_DIR}/src/mux "IMG2WEBP_SRCS")
  27.188 -  add_executable(img2webp ${IMG2WEBP_SRCS})
  27.189 -  target_link_libraries(img2webp imagedec webp exampleutil imageioutil
  27.190 -    ${WEBP_DEP_LIBRARIES} ${WEBP_DEP_IMG_LIBRARIES}
  27.191 -  )
  27.192 -endif()
    28.1 --- a/external/libwebp-0.6.0/COPYING	Fri Oct 26 10:07:53 2018 -0700
    28.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.3 @@ -1,30 +0,0 @@
    28.4 -Copyright (c) 2010, Google Inc. All rights reserved.
    28.5 -
    28.6 -Redistribution and use in source and binary forms, with or without
    28.7 -modification, are permitted provided that the following conditions are
    28.8 -met:
    28.9 -
   28.10 -  * Redistributions of source code must retain the above copyright
   28.11 -    notice, this list of conditions and the following disclaimer.
   28.12 -
   28.13 -  * Redistributions in binary form must reproduce the above copyright
   28.14 -    notice, this list of conditions and the following disclaimer in
   28.15 -    the documentation and/or other materials provided with the
   28.16 -    distribution.
   28.17 -
   28.18 -  * Neither the name of Google nor the names of its contributors may
   28.19 -    be used to endorse or promote products derived from this software
   28.20 -    without specific prior written permission.
   28.21 -
   28.22 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   28.23 -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   28.24 -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   28.25 -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   28.26 -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   28.27 -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   28.28 -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   28.29 -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   28.30 -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   28.31 -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   28.32 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   28.33 -
    29.1 --- a/external/libwebp-0.6.0/ChangeLog	Fri Oct 26 10:07:53 2018 -0700
    29.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.3 @@ -1,3484 +0,0 @@
    29.4 -20a7fea0 extras/Makefile.am: fix libwebpextras.la reference
    29.5 -415f3ffe update ChangeLog (tag: v0.6.0-rc3)
    29.6 -3c6d1224 update NEWS
    29.7 -ee4a4141 update AUTHORS
    29.8 -32ed856f Fix "all|no frames are keyframes" settings.
    29.9 -f4dc56fd disable GradientUnfilter_NEON
   29.10 -0d8e0588 img2webp: treat -loop as a no-op w/single images
   29.11 -b0450139 ReadImage(): restore size reporting
   29.12 -0ad3b4ef update ChangeLog (tag: v0.6.0-rc2)
   29.13 -6451709e img2webp,get_disto: fix image decode w/WIC builds
   29.14 -92504d21 get_disto: make ReadPicture() return a bool
   29.15 -c3e4b3a9 update NEWS
   29.16 -3363eb6d man/img2webp.1: fix formatting warning
   29.17 -4d1312f2 update NEWS
   29.18 -36c42ea4 bump version to 0.6.0
   29.19 -bb498a51 update AUTHORS
   29.20 -84cef16f Makefile.vc: fix CFG=debug-dynamic build
   29.21 -919f9e2f Merge "add .rc files for windows dll versioning"
   29.22 -f1ae8af4 Merge ".gitignore: add img2webp"
   29.23 -4689ce16 cwebp: add a -sharp_yuv option for 'sharp' RGB->YUV conversion
   29.24 -79bf46f1 rename the pretentious SmartYUV into SharpYUV
   29.25 -eb1dc89a silently expose use_delta_palette in the WebPConfig API
   29.26 -c85b0dde .gitignore: add img2webp
   29.27 -43d3f01a add .rc files for windows dll versioning
   29.28 -668e1dd4 src/{dec,enc,utils}: give filenames a unique suffix
   29.29 -0e6b7f33 Merge "iosbuild.sh: only add required headers to framework"
   29.30 -29ed6f9a iosbuild.sh: only add required headers to framework
   29.31 -71c53f1a NEON: speed-up strong filtering
   29.32 -73f567ea Merge "get_disto: remove redundant reader check"
   29.33 -9e14276f Merge "makefiles: prune get_disto & webp_quality deps"
   29.34 -99965bac Merge "Makefile.vc: add get_disto.exe, webp_quality.exe"
   29.35 -d4912238 get_disto: remove redundant reader check
   29.36 -ea482409 makefiles: prune get_disto & webp_quality deps
   29.37 -2ede5a19 Makefile.vc: add get_disto.exe, webp_quality.exe
   29.38 -a345068a ARM: speed up bitreader by avoiding tables
   29.39 -1dc82a6b Merge "introduce a generic GetCoeffs() function pointer"
   29.40 -8074b89e introduce a generic GetCoeffs() function pointer
   29.41 -749a45a5 Merge "NEON: implement alpha-filters (horizontal/vertical/gradient)"
   29.42 -74c053b5 Merge "NEON: fix overflow in SSE NxN calculation"
   29.43 -0a3aeff7 Merge "dsp: WebPExtractGreen function for alpha decompression"
   29.44 -1de931c6 NEON: implement alpha-filters (horizontal/vertical/gradient)
   29.45 -9b3aca40 NEON: fix overflow in SSE NxN calculation
   29.46 -1c07a3c6 dsp: WebPExtractGreen function for alpha decompression
   29.47 -9ed5e3e5 use pointers for WebPRescaler's in WebPDecParams
   29.48 -db013a8d Merge "ARM: don't use USE_GENERIC_TREE"
   29.49 -fcd4784d use a 8b table for C-version for clz()
   29.50 -fbb5c473 ARM: don't use USE_GENERIC_TREE
   29.51 -8fda5612 Merge "add a kSlowSSSE3 feature for CPUInfo"
   29.52 -86bbd245 add a kSlowSSSE3 feature for CPUInfo
   29.53 -7c2779e9 Get code to fully compile in C++.
   29.54 -250c3586 Merge "When compiling as C++, avoid narrowing warnings."
   29.55 -c0648ac2 When compiling as C++, avoid narrowing warnings.
   29.56 -0d55f60c 40% faster ApplyAlphaMultiply_SSE2
   29.57 -49d0280d NEON: implement several alpha-processing functions
   29.58 -48b1e85f SSE2: 15% faster alpha-processing functions
   29.59 -e3b8abbc fix warning from static analysis.
   29.60 -28fe054e SSE2: 30% faster ApplyAlphaMultiply()
   29.61 -f44acd25 Merge "Properly compute the optimal color cache size."
   29.62 -527844fe Properly compute the optimal color cache size.
   29.63 -be0ef639 fix a comment typo
   29.64 -8874b162 Fix a non-deterministic color cache size computation.
   29.65 -d712e20d Do not allow a color cache size bigger than the number of colors.
   29.66 -ecff04f6 re-introduce some comments in Huffman Cost.
   29.67 -259e9828 replace 'ptr + y * stride' by 'ptr += stride'
   29.68 -00b08c88 Merge "NEON: 5% faster conversion to RGB565 and RGBA4444"
   29.69 -0e7f4447 Merge "NEON: faster fancy upsampling"
   29.70 -b016cb91 NEON: faster fancy upsampling
   29.71 -1cb63801 Call the C function to finish off lossless SSE loops only when necessary.
   29.72 -875fafc1 Implement BundleColorMap in SSE2.
   29.73 -3674d49e Merge "remove Clang warnings with unused arch arguments."
   29.74 -f04eb376 Merge tag 'v0.5.2'
   29.75 -341d711c NEON: 5% faster conversion to RGB565 and RGBA4444
   29.76 -abb54827 remove Clang warnings with unused arch arguments.
   29.77 -ece9684f update ChangeLog (tag: v0.5.2-rc2, tag: v0.5.2, origin/0.5.2, 0.5.2)
   29.78 -aa7744ca anim_util: quiet implicit conv warnings in 32-bit
   29.79 -d9120271 jpegdec: correct ContextFill signature
   29.80 -24eb3940 Remove some errors when compiling the code as C++.
   29.81 -a4a8e5f3 vwebp: clear canvas during resize w/o animation
   29.82 -67c25ad5 vwebp: clear canvas during resize w/o animation
   29.83 -a4bbe4b3 fix indentation
   29.84 -31ca2a80 tiffdec: restore libtiff 3.9.x compatibility
   29.85 -b2f77b57 update NEWS
   29.86 -5ab6d9de AnimEncoder: avoid freeing uninitialized memory pointer.
   29.87 -f29bf582 WebPAnimEncoder: If 'minimize_size' and 'allow_mixed' on, try lossy + lossless.
   29.88 -3ebe1c00 AnimEncoder: avoid freeing uninitialized memory pointer.
   29.89 -df780e0e fix a potential overflow with MALLOC_LIMIT
   29.90 -58fc5078 Merge "PredictorSub: implement fully-SSE2 version"
   29.91 -9cc42167 PredictorSub: implement fully-SSE2 version
   29.92 -0aa1f35c remove dependency of imageio/ to stopwatch.h
   29.93 -cb9ec84b Merge "remove the dependency to stop_watch.[ch] in imageio"
   29.94 -dc0c01fb Merge "anim_util: quiet implicit conv warnings in 32-bit"
   29.95 -827d3c50 Merge "fix a potential overflow with MALLOC_LIMIT"
   29.96 -1e2e25b0 anim_util: quiet implicit conv warnings in 32-bit
   29.97 -218460cd bump version to 0.5.2
   29.98 -de7d654d update AUTHORS & .mailmap
   29.99 -273367c1 Merge "dsp/lossless.c,cosmetics: fix indent"
  29.100 -76bbcf2e fix a potential overflow with MALLOC_LIMIT
  29.101 -8ac1abfe Merge "jpegdec: correct ContextFill signature"
  29.102 -cb215aed remove the dependency to stop_watch.[ch] in imageio
  29.103 -2423017a dsp/lossless.c,cosmetics: fix indent
  29.104 -74a12b10 iosbuild.sh: add WebPDecoder.framework + encoder
  29.105 -a9cc7621 Merge "iosbuild.sh: add WebPDecoder.framework + encoder"
  29.106 -fbba5bc2 optimize predictor #1 in plain-C For some reason, gcc has hard time inlining this one...
  29.107 -9ae0b3f6 Merge "SSE2: slightly (~2%) faster Predictor #1"
  29.108 -c1f97bd7 SSE2: slightly (~2%) faster Predictor #1
  29.109 -ea664b89 SSE2: 10% faster Predictor #11
  29.110 -be7dcc08 AnimEncoder: Correctly skip a frame when sub-rectangle is empty.
  29.111 -40885830 Fix assertions in WebPRescalerExportRow()
  29.112 -1d5046d1 iosbuild.sh: add WebPDecoder.framework + encoder
  29.113 -cec72014 jpegdec: correct ContextFill signature
  29.114 -8f38c72e fix a typo in WebPPictureYUVAToARGB's doc
  29.115 -33ca93f9 systematically call WebPDemuxReleaseIterator() on dec->prev_iter_
  29.116 -76e19073 doc: use two's complement explicitly for uint8->int8 conversion
  29.117 -f91ba963 Anim_encoder: correctly handle enc->prev_candidate_undecided_
  29.118 -25d74e65 WebPPictureDistortion(): free() -> WebPSafeFree()
  29.119 -03f1c008 mux/Makefile.am: add missing -lm
  29.120 -58410cd6 fix bug in RefineUsingDistortion()
  29.121 -e168af8c fix filtering auto-adjustment
  29.122 -ed9dec41 fix doc and code snippet for WebPINewDecoder() doc
  29.123 -3c49178f prevent 32b overflow for very large canvas_width / height
  29.124 -9595f290 fix anim_util.c compilation when HAVE_GIF is not defined.
  29.125 -7ec9552c Make gif transparent color to be transparent black
  29.126 -b3fb8bb6 slightly faster Predictor #11 in NEON
  29.127 -9871335f Add a CMake option for WEBP_SWAP_16BIT_CSP.
  29.128 -0ae32226 Fix missing cpu-features for Android.
  29.129 -ab4c8056 cpu.cmake: improve webp_check_compiler_flag output
  29.130 -eec5fa3a Provide support for CMake on Android studio 2.2.
  29.131 -004d5690 Split the main CMake file.
  29.132 -4fe5d588 Android.mk: use -fvisibility=hidden
  29.133 -bd63a31a vwebp: ensure setenv() is available in stdlib.h
  29.134 -363a5681 vwebp: handle window resizing properly
  29.135 -a0d2753f lower WEBP_MAX_ALLOCABLE_MEMORY default
  29.136 -31fe11a5  fix infinite loop in case of PARTITION0 overflow
  29.137 -532215dd Change the rule of picking UV mode in MBAnalyzeBestUVMode()
  29.138 -9c75dbd3 cwebp.1: improve some grammar
  29.139 -af2e05cb vwebp: Clear previous frame when a key triggers a redraw
  29.140 -26ffa296 Add descriptions of default configuration in help info.
  29.141 -7416280d Fix an unsigned integer overflow error in enc/cost.h
  29.142 -13cf1d2e Do token recording and counting in a single loop
  29.143 -eb9a4b97 Reset segment id if we decide not to update segment map
  29.144 -42ebe3b7 configure: fix NEON flag detection under gcc 6
  29.145 -76ebbfff NEON: implement predictor #13
  29.146 -95b12a08 Merge "Revert Average3 and Average4"
  29.147 -54ab2e75 Revert Average3 and Average4
  29.148 -fe12330c 3-5% faster Predictor #5, #6, #7 and #10 for NEON
  29.149 -fbfb3bef ~2% faster predictor #10 for NEON
  29.150 -d4b7d801 lossless_sse2: use the local functions
  29.151 -a5e3b225 Lossless decoder SSE2 improvements.
  29.152 -58a1f124 ~2% faster predictor #12 in NEON.
  29.153 -906c3b63 Merge "Implement lossless transforms in NEON."
  29.154 -d23abe4e Implement lossless transforms in NEON.
  29.155 -2e6cb6f3 Give more flexibility to the predictor generating macro.
  29.156 -28e0bb70 Merge "Fix race condition in multi-threading initialization."
  29.157 -64704530 Fix race condition in multi-threading initialization.
  29.158 -bded7848 img2webp: fix default -lossless value and use pic.argb=1
  29.159 -0e61a513 Merge "img2webp: convert a sequence of images to an animated webp"
  29.160 -1cc79e92 AnimEncoder: Correctly skip a frame when sub-rectangle is empty.
  29.161 -03f40955 img2webp: convert a sequence of images to an animated webp
  29.162 -ea72cd60 add missing 'extern' keyword for predictor dcl
  29.163 -67879e6d SSE implementation of decoding predictors.
  29.164 -34aee990 Merge "vwebp: make 'd' key toggle the debugging of fragments"
  29.165 -a41296ae Fix potentially uninitialized value.
  29.166 -c85adb33 vwebp: make 'd' key toggle the debugging of fragments
  29.167 -4239a148 Make the lossless predictors work on a batch of pixels.
  29.168 -bc18ebad fix extra 'const's in signatures
  29.169 -71e2f5ca Remove memcpy in lossless decoding.
  29.170 -7474d46e Do not use a register array in SSE.
  29.171 -67748b41 Improve latency of FTransform2.
  29.172 -16951b19 Merge "Provide an SSE implementation of ConvertBGRAToRGB"
  29.173 -6540cd0e Provide an SSE implementation of ConvertBGRAToRGB
  29.174 -de568abf Android.mk: use -fvisibility=hidden
  29.175 -3c2a61b0 remove some unneeded casts
  29.176 -9ac063c3 add dsp functions for SmartYUV
  29.177 -22efabdd Merge "smart_yuv: switch to planar instead of packed r/g/b processing"
  29.178 -1d6e7bf3 smart_yuv: switch to planar instead of packed r/g/b processing
  29.179 -0a3838ca fix bug in RefineUsingDistortion()
  29.180 -c0699515 webpmux -duration: set default 'end' value equal to 'start'
  29.181 -83cbfa09 Import: use relative pointer offsets
  29.182 -a1ade40e PreprocessARGB: use relative pointer offsets
  29.183 -fd4d090f ConvertWRGBToYUV: use relative pointer offsets
  29.184 -9daad459 ImportYUVAFromRGBA: use relative pointer offsets
  29.185 -f90c60d1 Merge "add a "-duration duration,start,end" option to webpmux"
  29.186 -3f182d36 add a "-duration duration,start,end" option to webpmux
  29.187 -342e15f0 Import: use relative pointer offsets
  29.188 -1147ab4e PreprocessARGB: use relative pointer offsets
  29.189 -e4cd4daf fix filtering auto-adjustment
  29.190 -e7152856 fix doc and code snippet for WebPINewDecoder() doc
  29.191 -de9fa507 ConvertWRGBToYUV: use relative pointer offsets
  29.192 -deb1b831 ImportYUVAFromRGBA: use relative pointer offsets
  29.193 -c284780f imageio_util: add ImgIoUtilCheckSizeArgumentsOverflow
  29.194 -e375080d gifdec,Remap: avoid out of bounds colormap read
  29.195 -c222a053 additional fix for stride type as size_t
  29.196 -bb233617 fix potential overflow when width * height * 4 >= (1<<32)
  29.197 -883d41fb gif2webp: fix crash with NULL extension data
  29.198 -cac9a36a gifdec,Remap: avoid out of bounds colormap read
  29.199 -4595e01f Revert "gifdec,Remap: avoid out of bounds colormap read"
  29.200 -fb52d443 gifdec: make some constants unsigned
  29.201 -f048d38d gifdec,Remap: avoid out of bounds colormap read
  29.202 -31b1e343 fix SSIM metric ... by ignoring too-dark area
  29.203 -2f51b614 introduce WebPPlaneDistortion to compute plane distortion
  29.204 -0104d730 configure: fix NEON flag detection under gcc 6
  29.205 -265abbe9 Merge "additional fix for stride type as size_t"
  29.206 -f7601aa6 Merge "Introduce a generic WebPGetImageReader(type) function"
  29.207 -ce873320 Introduce a generic WebPGetImageReader(type) function
  29.208 -2a2773ea imageio/*dec,Read*: add input parameter checks
  29.209 -9f5c8eca additional fix for stride type as size_t
  29.210 -4eb5df28 remove unused stride fields from VP8Iterator
  29.211 -11bc423a MIN_LENGTH cleanups.
  29.212 -273d035a Merge "fix a typo in WebPPictureYUVAToARGB's doc"
  29.213 -4db82a17 Merge "fix potential overflow when width * height * 4 >= (1<<32)"
  29.214 -e2affacc fix potential overflow when width * height * 4 >= (1<<32)
  29.215 -dc789ada fix a typo in WebPPictureYUVAToARGB's doc
  29.216 -539f5a68 Fix non-included header in config.c.
  29.217 -aaf2a6a6 systematically call WebPDemuxReleaseIterator() on dec->prev_iter_
  29.218 -20ef9915 Merge "imageio_util: add ImgIoUtilCheckSizeArgumentsOverflow"
  29.219 -bc86b7a8 imageio_util: add ImgIoUtilCheckSizeArgumentsOverflow
  29.220 -806f6279 gif2webp: fix crash with NULL extension data
  29.221 -68ae5b67 Add libwebp/src/mux/animi.h
  29.222 -28ce3043 Remove some errors when compiling the code as C++.
  29.223 -b34abcb8 Favor keeping the areas locally similar in spatial prediction mode selection
  29.224 -ba843a92 fix some SSIM calculations
  29.225 -51b71fd2 Merge "vwebp: ensure setenv() is available in stdlib.h"
  29.226 -fb01743a get_disto: fix the r/g/b order for luma calculation
  29.227 -bfab8947 vwebp: ensure setenv() is available in stdlib.h
  29.228 -9310d192 vwebp: handle window resizing properly
  29.229 -f79450ca Speedup ApplyMap.
  29.230 -cfdda7c6 Merge "prevent 32b overflow for very large canvas_width / height"
  29.231 -e36396ba Merge "get_disto: new option to compute SSIM map and convert to gray"
  29.232 -18a9a0ab Add an API to import a color-mapped image.
  29.233 -30d43706 Speed-up Combined entropy for palettized histograms.
  29.234 -36aa087b get_disto: new option to compute SSIM map and convert to gray
  29.235 -86a84b35 2x faster SSE2 implementation of SSIMGet
  29.236 -b8384b53 lower WEBP_MAX_ALLOCABLE_MEMORY default
  29.237 -1c364400 prevent 32b overflow for very large canvas_width / height
  29.238 -eee0cce1 Merge "Small LZ77 speedups."
  29.239 -5f1caf29 Small LZ77 speedups.
  29.240 -1effde7b fix anim_util.c compilation when HAVE_GIF is not defined.
  29.241 -a2fe9bf4 Speedup TrellisQuantizeBlock().
  29.242 -573cce27 smartYUV improvements
  29.243 -21e7537a  fix infinite loop in case of PARTITION0 overflow
  29.244 -053a1565 Merge "Change the rule of picking UV mode in MBAnalyzeBestUVMode()"
  29.245 -1377ac2e Change the rule of picking UV mode in MBAnalyzeBestUVMode()
  29.246 -7c1fb7d0 fix uint32_t initialization (0. -> 0)
  29.247 -bfff0bf3 speed-up SSIM calculation
  29.248 -64577de8 De-VP8L-ize GetEntropUnrefinedHelper.
  29.249 -a7be7328 Merge "refactor the PSNR / SSIM calculation code"
  29.250 -50c3d7da refactor the PSNR / SSIM calculation code
  29.251 -d6228aed indentation fix after I7055d3ee3bd7ed5e78e94ae82cb858fa7db3ddc0
  29.252 -dd538b19 Remove unused declaration.
  29.253 -6cc48b17 Move some lossless logic out of dsp.
  29.254 -78363e9e Merge "Remove a redundant call to InitLeft() in VP8IteratorReset()"
  29.255 -ffd01929 Refactor VP8IteratorNext().
  29.256 -c4f6d9c9 Remove a redundant call to InitLeft() in VP8IteratorReset()
  29.257 -c27d8210 Merge "smartYUV: simplify main loop"
  29.258 -07795296 smartYUV: simplify main loop
  29.259 -c9b45863 Split off common lossless dsp inline functions.
  29.260 -490ae5b1 smartYUV: improve initial state for faster convergence
  29.261 -894232be smartYUV: fix and simplify the over-zealous stop criterion
  29.262 -8de08483 Remove unused code in webpi.h
  29.263 -41cab7fe imageio/Android.mk: correct imagedec dependencies
  29.264 -82c91c70 Merge "libimageenc.a: extract image-saving code from dwebp"
  29.265 -af1ad3e2 libimageenc.a: extract image-saving code from dwebp
  29.266 -dd7309e3 Merge "doc: use two's complement explicitly for uint8->int8 conversion"
  29.267 -6105777e Merge "add gif2webp to CMake"
  29.268 -13ae011e doc: use two's complement explicitly for uint8->int8 conversion
  29.269 -4bda0cfb add gif2webp to CMake
  29.270 -6029c7fe Merge "remove mention of fragment, frgm, FRGM, etc."
  29.271 -545c147f remove mention of fragment, frgm, FRGM, etc.
  29.272 -5b46f7fc cwebp.1: improve some grammar
  29.273 -9e478f80 dec/vp8l.c: add assertions in EmitRescaledRowsRGBA/YUVA
  29.274 -43bd8958 Make gif transparent color to be transparent black
  29.275 -0887fc2d Merge "get_disto: add a '-o file' option to save a diff map"
  29.276 -0de48e18 get_disto: add a '-o file' option to save a diff map
  29.277 -0a57ad0d cosmetics: WebPSafeAlloc -> WebPSafeMalloc
  29.278 -0a4699bc Merge "WebPPictureDistortion(): free() -> WebPSafeFree()"
  29.279 -29fedbf5 Anim_encoder: correctly handle enc->prev_candidate_undecided_
  29.280 -32dead4e WebPPictureDistortion(): free() -> WebPSafeFree()
  29.281 -85cd5d06 Smarter LZ77 for uniform regions.
  29.282 -6585075f Change PixelsAreSimilar() to handle black pixels correctly.
  29.283 -c0a27fd2 vwebp: Clear previous frame when a key triggers a redraw
  29.284 -57a5e3b6 webp_quality should return '0' in case of success.
  29.285 -7f1b897b Faster stochastic histogram merging.
  29.286 -48c810b8 Merge "remove WEBP_FORCE_ALIGNED and use memcpy() instead."
  29.287 -3884972e remove WEBP_FORCE_ALIGNED and use memcpy() instead.
  29.288 -485cac1a switch libimagedec.a and libimageio_util.a to avoid undefined symbol
  29.289 -005e15b1 Merge "{extras,mux}/Makefile.am: add missing -lm"
  29.290 -6ab496ed fix some 'unsigned integer overflow' warnings in ubsan
  29.291 -8a4ebc6a Revert "fix 'unsigned integer overflow' warnings in ubsan"
  29.292 -9d4f209f Merge changes I25711dd5,I43188fab
  29.293 -e44f5248 fix 'unsigned integer overflow' warnings in ubsan
  29.294 -27b5d991 Fix assertions in WebPRescalerExportRow()
  29.295 -74f6f9e7 Add descriptions of default configuration in help info.
  29.296 -aaf2530c {extras,mux}/Makefile.am: add missing -lm
  29.297 -1269dc7c Refactor VP8LColorCacheContains()
  29.298 -40872fb2 dec_neon,NeedsHev: micro optimization
  29.299 -7b54e26b Add a CMake option for WEBP_SWAP_16BIT_CSP.
  29.300 -d2223d8d Fix missing cpu-features for Android.
  29.301 -bf16a4b4 Merge "cpu.cmake: improve webp_check_compiler_flag output"
  29.302 -ee1057e3 cpu.cmake: improve webp_check_compiler_flag output
  29.303 -b551e587 cosmetics: add {}s on continued control statements
  29.304 -d2e4484e dsp/Makefile.am: put msa source in correct lib
  29.305 -c7f66c82 Merge "utils/thread.c,cosmetics: join a few lines"
  29.306 -98d8f295 Merge "examples/Makefile.am,cosmetics: sort binary targets"
  29.307 -39f4ffbc utils/thread.c,cosmetics: join a few lines
  29.308 -a86ce2b1 Merge "extras/Makefile.am: don't install libwebpextras"
  29.309 -6fa9fe24 extras/Makefile.am: don't install libwebpextras
  29.310 -0b2c58a9 Fix an unsigned integer overflow error in enc/cost.h
  29.311 -d7ce4a2e examples/Makefile.am,cosmetics: sort binary targets
  29.312 -386e4ba2 Reset segment id if we decide not to update segment map
  29.313 -7b87e848 Merge "Add MSA optimized YUV to RGB upsampling functions"
  29.314 -d3ddacb6 Add MSA optimized YUV to RGB upsampling functions
  29.315 -eb98d8d8 webp_quality: detect lossless format and features
  29.316 -ebee57f4 move imageio/example_util.[hc] (back to) examples/
  29.317 -99542bbf webpdec: s/ExUtil//
  29.318 -da573cf4 imageio_util: s/ExUtil/ImgIoUtil/
  29.319 -bdda5bd4 split example_util.h
  29.320 -15ed462b .gitignore: add extras/{get_disto,webp_quality}
  29.321 -7be57489 Merge "VP8EstimateQuality(): roughty estimate webp bitstream quality factor"
  29.322 -57020525 Makefile.vc: add missing imageio target
  29.323 -e8ab6a82 VP8EstimateQuality(): roughty estimate webp bitstream quality factor
  29.324 -fee7b3d6 Merge "'extras/get_disto' example: compute PSNR between two files"
  29.325 -1e7d4401 'extras/get_disto' example: compute PSNR between two files
  29.326 -4cecab63 pngdec.c,jpegdec.[hc]: remove unnecessary includes
  29.327 -259f0434 makefile.unix: normalize image decode lib name
  29.328 -ed34c39b fix: examples/libexample_dec.a => imageio/libexample_dec.a
  29.329 -33d8d0d4 Merge "move examples/{example_util,image_dec} to imageio/"
  29.330 -c960b82e Merge "extras.h: correct include guard"
  29.331 -fe3cd28a Merge ".gitignore: add .gradle, /build"
  29.332 -45fbeba5 Merge "Do token recording and counting in a single loop"
  29.333 -4f33c820 .gitignore: add .gradle, /build
  29.334 -c379b55a move examples/{example_util,image_dec} to imageio/
  29.335 -5108d9aa extras.h: correct include guard
  29.336 -ad497fbc move src/extras to the top-level
  29.337 -0c0fb832 Do token recording and counting in a single loop
  29.338 -9ac74f92 Add MSA optimized rescaling functions
  29.339 -cb19dbc1 Add MSA optimized color transform functions
  29.340 -3f4042b5 WebPAnimEncoder: If 'minimize_size' and 'allow_mixed' on, try lossy + lossless.
  29.341 -5e2eb89e cosmetics,dsp/*msa.c: associate '*' with the type
  29.342 -5b60db5c FastMBAnalyze() for quick i16/i4 decision
  29.343 -567e6977 Add MSA optimized CollectHistogram function
  29.344 -c54ab8dd Add MSA optimized quantization functions
  29.345 -ec6f68c5 Merge "Remove QuantizeBlockWHT() in enc.c"
  29.346 -2a5c417c Apply the RLE heuristic to LZ77.
  29.347 -91b59e88 Remove QuantizeBlockWHT() in enc.c
  29.348 -fe572737 Add MSA optimized SSE functions
  29.349 -6b53ca87 cosmetics,(dec|enc)_sse2.c: fix indent
  29.350 -b15d00d9 Merge "Add MSA optimized encoder IntraChromaPreds function"
  29.351 -afe3cec8 Add MSA optimized encoder IntraChromaPreds function
  29.352 -fc8cad9f reduce the number of malloc/free cycles in huffman.c
  29.353 -7b4b05e0 Add MSA optimized encoder Intra16Preds function
  29.354 -c18787a0 Add MSA optimized encoder Intra4Preds function
  29.355 -479d1908 webpmux: Also print compression info per frame.
  29.356 -a80e8cfd Provide support for CMake on Android studio 2.2.
  29.357 -6c628410 Split the main CMake file.
  29.358 -bbb6ecd9 Merge "Add MSA optimized distortion functions"
  29.359 -7915396f Add MSA optimized distortion functions
  29.360 -652e944f Merge "build.gradle: remove tab"
  29.361 -c0991a14 io,EmitRescaledAlphaYUV: factor out a common expr
  29.362 -48bf5ed1 build.gradle: remove tab
  29.363 -bfef6c9f Merge tag 'v0.5.1'
  29.364 -3d97bb75 update ChangeLog (tag: v0.5.1, origin/0.5.1, 0.5.1)
  29.365 -deb54d91 Clarify the expected 'config' lifespan in WebPIDecode()
  29.366 -435308e0 Add MSA optimized encoder transform functions
  29.367 -dce64bfa Add MSA optimized alpha filter functions
  29.368 -429120d0 Add MSA optimized color transform functions
  29.369 -c7e2d245 update ChangeLog (tag: v0.5.1-rc5)
  29.370 -55b2fede normalize the macros' "do {...} while (0)" constructs
  29.371 -701c772e Add MSA optimized colorspace conversion functions
  29.372 -c7eb06f7 Fix corner case in CostManagerInit.
  29.373 -f918cb10 fix rescaling bug: alpha plane wasn't filled with 0xff
  29.374 -ab7937a5 gif2webp: normalize the number of .'s in the help message
  29.375 -3cdec847 vwebp: normalize the number of .'s in the help message
  29.376 -bdf6241e cwebp: normalize the number of .'s in the help message
  29.377 -06a38c7b fix rescaling bug: alpha plane wasn't filled with 0xff
  29.378 -319e37be Improve lossless compression.
  29.379 -6a197937 Add MSA optimized intra pred chroma functions
  29.380 -447adbce 'our bug tracker' -> 'the bug tracker'
  29.381 -97b9e644 normalize the number of .'s in the help message
  29.382 -293d786f Added MSA optimized intra prediction 16x16 functions
  29.383 -0afa0ce2 Added MSA optimized intra prediction 4x4 functions
  29.384 -a6621bac Added MSA optimized simple edge filtering functions
  29.385 -bb50bf42 pngdec,ReadFunc: throw an error on invalid read
  29.386 -38063af1 decode.h,WebPGetInfo: normalize function comment
  29.387 -1ebf193c Added MSA optimized chroma edge filtering functions
  29.388 -9ad2352d Merge "Added MSA optimized edge filtering functions"
  29.389 -60751096 Added MSA optimized edge filtering functions
  29.390 -9e8e1b7b Inline GetResidual for speed.
  29.391 -7d58d1b7 Speed-up uniform-region processing.
  29.392 -8ec7032b simplify HistogramCombineEntropyBin()
  29.393 -23e29cb1 Merge "Fix a boundary case in BackwardReferencesHashChainDistanceOnly." into 0.5.1
  29.394 -472a049b remove bin_map[] allocation altogether
  29.395 -0bb23b2c free -> WebPSafeFree()
  29.396 -a977b4b5 Merge "rewrite the bin_map clustering to use less memory"
  29.397 -3591ba66 rewrite the bin_map clustering to use less memory
  29.398 -e6ac450c utils.[hc]: s/MAX_COLOR_COUNT/MAX_PALETTE_SIZE/
  29.399 -e7b91772 Merge "DecodeImageData(): change the incorrect assert" into 0.5.1
  29.400 -2abfa54f DecodeImageData(): change the incorrect assert
  29.401 -5a48fcd8 Merge "configure: test for -Wfloat-conversion"
  29.402 -0174d18d Fix a boundary case in BackwardReferencesHashChainDistanceOnly.
  29.403 -6a9c262a Merge "Added MSA optimized transform functions"
  29.404 -cfbcc5ec Make sure to consider small distances in LZ77.
  29.405 -5e60c42a Added MSA optimized transform functions
  29.406 -3dc28d76 configure: test for -Wfloat-conversion
  29.407 -f2a0946a add some asserts to delimit the perimeter of CostManager's operation
  29.408 -9a583c66 fix invalid-write bug for alpha-decoding
  29.409 -f66512db make gradlew executable
  29.410 -6fda58f1 backward_references: quiet double->int warning
  29.411 -a48cc9d2 Merge "Fix a compression regression for images with long uniform regions." into 0.5.1
  29.412 -cc2720c1 Merge "Revert an LZ77 boundary constant." into 0.5.1
  29.413 -059aab4f Fix a compression regression for images with long uniform regions.
  29.414 -b0c7e49e Check more backward matches with higher quality.
  29.415 -a3611513 Revert an LZ77 boundary constant.
  29.416 -8190374c README: fix typo
  29.417 -7551db44 update NEWS
  29.418 -0fb2269c bump version to 0.5.1
  29.419 -f4537610 update AUTHORS & .mailmap
  29.420 -3259571e Refactor GetColorPalette method.
  29.421 -1df5e260 avoid using tmp histogram in PreparePair()
  29.422 -7685123a fix comment typos
  29.423 -a246b921 Speedup backward references.
  29.424 -76d73f18 Merge "CostManager: introduce a free-list of ~10 intervals"
  29.425 -eab39d81 CostManager: introduce a free-list of ~10 intervals
  29.426 -4c59aac0 Merge "mips msa webp configuration"
  29.427 -043c33f1 Merge "Improve speed and compression in backward reference for lossless."
  29.428 -71be9b8c Merge "clarify variable names in HistogramRemap()"
  29.429 -0ba7fd70 Improve speed and compression in backward reference for lossless.
  29.430 -0481d42a CostManager: cache one interval and re-use it when possible
  29.431 -41b7e6b5 Merge "histogram: fix bin calculation"
  29.432 -96c3d624 histogram: fix bin calculation
  29.433 -fe9e31ef clarify variable names in HistogramRemap()
  29.434 -ce3c8247 disable near-lossless quantization if palette is used
  29.435 -e11da081 mips msa webp configuration
  29.436 -5f8f998d mux: Presence of unknown chunks should trigger VP8X chunk output.
  29.437 -cadec0b1 Merge "Sync mips32 and dsp_r2 YUV->RGB code with C verison"
  29.438 -d9637758 Compute the hash chain once and for all for lossless compression.
  29.439 -50a48665 Sync mips32 and dsp_r2 YUV->RGB code with C verison
  29.440 -eee788e2 Merge "introduce a common signature for all image reader function"
  29.441 -d77b877c introduce a common signature for all image reader function
  29.442 -ca8d9519 remove some obsolete TODOs
  29.443 -ae2a7222 collect all decoding utilities from examples/ in libexampledec.a
  29.444 -0b8ae852 Merge "Move DitherCombine8x8 to dsp/dec.c"
  29.445 -77cad885 Merge "ReadWebP: avoid conversion to ARGB if final format is YUVA"
  29.446 -ab8d6698 ReadWebP: avoid conversion to ARGB if final format is YUVA
  29.447 -f8b7ce9e Merge "test pointer to NULL explicitly"
  29.448 -5df6f214 test pointer to NULL explicitly
  29.449 -77f21c9c Move DitherCombine8x8 to dsp/dec.c
  29.450 -c9e6d865 Add gradle support
  29.451 -c65f41e8 Revert "Add gradle support"
  29.452 -bf731ede Add gradle support
  29.453 -08333b85 WebPAnimEncoder: Detect when canvas is modified, restore only when needed.
  29.454 -0209d7e6 Merge "speed-up MapToPalette() with binary search"
  29.455 -fdd29a3d speed-up MapToPalette() with binary search
  29.456 -cf4a651b Revert "Refactor GetColorPalette method."
  29.457 -0a27aca3 Merge changes Idfa8ce83,I19adc9c4
  29.458 -f25c4406 WebPAnimEncoder: Restore original canvas between multiple encodes.
  29.459 -169004b1 Refactor GetColorPalette method.
  29.460 -576362ab VP8LDoFillBitWindow: support big-endian in fast path
  29.461 -ac49e4e4 bit_reader.c: s/VP8L_USE_UNALIGNED_LOAD/VP8L_USE_FAST_LOAD/
  29.462 -d39ceb58 VP8LDoFillBitWindow: remove stale TODO
  29.463 -2ec2de14 Merge "Speed-up BackwardReferencesHashChainDistanceOnly."
  29.464 -3e023c17 Speed-up BackwardReferencesHashChainDistanceOnly.
  29.465 -f2e1efbe Improve near lossless compression when a prediction filter is used.
  29.466 -e15afbce dsp.h: fix ubsan macro name
  29.467 -e53c9ccb dsp.h: add WEBP_UBSAN_IGNORE_UNSIGNED_OVERFLOW
  29.468 -af81fdb7 utils.h: quiet -fsanitize=undefined warnings
  29.469 -ea0be354 dsp.h: remove utils.h include
  29.470 -cd276aec utils/*.c: ../utils/utils.h -> ./utils.h
  29.471 -c8927131 utils/Makefile.am: add some missing headers
  29.472 -ea24e026 Merge "dsp.h: add WEBP_UBSAN_IGNORE_UNDEF"
  29.473 -369e264e dsp.h: add WEBP_UBSAN_IGNORE_UNDEF
  29.474 -0d020a78 Merge "add runtime NEON detection"
  29.475 -5ee2136a Merge "add VP8LAddPixels() to lossless.h"
  29.476 -47435a61 add VP8LAddPixels() to lossless.h
  29.477 -8fa6ac68 remove two ubsan warnings
  29.478 -74fb56fb add runtime NEON detection
  29.479 -4154a839 MIPS update to new Unfilter API
  29.480 -c80b9fc8 Merge "cherry-pick decoder fix for 64-bit android devices"
  29.481 -6235147e cherry-pick decoder fix for 64-bit android devices
  29.482 -d41b8c43 configure: test for -Wformat-* w/-Wformat present
  29.483 -5f95589f Fix WEBP_ALIGN in case the argument is a pointer to a type larger than a byte.
  29.484 -2309fd5c replace num_parts_ by num_parts_minus_one_ (unsigned)
  29.485 -9629f4bc SimplifySegments: quiet -Warray-bounds warning
  29.486 -de47492e Merge "update the Unfilter API in dsp to process one row independently"
  29.487 -2102ccd0 update the Unfilter API in dsp to process one row independently
  29.488 -e3912d56 WebPAnimEncoder: Restore canvas before evaluating blending possibility.
  29.489 -6e12e1e3 WebPAnimEncoder: Fix for single-frame optimization.
  29.490 -602f344a Merge changes I1d03acac,Ifcb64219
  29.491 -95ecccf6 only apply color-mapping for alpha on the cropped area
  29.492 -47dd0708 anim_diff: Add an experimental option for max inter-frame diff.
  29.493 -aa809cfe only allocate alpha_plane_ up to crop_bottom row
  29.494 -31f2b8d8 WebPAnimEncoder: FlattenSimilarPixels(): look for similar
  29.495 -774dfbdc perform alpha filtering within the decoding loop
  29.496 -a4cae68d lossless decoding: only process decoded row up to last_row
  29.497 -238cdcdb Only call WebPDequantizeLevels() on cropped area
  29.498 -cf6c713a alpha: preparatory cleanup
  29.499 -b95ac0a2 Merge "VP8GetHeaders(): initialize VP8Io with sane value for crop/scale dimensions"
  29.500 -89231394 VP8GetHeaders(): initialize VP8Io with sane value for crop/scale dimensions
  29.501 -5828e199 use_8b_decode -> use_8b_decode_
  29.502 -8dca0247 fix bug in alpha.c that was triggering a memory error in incremental mode
  29.503 -9a950c53 WebPAnimEncoder: Disable filtering when blending is used with lossy encoding.
  29.504 -eb423903 WebPAnimEncoder: choose max diff for framerect based on quality.
  29.505 -ff0a94be WebPAnimEncoder lossy: ignore small pixel differences for frame rectangles.
  29.506 -f8040084 gif2webp: Remove the 'prev_to_prev_canvas' buffer.
  29.507 -6d8c07d3 Merge "WebPDequantizeLevels(): use stride in CountLevels()"
  29.508 -d96fe5e0 WebPDequantizeLevels(): use stride in CountLevels()
  29.509 -ec1b2407 WebPPictureImport*: check output pointer
  29.510 -c0768769 Merge "Revert "Re-enable encoding of alpha plane with color cache for next release.""
  29.511 -41f14bcb WebPPictureImport*: check src pointer
  29.512 -64eed387 Pass stride parameter to WebPDequantizeLevels()
  29.513 -97934e24 Revert "Re-enable encoding of alpha plane with color cache for next release."
  29.514 -e88c4ca0 fix -m 2 mode-cost evaluation (causing partition0 overflow)
  29.515 -4562e83d Merge "add extra meaning to WebPDecBuffer::is_external_memory"
  29.516 -abdb109f add extra meaning to WebPDecBuffer::is_external_memory
  29.517 -875aec70 enc_neon,cosmetics: break long comment
  29.518 -71e856cf GetMBSSIM,cosmetics: fix alignment
  29.519 -a90edffb fix missing 'extern' for SSIM function in dsp/
  29.520 -423ecaf4 move some SSIM-accumulation function for dsp/
  29.521 -f08e6624 Merge "Fix FindClosestDiscretized in near lossless:"
  29.522 -0d40cc5e enc_neon,Disto4x4: remove an unnecessary transpose
  29.523 -e8feb20e Fix FindClosestDiscretized in near lossless:
  29.524 -82006430 anim_util: quiet static analysis warning
  29.525 -a6f23c49 Merge "AnimEncoder: Support progress hook and user data."
  29.526 -a5193774 Merge "Near lossless feature: fix some comments."
  29.527 -da98d31c AnimEncoder: Support progress hook and user data.
  29.528 -33357131 Near lossless feature: fix some comments.
  29.529 -0beed01a cosmetics: fix indent after 2f5e898
  29.530 -6753f35c Merge "FTransformWHT optimization."
  29.531 -6583bb1a Improve SSE4.1 implementation of TTransform.
  29.532 -7561d0c3 FTransformWHT optimization.
  29.533 -7ccdb734 fix indentation after patch #328220
  29.534 -6ec0d2a9 clarify the logic of the error path when decoding fails.
  29.535 -8aa352b2 Merge "Remove an unnecessary transposition in TTransform."
  29.536 -db860884 Merge "remove useless #include"
  29.537 -9960c316 Remove an unnecessary transposition in TTransform.
  29.538 -6e36b511 Small speedup in FTransform.
  29.539 -9dbd4aad Merge "fix C and SIMD flags completion."
  29.540 -e60853ea Add missing common_sse2.h file to makefile.unix
  29.541 -696eb2b0 fix C and SIMD flags completion.
  29.542 -2b4fe33e Merge "fix multiple allocation for transform buffer"
  29.543 -2f5e8986 fix multiple allocation for transform buffer
  29.544 -bf2b4f11 Regroup common SSE code + optimization.
  29.545 -4ed650a1 force "-pass 6" if -psnr or -size is used but -pass isn't.
  29.546 -3ef1ce98 yuv_sse2: fix -Wconstant-conversion warning
  29.547 -a7a03e9f Merge changes I4852d18f,I51ccb85d
  29.548 -5e122bd6 gif2webp: set enc_options.verbose = 0 w/-quiet
  29.549 -ab3c2583 anim_encode,DefaultEncoderOptions: init verbose
  29.550 -8f0dee77 Merge "configure: fix builtin detection w/-Werror"
  29.551 -4a7b85a9 cmake: fix builtin detection w/-Werror
  29.552 -b74657fb configure: fix builtin detection w/-Werror
  29.553 -3661b980 Add a CMakeLists.txt
  29.554 -75f4af4d remove useless #include
  29.555 -6c1d7631 avoid Yoda style for comparison
  29.556 -8ce975ac SSE optimization for vector mismatch.
  29.557 -7db53831 Merge tag 'v0.5.0'
  29.558 -37f04949 update ChangeLog (tag: v0.5.0-rc1, tag: v0.5.0, origin/0.5.0, 0.5.0)
  29.559 -7e7b6ccc faster rgb565/rgb4444/argb output
  29.560 -4c7f565f update NEWS
  29.561 -1f62b6b2 update AUTHORS
  29.562 -e224fdc8 update mailmap
  29.563 -71100500 bump version to 0.5.0
  29.564 -230a685e README: update help text, repo link
  29.565 -d48e427b Merge "demux: accept raw bitstreams"
  29.566 -99a01f4f Merge "Unify some entropy functions."
  29.567 -4b025f10 Merge "configure: disable asserts by default"
  29.568 -92cbddf8 Merge "fix PrintBlockInfo()"
  29.569 -ca509a33 Unify some entropy functions.
  29.570 -367bf903 fix PrintBlockInfo()
  29.571 -b0547ff0 move back common constants for lossless_enc*.c into the .h
  29.572 -fb4c7832 lossless: simpler alpha cleanup preprocessing
  29.573 -ba7f4b68 Merge "anim_diff: add brief description of options"
  29.574 -47ddd5a4 Move some codec logic out of ./dsp .
  29.575 -b4106c44 anim_diff: add brief description of options
  29.576 -357f455d yuv_sse2: fix 32-bit visual studio build
  29.577 -b9d80fa4 configure: disable asserts by default
  29.578 -7badd3da cosmetic fix: sizeof(type) -> sizeof(*var)
  29.579 -80ce27d3 Speed up 24-bit packing / unpacking in YUV / RGB conversions.
  29.580 -68eebcb0 remove a TODO about rotation
  29.581 -2dee2966 remove few obsolete TODO about aligned loads in SSE2
  29.582 -e0c0bb34 remove TODO about unused ref_lf_delta[]
  29.583 -9cf1cc2b remove few TODO:   * 256 -> RD_DISTO_MULT   * don't use TDisto for UV mode picking
  29.584 -79189645 Merge changes from topic 'demux-fragment-cleanup'
  29.585 -47399f92 demux: remove GetFragment()
  29.586 -d3cfb79a demux: remove dead fragment related TODO
  29.587 -ab714b8a demux, Frame: remove is_fragment_ field
  29.588 -b105921c yuv_sse2, cosmetics: fix indent
  29.589 -466c92e8 demux,WebPIterator: remove fragment_num/num_fragments
  29.590 -11714ff1 demux: remove WebPDemuxSelectFragment
  29.591 -c0f7cc47 fix for bug #280: UMR in next->bits
  29.592 -578beeb8 Merge "enc/Makefile.am: add missing headers"
  29.593 -1a819f00 makefile.unix: make visibility=hidden the default
  29.594 -d4f9c2ef enc/Makefile.am: add missing headers
  29.595 -846caff4 configure: check for -fvisibility=hidden
  29.596 -3f3ea2c5 demux: accept raw bitstreams
  29.597 -d6dad5d0 man cwebp: add precision about exactness of the 'lossless' mode
  29.598 -46bb1e34 Merge "gifdec: remove utils.h include"
  29.599 -2b882e94 Merge "Makefile.vc: define WEBP_HAVE_GIF for gifdec.c"
  29.600 -892b9238 Merge "man/*, AUTHORS: clarify origin of the tool"
  29.601 -e5687a18 Merge "fix optimized build with -mcmodel=medium"
  29.602 -e56e6859 Makefile.vc: define WEBP_HAVE_GIF for gifdec.c
  29.603 -4077d944 gifdec: remove utils.h include
  29.604 -b5e30dac man/*, AUTHORS: clarify origin of the tool
  29.605 -b275e598 fix optimized build with -mcmodel=medium
  29.606 -64da45a9 cosmetics, cwebp: fix indent
  29.607 -038a060d Merge "add disto-based refinement for UV mode (if method = 1 or 2)"
  29.608 -2835089d Provide an SSE2 implementation of CombinedShannonEntropy.
  29.609 -e6c93519 add disto-based refinement for UV mode (if method = 1 or 2)
  29.610 -04507dc9 Merge "fix undefined behaviour during shift, using a cast"
  29.611 -793c5261 Merge "wicdec: add support for reading from stdin"
  29.612 -d3d16397 Optimize the heap usage in HistogramCombineGreedy.
  29.613 -202a710b fix undefined behaviour during shift, using a cast
  29.614 -14d27a46 improve method #2 by merging DistoRefine() and  SimpleQuantize()
  29.615 -cb1ce996 Merge "10% faster table-less SSE2/NEON version of YUV->RGB conversion"
  29.616 -ac761a37 10% faster table-less SSE2/NEON version of YUV->RGB conversion
  29.617 -79fcf29a wicdec: add support for reading from stdin
  29.618 -015f173f Merge "cwebp: add support for stdin input"
  29.619 -a9947c32 cwebp: add support for stdin input
  29.620 -7eb01ff3 Merge "Improved alpha cleanup for the webp encoder when prediction transform is used."
  29.621 -fb8c9106 Merge "introduce WebPMemToUint32 and WebPUint32ToMem for memory access"
  29.622 -bd91af20 Merge "bit_reader: remove aarch64 BITS TODO"
  29.623 -6c702b81 Speed up hash chain initialization using memset.
  29.624 -4c60f63c make ReadPNG and ReadJPEG take a filename instead of a FILE
  29.625 -464ed10f bit_reader: remove aarch64 BITS TODO
  29.626 -d478e589 Merge "configure: update issue tracker"
  29.627 -69381113 Improved alpha cleanup for the webp encoder when prediction transform is used.
  29.628 -2c08aac8 introduce WebPMemToUint32 and WebPUint32ToMem for memory access
  29.629 -010ca3d1 Fix FindMatchLength with non-aligned buffers.
  29.630 -a90e1e3f README: add prerequisites for an autoconf build
  29.631 -458f0866 configure: update issue tracker
  29.632 -33914595 vwebp: work around the transparent background with GLUT bug
  29.633 -e4a7eed4 cosmetics: fix indent
  29.634 -08375129 Merge "Make a separate case for low_effort in CopyImageWithPrediction"
  29.635 -aa2eb2d4 Merge "cosmetics: fix indent"
  29.636 -b7551e90 cosmetics: fix indent
  29.637 -5bda52d4 Make a separate case for low_effort in CopyImageWithPrediction
  29.638 -66fa598a Merge "configure: fix intrinsics build w/older gcc"
  29.639 -5ae220be backward_references.c: Fixed compiler warning
  29.640 -1556da09 Merge "configure: restore 2 warnings"
  29.641 -71a17e58 configure: restore 2 warnings
  29.642 -9eeabc07 configure: fix intrinsics build w/older gcc
  29.643 -363babe2 Merge "fix some warning about unaligned 32b reads"
  29.644 -a1411782 Optimization in hash chain comparison for 64 bit Arrays were compared 32 bits at a time, it is now done 64 bits at a time. Overall encoding speed-up is only of 0.2% on @skal's small PNG corpus. It is of 3% on my initial 1.3 Mp desktop screenshot image.
  29.645 -829bd141 Combine Huffman cost and bit entropy into one loop
  29.646 -a7a954c8 Merge "lossless: make prediction in encoder work per scanline"
  29.647 -61b605b4 Merge "fix of undefined multiply (int32 overflow)"
  29.648 -239421c5 lossless: make prediction in encoder work per scanline
  29.649 -f5ca40e0 fix of undefined multiply (int32 overflow)
  29.650 -5cd2ef4c Merge changes from topic 'win-threading-compat'
  29.651 -76ce9187 Makefile.vc: enable WEBP_USE_THREAD for windows phone
  29.652 -d2afe974 thread: use CreateThread for windows phone
  29.653 -0fd0e12b thread: use WaitForSingleObjectEx if available
  29.654 -63fadc9f thread: use InitializeCriticalSectionEx if available
  29.655 -110ad583 thread: use native windows cond var if available
  29.656 -912c9fdf dec/webp: use GetLE(24|32) from utils
  29.657 -f1694481 utils/GetLE32: correct uint32 promotion
  29.658 -158763de Merge "always call WebPInitSamplers(), don't try to be smart"
  29.659 -3770f3bb Merge "cleanup the YFIX/TFIX difference by removing some code and #define"
  29.660 -a40f60a9 Merge "3% speed improvement for lossless webp encoder for low effort mode:"
  29.661 -ed1c2bc6 always call WebPInitSamplers(), don't try to be smart
  29.662 -b8c44f1a 3% speed improvement for lossless webp encoder for low effort mode:
  29.663 -997e1038 cleanup the YFIX/TFIX difference by removing some code and #define
  29.664 -d73d1c8b Merge "Make discarding invisible RGB values (cleanup alpha) the default."
  29.665 -1f9be97c Make discarding invisible RGB values (cleanup alpha) the default.
  29.666 -f240117b Make dwebp listen more to the -quiet flag
  29.667 -b37b0179 fix for issue #275: don't compare to out-of-bound pointers
  29.668 -21735e06 speed-up trivial one-symbol decoding case for lossless
  29.669 -397863bd Refactor CopyPlane() and CopyPixels() methods: put them in utils.
  29.670 -6ecd72f8 Re-enable encoding of alpha plane with color cache for next release.
  29.671 -1f7148a4 Merge "remove unused fields from WebPDecoderOptions and WebPBitstreamFeatures"
  29.672 -6ae395fa Merge "use ExReadFile() for ReadYUV()"
  29.673 -8076a00e gitignore list: add anim_diff.
  29.674 -1c1702d8 use ExReadFile() for ReadYUV()
  29.675 -775d3a37 remove unused fields from WebPDecoderOptions and WebPBitstreamFeatures
  29.676 -c13245c7 AnimEncoder: Add a GetError() method.
  29.677 -688b265d AnimDecoder API: Add a GetDemuxer() method.
  29.678 -1aa4e3d6 WebPAnimDecoder: add an option to enable multi-threaded decoding.
  29.679 -3584abca AnimDecoder: option to decode to common color modes.
  29.680 -afd5a62c Merge "mux.h does NOT need to include encode.h"
  29.681 -8550d443 Merge "migrate anim_diff tool from C++ to C89"
  29.682 -96201e50 migrate anim_diff tool from C++ to C89
  29.683 -945cfa3b mux.h does NOT need to include encode.h
  29.684 -8da07e8d Merge "~2x faster SSE2 RGB24toY, BGR24toY, ARGBToY|UV"
  29.685 -bfd3fc02 ~2x faster SSE2 RGB24toY, BGR24toY, ARGBToY|UV
  29.686 -02432427 man/cwebp.1, cosmetics: escape '-'s
  29.687 -96f5b423 man/cwebp: group lossy-only options
  29.688 -52fdbdfe extract some RGB24 to Luma conversion function from enc/ to dsp/
  29.689 -ab8c2300 add missing \n
  29.690 -8304179a sync NEWS with 0.4.4
  29.691 -5bd04a08 sync versions with 0.4.4
  29.692 -8f1fcc15 Merge "Move ARGB->YUV functions from dec/vp8l.c to dsp/yuv.c"
  29.693 -25bf2ce5 fix some warning about unaligned 32b reads
  29.694 -922268fd s/TIFF/WebP
  29.695 -fa8927ef Move ARGB->YUV functions from dec/vp8l.c to dsp/yuv.c
  29.696 -9b373598 Merge "for ReadXXXX() image-readers, use the value of pic->use_argb"
  29.697 -f7c507a5 Merge "remove unnecessary #include "yuv.h""
  29.698 -7861578b for ReadXXXX() image-readers, use the value of pic->use_argb
  29.699 -14e4043b remove unnecessary #include "yuv.h"
  29.700 -469ba2cd vwebp: fix incorrect clipping w/NO_BLEND
  29.701 -4b9186b2 update issue tracker url
  29.702 -d64d376c change WEBP_ALIGN_CST value to 31
  29.703 -f717b828 vp8l.c, cosmetics: fix indent after 95509f9
  29.704 -927ccdc4 Merge "fix alignment of allocated memory in AllocateTransformBuffer"
  29.705 -fea94b2b fix alignment of allocated memory in AllocateTransformBuffer
  29.706 -5aa8d61f Merge "MIPS: rescaler code synced with C implementation"
  29.707 -e7fb267d MIPS: rescaler code synced with C implementation
  29.708 -93c86ed5 Merge "format_constants.h: MKFOURCC, correct cast"
  29.709 -5d791d26 format_constants.h: MKFOURCC, correct cast
  29.710 -65726cd3 dsp/lossless: Average2, make a constant unsigned
  29.711 -d26d9def Use __has_builtin to check clang support
  29.712 -12ec204e moved ALIGN_CST into util/utils.h and renamed WEBP_ALIGN_xxx
  29.713 -a2640838 Merge "rescaler: ~20% faster SSE2 implementation for lossless ImportRowExpand"
  29.714 -3fb600d5 Merge "wicdec: fix alpha detection w/64bpp BGRA/RGBA"
  29.715 -67c547fd rescaler: ~20% faster SSE2 implementation for lossless ImportRowExpand
  29.716 -99e3f812 Merge "large re-organization of the delta-palettization code"
  29.717 -95509f99 large re-organization of the delta-palettization code
  29.718 -74fb458b fix for weird msvc warning message
  29.719 -ae49ad86 Merge "SSE2 implementation of ImportRowShrink"
  29.720 -932fd4df SSE2 implementation of ImportRowShrink
  29.721 -badfcbaa wicdec: fix alpha detection w/64bpp BGRA/RGBA
  29.722 -35cafa6c Merge "iosbuild: fix linking with Xcode 7 / iOS SDK 9"
  29.723 -b0c9d8af label rename: NO_CHANGE -> NoChange
  29.724 -b4e731cd neon-implementation for rescaler code
  29.725 -db1321a6 iosbuild: fix linking with Xcode 7 / iOS SDK 9
  29.726 -6dfa5e3e rescaler: better handling of the fxy_scale=0 special case.
  29.727 -55c05293 Revert "rescaler: better handling of the fxy_scale=0 special case."
  29.728 -9f226bf8 rescaler: better handling of the fxy_scale=0 special case.
  29.729 -f7b8f907 delta_palettization.*: add copyright
  29.730 -c1e1b710 Changed delta palette to compress better
  29.731 -0dd28267 Merge "Add delta_palettization feature to WebP"
  29.732 -48f66b66 Add delta_palettization feature to WebP
  29.733 -27933e2a anim_encoder: drop a frame if it has same pixels as the prev frame.
  29.734 -df9f6ec8 Merge "webpmux/DisplayInfo: send non-error output to stdout"
  29.735 -8af4993b Merge "rescaler_mips_dsp_r2: cosmetics, fix indent"
  29.736 -2b9d2495 Merge "rescaler: cosmetics, join two lines"
  29.737 -cc020a8c webpmux/DisplayInfo: send non-error output to stdout
  29.738 -a288e746 configure: add -Wshorten-64-to-32
  29.739 -c4c3cf2d pngdec: fix type conversion warnings
  29.740 -bef8e97d webpmux: fix type conversion warning
  29.741 -5a84460d rescaler_mips_dsp_r2: cosmetics, fix indent
  29.742 -acde0aae rescaler: cosmetics, join two lines
  29.743 -306ce4fd rescaler: move the 1x1 or 2x1 handling one level up
  29.744 -cced974b remove _mm_set_epi64x(), which is too specific
  29.745 -56668c9f fix warnings about uint64_t -> uint32_t conversion
  29.746 -76a7dc39 rescaler: add some SSE2 code
  29.747 -1df1d0ee rescaler: harmonize function protos
  29.748 -9ba1894b rescaler: simplify ImportRow logic
  29.749 -5ff0079e fix rescaler vertical interpolation
  29.750 -cd82440e VP8LAllocateHistogramSet: align histogram[] entries
  29.751 -a406b1dd Merge "fix memory over-allocation in lossless rescaler init"
  29.752 -0fde33e3 add missing const in VP8InitFrame signature
  29.753 -ac7d5e8d fix memory over-allocation in lossless rescaler init
  29.754 -017f8ccc Loosen the buffer size checks for Y/U/V/A too.
  29.755 -15ca5014 loosen the padding check on buffer size
  29.756 -d623a870 dec_neon: add whitespace around stringizing operator
  29.757 -29377d55 dsp/mips: cosmetics: add whitespace around XSTR macro
  29.758 -eebaf97f dsp/mips: add whitespace around stringizing operator
  29.759 -d39dc8f3 Create a WebPAnimDecoder API.
  29.760 -03fb7522 gif2webp: print output file size
  29.761 -14efabbf Android: limit use of cpufeatures
  29.762 -7b83adbe preparatory cosmetics for Rescaler code fix and clean-up
  29.763 -77fb41c2 dec/vp8l/DecodeAlphaData: remove redundant cast
  29.764 -90fcfcd9 Insert less hash chain entries from the beginnings of long copies.
  29.765 -bd55604d SSE2: add yuv444 converters, re-using yuv_sse2.c
  29.766 -41a5d99d add a -quiet option to 'dwebp'
  29.767 -80ab3edb Merge "README: update dwebp help output after 1e595fe"
  29.768 -32b71b2e README: update dwebp help output after 1e595fe
  29.769 -3ec11827 use the DispatchAlpha() call from dsp
  29.770 -c5f00621 incorporate bzero() into WebPRescalerInit() instead of call site
  29.771 -3ebcdd41 remove duplicate "#include <stdlib.h>"
  29.772 -1e595fe1 dwebp: add -resize as a synonym for -scale
  29.773 -24a96932 dec: allow 0 as a scaling dimension
  29.774 -b9187242 utils/rescaler: add WebPRescalerGetScaledDimensions
  29.775 -923e8eda Merge "update NEWS"
  29.776 -020fd099 Merge "WebPPictureDistortion: support ARGB format for 'pic' when computing distortion."
  29.777 -6a5292f6 update NEWS
  29.778 -56a2e9f5 WebPPictureDistortion: support ARGB format for 'pic' when computing distortion.
  29.779 -0ae582e4 configure: test and add -Wunreachable-code
  29.780 -c2f9dc06 bit_writer: convert VP8L macro values to immediates
  29.781 -b969f888 Reduce magic in palette reordering
  29.782 -acb297e9 anim_diff: add a -raw_comparison flag
  29.783 -155c1b22 Merge changes I76f4d6fe,I45434639
  29.784 -717e4d5a mips32/mipsDSPr2: function ImportRow rebased
  29.785 -7df93893 fix rescaling bug (uninitialized read, see bug #254).
  29.786 -5cdcd561 lossless_enc_neon: add VP8LTransformColor
  29.787 -a53c3369 lossless_neon: add VP8LTransformColorInverse
  29.788 -99131e7f Merge changes I9fb25a89,Ibc648e9e
  29.789 -c4556766 simplify the main loop for downscaling
  29.790 -2a010f99 lossless_neon: remove predictors 5-13
  29.791 -ca221bbc ll_enc_neon: enable VP8LSubtractGreenFromBlueAndRed
  29.792 -585d93db Container spec: clarify ordering of ALPH chunk.
  29.793 -01d61fd9 lossless: ~20 % speedup
  29.794 -f722c8f0 lossless: Speed up ComputeCacheEntropy by 40 %
  29.795 -1ceecdc8 add a VP8LColorCacheSet() method for color cache
  29.796 -17eb6099 lossless: Allow copying from prev row in rle-mode.
  29.797 -f3a7a5bf lossless: bit writer optimization
  29.798 -d97b9ff7 Merge changes from topic 'lossless-enc-improvements'
  29.799 -0250dfcc msvc: fix pointer type warning in BitsLog2Floor
  29.800 -52931fd5 lossless: combine the Huffman code with extra bits
  29.801 -c4855ca2 lossless: Inlining add literal
  29.802 -8e9c94de lossless: simplify HashChainFindCopy heuristics
  29.803 -888429f4 lossless: 0.5 % compression density improvement
  29.804 -7b23b198 lossless: Add zeroes into the predicted histograms.
  29.805 -85b44d8a lossless: encoding, don't compute unnecessary histo
  29.806 -d92453f3 lossless: Remove about 25 % of the speed degradation
  29.807 -2cce0317 Faster alpha coding for webp
  29.808 -5e75642e lossless: rle mode not to accept lengths smaller than 4.
  29.809 -84326e4a lossless: Less code for the entropy selection
  29.810 -16ab951a lossless: 0.37 % compression density improvement
  29.811 -822f113e add WebPFree() to the API
  29.812 -0ae2c2e4 SSE2/SSE41: optimize SSE_16xN loops
  29.813 -39216e59 cosmetics: fix indent after 32462a07
  29.814 -559e54ca Merge "SSE2: slightly faster FTransformWHT"
  29.815 -8ef9a63b SSE2: slightly faster FTransformWHT
  29.816 -f27f7735 lossless_neon: enable VP8LAddGreenToBlueAndRed
  29.817 -36e9c4bc SSE2: minor cosmetrics on in-loop filter code
  29.818 -4741fac4 dsp/lossless_*sse2: remove some unnecessary inlines
  29.819 -1819965e fix warning ("left shift of negative value") using a cast
  29.820 -70170014 SSE2: speed-up some lossless-encoding functions
  29.821 -abcb0128 Merge "SSE2: slightly faster (~5%) AddGreenToBlueAndRed()"
  29.822 -2df5bd30 Merge "Speedup to HuffmanCostCombinedCount"
  29.823 -9e356d6b SSE2: slightly faster (~5%) AddGreenToBlueAndRed()
  29.824 -fc6c75a2 SSE2: 53% faster TransformColor[Inverse]
  29.825 -49073da6 SSE2: 46% speed-up of TransformColor[Inverse]
  29.826 -32462a07 Speedup to HuffmanCostCombinedCount
  29.827 -f3d687e3 SSE4.1 implementation of some lossless encoding functions
  29.828 -bfc300c7 SSE4.1 implementation of some alpha-processing functions
  29.829 -7f9c98f2 Merge "sse2 in-loop: simplify SignedShift8b() a bit"
  29.830 -ef314a5d dec_sse2/GetNotHEV: micro optimization
  29.831 -a729cff9 sse2 in-loop: simplify SignedShift8b() a bit
  29.832 -422ec9fb simplify Load8x4() a bit
  29.833 -8df238ec Merge "remove some duplicate FlipSign()"
  29.834 -751506c4 remove some duplicate FlipSign()
  29.835 -65ef5afc Merge "lossless: 0.13% compression density gain"
  29.836 -2beef2f2 lossless: 0.13% compression density gain
  29.837 -3033f24c lossless: 0.06 % compression density improvement
  29.838 -64960da9 dec_neon: add VE8uv / VE16
  29.839 -14dbd87b dec_neon: add HE8uv / HE16
  29.840 -ac768011 introduce FTransform2 to perform two transforms at a time.
  29.841 -aa6065ae dec_neon: use vld1_dup(mem) rather than vdup(mem[0])
  29.842 -8b63ac78 Merge "dec_neon: add TM16"
  29.843 -f51be09e Merge "dec_neon/TrueMotion: simply left border load"
  29.844 -dc48196b dec_neon: add TM16
  29.845 -ea95b305 dec_neon/TrueMotion: simply left border load
  29.846 -f262d612 speed-up SetResidualSSE2
  29.847 -bf46d0ac fix mips2 build target
  29.848 -929a0fdc enc_sse2/TTransform: simplify abs calculation
  29.849 -17dbd058 enc_sse2/CollectHistogram: simplify abs calculation
  29.850 -a6c15936 dec_neon: add DC16 intra predictors
  29.851 -03b4f50d Makefile.vc: add anim_diff build support.
  29.852 -1b989874 Merge changes I9cd84125,Iee7e387f,I7548be72
  29.853 -acd7b5af Introduce a test tool anim_diff.
  29.854 -f274a96c dsp/enc_sse2: add luma4 intra predictors
  29.855 -040b11bd dsp/enc_sse2: add chroma intra predictors
  29.856 -aee021bb dsp/enc_sse2: add luma16 intra predictors
  29.857 -9e00a499 makefile.unix: remove superclean target
  29.858 -cefc9c09 makefile.unix: clean up after extras target
  29.859 -4c9af023 dec_neon: add DC8uvNoTopLeft
  29.860 -dd55b873 Merge "doc/webp-container-spec: update repo browser link"
  29.861 -f0486968 doc/webp-container-spec: update repo browser link
  29.862 -9287761d Merge "GetResidualCostSSE2: simplify abs calculation"
  29.863 -0e009366 dsp/cpu.c(x86): check maximum supported cpuid feature
  29.864 -b243a4bc GetResidualCostSSE2: simplify abs calculation
  29.865 -6d4602b8 Merge "fix typo: constitutes -> constitute"
  29.866 -5fe1fe37 fix typo: constitutes -> constitute
  29.867 -b83bd7c4 Merge "populate 'libwebpextras' with: import gray, rgb565 and rgb4444 functions"
  29.868 -b0114a32 Merge "histogram.h: cosmetics: remove unnecessary includes"
  29.869 -feab45ef gifdec: Move inclusion of webp/config.h to header.
  29.870 -dbba67d1 histogram.h: cosmetics: remove unnecessary includes
  29.871 -e978fec6 Merge "VP8LBitReader: fix remaining ubsan error with large shifts"
  29.872 -d6fe5884 Merge "ReconstructRow: move some one-time inits out of the main loop"
  29.873 -a21d647c ReconstructRow: move some one-time inits out of the main loop
  29.874 -7a01c3c3 VP8LBitReader: fix remaining ubsan error with large shifts
  29.875 -7fa67c9b change GetPixPairHash64() return type to uint32_t
  29.876 -ec1fb9f8 Merge "dsp/enc.c: cosmetics: move DST() def closer to use"
  29.877 -7073bfb3 Merge "split 64-mult hashing into two 32-bit multiplies"
  29.878 -0768b252 dsp/enc.c: cosmetics: move DST() def closer to use
  29.879 -6a48b8f0 Merge "fix MSVC size_t->int conversion warning"
  29.880 -1db07cde Merge "anim_encode: cosmetics: fix alignment"
  29.881 -e28271a3 anim_encode: cosmetics: fix alignment
  29.882 -7fe357b8 split 64-mult hashing into two 32-bit multiplies
  29.883 -af74c145 populate 'libwebpextras' with: import gray, rgb565 and rgb4444 functions
  29.884 -61214134 remove VP8Residual::cost unused field
  29.885 -e2544823 fix MSVC size_t->int conversion warning
  29.886 -b69a6c35 vwebp: don't redefine snprintf with VS2015+
  29.887 -0ac29c51 AnimEncoder API: Consistent use of trailing underscores in struct.
  29.888 -d4845550 AnimEncoder API: Use timestamp instead of duration as input to Add().
  29.889 -9904e365 dsp/dec_sse2: DC8uv / DC8uvNoLeft speedup
  29.890 -7df20497 dsp/dec_sse2: DC16 / DC16NoLeft speedup
  29.891 -8e515dfe Merge "makefile.unix: add some missing headers"
  29.892 -db12250f cosmetics: vp8enci.h: break long line
  29.893 -bf516a87 makefile.unix: add some missing headers
  29.894 -b44eda3f dsp: add DSP_INIT_STUB
  29.895 -03e76e96 clarify the comment about double-setting the status in SetError()
  29.896 -9fecdd71 remove unused EmitRGB()
  29.897 -43f010dd move ReconstructRow to top
  29.898 -82d98020 add a dec/common.h header to collect common enc/dec #defines
  29.899 -5d4744a2 Merge "enc_sse41: add Disto4x4 / Disto16x16"
  29.900 -e38886a7 mux.h: Bump up ABI version
  29.901 -46305ca6 configure: add --disable-<avx2|sse4.1|sse2>
  29.902 -2fc8b658 CPPFLAGS->CFLAGS for detecting sse4.1 in preprocessor
  29.903 -1a338fb3 enc_sse41: add Disto4x4 / Disto16x16
  29.904 -94055503 encoding SSE4.1 stub for StoreHistogram + Quantize + SSE_16xN
  29.905 -c64659e1 remove duplicate variables after the lossless{_enc}.c split
  29.906 -67ba7c7a enc_sse2: call local FTransform in CollectHistogram
  29.907 -18249799 dsp: s/VP8LSetHistogramData/VP8SetHistogramData/
  29.908 -ede5e158 cosmetics: dsp/lossless.h: reorder prototypes
  29.909 -553051f7 dsp/lossless: split enc/dec functions
  29.910 -9064adc8 Merge "conditionally add -msse4.1 in Makefile.unix"
  29.911 -cecf5096 dsp/yuv*.c: rework WEBP_USE_<arch> ifdef
  29.912 -6584d398 dsp/upsampling*.c: rework WEBP_USE_<arch> ifdef
  29.913 -80809422 dsp/rescaler*.c: rework WEBP_USE_<arch> ifdef
  29.914 -1d93ddec dsp/lossless*.c: rework WEBP_USE_<arch> ifdef
  29.915 -73805ff2 dsp/filters*.c: rework WEBP_USE_<arch> ifdef
  29.916 -fbdcef24 dsp/enc*.c: rework WEBP_USE_<arch> ifdef
  29.917 -66de69c1 dsp/dec*.c: rework WEBP_USE_<arch> ifdef
  29.918 -48e4ffd1 dsp/cost*.c: rework WEBP_USE_<arch> ifdef
  29.919 -29fd6f90 dsp/argb*.c: rework WEBP_USE_<arch> ifdef
  29.920 -80ff3813 dsp/alpha*.c: rework WEBP_USE_<arch> ifdef
  29.921 -bf09cf1e conditionally add -msse4.1 in Makefile.unix
  29.922 -e9570dd9 stub for SSE4.1 support.
  29.923 -4a95384b Merge "dsp: add sse4.1 detection"
  29.924 -cabf4bd2 dsp: add sse4.1 detection
  29.925 -4ecba1ab thread.h: rename interface param
  29.926 -b8d706c8 Merge "sync versions with 0.4.3"
  29.927 -ae64a711 Merge "add shell for libwebpextras"
  29.928 -92a5da9c sync versions with 0.4.3
  29.929 -9d4e2d16 Merge "~30% faster smart-yuv (-pre 4) with early-out criterion"
  29.930 -b1bdbbab ~30% faster smart-yuv (-pre 4) with early-out criterion
  29.931 -7efb9748 Merge "Disable NEON code on Native Client"
  29.932 -ac4f5784 Disable NEON code on Native Client
  29.933 -0873f85b AnimEncoder API: Support input frames in YUV(A) format.
  29.934 -5c176d2d add shell for libwebpextras
  29.935 -44bd9561 fix signature for VP8RecordCoeffTokens()
  29.936 -c9b8ea0e small cosmetics on TokenBuffer.
  29.937 -76394c09 Merge "MIPS: dspr2: added optimization for TrueMotion"
  29.938 -0f773693 WebPPictureRescale: add a note about 0 width/height
  29.939 -241bb5d9 MIPS: dspr2: added optimization for TrueMotion
  29.940 -6cef0e4f examples/Android.mk: add webpmux_example target
  29.941 -53c16ff0 Android.mk: add webpmux target
  29.942 -21852a00 Android.mk: add webpdemux target
  29.943 -8697a3bc Android.mk: add webpdecoder{,_static} targets
  29.944 -4a670491 Android.mk: split source lists per-directory
  29.945 -b5e79422 MIPS: dspr2: Added optimization for some convert functions
  29.946 -0f595db6 MIPS: dspr2: Added optimization for some convert functions
  29.947 -8a218b4a MIPS: [mips32|dspr2]: GetResidualCost rebased
  29.948 -ef987500 Speedup method StoreImageToBitMask by 5%.
  29.949 -602a00f9 fix iOS arm64 build with Xcode 6.3
  29.950 -23820507 1-2% faster encoding by removing an indirection in GetResidualCost()
  29.951 -eddb7e70 MIPS: dspr2: added otpimization for DC8uv, DC8uvNoTop and DC8uvNoLeft
  29.952 -73ba2915 MIPS: dspr2: added optimization for functions RD4 and LD4
  29.953 -c7129da5 Merge "4-5% faster encoding using SSE2 for GetResidualCost"
  29.954 -94380d00 MIPS: dspr2: added optimizaton for functions VE4 and DC4
  29.955 -2a407092 4-5% faster encoding using SSE2 for GetResidualCost
  29.956 -17e19862 Merge "MIPS: dspr2: added optimization for simple filtering functions"
  29.957 -3ec404c4 Merge "dsp: normalize WEBP_TSAN_IGNORE_FUNCTION usage"
  29.958 -b969f5df dsp: normalize WEBP_TSAN_IGNORE_FUNCTION usage
  29.959 -d7b8e711 MIPS: dspr2: added optimization for simple filtering functions
  29.960 -235f774e Merge "MIPS: dspr2: Added optimization for function VP8LTransformColorInverse_C"
  29.961 -42a8a628 MIPS: dspr2: Added optimization for function VP8LTransformColorInverse_C
  29.962 -b442bef3 Merge "ApplyFiltersAndEncode: only copy lossless stats"
  29.963 -b510fbfe doc/webp-container-spec: note MSB order for chunk diagrams
  29.964 -9bc0f922 ApplyFiltersAndEncode: only copy lossless stats
  29.965 -3030f115 Merge "dsp/mips: add some missing TSan annotations"
  29.966 -dfcf4593 Merge "MIPS: dspr2: Added optimization for function VP8LAddGreenToBlueAndRed_C"
  29.967 -55c75a25 dsp/mips: add some missing TSan annotations
  29.968 -2cb879f0 MIPS: dspr2: Added optimization for function VP8LAddGreenToBlueAndRed_C
  29.969 -e1556010 move some cost tables from enc/ to dsp/
  29.970 -c3a03168 Merge "picture_csp: fix build w/USE_GAMMA_COMPRESSION undefined"
  29.971 -39537d7c Merge "VP8LDspInitMIPSdspR2: add missing TSan annotation"
  29.972 -1dd419ce picture_csp: fix build w/USE_GAMMA_COMPRESSION undefined
  29.973 -43fd3543 VP8LDspInitMIPSdspR2: add missing TSan annotation
  29.974 -c7233dfc Merge "VP8LDspInit: remove memcpy"
  29.975 -0ec4da96 picture_csp::InitGammaTables*: add missing TSan annotations
  29.976 -35579a49 VP8LDspInit: remove memcpy
  29.977 -97f6aff8 VP8YUVInit: add missing TSan annotation
  29.978 -f9016d66 dsp/enc::InitTables: add missing TSan annotation
  29.979 -e3d9771a VP8EncDspCostInit*: add missing TSan annotations
  29.980 -d97c143d Merge "doc/webp-container-spec: cosmetics"
  29.981 -309b7908 MIPS: mips32: Added optimization for function SetResidualCoeffs
  29.982 -a987faed MIPS: dspr2: added optimization for function GetResidualCost
  29.983 -e7d3df23 doc/webp-container-spec: cosmetics
  29.984 -be6635e9 Merge "VP8TBufferClear: remove some misleading const's"
  29.985 -02971e72 Merge "VP8EmitTokens: remove unnecessary param void cast"
  29.986 -3b77e5a7 VP8TBufferClear: remove some misleading const's
  29.987 -aa139c8f VP8EmitTokens: remove unnecessary param void cast
  29.988 -c24d8f14 cosmetics: upsampling_sse2: add const to some casts
  29.989 -1829c42c cosmetics: lossless_sse2: add const to some casts
  29.990 -183168f3 cosmetics: enc_sse2: add const to some casts
  29.991 -860badca cosmetics: dec_sse2: add const to some casts
  29.992 -0254db97 cosmetics: argb_sse2: add const to some casts
  29.993 -1aadf856 cosmetics: alpha_processing_sse2: add const to some casts
  29.994 -1579de3c vwebp: clear canvas at the beginning of each loop
  29.995 -4b9fa5d0 Merge "webp-container-spec: clarify background clear on loop"
  29.996 -4c82284d Updated the near-lossless level mapping.
  29.997 -56039479 webp-container-spec: clarify background clear on loop
  29.998 -19f0ba0e Implement true-motion prediction in SSE2
  29.999 -774d4cb7 make VP8PredLuma16[] array non-const
 29.1000 -d7eabb80 Merge "MIPS: dspr2: Added optimization for function CollectHistogram"
 29.1001 -fe42739c Use integers for kmin/kmax for simplicity.
 29.1002 -b9df35f7 AnimEncode API: kmax=0 should imply all keyframes.
 29.1003 -6ce296da MIPS: dspr2: Added optimization for function CollectHistogram
 29.1004 -2c906c40 vwebp: remove unnecessary static Help() prototype
 29.1005 -be0fd1d5 Merge "dec/vp8: clear 'dither_' on skipped blocks"
 29.1006 -e96170fe Merge "vwebp/animation: display last frame on end-of-loop"
 29.1007 -0f017b56 vwebp/animation: display last frame on end-of-loop
 29.1008 -c86b40cc enc/near_lossless.c: fix alignment
 29.1009 -66935fb9 dec/vp8: clear 'dither_' on skipped blocks
 29.1010 -b7de7946 Merge "lossless_neon: enable subtract green for aarch64"
 29.1011 -77724f70 SSE2 version of GradientUnfilter
 29.1012 -416e1cea lossless_neon: enable subtract green for aarch64
 29.1013 -72831f6b Speedup AnalyzeAndInit for low effort compression.
 29.1014 -a6597483 Speedup Analyze methods for lossless compression.
 29.1015 -98c81386 Enable Near-lossless feature.
 29.1016 -c6b24543 AnimEncoder API: Fix for kmax=1 and default kmin case.
 29.1017 -022d2f88 add SSE2 variants for alpha filtering functions
 29.1018 -2db15a95 Temporarily disable encoding of alpha plane with color cache.
 29.1019 -1d575ccd Merge "Lossless decoding: Remove an unnecessary if condition."
 29.1020 -cafa1d88 Merge "Simplify backward refs calculation for low-effort."
 29.1021 -7afdaf84 Alpha coding: reorganize the filter/unfiltering code
 29.1022 -4d6d7285 Simplify backward refs calculation for low-effort.
 29.1023 -ec0d1be5 Cleaup Near-lossless code.
 29.1024 -9814ddb6 Remove the post-transform near-lossless heuristic.
 29.1025 -4509e32e Lossless decoding: Remove an unnecessary if condition.
 29.1026 -f2ebc4a8 Merge "Regression fix for lossless decoding"
 29.1027 -783a8cda Regression fix for lossless decoding
 29.1028 -9a062b8e AnimEncoder: Bugfix for kmin = 1 and kmax = 2.
 29.1029 -0f027a72 simplify smart RGB->YUV conversion code
 29.1030 -0d5b334e BackwardReferencesHashChainFollowChosenPath: remove unused variable
 29.1031 -f480d1a7 Fix to near lossless artefacts on palettized images.
 29.1032 -d4615d08 Merge changes Ia1686828,I399fda40
 29.1033 -cb4a18a7 rename HashChainInit into HashChainReset
 29.1034 -f079e487 use uint16_t for chosen_path[]
 29.1035 -da091212 MIPS: dspr2: Added optimization for function FTransformWHT
 29.1036 -b8c20135 Merge "wicdec: (msvs) quiet some /analyze warnings"
 29.1037 -9b228b54 wicdec: (msvs) quiet some /analyze warnings
 29.1038 -daeb276a Merge "MIPS: dspr2: Added optimization for MultARGBRow function"
 29.1039 -cc087424 Merge "dsp/cpu: (msvs) add include for __cpuidex"
 29.1040 -4a82aab5 Merge changes I87544e92,I0bb6cda5
 29.1041 -7a191398 dwebp/WritePNG: mark png variables volatile
 29.1042 -775dfad2 dwebp: include setjmp.h w/WEBP_HAVE_PNG
 29.1043 -47d26be7 dwebp: correct sign in format strings
 29.1044 -f0e0677b VP8LEncodeStream: add an assert
 29.1045 -c5f7747f VP8LColorCacheCopy: promote an int before shifting
 29.1046 -0de5f33e dsp/cpu: (msvs) add include for __cpuidex
 29.1047 -7d850f7b MIPS: dspr2: Added optimization for MultARGBRow function
 29.1048 -54875293 MIPS: dspr2: added optimization for function QuantizeBlock
 29.1049 -4fbe9cf2 dsp/cpu: (msvs) avoid immintrin.h on _M_ARM
 29.1050 -3fd59039 simplify/reorganize arguments for CollectColorBlueTransforms
 29.1051 -b9e356b9 Disable costly TraceBackwards for method=0.
 29.1052 -a7e7caa4 MIPS: dspr2: added optimization for function TransformColorRed
 29.1053 -2cb39180 Merge "MIPS: dspr2: added optimization for function TransformColorBlue"
 29.1054 -279e6613 Merge "dsp/cpu: add include for _xgetbv() w/MSVS"
 29.1055 -b6c0428e dsp/cpu: add include for _xgetbv() w/MSVS
 29.1056 -d1c4ffae gif2webp: Move GIF decoding related code to a support library.
 29.1057 -07c39559 Merge "AnimEncoder API: Add info in README.mux"
 29.1058 -7b161973 MIPS: dspr2: added optimization for function TransformColorBlue
 29.1059 -d7c4b02a cpu: fix AVX2 detection for gcc/clang targets
 29.1060 -9d299469 AnimEncoder API: Add info in README.mux
 29.1061 -d581ba40 follow-up: clean up WebPRescalerXXX dsp function
 29.1062 -f8740f0d dsp: s/USE_INTRINSICS/WEBP_USE_INTRINSICS/
 29.1063 -ce73abe0 Merge "introduce a separate WebPRescalerDspInit to initialize pointers"
 29.1064 -ab66beca introduce a separate WebPRescalerDspInit to initialize pointers
 29.1065 -205c7f26 fix handling of zero-sized partition #0 corner case
 29.1066 -cbcdd5ff Merge "move rescaler functions to rescaler* files in src/dsp/"
 29.1067 -bf586e88 Merge changes I230b3532,Idf3057a7
 29.1068 -6dc79dc2 Merge "anim_encode: fix type conversion warnings"
 29.1069 -11fce25a Merge "dec_neon: remove returns from void functions"
 29.1070 -c4e63f99 Makefile.vc: add gif2webp target
 29.1071 -4f43d38c enable NEON for Windows ARM builds
 29.1072 -3f6615ac Makefile.vc: add rudimentary Windows ARM support
 29.1073 -e7c5954c dec_neon: remove returns from void functions
 29.1074 -f79c163b anim_encode: fix type conversion warnings
 29.1075 -0f54f1ec Remove gif2webp_util which is no longer needed.
 29.1076 -cbcbedd0 move rescaler functions to rescaler* files in src/dsp/
 29.1077 -ac79ed19 webpmux: remove experimental fragment handling
 29.1078 -e8694d4d mux: remove experimental FRGM parsing
 29.1079 -9e92b6ea AnimEncoder API: Optimize single-frame animated images
 29.1080 -abbae279 Merge "Move over gif2webp to the new AnimEncoder API."
 29.1081 -a28c4b36 MIPS: move WORK_AROUND_GCC define to appropriate place
 29.1082 -012d2c60 MIPS: dspr2: added optimization for functions SSEAxB
 29.1083 -67720c8b Move over gif2webp to the new AnimEncoder API.
 29.1084 -9241ecf4 MIPS: dspr2: added optimization for function Average
 29.1085 -9422211d Merge "Tune BackwardReferencesLz77 for low_effort (m=0)."
 29.1086 -df40057b Merge "Speedup VP8LGetHistoImageSymbols for low effort (m=0) mode."
 29.1087 -ea08466d Tune BackwardReferencesLz77 for low_effort (m=0).
 29.1088 -b0b973c3 Speedup VP8LGetHistoImageSymbols for low effort (m=0) mode.
 29.1089 -c6d32927 argb_sse2: cosmetics
 29.1090 -67f601cd make the 'last_cpuinfo_used' variable names unique
 29.1091 -b9489861 AnimEncoder API: Init method for default options.
 29.1092 -856f8ec1 Merge "AnimEncoder API: Remove AnimEncoderFrameOptions."
 29.1093 -c537514d Merge "AnimEncoder API: GenerateCandidates bugfix."
 29.1094 -dc0ce039 Merge "AnimEncoder API: Compute change rectangle for first frame too."
 29.1095 -f00b639b Merge "AnimEncoder API: In Assemble(), always set animation parameters."
 29.1096 -29ed796c Merge "AnimEncoder lib cleanup: prev to prev canvas not needed."
 29.1097 -9f0dd6e5 Merge "WebPAnimEncoder API: Header and implementation"
 29.1098 -5e56bbe0 AnimEncoder API: Remove AnimEncoderFrameOptions.
 29.1099 -b902c3ea AnimEncoder API: GenerateCandidates bugfix.
 29.1100 -ef3c39bb AnimEncoder API: Compute change rectangle for first frame too.
 29.1101 -eec423ab AnimEncoder API: In Assemble(), always set animation parameters.
 29.1102 -ae1c046e AnimEncoder lib cleanup: prev to prev canvas not needed.
 29.1103 -4b997ae4 WebPAnimEncoder API: Header and implementation
 29.1104 -72208bec move argb_*.o build target to encoder list
 29.1105 -95920538 Merge "multi-thread fix: lock each entry points with a static var"
 29.1106 -4c1b300a Merge "SSE2 implementation of VP8PackARGB"
 29.1107 -fbcc2004 Merge "add -Wformat-nonliteral and -Wformat-security"
 29.1108 -80d950d9 add -Wformat-nonliteral and -Wformat-security
 29.1109 -04c20e75 Merge "MIPS: dspr2: added optimization for function Intra4Preds"
 29.1110 -a437694a multi-thread fix: lock each entry points with a static var
 29.1111 -ca7f60db SSE2 implementation of VP8PackARGB
 29.1112 -72d573f6 simplify the PackARGB signature
 29.1113 -4e2589ff demux: restore strict fragment flag check
 29.1114 -4ba8e074 Merge "webp-container-spec: remove references to fragments"
 29.1115 -e752f0a6 Merge "demux: remove experimental FRGM parsing"
 29.1116 -f8abb112 Merge changes I109ec4d9,I73fe7743
 29.1117 -ae2188a4 MIPS: dspr2: added optimization for function Intra4Preds
 29.1118 -1f4b8642 move VP8EncDspARGBInit() call closer to where it's needed
 29.1119 -14108d78 dec_neon: add DC8uvNoTop / DC8uvNoLeft
 29.1120 -d8340da7 dec_neon: add DC8uv
 29.1121 -a66e66c7 webp-container-spec: remove references to fragments
 29.1122 -7ce8788b MIPS: dspr2: added optimization for function MakeARGB32
 29.1123 -012e623d demux: remove experimental FRGM parsing
 29.1124 -87c3d531 method=0: Don't evaluate any predictor
 29.1125 -6f4fcb98 Merge "MIPS: dspr2: added optimization for function ImportRow"
 29.1126 -24284459 replace unneeded calls to HistogramCopy() by swaps
 29.1127 -bdf7b40c MIPS: dspr2: added optimization for function ImportRow
 29.1128 -e66a9225 Merge "MIPS: dspr2: added optimization for function ExportRowC"
 29.1129 -c279fec1 MIPS: dspr2: added optimization for function ExportRowC
 29.1130 -31a9cf64 Speedup WebP lossless compression for low effort (m=0) mode with following: - Disable Cross-Color transform. - Evaluate predictors #11 (paeth), #12 and #13 only.
 29.1131 -9275d91c MIPS: dspr2: added optimization for function TrueMotion
 29.1132 -26106d66 Merge "enc_neon: fix building with non-Xcode clang (iOS)"
 29.1133 -1c4e3efe unroll the kBands[] indirection to remove a dereference in GetCoeffs()
 29.1134 -a3946b89 enc_neon: fix building with non-Xcode clang (iOS)
 29.1135 -8ed9c00d Merge "simplify the Histogram struct, to only store max_value and last_nz"
 29.1136 -bad77571 simplify the Histogram struct, to only store max_value and last_nz
 29.1137 -3cca0dc7 MIPS: dspr2: Added optimization for DCMode function
 29.1138 -37e395fd MIPS: fix functions to use generic BPS istead of hardcoded value
 29.1139 -9475bef4 PickBestUV: fix VP8Copy16x8 invocation
 29.1140 -441f273f Merge changes I55f8da52,Id73a1e96
 29.1141 -4a279a68 cosmetics: add some missing != NULL comparisons
 29.1142 -66ad3725 factorize BPS definition in dsp.h and add VP8Copy16x8
 29.1143 -432e5b55 make ALIGN_xxx naming consistent
 29.1144 -57606047 encoder: switch BPS to 32 instead of 16
 29.1145 -1b66bbe9 MIPS: dspr2: added optimization for function TransformColor_C
 29.1146 -c6d0f9e7 histogram: cosmetics
 29.1147 -f399d307 Merge changes I6eac17e5,I32d2b514
 29.1148 -9de9074c dec_neon: add TM8uv
 29.1149 -8e517eca bit_reader/kVP8NewRange: range_t -> uint8_t
 29.1150 -e1857139 dsp: initialize VP8PredChroma8 in VP8DspInit()
 29.1151 -e0c809ad Move Entropy methods to lossless.c
 29.1152 -a96ccf8f iosbuild: add x64_64 simulator support
 29.1153 -a0df5510 Remove handling for WEBP_HINT_GRAPH
 29.1154 -413dfc0c Move static method definition before its usage.
 29.1155 -0f235665 Update BackwardRefsWithLocalCache.
 29.1156 -d69e36ec Remove TODOs from lossless encoder code.
 29.1157 -fdaac8e0 Optmize VP8LGetBackwardReferences LZ77 references.
 29.1158 -2f0e2ba8 MIPS: dspr2: added optimization for function Select
 29.1159 -a3e79a46 Merge "WebPEncode: Support encoding same pic twice (even if modified)"
 29.1160 -e4f4dddb WebPEncode: Support encoding same pic twice (even if modified)
 29.1161 -cbc3fbb4 Merge "Updated VP8LGetBackwardReferences and color cache."
 29.1162 -95a9bd85 Updated VP8LGetBackwardReferences and color cache.
 29.1163 -54f2c14c MIPS: dspr2: added optimization for function FTransform
 29.1164 -aa42f423 MIPS: dspr2: Added optimization for function VP8LSubtractGreenFromBlueAndRed
 29.1165 -11a25f75 Merge "FlattenSimilarBlocks should only be tried when blending is possible."
 29.1166 -5cccdadf FlattenSimilarBlocks should only be tried when blending is possible.
 29.1167 -95ca44a7 MIPS: dspr2: added optimization for Disto4x4
 29.1168 -4171b672 backward_references.c: reindent after c8581b0
 29.1169 -c8581b06 Optimize BackwardReferences for RLE encoding.
 29.1170 -5798eee6 MIPS: dspr2: unfilters bugfix (Ie7b7387478a6b5c3f08691628ae00f059cf6d899)
 29.1171 -4167a3f5 Optimize backwardreferences
 29.1172 -d18554c3 Merge "webp/types.h: use inline for clang++/-std=c++11"
 29.1173 -7489b0e7 gif2webp: Add '-min-size' option to get best compression.
 29.1174 -77bdddf0 Speed up BackwardReferences
 29.1175 -6638710b webp/types.h: use inline for clang++/-std=c++11
 29.1176 -abf04205 Enable entropy based merge histo for (q<100)
 29.1177 -572022a3 filters_mips_dsp_r2.c: disable unfilters
 29.1178 -a28e21b1 MIPS: dspr2: Added optimization for function ClampedAddSubtractFull
 29.1179 -18d5a1ef MIPS: dspr2: added optimization for function ClampedAddSubtractHalf
 29.1180 -829a8c19 MIPS: dspr2: added optimization for ITransform
 29.1181 -c94ed49e gif2webp: Use the default hint instead of WEBP_HINT_GRAPH.
 29.1182 -653ace55 Increase the MAX_COLOR_CACHE_BITS from 9 to 10.
 29.1183 -919220c7 Change the logic adjusting the Histogram bits.
 29.1184 -53b096c0 Merge "Fix bug in VP8LCalculateEstimateForCacheSize."
 29.1185 -e912bd55 Fix bug in VP8LCalculateEstimateForCacheSize.
 29.1186 -541d7839 Merge "dec_neon: add RD4 intra predictor"
 29.1187 -f8cd0672 Merge "Makefile.vc: add a 'legacy' RTLIBCFG option"
 29.1188 -22881c99 dec_neon: add RD4 intra predictor
 29.1189 -613d281e update NEWS
 29.1190 -1304eb34 Merge "dec_neon: DC4: use pair-wise adds for top row"
 29.1191 -34c20c06 Makefile.vc: add a 'legacy' RTLIBCFG option
 29.1192 -7083006b Merge "dsp/dec_{neon,sse2}: VE4: normalize variable names"
 29.1193 -0db9031c dsp/dec_{neon,sse2}: VE4: normalize variable names
 29.1194 -b5bc1530 dec_neon: DC4: use pair-wise adds for top row
 29.1195 -5b90d8fe Unify the API between VP8BitWriter and VP8LBitWriter
 29.1196 -f7ada560 Merge changes I2e06907b,Ia9ed4ca6,I782282ff
 29.1197 -5beb6bf0 Merge "dec_neon: add VE4 intra predictor"
 29.1198 -eba6ce06 dec_neon: add DC4 intra predictor
 29.1199 -79abfbd9 dec_neon: add TM4 intra predictor
 29.1200 -fe395f0e dec_neon: add LD4 intra predictor
 29.1201 -32de385e dec_neon: add VE4 intra predictor
 29.1202 -72395ba9 Merge "Modify CostModel to allocate optimal memory."
 29.1203 -65e5eb8a gif2webp: Support GIF_DISPOSE_RESTORE_PREVIOUS
 29.1204 -e4c829ef gif2webp: Handle frames with odd offsets + disposal to background.
 29.1205 -c2b5a039 Modify CostModel to allocate optimal memory.
 29.1206 -b7a33d7e implement VE4/HE4/RD4/... in SSE2
 29.1207 -97c76f1f make VP8PredLuma4[] non-const and initialize array in VP8DspInit()
 29.1208 -0ea8c6c2 Merge "PrintReg: output to stderr"
 29.1209 -d7ff2f97 Merge "stopwatch.h: fix includes"
 29.1210 -f85ec712 PrintReg: output to stderr
 29.1211 -54edbf65 stopwatch.h: fix includes
 29.1212 -139142e4 Optimize BackwardReferenceHashChainFollowPath.
 29.1213 -5f36b68d enc/backward_references.c: fix indent
 29.1214 -e0e9960d Merge "sync version numbers to 0.4.2 release"
 29.1215 -64ac5144 sync version numbers to 0.4.2 release
 29.1216 -c24f8954 Simplify and speedup Backward refs computation.
 29.1217 -d1c359ef fix shared object build with -fvisibility=hidden
 29.1218 -a4c3a31b WEBP_TSAN_IGNORE_FUNCTION: fix gcc compat warning
 29.1219 -f358eeb8 add code for testing random incremental decoding in dwebp
 29.1220 -80247291 mark some init function as being safe for thread_sanitizer.
 29.1221 -79b5bdbf bit_reader.h: cosmetics: fix a typo
 29.1222 -6c673681 Improved near-lossless mode.
 29.1223 -0ce27e71 enc_mips32: workaround gcc-4.9 bug
 29.1224 -aca1b98f enc/vp8l.c: fix indent
 29.1225 -ca005027 Evaluate non-palette compression for palette image
 29.1226 -c8a87bb6 AssignSegments: quiet -Warray-bounds warning
 29.1227 -32f67e30 Merge "enc_neon: initialize vectors w/vdup_n_u32"
 29.1228 -fabc65da 1-3% faster encoding optimizing SSE_NxN functions
 29.1229 -7534d716 enc_neon: initialize vectors w/vdup_n_u32
 29.1230 -5f813912 Merge "Fix return code of EncodeImageInternal()"
 29.1231 -e321abe4 Fix return code of EncodeImageInternal()
 29.1232 -f82cb06a optimize palette ordering
 29.1233 -f545feee don't set the alpha value for histogram index image
 29.1234 -2d9b0a44 add WebPDispatchAlphaToGreen() to dsp
 29.1235 -1bd4c2ad Merge "Change Entropy based Histogram Combine heuristic."
 29.1236 -e295b8f1 Merge "iosbuild: cleanup"
 29.1237 -1be4e760 Merge "iosbuild: output autoconf req. on failure"
 29.1238 -d5e498d4 Change Entropy based Histogram Combine heuristic.
 29.1239 -47a2d8e1 fix MSVC float->int conversion warning
 29.1240 -041956f6 iosbuild: cleanup
 29.1241 -767eb402 iosbuild: output autoconf req. on failure
 29.1242 -35ad48b8 HistoHeapInit: correct positions allocation size
 29.1243 -45d9635f lossless: entropy clustering for high qualities.
 29.1244 -dc37df8c fix type warning for VS9_x64
 29.1245 -9f7d9e6d iosbuild: make iOS 6 the minimum requirement
 29.1246 -fdd6528b Remove unused VP8LDecoder member variable
 29.1247 -ea3bba5a Merge "rewrite Disto4x4 in enc_neon.c with intrinsic"
 29.1248 -f060dfc4 add lossless incremental decoding support
 29.1249 -ab70794d rewrite Disto4x4 in enc_neon.c with intrinsic
 29.1250 -d4471637 MIPS: dspr2: added optimization for function FilterLoop24
 29.1251 -2aef54d4 Merge "prepare VP8LDecodeImage for incremental decode"
 29.1252 -aed0f5a2 Merge "MIPS: dspr2: added optimization for function FilterLoop26"
 29.1253 -28630685 prepare VP8LDecodeImage for incremental decode
 29.1254 -248f3aed remove br->error_ field
 29.1255 -49e15044 MIPS: dspr2: added optimization for function FilterLoop26
 29.1256 -38128cb9 iobuild.sh: only install .h files in Headers
 29.1257 -c792d412 Premultiply with alpha during U/V downsampling
 29.1258 -0cc811d7 gif2webp: Background color correction
 29.1259 -d7167ff7 Amend the lossless spec according to issue #205, #206 and #224
 29.1260 -b901416b Record the lossless size stats.
 29.1261 -cddd3340 Add a WebPExtractAlpha function to dsp
 29.1262 -0716a98e fix indent after I0204949917836f74c0eb4ba5a7f4052a4797833b
 29.1263 -f9ced95a Optimize lossless decoding for trivial(ARB) codes.
 29.1264 -924fcfd9 Merge "webpmux: simplify InitializeConfig()"
 29.1265 -c0a462ca webpmux: simplify InitializeConfig()
 29.1266 -6986bb5e webpmux: fix indent
 29.1267 -f89e1690 webpmux: fix exit status on numeric value parse error
 29.1268 -2172cb62 Merge "webpmux: fix loop_count range check"
 29.1269 -e3b343ec Merge "examples: warn on invalid numeric parameters"
 29.1270 -0e23c487 webpmux: fix loop_count range check
 29.1271 -6208338a Merge "fix loop bug in DispatchAlpha()"
 29.1272 -d51f3e40 gif2webp: Handle frames with missing  graphic control extension
 29.1273 -690b491a fix loop bug in DispatchAlpha()
 29.1274 -96d43a87 examples: warn on invalid numeric parameters
 29.1275 -3101f537 MIPS: dspr2: added optimization for TransformOne
 29.1276 -a6bb9b17 SSE2 for inverse Mult(ARGB)Row and ApplyAlphaMultiply
 29.1277 -d84a8ffd Remove default initialization of decoder status.
 29.1278 -be70b86c configure: simplify libpng-config invocation
 29.1279 -e0a99321 Rectify bug in lossless incremental decoding.
 29.1280 -e2502a97 MIPS: dspr2: added optimization for TransformAC3
 29.1281 -24e1072a MIPS: dspr2: added optimization for TransformDC
 29.1282 -c0e84df8 Merge "Slightly faster lossless decoding (1%)"
 29.1283 -8dd28bb5 Slightly faster lossless decoding (1%)
 29.1284 -f0103595 MIPS: dspr2: added optimization for ColorIndexInverseTransforms
 29.1285 -d3242aee make VP8LSetBitPos() set br->eos_ flag
 29.1286 -a9decb55 Lossless decoding: fix eos_ flag condition
 29.1287 -3fea6a28 fix erroneous dec->status_ setting
 29.1288 -80b8099f MIPS: dspr2: add some specific mips code to commit I2c3f2b12f8df15b785fad5a9c56316e954ae0c53
 29.1289 -e5640625 Merge "further refine the COPY_PATTERN optim for DecodeAlpha"
 29.1290 -854509fe enc/histogram.c: reindent after f4059d0
 29.1291 -34421964 Merge "~3-5% faster encoding optimizing PickBestIntra*()"
 29.1292 -865069c1 further refine the COPY_PATTERN optim for DecodeAlpha
 29.1293 -a5956228 added C-level optimization for DecodeAlphaData function
 29.1294 -187d379d add a fallback to ALPHA_NO_COMPRESSION
 29.1295 -a48a2d76 ~3-5% faster encoding optimizing PickBestIntra*()
 29.1296 -a6140194 ExUtilReadFromStdin: (windows) open stdin in bin mode
 29.1297 -e80eab1f webpmux: (windows) open stdout in binary mode
 29.1298 -e9bfb116 cwebp: (windows) open stdout in binary mode
 29.1299 -5927e15b example_util: add ExUtilSetBinaryMode
 29.1300 -30f3b75b webpmux man page: Clarify some title, descriptions and examples
 29.1301 -77d4c7e3 address cosmetic comments from patch #71380
 29.1302 -f75dfbf2 Speed up Huffman decoding for lossless
 29.1303 -637b3888 dsp/lossless: workaround gcc-4.9 bug on arm
 29.1304 -8323a903 dsp.h: collect gcc/clang version test macros
 29.1305 -e6c4b52f move static initialization of WebPYUV444Converters[] to the Init function.
 29.1306 -49911d4d Merge "fix indentation"
 29.1307 -f4059d0c Code cleanup for HistogramRemap.
 29.1308 -e632b092 fix indentation
 29.1309 -f5c04d64 Merge "add a DispatchAlpha() for SSE2 that handles 8 pixels at a time"
 29.1310 -fc98edd9 add a DispatchAlpha() for SSE2 that handles 8 pixels at a time
 29.1311 -73d361dd introduce VP8EncQuantize2Blocks to quantize two blocks at a time
 29.1312 -0b21c30b MIPS: dspr2: added optimization for EmitAlphaRGB
 29.1313 -953acd56 enc_neon: enable QuantizeBlock for aarch64
 29.1314 -f4ae1437 MIPS: mips32: code rebase
 29.1315 -56977154 MIPS: dspr2: added optimizations for VP8YuvTo*
 29.1316 -2523aa73 SmartRGBYUV: fix odd-width problem with pixel replication
 29.1317 -ee52dc4e fix some MSVC64 warning about float conversion
 29.1318 -3fca851a cpu: check for _MSC_VER before using msvc inline asm
 29.1319 -e2a83d71 faster RGB->YUV conversion function (~7% speedup)
 29.1320 -de2d03e1 Merge "Add smart RGB->YUV conversion option -pre 4"
 29.1321 -3fc4c539 Add smart RGB->YUV conversion option -pre 4
 29.1322 -b4dc4069 MIPS: dspr2: added optimization for (un)filters
 29.1323 -137e6090 Merge "configure: add work around for gcc-4.9 aarch64 bug"
 29.1324 -b61c9cec MIPS: dspr2: Optimization of some simple point-sampling functions
 29.1325 -e2b8cec0 configure: add work around for gcc-4.9 aarch64 bug
 29.1326 -98c54107 MIPS: mips32r2: added optimization for BSwap32
 29.1327 -dab702b3 Update PATENTS to reflect s/VP8/WebM/g
 29.1328 -b564f7c7 Merge "MIPS: detect mips32r6 and disable mips32r1 code"
 29.1329 -b7e5a5c4 MIPS: detect mips32r6 and disable mips32r1 code
 29.1330 -63c2fc02 Correctly use the AC_CANONICAL_* macros
 29.1331 -bb07022b Merge "cosmetics"
 29.1332 -e300c9d8 cosmetics
 29.1333 -0e519eea Merge "cosmetics: remove some extraneous 'extern's"
 29.1334 -3ef0f08a Merge "vp8enci.h: cosmetics: fix '*' placement"
 29.1335 -4c6dde37 bit_writer: cosmetics: rename kFlush() -> Flush()
 29.1336 -f7b4c48b cosmetics: remove some extraneous 'extern's
 29.1337 -b47fb00a vp8enci.h: cosmetics: fix '*' placement
 29.1338 -b5a36cc9 add -near_lossless [0..100] experimental option
 29.1339 -0524d9e5 dsp: detect mips64 & disable mips32 code
 29.1340 -d3485d96 cwebp.1: fix quality description placement
 29.1341 -29a9fe22 Merge tag 'v0.4.1'
 29.1342 -8af27718 update ChangeLog (tag: v0.4.1, origin/0.4.1, 0.4.1)
 29.1343 -e09e9ff6 Record & log the image pre-processing time.
 29.1344 -f59c0b4b iosbuild.sh: specify optimization flags
 29.1345 -8d34ea3e update ChangeLog (tag: v0.4.1-rc1)
 29.1346 -dbc3da66 makefile.unix: add vwebp.1 to the dist target
 29.1347 -89a7c83c update ChangeLog
 29.1348 -ffe67ee9 Merge "update NEWS for the next release" into 0.4.1
 29.1349 -2def1fe6 gif2webp: dust up the help message
 29.1350 -fb668d78 remove -noalphadither option from README/vwebp.1
 29.1351 -e49f693b update NEWS for the next release
 29.1352 -cd013580 Merge "update AUTHORS" into 0.4.1
 29.1353 -268d01eb update AUTHORS
 29.1354 -85213b9b bump version to 0.4.1
 29.1355 -695f80ae Merge "restore mux API compatibility" into 0.4.1
 29.1356 -862d296c restore mux API compatibility
 29.1357 -8f6f8c5d remove the !WEBP_REFERENCE_IMPLEMENTATION tweak in Put8x8uv
 29.1358 -d713a696 Merge changes If4debc15,I437a5d5f into 0.4.1
 29.1359 -c2fc52e4 restore encode API compatibility
 29.1360 -793368e8 restore decode API compatibility
 29.1361 -b8984f31 gif2webp: fix compile with giflib 5.1.0
 29.1362 -222f9b1a gif2webp: simplify giflib version checking
 29.1363 -d2cc61b7 Extend MakeARGB32() to accept Alpha channel.
 29.1364 -4595b62b Merge "use explicit size of kErrorMessages[] arrays"
 29.1365 -157de015 Merge "Actuate memory stats for PRINT_MEMORY_INFO"
 29.1366 -fbda2f49 JPEG decoder: delay conversion to YUV to WebPEncode() call
 29.1367 -0b747b1b use explicit size of kErrorMessages[] arrays
 29.1368 -3398d81a Actuate memory stats for PRINT_MEMORY_INFO
 29.1369 -6f3202be Merge "move WebPPictureInit to picture.c"
 29.1370 -6c347bbb move WebPPictureInit to picture.c
 29.1371 -fb3acf19 fix configure message for multi-thread
 29.1372 -40b086f7 configure: check for _beginthreadex
 29.1373 -1549d620 reorder the YUVA->ARGB and ARGB->YUVA functions correctly
 29.1374 -c6461bfd Merge "extract colorspace code from picture.c into picture_csp.c"
 29.1375 -736f2a17 extract colorspace code from picture.c into picture_csp.c
 29.1376 -645daa03 Merge "configure: check for -Wformat-security"
 29.1377 -abafed86 configure: check for -Wformat-security
 29.1378 -fbadb480 split monolithic picture.c into picture_{tools,psnr,rescale}.c
 29.1379 -c76f07ec dec_neon/TransformAC3: initialize vector w/vcreate
 29.1380 -bb4fc051 gif2webp: Allow single-frame animations
 29.1381 -46fd44c1 thread: remove harmless race on status_ in End()
 29.1382 -5a1a7264 Merge "configure: check for __builtin_bswapXX()"
 29.1383 -6781423b configure: check for __builtin_bswapXX()
 29.1384 -6450c48d configure: fix iOS builds
 29.1385 -6422e683 VP8LFillBitWindow: enable fast path for 32-bit builds
 29.1386 -4f7f52b2 VP8LFillBitWindow: respect WEBP_FORCE_ALIGNED
 29.1387 -e458badc endian_inl.h: implement htoleXX with BSwapXX
 29.1388 -f2664d1a endian_inl.h: add BSwap16
 29.1389 -6fbf5345 Merge "configure: add --enable-aligned"
 29.1390 -dc0f479d configure: add --enable-aligned
 29.1391 -9cc69e2b Merge "configure: support WIC + OpenGL under mingw64"
 29.1392 -257adfb0 remove experimental YUV444 YUV422 and YUV400 code
 29.1393 -10f4257c configure: support WIC + OpenGL under mingw64
 29.1394 -380cca4f configure.ac: add AC_C_BIGENDIAN
 29.1395 -ee70a901 endian_inl.h: add BSwap64
 29.1396 -47779d46 endian_inl.h: add BSwap32
 29.1397 -d5104b1f utils: add endian_inl.h
 29.1398 -58ab6224 Merge "make alpha-detection loop in IsKeyFrame() in good x/y order"
 29.1399 -9d562902 make alpha-detection loop in IsKeyFrame() in good x/y order
 29.1400 -516971b1 lossless: Remove unaligned read warning
 29.1401 -b8b596f6 Merge "configure.ac: add an autoconf version prerequisite"
 29.1402 -34b02f8c configure.ac: add an autoconf version prerequisite
 29.1403 -e59f5360 neon: normalize vdup_n_* usage
 29.1404 -6ee7160d Merge changes I0da7b3d3,Idad2f278,I4accc305
 29.1405 -abc02f24 Merge "fix (uncompiled) typo"
 29.1406 -bc03670f neon: add INIT_VECTOR4
 29.1407 -6c1c632b neon: add INIT_VECTOR3
 29.1408 -dc7687e5 neon: add INIT_VECTOR2
 29.1409 -4536e7c4 add WebPMuxSetCanvasSize() to the mux API
 29.1410 -824eab10 fix (uncompiled) typo
 29.1411 -1f3e5f1e remove unused 'shift' argument and QFIX2 define
 29.1412 -8e867051 Merge "VP8LoadNewBytes: use __builtin_bswap32 if available"
 29.1413 -1b6a2635 Merge "Fix handling of weird GIF with canvas dimension 0x0"
 29.1414 -1da3d461 VP8LoadNewBytes: use __builtin_bswap32 if available
 29.1415 -1582e402 Fix handling of weird GIF with canvas dimension 0x0
 29.1416 -b8811dac Merge "rename interface -> winterface"
 29.1417 -db8b8b5f Fix logic in the GIF LOOP-detection parsing
 29.1418 -25aaddc8 rename interface -> winterface
 29.1419 -5584d9d2 make WebPSetWorkerInterface() check its arguments
 29.1420 -a9ef7ef9 Merge "cosmetics: update thread.h comments"
 29.1421 -c6af9991 Merge "dust up the help message"
 29.1422 -0a8b8863 dust up the help message
 29.1423 -a9cf3191 cosmetics: update thread.h comments
 29.1424 -27bfeee4 QuantizeBlock SSE2 Optimization:
 29.1425 -2bc0dc3e Merge "webpmux: warn when odd frame offsets are used"
 29.1426 -3114ebe4 Merge changes Id8edd3c1,Id418eb96,Ide05e3be
 29.1427 -c0726634 webpmux: warn when odd frame offsets are used
 29.1428 -c5c6b408 Merge "add alpha dithering for lossy"
 29.1429 -d5146784 examples/Android.mk: add cwebp
 29.1430 -ca0fa7c7 Android.mk: move dwebp to examples/Android.mk
 29.1431 -73d8fca0 Android.mk: add ENABLE_SHARED flag
 29.1432 -6e93317f muxread: fix out of bounds read
 29.1433 -8b0f6a48 Makefile.vc: fix CFLAGS assignment w/HAVE_AVX2=1
 29.1434 -bbe32df1 add alpha dithering for lossy
 29.1435 -79020767 Merge "make error-code reporting consistent upon malloc failure"
 29.1436 -77bf4410 make error-code reporting consistent upon malloc failure
 29.1437 -7a93c000 **/Makefile.am: remove unused AM_CPPFLAGS
 29.1438 -24e30805 Add an interface abstraction to the WebP worker thread implementation
 29.1439 -d6cd6358 Merge "fix orig_rect==NULL case"
 29.1440 -2bfd1ffa fix orig_rect==NULL case
 29.1441 -059e21c1 Merge "configure: move config.h to src/webp/config.h"
 29.1442 -f05fe006 properly report back encoding error code in WebPFrameCacheAddFrame()
 29.1443 -32b31379 configure: move config.h to src/webp/config.h
 29.1444 -90090d99 Merge changes I7c675e51,I84f7d785
 29.1445 -ae7661b3 makefiles: define WEBP_HAVE_AVX2 when appropriate
 29.1446 -69fce2ea remove the special casing for res->first in VP8SetResidualCoeffs
 29.1447 -6e61a3a9 configure: test for -msse2
 29.1448 -b9d2efc6 rename upsampling_mips32.c to yuv_mips32.c
 29.1449 -bdfeebaa dsp/yuv: move sse2 functions to yuv_sse2.c
 29.1450 -46b32e86 Merge "configure: set WEBP_HAVE_AVX2 when available"
 29.1451 -88305db4 Merge "VP8RandomBits2: prevent signed int overflow"
 29.1452 -73fee88c VP8RandomBits2: prevent signed int overflow
 29.1453 -db4860b3 enc_sse2: prevent signed int overflow
 29.1454 -3fdaf4d2 Merge "real fix for longjmp warning"
 29.1455 -385e3340 real fix for longjmp warning
 29.1456 -230a0555 configure: set WEBP_HAVE_AVX2 when available
 29.1457 -a2ac8a42 restore original value_/range_ field order
 29.1458 -5e2ee56f Merge "remove libwebpdspdecode dep on libwebpdsp_avx2"
 29.1459 -61362db5 remove libwebpdspdecode dep on libwebpdsp_avx2
 29.1460 -42c447ae Merge "lossy bit-reader clean-up:"
 29.1461 -479ffd8b Merge "remove unused #include's"
 29.1462 -9754d39a Merge "strong filtering speed-up (~2-3% x86, ~1-2% for NEON)"
 29.1463 -158aff9b remove unused #include's
 29.1464 -09545eea lossy bit-reader clean-up:
 29.1465 -ea8b0a17 strong filtering speed-up (~2-3% x86, ~1-2% for NEON)
 29.1466 -6679f899 Optimize VP8SetResidualCoeffs.
 29.1467 -ac591cf2 fix for gcc-4.9 warnings about longjmp + local variables
 29.1468 -4dfa86b2 dsp/cpu: NaCl has no support for xgetbv
 29.1469 -4c398699 Merge "cwebp: fallback to native webp decode in WIC builds"
 29.1470 -33aa497e Merge "cwebp: add some missing newlines in longhelp output"
 29.1471 -c9b340a2 fix missing WebPInitAlphaProcessing call for premultiplied colorspace output
 29.1472 -57897bae Merge "lossless_neon: use vcreate_*() where appropriate"
 29.1473 -6aa4777b Merge "(enc|dec)_neon: use vcreate_*() where appropriate"
 29.1474 -0d346e41 Always reinit VP8TransformWHT instead of hard-coding
 29.1475 -7d039fc3 cwebp: fallback to native webp decode in WIC builds
 29.1476 -d471f424 cwebp: add some missing newlines in longhelp output
 29.1477 -bf0e0030 lossless_neon: use vcreate_*() where appropriate
 29.1478 -9251c2f6 (enc|dec)_neon: use vcreate_*() where appropriate
 29.1479 -399b916d lossy decoding: correct alpha-rescaling for YUVA format
 29.1480 -78c12ed8 Merge "Makefile.vc: add rudimentary avx2 support"
 29.1481 -dc5b122f try to remove the spurious warning for static analysis
 29.1482 -ddfefd62 Makefile.vc: add rudimentary avx2 support
 29.1483 -a8911643 Merge "simplify VP8LInitBitReader()"
 29.1484 -fdbcd44d simplify VP8LInitBitReader()
 29.1485 -7c004287 makefile.unix: add rudimentary avx2 support
 29.1486 -515e35cf Merge "add stub dsp/enc_avx2.c"
 29.1487 -a05dc140 SSE2: yuv->rgb speed-up for point-sampling
 29.1488 -178e9a69 add stub dsp/enc_avx2.c
 29.1489 -1b99c09c Merge "configure: add a test for -mavx2"
 29.1490 -fe728071 configure: add a test for -mavx2
 29.1491 -e46a247c cpu: fix check for __cpuidex availability
 29.1492 -176fda26 fix the bit-writer for lossless in 32bit mode
 29.1493 -541784c7 dsp.h: add a check for AVX2 / define WEBP_USE_AVX2
 29.1494 -bdb151ee dsp/cpu: add AVX2 detection
 29.1495 -ab9f2f86 Merge "revamp the point-sampling functions by processing a full plane"
 29.1496 -a2f8b289 revamp the point-sampling functions by processing a full plane
 29.1497 -ef076026 use decoder's DSP functions for autofilter
 29.1498 -2b5cb326 Merge "dsp/cpu: add AVX detection"
 29.1499 -df08e67e dsp/cpu: add AVX detection
 29.1500 -e2f405c9 Merge "clean-up and slight speed-up in-loop filtering SSE2"
 29.1501 -f60957bf clean-up and slight speed-up in-loop filtering SSE2
 29.1502 -9fc3ae46 .gitattributes: treat .ppm as binary
 29.1503 -3da924b5 Merge "dsp/WEBP_USE_NEON: test for __aarch64__"
 29.1504 -c7164490 Android.mk: always include *_neon.c in the build
 29.1505 -a577b23a dsp/WEBP_USE_NEON: test for __aarch64__
 29.1506 -54bfffca move RemapBitReader() from idec.c to bit_reader code
 29.1507 -34168ecb Merge "remove all unused layer code"
 29.1508 -f1e77173 remove all unused layer code
 29.1509 -b0757db7 Code cleanup for VP8LGetHistoImageSymbols.
 29.1510 -5fe628d3 make the token page size be variable instead of fixed 8192
 29.1511 -f948d08c memory debug: allow setting pre-defined malloc failure points
 29.1512 -ca3d746e use block-based allocation for backward refs storage, and free-lists
 29.1513 -1ba61b09 enable NEON intrinsics in aarch64 builds
 29.1514 -b9d2bb67 dsp/neon.h: coalesce intrinsics-related defines
 29.1515 -b5c75258 iosbuild: add support for iOSv7/aarch64
 29.1516 -9383afd5 Reduce number of memory allocations while decoding lossless.
 29.1517 -888e63ed Merge "dsp/lossless: prevent signed int overflow in left shift ops"
 29.1518 -8137f3ed Merge "instrument memory allocation routines for debugging"
 29.1519 -2aa18736 instrument memory allocation routines for debugging
 29.1520 -d3bcf72b Don't allocate VP8LHashChain, but treat like automatic object
 29.1521 -bd6b8619 dsp/lossless: prevent signed int overflow in left shift ops
 29.1522 -b7f19b83 Merge "dec/vp8l: prevent signed int overflow in left shift ops"
 29.1523 -29059d51 Merge "remove some uint64_t casts and use."
 29.1524 -e69a1df4 dec/vp8l: prevent signed int overflow in left shift ops
 29.1525 -cf5eb8ad remove some uint64_t casts and use.
 29.1526 -38e2db3e MIPS: MIPS32r1: Added optimization for HistogramAdd.
 29.1527 -e0609ade dwebp: fix exit code on webp load failure
 29.1528 -bbd358a8 Merge "example_util.h: avoid forward declaring enums"
 29.1529 -8955da21 example_util.h: avoid forward declaring enums
 29.1530 -6d6865f0 Added SSE2 variants for Average2/3/4
 29.1531 -b3a616b3 make HistogramAdd() a pointer in dsp
 29.1532 -c8bbb636 dec_neon: relocate some inline-asm defines
 29.1533 -4e393bb9 dec_neon: enable intrinsics-only functions
 29.1534 -ba99a922 dec_neon: use positive tests for USE_INTRINSICS
 29.1535 -69058ff8 Merge "example_util: add ExUtilDecodeWebPIncremental"
 29.1536 -a7828e8b dec_neon: make WORK_AROUND_GCC conditional on version
 29.1537 -3f3d717a Merge "enc_neon: enable intrinsics-only functions"
 29.1538 -de3cb6c8 Merge "move LOCAL_GCC_VERSION def to dsp.h"
 29.1539 -1b2fe14d example_util: add ExUtilDecodeWebPIncremental
 29.1540 -ca49e7ad Merge "enc_neon: move Transpose4x4 to dsp/neon.h"
 29.1541 -ad900abd Merge "fix warning about size_t -> int conversion"
 29.1542 -4825b436 fix warning about size_t -> int conversion
 29.1543 -42b35e08 enc_neon: enable intrinsics-only functions
 29.1544 -f937e012 move LOCAL_GCC_VERSION def to dsp.h
 29.1545 -5e1a17ef enc_neon: move Transpose4x4 to dsp/neon.h
 29.1546 -c7b92a5a dec_neon: (WORK_AROUND_GCC) delete unused Load4x8
 29.1547 -8e5f90b0 Merge "make ExUtilLoadWebP() accept NULL bitstream param."
 29.1548 -05d4c1b7 Merge "cwebp: add webpdec"
 29.1549 -ddeb6ac8 cwebp: add webpdec
 29.1550 -35d7d095 Merge "Reduce memory footprint for encoding WebP lossless."
 29.1551 -0b896101 Reduce memory footprint for encoding WebP lossless.
 29.1552 -f0b65c9a make ExUtilLoadWebP() accept NULL bitstream param.
 29.1553 -9c0a60cc Merge "dwebp: move webp decoding to example_util"
 29.1554 -1d62acf6 MIPS: MIPS32r1: Added optimization for HuffmanCost functions.
 29.1555 -4a0e7390 dwebp: move webp decoding to example_util
 29.1556 -c0220460 Merge "Bugfix: Incremental decode of lossy-alpha"
 29.1557 -8c7cd722 Bugfix: Incremental decode of lossy-alpha
 29.1558 -7955152d MIPS: fix error with number of registers.
 29.1559 -b1dabe37 Merge "Move the HuffmanCost() function to dsp lib"
 29.1560 -75b12006 Move the HuffmanCost() function to dsp lib
 29.1561 -2772b8bd MIPS: fix assembler error revealed by clang's debug build
 29.1562 -6653b601 enc_mips32: fix unused symbol warning in debug
 29.1563 -8dec1209 enc_mips32: disable ITransform(One) in debug builds
 29.1564 -98519dd5 enc_neon: convert Disto4x4 to intrinsics
 29.1565 -fe9317c9 cosmetics:
 29.1566 -953b0746 enc_neon: cosmetics
 29.1567 -a9fc697c Merge "WIP: extract the float-calculation of HuffmanCost from loop"
 29.1568 -3f84b521 Merge "replace some mult-long (vmull_u8) with mult-long-accumulate (vmlal_u8)"
 29.1569 -4ae0533f MIPS: MIPS32r1: Added optimizations for ExtraCost functions.
 29.1570 -b30a04cf WIP: extract the float-calculation of HuffmanCost from loop
 29.1571 -a8fe8ce2 Merge "NEON intrinsics version of CollectHistogram"
 29.1572 -95203d2d NEON intrinsics version of CollectHistogram
 29.1573 -7ca2e74b replace some mult-long (vmull_u8) with mult-long-accumulate (vmlal_u8)
 29.1574 -41c6efbd fix lossless_neon.c
 29.1575 -8ff96a02 NEON intrinsics version of FTransform
 29.1576 -0214f4a9 Merge "MIPS: MIPS32r1: Added optimizations for FastLog2"
 29.1577 -baabf1ea MIPS: MIPS32r1: Added optimizations for FastLog2
 29.1578 -3d49871d NEON functions for lossless coding
 29.1579 -3fe02915 MIPS: MIPS32r1: Added optimizations for SSE functions.
 29.1580 -c503b485 Merge "fix the gcc-4.6.0 bug by implementing alternative method"
 29.1581 -abe6f487 fix the gcc-4.6.0 bug by implementing alternative method
 29.1582 -5598bdec enc_mips32.c: fix file mode
 29.1583 -2b1b4d5a MIPS: MIPS32r1: Add optimization for GetResidualCost
 29.1584 -f0a1f3cd Merge "MIPS: MIPS32r1: Added optimization for FTransform"
 29.1585 -7231f610 MIPS: MIPS32r1: Added optimization for FTransform
 29.1586 -869eaf6c  ~30% encoding speedup: use NEON for QuantizeBlock()
 29.1587 -f758af6b enc_neon: convert FTransformWHT to intrinsics
 29.1588 -7dad095b MIPS: MIPS32r1: Added optimization for Disto4x4 (TTransform)
 29.1589 -2298d5f3 MIPS: MIPS32r1: Added optimization for QuantizeBlock
 29.1590 -e88150c9 Merge "MIPS: MIPS32r1: Add optimization for ITransform"
 29.1591 -de693f25 lossless_neon: disable VP8LConvert* functions
 29.1592 -4143332b NEON intrinsics for encoding
 29.1593 -0ca2914b MIPS: MIPS32r1: Add optimization for ITransform
 29.1594 -71bca5ec dec_neon: use vst_lane instead of vget_lane
 29.1595 -bf061052 Intrinsics NEON version of TransformOne
 29.1596 -19c6f1ba Merge "dec_neon: use vld?_lane instead of vset?_lane"
 29.1597 -7a94c0cf upsampling_neon: drop NEON suffix from local functions
 29.1598 -d14669c8 upsampling_sse2: drop SSE2 suffix from local functions
 29.1599 -2ca42a4f enc_sse2: drop SSE2 suffix from local functions
 29.1600 -d038e619 dec_sse2: drop SSE2 suffix from local functions
 29.1601 -fa52d752 dec_neon: use vld?_lane instead of vset?_lane
 29.1602 -c520e77d cosmetic: fix long line
 29.1603 -4b0f2dae Merge "add intrinsics NEON code for chroma strong-filtering"
 29.1604 -e351ec07 add intrinsics NEON code for chroma strong-filtering
 29.1605 -aaf734b8 Merge "Add SSE2 version of forward cross-color transform"
 29.1606 -c90a902e Add SSE2 version of forward cross-color transform
 29.1607 -bc374ff3 Use histogram_bits to initalize transform_bits.
 29.1608 -2132992d Merge "Add strong filtering intrinsics (inner and outer edges)"
 29.1609 -5fbff3a6 Add strong filtering intrinsics (inner and outer edges)
 29.1610 -d4813f0c Add SSE2 function for Inverse Cross-color Transform
 29.1611 -26029568 dec_neon: add strong loopfilter intrinsics
 29.1612 -cca7d7ef Merge "add intrinsics version of SimpleHFilter16NEON()"
 29.1613 -1a05dfa7 windows: fix dll builds
 29.1614 -d6c50d8a Merge "add some colorspace conversion functions in NEON"
 29.1615 -4fd7c82e SSE2 variants of Subtract-Green: Rectify loop condition
 29.1616 -97e5fac3 add some colorspace conversion functions in NEON
 29.1617 -b9a7a45f add intrinsics version of SimpleHFilter16NEON()
 29.1618 -daccbf40 add light filtering NEON intrinsics
 29.1619 -af444608 fix typo in STORE_WHT
 29.1620 -6af6b8e1 Tune HistogramCombineBin for large images.
 29.1621 -af93bdd6 use WebPSafe[CM]alloc/WebPSafeFree instead of [cm]alloc/free
 29.1622 -51f406a5 lossless_sse2: relocate VP8LDspInitSSE2 proto
 29.1623 -0f4f721b separate SSE2 lossless functions into its own file
 29.1624 -514fc251 VP8LConvertFromBGRA: use conversion function pointers
 29.1625 -6d2f3527 dsp/dec: TransformDCUV: use VP8TransformDC
 29.1626 -defc8e1b Merge "fix out-of-bound read during alpha-plane decoding"
 29.1627 -fbed3643 Merge "dsp: reuse wht transform from dec in encoder"
 29.1628 -d8467084 Merge "Add SSE2 version of ARGB -> BGR/RGB/... conversion functions"
 29.1629 -207d03b4 fix out-of-bound read during alpha-plane decoding
 29.1630 -d1b33ad5 2-5% faster trellis with clang/MacOS (and ~2-3% on ARM)
 29.1631 -369c26dd Add SSE2 version of ARGB -> BGR/RGB/... conversion functions
 29.1632 -df230f27 dsp: reuse wht transform from dec in encoder
 29.1633 -80e218d4 Android.mk: fix build with APP_ABI=armeabi-v7a-hard
 29.1634 -59daf083 Merge "cosmetics:"
 29.1635 -53622008 cosmetics:
 29.1636 -3e7f34a3 AssignSegments: quiet array-bounds warning
 29.1637 -3c2ebf58 Merge "UpdateHistogramCost: avoid implicit double->float"
 29.1638 -cf821c82 UpdateHistogramCost: avoid implicit double->float
 29.1639 -312e638f Extend the search space for GetBestGreenRedToBlue
 29.1640 -1c58526f Fix few nits
 29.1641 -fef22704 Optimize and re-structure VP8LGetHistoImageSymbols
 29.1642 -068b14ac Optimize lossless decoding.
 29.1643 -5f0cfa80 Do a binary search to get the optimum cache bits.
 29.1644 -24ca3678 Merge "allow 'cwebp -o -' to emit output to stdout"
 29.1645 -e12f874e allow 'cwebp -o -' to emit output to stdout
 29.1646 -2bcad89b allow some more stdin/stout I/O
 29.1647 -84ed4b3a fix cwebp.1 typos after patch #69199
 29.1648 -65b99f1c add a -z option to cwebp, and WebPConfigLosslessPreset() function
 29.1649 -30176619 4-5% faster trellis by removing some unneeded calculations.
 29.1650 -687a58ec histogram.c: reindent after b33e8a0
 29.1651 -06d456f6 Merge "~3-4% faster lossless encoding"
 29.1652 -c60de260 ~3-4% faster lossless encoding
 29.1653 -42eb06fc Merge "few cosmetics after patch #69079"
 29.1654 -82af8264 few cosmetics after patch #69079
 29.1655 -b33e8a05 Refactor code for HistogramCombine.
 29.1656 -ca1bfff5 Merge "5-10% encoding speedup with faster trellis (-m 6)"
 29.1657 -5aeeb087 5-10% encoding speedup with faster trellis (-m 6)
 29.1658 -82ae1bf2 cosmetics: normalize VP8GetCPUInfo checks
 29.1659 -e3dd9243 Merge "Refactor GetBestPredictorForTile for future tuning."
 29.1660 -206cc1be Refactor GetBestPredictorForTile for future tuning.
 29.1661 -3cb84062 Merge "speed-up trellis quant (~5-10% overall speed-up)"
 29.1662 -b66f2227 Merge "lossy encoding: ~3% speed-up"
 29.1663 -4287d0d4 speed-up trellis quant (~5-10% overall speed-up)
 29.1664 -390c8b31 lossy encoding: ~3% speed-up
 29.1665 -9a463c4a Merge "dec_neon: convert TransformWHT to intrinsics"
 29.1666 -e8605e96 Merge "dec_neon: add ConvertU8ToS16"
 29.1667 -4aa3e412 MIPS: MIPS32r1: rescaler bugfix
 29.1668 -c16cd99a Speed up lossless encoder.
 29.1669 -9d6b5ff1 dec_neon: convert TransformWHT to intrinsics
 29.1670 -2ff0aae2 dec_neon: add ConvertU8ToS16
 29.1671 -77a8f919 fix compilation with USE_YUVj flag
 29.1672 -4acbec1b Merge changes I3b240ffb,Ia9370283,Ia2d28728
 29.1673 -2719bb7e dec_neon: TransformAC3: work on packed vectors
 29.1674 -b7b60ca1 dec_neon: add SaturateAndStore4x4
 29.1675 -b7685d73 Rescale: let ImportRow / ExportRow be pointer-to-function
 29.1676 -e02f16ef dec_neon.c: convert TransformDC to intrinsics
 29.1677 -9cba963f add missing file
 29.1678 -8992ddb7 use static clipping tables
 29.1679 -0235d5e4 1-2% faster quantization in SSE2
 29.1680 -b2fbc36c fix VC12-x64 warning
 29.1681 -6e37cb94 Merge "cosmetics: backward_references.c: reindent after a7d2ee3"
 29.1682 -a42ea974 cosmetics: backward_references.c: reindent after a7d2ee3
 29.1683 -6c327442 Merge "fix missing __BIG_ENDIAN__ definition on some platform"
 29.1684 -a8b6aad1 fix missing __BIG_ENDIAN__ definition on some platform
 29.1685 -fde2904b Increase initial buffer size for VP8L Bit Writer.
 29.1686 -a7d2ee39 Optimize cache estimate logic.
 29.1687 -7fb6095b Merge "dec_neon.c: add TransformAC3"
 29.1688 -bf182e83 VP8LBitWriter: use a bit-accumulator
 29.1689 -3f40b4a5 Merge "MIPS: MIPS32r1: clang macro warning resolved"
 29.1690 -1684f4ee WebP Decoder: Mark some truncated bitstreams as invalid
 29.1691 -acbedac4 MIPS: MIPS32r1: clang macro warning resolved
 29.1692 -228e4877 dec_neon.c: add TransformAC3
 29.1693 -393f89b7 Android.mk: avoid gcc-specific flags with clang
 29.1694 -32aeaf11 revamp VP8LColorSpaceTransform() a bit
 29.1695 -0c7cc4ca Merge "Don't dereference NULL, ensure HashChain fully initialized"
 29.1696 -391316fe Don't dereference NULL, ensure HashChain fully initialized
 29.1697 -926ff402 WEBP_SWAP_16BIT_CSP: remove code dup
 29.1698 -1d1cd3bb Fix decode bug for rgbA_4444/RGBA_4444 color-modes.
 29.1699 -939e70e7 update AUTHORS file
 29.1700 -8934a622 cosmetics: *_mips32.c
 29.1701 -dd438c9a MIPS: MIPS32r1: Optimization of some simple point-sampling functions. PATCH [6/6]
 29.1702 -53520911 Added support for calling sampling functions via pointers.
 29.1703 -d16c6974 MIPS: MIPS32r1: Optimization of filter functions. PATCH [5/6]
 29.1704 -04336fc7 MIPS: MIPS32r1: Optimization of function TransformOne. PATCH [4/6]
 29.1705 -92d8fc7d MIPS: MIPS32r1: Optimization of function WebPRescalerImportRow. PATCH [3/6]
 29.1706 -bbc23ff3 parse one row of intra modes altogether
 29.1707 -a2f608f9 Merge "MIPS: MIPS32r1: Optimization of function WebPRescalerExportRow. [2/6]"
 29.1708 -88230854 MIPS: MIPS32r1: Optimization of function WebPRescalerExportRow. [2/6]
 29.1709 -c5a5b028 decode mt+incremental: fix segfault in debug builds
 29.1710 -9882b2f9 always use fast-analysis for all methods.
 29.1711 -000adac0 Merge "autoconf: update ax_pthread.m4"
 29.1712 -2d2fc37d update .gitignore
 29.1713 -5bf4255a Merge "Make it possible to avoid automagic dependencies"
 29.1714 -c1cb1933 disable NEON for arm64 platform
 29.1715 -73a304e9 Make it possible to avoid automagic dependencies
 29.1716 -4d493f8d MIPS: MIPS32r1: Decoder bit reader function optimized. PATCH [1/6]
 29.1717 -c741183c make WebPCleanupTransparentArea work with argb picture
 29.1718 -5da18552 add a decoding option to flip image vertically
 29.1719 -00c3c4e1 Merge "add man/vwebp.1"
 29.1720 -2c6bb428 add man/vwebp.1
 29.1721 -ea59a8e9 Merge "Merge tag 'v0.4.0'"
 29.1722 -7574bed4 fix comments related to array sizes
 29.1723 -0b5a90fd dwebp.1: fix option formatting
 29.1724 -effcb0fd Merge tag 'v0.4.0'
 29.1725 -7c76255d autoconf: update ax_pthread.m4
 29.1726 -fff2a11b make -short work with -print_ssim, -print_psnr, etc.
 29.1727 -68e7901d update ChangeLog (tag: v0.4.0-rc1, tag: v0.4.0, origin/0.4.0, 0.4.0)
 29.1728 -256e4333 update NEWS description with new general features
 29.1729 -29625340 Merge "gif2webp: don't use C99 %zu" into 0.4.0
 29.1730 -3b9f9dd0 gif2webp: don't use C99 %zu
 29.1731 -b5b2e3c7 cwebp: fix metadata output w/lossy+alpha
 29.1732 -ad26df1a makefile.unix: clean up libgif2webp_util.a
 29.1733 -c3b45570 update Changelog
 29.1734 -ca841121 Merge "bump version to 0.4.0" into 0.4.0
 29.1735 -8c524db8 bump version to 0.4.0
 29.1736 -eec2398c update AUTHORS & .mailmap
 29.1737 -b9bbf6a1 update NEWS for 0.4.0
 29.1738 -c72e0811 Merge "dec/webp.c: don't wait for data before reporting w/h"
 29.1739 -5ad65314 dec/frame.c: fix formatting
 29.1740 -f7fc4bc8 dec/webp.c: don't wait for data before reporting w/h
 29.1741 -66a32af5 Merge "NEON speed up"
 29.1742 -26d842eb NEON speed up
 29.1743 -f307f98b Merge "webpmux: let -- stop parameter parsing"
 29.1744 -fe051da7 Merge "README: add a section on gif2webp"
 29.1745 -6fd2bd62 Merge "manpage pedantry"
 29.1746 -4af19007 README: add a section on gif2webp
 29.1747 -6f36ade9 manpage pedantry
 29.1748 -f9016cb9 README: update dwebp options
 29.1749 -b4fa0a47 webpmux: let -- stop parameter parsing
 29.1750 -a9a20acf gif2webp: Add a multi-threaded encode option
 29.1751 -495bef41 fix bug in TrellisQuantize
 29.1752 -605a7127 simplify __cplusplus ifdef
 29.1753 -33109f99 Merge "drop: ifdef __cplusplus checks from C files"
 29.1754 -7f9de0b9 Merge changes I994a5587,I8467bb71,I13b50688,I1e2c9c7b
 29.1755 -5459030b gif2webp: let -- stop parameter parsing
 29.1756 -a4b0aa06 vwebp: let -- stop parameter parsing
 29.1757 -98af68fe cwebp: let -- stop parameter parsing
 29.1758 -a33831e2 dwebp: let -- stop parameter parsing
 29.1759 -36301249 add some checks on error paths
 29.1760 -ce4c7139 Merge "autoconf: add --disable-wic"
 29.1761 -5227d991 drop: ifdef __cplusplus checks from C files
 29.1762 -f6453559 dwebp.1: fix typo
 29.1763 -f91034f2 Merge "cwebp: print metadata stats when no output file is given"
 29.1764 -d4934553 gif2webp: Backward compatibility for giflib version <= 4.1.3
 29.1765 -4c617d32 gif2webp: Disable output of ICC profile by default
 29.1766 -73b731fb introduce a special quantization function for WHT
 29.1767 -41c0cc4b Make Forward WHT transform use 32bit fixed-point calculation
 29.1768 -a3359f5d Only compute quantization params once
 29.1769 -70490437 cwebp: print metadata stats when no output file is given
 29.1770 -d513bb62 * fix off-by-one zthresh calculation * remove the sharpening for non luma-AC coeffs * adjust the bias a little bit to compensate for this
 29.1771 -ad9dec0c Merge "cosmetics: dwebp: fix local function name format"
 29.1772 -f737f037 Merge "dwebp: remove a dead store"
 29.1773 -3c3a70da Merge "makefile.unix: install binaries in $(DESTDIR)/bin/"
 29.1774 -150b655f Merge "Android.mk: add some release compile flags"
 29.1775 -dbebd33b cosmetics: dwebp: fix local function name format
 29.1776 -27749951 dwebp: remove a dead store
 29.1777 -a01e04fe autoconf: add --disable-wic
 29.1778 -5009b227 makefile.unix: install binaries in $(DESTDIR)/bin/
 29.1779 -bab30fca Merge "fix -print_psnr / ssim options"
 29.1780 -ebef7fb3 fix -print_psnr / ssim options
 29.1781 -cb637855 Merge "fix bug due to overzealous check in WebPPictureYUVAToARGB()"
 29.1782 -8189885b Merge "EstimateBestFilter: use an int to iterate WEBP_FILTER_TYPE"
 29.1783 -4ad7d335 Android.mk: add some release compile flags
 29.1784 -c12e2369 cosmetics: fix a few typos
 29.1785 -6f104034 fix bug due to overzealous check in WebPPictureYUVAToARGB()
 29.1786 -3f6c35c6 EstimateBestFilter: use an int to iterate WEBP_FILTER_TYPE
 29.1787 -cc55790e Merge changes I8bb7a4dc,I2c180051,I021a014f,I8a224a62
 29.1788 -c536afb5 Merge "cosmetics: fix some typos"
 29.1789 -cbdd3e6e add a -dither dithering option to the decoder
 29.1790 -e8124012 Updated iosbuild.sh for XCode 5.x
 29.1791 -4931c329 cosmetics: fix some typos
 29.1792 -05aacf77 mux: add some missing casts
 29.1793 -617d9348 enc/vp8l: add a missing cast
 29.1794 -46db2865 idec: add some missing casts
 29.1795 -b524e336 ErrorStatusLossless: correct return type
 29.1796 -cb261f79 fix a descaling bug for vertical/horizontal U/V interpolation
 29.1797 -bcb3955c Merge changes I48968468,I181bc736
 29.1798 -73f52133 gif2webp: Add a mixed compression mode
 29.1799 -6198715e demux: split chunk parsing from ParseVP8X
 29.1800 -d2e3f4e6 demux: add a tail pointer for chunks
 29.1801 -87cffcc3 demux: cosmetics: s/has_frames/is_animation/
 29.1802 -e18e6677 demux: strictly enforce the animation flag
 29.1803 -c4f39f4a demux: cosmetics: remove a useless break
 29.1804 -61cb884d demux: (non-exp) fail if the fragmented flag is set
 29.1805 -ff379db3 few % speedup of lossless encoding
 29.1806 -df3649a2 remove all disabled code related to P-frames
 29.1807 -6d0cb3de Merge "gif2webp: kmin = 0 should suppress key-frame addition."
 29.1808 -36555983 gif2webp: kmin = 0 should suppress key-frame addition.
 29.1809 -7708e609 Merge "detect flatness in blocks and favor DC prediction"
 29.1810 -06b1503e Merge "add comment about the kLevelsFromDelta[][] LUT generation"
 29.1811 -5935259c add comment about the kLevelsFromDelta[][] LUT generation
 29.1812 -e3312ea6 detect flatness in blocks and favor DC prediction
 29.1813 -ebc9b1ee Merge "VPLBitReader bugfix: Catch error if bit_pos > LBITS too."
 29.1814 -96ad0e0a VPLBitReader bugfix: Catch error if bit_pos > LBITS too.
 29.1815 -a014e9c9 tune quantization biases toward higher precision
 29.1816 -1e898619 add helpful PrintBlockInfo() function
 29.1817 -596a6d73 make use of 'extern' consistent in function declarations
 29.1818 -c8d48c6e Merge "extract random utils to their own file util/random.[ch]"
 29.1819 -98aa33cf extract random utils to their own file util/random.[ch]
 29.1820 -432a723e Merge "swig: add basic go bindings"
 29.1821 -fab618b5 Merge "rename libwebp.i -> libwebp.swig"
 29.1822 -e4e7fcd6 swig: add basic go bindings
 29.1823 -d3408720 Merge "fast auto-determined filtering strength"
 29.1824 -f8bfd5cd fast auto-determined filtering strength
 29.1825 -ac0bf951 small clean-up in ExpandMatrix()
 29.1826 -1939607e rename libwebp.i -> libwebp.swig
 29.1827 -43148b6c filtering: precompute ilimit and hev_threshold
 29.1828 -18f992ec simplify f_inner calculation a little
 29.1829 -241d11f1 add missing const
 29.1830 -86c0031e add a 'format' field to WebPBitstreamFeatures
 29.1831 -dde91fde Demux: Correct the extended format validation
 29.1832 -5d6c5bd2 add entry for '-resize' option in cwebp's man
 29.1833 -7c098d18 Use some gamma-curve range compression when computing U/V average
 29.1834 -0b2b0504 Use deterministic random-dithering during RGB->YUV conversion
 29.1835 -8a2fa099 Add a second multi-thread method
 29.1836 -7d6f2da0 Merge "up to 20% faster multi-threaded decoding"
 29.1837 -266f63ea Merge "libwebp.jar: build w/Java 1.6 for Android compat"
 29.1838 -0532149c up to 20% faster multi-threaded decoding
 29.1839 -38efdc2e Simplify the gif2webp tool: move the optimization details to util
 29.1840 -de899516 libwebp.jar: build w/Java 1.6 for Android compat
 29.1841 -cb221552 Decode a full row of bitstream before reconstructing
 29.1842 -dca8a4d3 Merge "NEON/simple loopfilter: avoid q4-q7 registers"
 29.1843 -9e84d901 Merge "NEON/TransformWHT: avoid q4-q7 registers"
 29.1844 -fc10249b NEON/simple loopfilter: avoid q4-q7 registers
 29.1845 -2f09d63e NEON/TransformWHT: avoid q4-q7 registers
 29.1846 -77585a2b Merge "use a macrofunc for setting NzCoeffs bits"
 29.1847 -d155507c Merge "use HINT_GRAPH as image_hint for gif source"
 29.1848 -9c561646 Merge "only print GIF_DISPOSE_WARNING once"
 29.1849 -05879865 use HINT_GRAPH as image_hint for gif source
 29.1850 -0b28d7ab use a macrofunc for setting NzCoeffs bits
 29.1851 -f9bbc2a0 Special-case sparse transform
 29.1852 -00125196 gif2webp: detect and flatten uniformly similar blocks
 29.1853 -0deaf0fa only print GIF_DISPOSE_WARNING once
 29.1854 -6a8c0eb7 Merge "small optimization in segment-smoothing loop"
 29.1855 -f7146bc1 small optimization in segment-smoothing loop
 29.1856 -5a7533ce small gif2webp fix
 29.1857 -4df0c89e Merge changes Ic697660c,I27285521
 29.1858 -5b2e6bd3 Android.mk: add a dwebp target
 29.1859 -f910a84e Android.mk: update build flags
 29.1860 -63f9aba4 special-case WHT transform when there's only DC
 29.1861 -80911aef Merge "7-8% faster decoding by rewriting GetCoeffs()"
 29.1862 -606c4304 gif2webp: Improved compression for lossy animated WebP
 29.1863 -fb887f7f gif2webp: Different kmin/kmax defaults for lossy and lossless
 29.1864 -2a981366 7-8% faster decoding by rewriting GetCoeffs()
 29.1865 -92d47e4c improve VP8L signature detection by checking the version bits too
 29.1866 -5cd43e43 Add -incremental option to dwebp
 29.1867 -54b8e3f6 webpmux: DisplayInfo(): remove unnecessary error checks.
 29.1868 -40ae3520 fix memleak in WebPIDelete()
 29.1869 -d9662658 mux.h doc: WebPMuxGetFrame() can return WEBP_MUX_MEMORY_ERROR too.
 29.1870 -0e6747f8 webpmux -info: display dimensions and has_alpha per frame
 29.1871 -d78a82c4 Sanity check for underflow
 29.1872 -8498f4bf Merge "remove -Wshadow warnings"
 29.1873 -e89c6fc8 Avoid a potential memleak
 29.1874 -3ebe1757 Merge "break down the proba 4D-array into some handy structs"
 29.1875 -6a44550a break down the proba 4D-array into some handy structs
 29.1876 -2f5e8934 remove -Wshadow warnings
 29.1877 -bf3a29b3 Merge "add proper WEBP_HAVE_GIF and WEBP_HAVE_GL flags"
 29.1878 -2b0a7593 Merge "fix some warnings from static analysis"
 29.1879 -22dd07ce mux.h: Some doc corrections
 29.1880 -79ff0346 add proper WEBP_HAVE_GIF and WEBP_HAVE_GL flags
 29.1881 -d51f45f0 fix some warnings from static analysis
 29.1882 -d134307b fix conversion warning on MSVC
 29.1883 -d538cea8 gif2webp: Support a 'min' and 'max'  key frame interval
 29.1884 -80b54e1c allow search with token buffer loop and fix PARTITION0 problem
 29.1885 -b7d4e042 add VP8EstimateTokenSize()
 29.1886 -10fddf53 enc/quant.c: silence a warning
 29.1887 -399cd456 Merge "fix compile error on ARM/gcc"
 29.1888 -9f24519e encoder: misc rate-related fixes
 29.1889 -c663bb21 Merge "simplify VP8IteratorSaveBoundary() arg passing"
 29.1890 -fa46b312 Demux.h: Correct a method name reference
 29.1891 -f8398c9d fix compile error on ARM/gcc
 29.1892 -f691f0e4 simplify VP8IteratorSaveBoundary() arg passing
 29.1893 -42542be8 up to 6% faster encoding with clang compiler
 29.1894 -93402f02 multi-threaded segment analysis
 29.1895 -7e2d6595 Merge "remove the PACK() bit-packing tricks"
 29.1896 -c13fecf9 remove the PACK() bit-packing tricks
 29.1897 -2fd091c9 Merge "use NULL for lf_stats_ testing, not bool"
 29.1898 -b11c9d62 dwebp: use default dct_method
 29.1899 -4bb8465f Merge "(de)mux.h: wrap pseudo-code in /* */"
 29.1900 -cfb56b17 make -pass option work with token buffers
 29.1901 -5416aab4 (de)mux.h: wrap pseudo-code in /* */
 29.1902 -35dba337 use NULL for lf_stats_ testing, not bool
 29.1903 -733a7faa enc->Iterator memory cleanup
 29.1904 -e81fac86 Add support for "no blend" in webpmux binary
 29.1905 -3b80bc48 gif2webp: Separate out each step into a method
 29.1906 -bef7e9cc Add doc precision about demux object keeping pointers to data.
 29.1907 -61405a14 dwebp: enable stdout output with WIC
 29.1908 -6eabb886 Merge "Animated WebP: add "do no blend" option to spec"
 29.1909 -be20decb fix compilation for BITS 24
 29.1910 -e58cc137 Merge "dwebp: s/unsigned char/uint8_t/"
 29.1911 -72501d43 dwebp: s/unsigned char/uint8_t/
 29.1912 -2c9633e8 Merge "gif2webp: Insert independent frames at regular intervals."
 29.1913 -f0d6a14b gif2webp: Insert independent frames at regular intervals.
 29.1914 -b25a6fbf yuv.h: fix indent
 29.1915 -ede3602e Merge "cosmetics: fix indent"
 29.1916 -3a65122a dwebp: fix stdout related output
 29.1917 -388a7249 cosmetics: fix indent
 29.1918 -4c7322c8 Merge "dsp: msvc compatibility"
 29.1919 -d50c7e32 Merge "5-7% faster SSE2 versions of YUV->RGB conversion functions"
 29.1920 -b8ab7847 Merge "simplify upsampler calls: only allow 'bottom' to be NULL"
 29.1921 -df6cebfa 5-7% faster SSE2 versions of YUV->RGB conversion functions
 29.1922 -ad6ac32d simplify upsampler calls: only allow 'bottom' to be NULL
 29.1923 -a5e8afaf output to stdout if file name is "-"
 29.1924 -f358450f dsp: msvc compatibility
 29.1925 -43a7c8eb Merge "cosmetics"
 29.1926 -4c5f19c1 Merge "bit_reader.h: cosmetics"
 29.1927 -f72fab70 cosmetics
 29.1928 -14dd5e78 fix const-ness
 29.1929 -b20aec49 Merge "Support for 'do not blend' option in vwebp"
 29.1930 -dcf65222 Support for 'do not blend' option in vwebp
 29.1931 -d5bad033 Animated WebP: add "do no blend" option to spec
 29.1932 -a2f5f73d Merge "Support for "Do not blend" in mux and demux libraries"
 29.1933 -e081f2f3 Pack code & extra_bits to Struct (VP8LPrefixCode).
 29.1934 -6284854b Support for "Do not blend" in mux and demux libraries
 29.1935 -f486aaa9 Merge "slightly faster ParseIntraMode"
 29.1936 -d1718632 slightly faster ParseIntraMode
 29.1937 -3ceca8ad bit_reader.h: cosmetics
 29.1938 -69257f70 Create LUT for PrefixEncode.
 29.1939 -988b7084 add WebPWorkerExecute() for convenient bypass
 29.1940 -06e24987 Merge "VP8EncIterator clean-up"
 29.1941 -de4d4ad5 VP8EncIterator clean-up
 29.1942 -7bbe9529 Merge "cosmetics: thread.c: drop a redundant comment"
 29.1943 -da411485 cosmetics: thread.c: drop a redundant comment
 29.1944 -feb4b6e6 thread.h: #ifdef when checking WEBP_USE_THREAD
 29.1945 -8924a3a7 thread.c: drop WebPWorker prefix from static funcs
 29.1946 -1aed8f2a Merge "fix indent"
 29.1947 -4038ed15 fix indent
 29.1948 -1693fd9b Demux: A new state WEBP_DEMUX_PARSE_ERROR
 29.1949 -8dcae8b3 fix rescaling-with-alpha inaccuracy
 29.1950 -11249abf Merge changes I9b4dc36c,I4e0eef4d
 29.1951 -52508a1f Mux: support parsing unknown chunks within a frame/fragment.
 29.1952 -05db0572 WebPMuxSetChunk: remove unused variable
 29.1953 -8ba1bf61 Stricter check for presence of alpha when writing lossless images
 29.1954 -a03c3516 Demux: WebPIterator now also denotes if the frame has alpha.
 29.1955 -6df743a3 Decoder: handle fragments case correctly too.
 29.1956 -faa4b07e Support for unknown chunks in mux library
 29.1957 -7d60bbc6 Speed up HashChainFindCopy function.
 29.1958 -66740140 Speedup Alpha plane encoding.
 29.1959 -b7346a1e 0.1 % speedup to decoding
 29.1960 -c606182e webp-container-spec: Tighten language added by last
 29.1961 -a34a5029 pngdec: output error messages from libpng
 29.1962 -e84c625d Merge "Detect canvas and image size mismatch in decoder."
 29.1963 -f626fe2e Detect canvas and image size mismatch in decoder.
 29.1964 -f5fbdee0 demux: stricter image bounds check
 29.1965 -30c8158a add extra assert in Huffman decode code
 29.1966 -8967b9f3 SSE2 for lossless decoding (critical) functions.
 29.1967 -699d80ea Jump-lookup for Huffman coding
 29.1968 -c34307ab fix some VS9 warnings about type conversion
 29.1969 -eeada35c pngdec: add missing include
 29.1970 -54b65108 gif2webp: If aligning to even offsets, extra pixels should be transparent
 29.1971 -0bcf5ce3 Merge "remove a malloc() in case we're using only FILTER_NONE for alpha"
 29.1972 -2c07143b remove a malloc() in case we're using only FILTER_NONE for alpha
 29.1973 -a4d5f59d Faster lossless decoding