Skip to content

Commit

Permalink
- transplant libwebp import from gzdoom
Browse files Browse the repository at this point in the history
  • Loading branch information
madame-rachelle committed Apr 11, 2024
1 parent 326c49e commit 2d5f908
Show file tree
Hide file tree
Showing 182 changed files with 70,851 additions and 25 deletions.
15 changes: 1 addition & 14 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -225,20 +225,6 @@ option( NO_OPENAL "Disable OpenAL sound support" OFF )

find_package( BZip2 )
find_package( VPX )
find_package( WebP )
if (NOT WebP_FOUND)
include(FindPkgConfig)
pkg_check_modules(libwebp IMPORTED_TARGET libwebp)
if (NOT TARGET PkgConfig::libwebp)
message(SEND_ERROR "libwebp not found")
endif()
pkg_check_modules(libwebpmux REQUIRED IMPORTED_TARGET libwebpmux)
pkg_check_modules(libwebpdemux REQUIRED IMPORTED_TARGET libwebpdemux)

add_library(WebP::webp ALIAS PkgConfig::libwebp)
add_library(WebP::webpdemux ALIAS PkgConfig::libwebpdemux)
add_library(WebP::libwebpmux ALIAS PkgConfig::libwebpmux)
endif()

include( TargetArch )

Expand Down Expand Up @@ -389,6 +375,7 @@ if (HAVE_VULKAN)
endif()

add_subdirectory( libraries/ZWidget )
add_subdirectory( libraries/webp )

add_subdirectory( libraries/discordrpc EXCLUDE_FROM_ALL )
set( DRPC_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libraries/discordrpc/include" )
Expand Down
60 changes: 60 additions & 0 deletions libraries/webp/AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
Contributors:
- Aidan O'Loan (aidanol at gmail dot com)
- Alan Browning (browning at google dot com)
- Alexandru Ardelean (ardeleanalex at gmail dot com)
- Brian Ledger (brianpl at google dot com)
- Charles Munger (clm at google dot com)
- Cheng Yi (cyi at google dot com)
- Christian Duvivier (cduvivier at google dot com)
- Christopher Degawa (ccom at randomderp dot com)
- Clement Courbet (courbet at google dot com)
- Djordje Pesut (djordje dot pesut at imgtec dot com)
- Frank Barchard (fbarchard at google dot com)
- Hui Su (huisu at google dot com)
- H. Vetinari (h dot vetinari at gmx dot com)
- Ilya Kurdyukov (jpegqs at gmail dot com)
- Ingvar Stepanyan (rreverser at google dot com)
- James Zern (jzern at google dot com)
- Jan Engelhardt (jengelh at medozas dot de)
- Jehan (jehan at girinstud dot io)
- Jeremy Maitin-Shepard (jbms at google dot com)
- Johann Koenig (johann dot koenig at duck dot com)
- Jovan Zelincevic (jovan dot zelincevic at imgtec dot com)
- Jyrki Alakuijala (jyrki at google dot com)
- Konstantin Ivlev (tomskside at gmail dot com)
- Lode Vandevenne (lode at google dot com)
- Lou Quillio (louquillio at google dot com)
- Mans Rullgard (mans at mansr dot com)
- Marcin Kowalczyk (qrczak at google dot com)
- Martin Olsson (mnemo at minimum dot se)
- Maryla Ustarroz-Calonge (maryla at google dot com)
- Mikołaj Zalewski (mikolajz at google dot com)
- Mislav Bradac (mislavm at google dot com)
- Nico Weber (thakis at chromium dot org)
- Noel Chromium (noel at chromium dot org)
- Nozomi Isozaki (nontan at pixiv dot co dot jp)
- Oliver Wolff (oliver dot wolff at qt dot io)
- Owen Rodley (orodley at google dot com)
- Parag Salasakar (img dot mips1 at gmail dot com)
- Pascal Massimino (pascal dot massimino at gmail dot com)
- Paweł Hajdan, Jr (phajdan dot jr at chromium dot org)
- Pierre Joye (pierre dot php at gmail dot com)
- Roberto Alanis (alanisbaez at google dot com)
- Sam Clegg (sbc at chromium dot org)
- Scott Hancher (seh at google dot com)
- Scott LaVarnway (slavarnway at google dot com)
- Scott Talbot (s at chikachow dot org)
- Slobodan Prijic (slobodan dot prijic at imgtec dot com)
- Somnath Banerjee (somnath dot banerjee at gmail dot com)
- Sriraman Tallam (tmsriram at google dot com)
- Tamar Levy (tamar dot levy at intel dot com)
- Thiago Perrotta (tperrotta at google dot com)
- Timothy Gu (timothygu99 at gmail dot com)
- Urvang Joshi (urvang at google dot com)
- Vikas Arora (vikasa at google dot com)
- Vincent Rabaud (vrabaud at google dot com)
- Vlad Tsyrklevich (vtsyrklevich at chromium dot org)
- Wan-Teh Chang (wtc at google dot com)
- Yang Zhang (yang dot zhang at arm dot com)
- Yannis Guyon (yguyon at google dot com)
- Zhi An Ng (zhin at chromium dot org)
211 changes: 211 additions & 0 deletions libraries/webp/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
cmake_minimum_required(VERSION 3.11)
project(webp)

set(WEBP_SOURCES
src/dec/alphai_dec.h
src/dec/alpha_dec.c
src/dec/buffer_dec.c
src/dec/common_dec.h
src/dec/frame_dec.c
src/dec/idec_dec.c
src/dec/io_dec.c
src/dec/quant_dec.c
src/dec/tree_dec.c
src/dec/vp8i_dec.h
src/dec/vp8li_dec.h
src/dec/vp8l_dec.c
src/dec/vp8_dec.c
src/dec/vp8_dec.h
src/dec/webpi_dec.h
src/dec/webp_dec.c
src/demux/anim_decode.c
src/demux/demux.c
src/dsp/alpha_processing.c
src/dsp/alpha_processing_mips_dsp_r2.c
src/dsp/alpha_processing_neon.c
src/dsp/alpha_processing_sse2.c
src/dsp/alpha_processing_sse41.c
src/dsp/common_sse2.h
src/dsp/common_sse41.h
src/dsp/cost.c
src/dsp/cost_mips32.c
src/dsp/cost_mips_dsp_r2.c
src/dsp/cost_neon.c
src/dsp/cost_sse2.c
src/dsp/cpu.c
src/dsp/cpu.h
src/dsp/dec.c
src/dsp/dec_clip_tables.c
src/dsp/dec_mips32.c
src/dsp/dec_mips_dsp_r2.c
src/dsp/dec_msa.c
src/dsp/dec_neon.c
src/dsp/dec_sse2.c
src/dsp/dec_sse41.c
src/dsp/dsp.h
src/dsp/enc.c
src/dsp/enc_mips32.c
src/dsp/enc_mips_dsp_r2.c
src/dsp/enc_msa.c
src/dsp/enc_neon.c
src/dsp/enc_sse2.c
src/dsp/enc_sse41.c
src/dsp/filters.c
src/dsp/filters_mips_dsp_r2.c
src/dsp/filters_msa.c
src/dsp/filters_neon.c
src/dsp/filters_sse2.c
src/dsp/lossless.c
src/dsp/lossless.h
src/dsp/lossless_common.h
src/dsp/lossless_enc.c
src/dsp/lossless_enc_mips32.c
src/dsp/lossless_enc_mips_dsp_r2.c
src/dsp/lossless_enc_msa.c
src/dsp/lossless_enc_neon.c
src/dsp/lossless_enc_sse2.c
src/dsp/lossless_enc_sse41.c
src/dsp/lossless_mips_dsp_r2.c
src/dsp/lossless_msa.c
src/dsp/lossless_neon.c
src/dsp/lossless_sse2.c
src/dsp/lossless_sse41.c
src/dsp/mips_macro.h
src/dsp/msa_macro.h
src/dsp/neon.h
src/dsp/quant.h
src/dsp/rescaler.c
src/dsp/rescaler_mips32.c
src/dsp/rescaler_mips_dsp_r2.c
src/dsp/rescaler_msa.c
src/dsp/rescaler_neon.c
src/dsp/rescaler_sse2.c
src/dsp/ssim.c
src/dsp/ssim_sse2.c
src/dsp/upsampling.c
src/dsp/upsampling_mips_dsp_r2.c
src/dsp/upsampling_msa.c
src/dsp/upsampling_neon.c
src/dsp/upsampling_sse2.c
src/dsp/upsampling_sse41.c
src/dsp/yuv.c
src/dsp/yuv.h
src/dsp/yuv_mips32.c
src/dsp/yuv_mips_dsp_r2.c
src/dsp/yuv_neon.c
src/dsp/yuv_sse2.c
src/dsp/yuv_sse41.c
src/enc/alpha_enc.c
src/enc/analysis_enc.c
src/enc/backward_references_cost_enc.c
src/enc/backward_references_enc.c
src/enc/backward_references_enc.h
src/enc/config_enc.c
src/enc/cost_enc.c
src/enc/cost_enc.h
src/enc/filter_enc.c
src/enc/frame_enc.c
src/enc/histogram_enc.c
src/enc/histogram_enc.h
src/enc/iterator_enc.c
src/enc/near_lossless_enc.c
src/enc/picture_csp_enc.c
src/enc/picture_enc.c
src/enc/picture_psnr_enc.c
src/enc/picture_rescale_enc.c
src/enc/picture_tools_enc.c
src/enc/predictor_enc.c
src/enc/quant_enc.c
src/enc/syntax_enc.c
src/enc/token_enc.c
src/enc/tree_enc.c
src/enc/vp8i_enc.h
src/enc/vp8li_enc.h
src/enc/vp8l_enc.c
src/enc/webp_enc.c
src/mux/animi.h
src/mux/anim_encode.c
src/mux/muxedit.c
src/mux/muxi.h
src/mux/muxinternal.c
src/mux/muxread.c
src/utils/bit_reader_inl_utils.h
src/utils/bit_reader_utils.c
src/utils/bit_reader_utils.h
src/utils/bit_writer_utils.c
src/utils/bit_writer_utils.h
src/utils/color_cache_utils.c
src/utils/color_cache_utils.h
src/utils/endian_inl_utils.h
src/utils/filters_utils.c
src/utils/filters_utils.h
src/utils/huffman_encode_utils.c
src/utils/huffman_encode_utils.h
src/utils/huffman_utils.c
src/utils/huffman_utils.h
src/utils/palette.c
src/utils/palette.h
src/utils/quant_levels_dec_utils.c
src/utils/quant_levels_dec_utils.h
src/utils/quant_levels_utils.c
src/utils/quant_levels_utils.h
src/utils/random_utils.c
src/utils/random_utils.h
src/utils/rescaler_utils.c
src/utils/rescaler_utils.h
src/utils/thread_utils.c
src/utils/thread_utils.h
src/utils/utils.c
src/utils/utils.h
sharpyuv/sharpyuv.c
sharpyuv/sharpyuv.h
sharpyuv/sharpyuv_cpu.c
sharpyuv/sharpyuv_cpu.h
sharpyuv/sharpyuv_csp.c
sharpyuv/sharpyuv_csp.h
sharpyuv/sharpyuv_dsp.c
sharpyuv/sharpyuv_dsp.h
sharpyuv/sharpyuv_gamma.c
sharpyuv/sharpyuv_gamma.h
sharpyuv/sharpyuv_neon.c
sharpyuv/sharpyuv_sse2.c
)

set(WEBP_INCLUDES
include/webp/decode.h
include/webp/demux.h
include/webp/encode.h
include/webp/format_constants.h
include/webp/mux.h
include/webp/mux_types.h
include/webp/types.h
)

source_group("src" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/src/.+")
source_group("src\\dec" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/src/dec/.+")
source_group("src\\demux" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/src/demux/.+")
source_group("src\\dsp" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/src/dsp/.+")
source_group("src\\enc" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/src/enc/.+")
source_group("src\\mux" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/src/mux/.+")
source_group("src\\utils" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/src/utils/.+")
source_group("sharpyuv" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/sharpyuv/.+")
source_group("include" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/include/webp/.+")
source_group("include\\webp" REGULAR_EXPRESSION "${CMAKE_CURRENT_SOURCE_DIR}/include/webp/core/.+")

include_directories(${CMAKE_CURRENT_SOURCE_DIR})

if(MSVC)
# Use all cores for compilation
set(CMAKE_CXX_FLAGS "/MP ${CMAKE_CXX_FLAGS}")

# Ignore warnings in third party code
#set_source_files_properties(${WEBP_SOURCES} PROPERTIES COMPILE_FLAGS "/wd4244 /wd4267 /wd4005 /wd4018 -D_CRT_SECURE_NO_WARNINGS")
endif()

add_library(webp STATIC ${WEBP_SOURCES} ${WEBP_INCLUDES})
target_link_libraries(webp ${WEBP_LIBS})
set_target_properties(webp PROPERTIES CXX_STANDARD 17)

if(MSVC)
set_property(TARGET webp PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()
30 changes: 30 additions & 0 deletions libraries/webp/COPYING
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
Copyright (c) 2010, Google Inc. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.

* Neither the name of Google nor the names of its contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

23 changes: 23 additions & 0 deletions libraries/webp/PATENTS
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
Additional IP Rights Grant (Patents)
------------------------------------

"These implementations" means the copyrightable works that implement the WebM
codecs distributed by Google as part of the WebM Project.

Google hereby grants to you a perpetual, worldwide, non-exclusive, no-charge,
royalty-free, irrevocable (except as stated in this section) patent license to
make, have made, use, offer to sell, sell, import, transfer, and otherwise
run, modify and propagate the contents of these implementations of WebM, where
such license applies only to those patent claims, both currently owned by
Google and acquired in the future, licensable by Google that are necessarily
infringed by these implementations of WebM. This grant does not include claims
that would be infringed only as a consequence of further modification of these
implementations. If you or your agent or exclusive licensee institute or order
or agree to the institution of patent litigation or any other patent
enforcement activity against any entity (including a cross-claim or
counterclaim in a lawsuit) alleging that any of these implementations of WebM
or any code incorporated within any of these implementations of WebM
constitute direct or contributory patent infringement, or inducement of
patent infringement, then any patent rights granted to you under this License
for these implementations of WebM shall terminate as of the date such
litigation is filed.
Loading

0 comments on commit 2d5f908

Please sign in to comment.