mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
Merge pull request #21110 from alalek:update_libjpeg-turbo
This commit is contained in:
commit
2c226d597d
4
3rdparty/libjpeg-turbo/CMakeLists.txt
vendored
4
3rdparty/libjpeg-turbo/CMakeLists.txt
vendored
@ -4,9 +4,9 @@ ocv_warnings_disable(CMAKE_C_FLAGS -Wunused-parameter -Wsign-compare -Wshorten-6
|
|||||||
|
|
||||||
set(VERSION_MAJOR 2)
|
set(VERSION_MAJOR 2)
|
||||||
set(VERSION_MINOR 1)
|
set(VERSION_MINOR 1)
|
||||||
set(VERSION_REVISION 0)
|
set(VERSION_REVISION 2)
|
||||||
set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION})
|
set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION})
|
||||||
set(LIBJPEG_TURBO_VERSION_NUMBER 2001000)
|
set(LIBJPEG_TURBO_VERSION_NUMBER 2001002)
|
||||||
|
|
||||||
string(TIMESTAMP BUILD "opencv-${OPENCV_VERSION}-libjpeg-turbo")
|
string(TIMESTAMP BUILD "opencv-${OPENCV_VERSION}-libjpeg-turbo")
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
10
3rdparty/libjpeg-turbo/jconfigint.h.in
vendored
10
3rdparty/libjpeg-turbo/jconfigint.h.in
vendored
@ -40,3 +40,13 @@
|
|||||||
#define HAVE_BITSCANFORWARD
|
#define HAVE_BITSCANFORWARD
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__has_attribute)
|
||||||
|
#if __has_attribute(fallthrough)
|
||||||
|
#define FALLTHROUGH __attribute__((fallthrough));
|
||||||
|
#else
|
||||||
|
#define FALLTHROUGH
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define FALLTHROUGH
|
||||||
|
#endif
|
||||||
|
5
3rdparty/libjpeg-turbo/src/jchuff.c
vendored
5
3rdparty/libjpeg-turbo/src/jchuff.c
vendored
@ -44,8 +44,9 @@
|
|||||||
* flags (this defines __thumb__).
|
* flags (this defines __thumb__).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(__arm__) || defined(__aarch64__) || defined(_M_ARM) || \
|
/* NOTE: Both GCC and Clang define __GNUC__ */
|
||||||
defined(_M_ARM64)
|
#if (defined(__GNUC__) && (defined(__arm__) || defined(__aarch64__))) || \
|
||||||
|
defined(_M_ARM) || defined(_M_ARM64)
|
||||||
#if !defined(__thumb__) || defined(__thumb2__)
|
#if !defined(__thumb__) || defined(__thumb2__)
|
||||||
#define USE_CLZ_INTRINSIC
|
#define USE_CLZ_INTRINSIC
|
||||||
#endif
|
#endif
|
||||||
|
2
3rdparty/libjpeg-turbo/src/jcmaster.c
vendored
2
3rdparty/libjpeg-turbo/src/jcmaster.c
vendored
@ -493,7 +493,7 @@ prepare_for_pass(j_compress_ptr cinfo)
|
|||||||
master->pass_type = output_pass;
|
master->pass_type = output_pass;
|
||||||
master->pass_number++;
|
master->pass_number++;
|
||||||
#endif
|
#endif
|
||||||
/*FALLTHROUGH*/
|
FALLTHROUGH /*FALLTHROUGH*/
|
||||||
case output_pass:
|
case output_pass:
|
||||||
/* Do a data-output pass. */
|
/* Do a data-output pass. */
|
||||||
/* We need not repeat per-scan setup if prior optimization pass did it. */
|
/* We need not repeat per-scan setup if prior optimization pass did it. */
|
||||||
|
10
3rdparty/libjpeg-turbo/src/jcphuff.c
vendored
10
3rdparty/libjpeg-turbo/src/jcphuff.c
vendored
@ -7,6 +7,7 @@
|
|||||||
* Copyright (C) 2011, 2015, 2018, 2021, D. R. Commander.
|
* Copyright (C) 2011, 2015, 2018, 2021, D. R. Commander.
|
||||||
* Copyright (C) 2016, 2018, Matthieu Darbois.
|
* Copyright (C) 2016, 2018, Matthieu Darbois.
|
||||||
* Copyright (C) 2020, Arm Limited.
|
* Copyright (C) 2020, Arm Limited.
|
||||||
|
* Copyright (C) 2021, Alex Richardson.
|
||||||
* For conditions of distribution and use, see the accompanying README.ijg
|
* For conditions of distribution and use, see the accompanying README.ijg
|
||||||
* file.
|
* file.
|
||||||
*
|
*
|
||||||
@ -52,8 +53,9 @@
|
|||||||
* flags (this defines __thumb__).
|
* flags (this defines __thumb__).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(__arm__) || defined(__aarch64__) || defined(_M_ARM) || \
|
/* NOTE: Both GCC and Clang define __GNUC__ */
|
||||||
defined(_M_ARM64)
|
#if (defined(__GNUC__) && (defined(__arm__) || defined(__aarch64__))) || \
|
||||||
|
defined(_M_ARM) || defined(_M_ARM64)
|
||||||
#if !defined(__thumb__) || defined(__thumb2__)
|
#if !defined(__thumb__) || defined(__thumb2__)
|
||||||
#define USE_CLZ_INTRINSIC
|
#define USE_CLZ_INTRINSIC
|
||||||
#endif
|
#endif
|
||||||
@ -679,7 +681,7 @@ encode_mcu_AC_first(j_compress_ptr cinfo, JBLOCKROW *MCU_data)
|
|||||||
emit_restart(entropy, entropy->next_restart_num);
|
emit_restart(entropy, entropy->next_restart_num);
|
||||||
|
|
||||||
#ifdef WITH_SIMD
|
#ifdef WITH_SIMD
|
||||||
cvalue = values = (JCOEF *)PAD((size_t)values_unaligned, 16);
|
cvalue = values = (JCOEF *)PAD((JUINTPTR)values_unaligned, 16);
|
||||||
#else
|
#else
|
||||||
/* Not using SIMD, so alignment is not needed */
|
/* Not using SIMD, so alignment is not needed */
|
||||||
cvalue = values = values_unaligned;
|
cvalue = values = values_unaligned;
|
||||||
@ -944,7 +946,7 @@ encode_mcu_AC_refine(j_compress_ptr cinfo, JBLOCKROW *MCU_data)
|
|||||||
emit_restart(entropy, entropy->next_restart_num);
|
emit_restart(entropy, entropy->next_restart_num);
|
||||||
|
|
||||||
#ifdef WITH_SIMD
|
#ifdef WITH_SIMD
|
||||||
cabsvalue = absvalues = (JCOEF *)PAD((size_t)absvalues_unaligned, 16);
|
cabsvalue = absvalues = (JCOEF *)PAD((JUINTPTR)absvalues_unaligned, 16);
|
||||||
#else
|
#else
|
||||||
/* Not using SIMD, so alignment is not needed */
|
/* Not using SIMD, so alignment is not needed */
|
||||||
cabsvalue = absvalues = absvalues_unaligned;
|
cabsvalue = absvalues = absvalues_unaligned;
|
||||||
|
3
3rdparty/libjpeg-turbo/src/jdapimin.c
vendored
3
3rdparty/libjpeg-turbo/src/jdapimin.c
vendored
@ -23,6 +23,7 @@
|
|||||||
#include "jinclude.h"
|
#include "jinclude.h"
|
||||||
#include "jpeglib.h"
|
#include "jpeglib.h"
|
||||||
#include "jdmaster.h"
|
#include "jdmaster.h"
|
||||||
|
#include "jconfigint.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -308,7 +309,7 @@ jpeg_consume_input(j_decompress_ptr cinfo)
|
|||||||
/* Initialize application's data source module */
|
/* Initialize application's data source module */
|
||||||
(*cinfo->src->init_source) (cinfo);
|
(*cinfo->src->init_source) (cinfo);
|
||||||
cinfo->global_state = DSTATE_INHEADER;
|
cinfo->global_state = DSTATE_INHEADER;
|
||||||
/*FALLTHROUGH*/
|
FALLTHROUGH /*FALLTHROUGH*/
|
||||||
case DSTATE_INHEADER:
|
case DSTATE_INHEADER:
|
||||||
retcode = (*cinfo->inputctl->consume_input) (cinfo);
|
retcode = (*cinfo->inputctl->consume_input) (cinfo);
|
||||||
if (retcode == JPEG_REACHED_SOS) { /* Found SOS, prepare to decompress */
|
if (retcode == JPEG_REACHED_SOS) { /* Found SOS, prepare to decompress */
|
||||||
|
11
3rdparty/libjpeg-turbo/src/jdhuff.c
vendored
11
3rdparty/libjpeg-turbo/src/jdhuff.c
vendored
@ -584,7 +584,7 @@ decode_mcu_slow(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
|
|||||||
* behavior is, to the best of our understanding, innocuous, and it is
|
* behavior is, to the best of our understanding, innocuous, and it is
|
||||||
* unclear how to work around it without potentially affecting
|
* unclear how to work around it without potentially affecting
|
||||||
* performance. Thus, we (hopefully temporarily) suppress UBSan integer
|
* performance. Thus, we (hopefully temporarily) suppress UBSan integer
|
||||||
* overflow errors for this function.
|
* overflow errors for this function and decode_mcu_fast().
|
||||||
*/
|
*/
|
||||||
s += state.last_dc_val[ci];
|
s += state.last_dc_val[ci];
|
||||||
state.last_dc_val[ci] = s;
|
state.last_dc_val[ci] = s;
|
||||||
@ -651,6 +651,12 @@ decode_mcu_slow(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(__has_feature)
|
||||||
|
#if __has_feature(undefined_behavior_sanitizer)
|
||||||
|
__attribute__((no_sanitize("signed-integer-overflow"),
|
||||||
|
no_sanitize("unsigned-integer-overflow")))
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
LOCAL(boolean)
|
LOCAL(boolean)
|
||||||
decode_mcu_fast(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
|
decode_mcu_fast(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
|
||||||
{
|
{
|
||||||
@ -681,6 +687,9 @@ decode_mcu_fast(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
|
|||||||
|
|
||||||
if (entropy->dc_needed[blkn]) {
|
if (entropy->dc_needed[blkn]) {
|
||||||
int ci = cinfo->MCU_membership[blkn];
|
int ci = cinfo->MCU_membership[blkn];
|
||||||
|
/* Refer to the comment in decode_mcu_slow() regarding the supression of
|
||||||
|
* a UBSan integer overflow error in this line of code.
|
||||||
|
*/
|
||||||
s += state.last_dc_val[ci];
|
s += state.last_dc_val[ci];
|
||||||
state.last_dc_val[ci] = s;
|
state.last_dc_val[ci] = s;
|
||||||
if (block)
|
if (block)
|
||||||
|
5
3rdparty/libjpeg-turbo/src/jdmainct.c
vendored
5
3rdparty/libjpeg-turbo/src/jdmainct.c
vendored
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include "jinclude.h"
|
#include "jinclude.h"
|
||||||
#include "jdmainct.h"
|
#include "jdmainct.h"
|
||||||
|
#include "jconfigint.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -360,7 +361,7 @@ process_data_context_main(j_decompress_ptr cinfo, JSAMPARRAY output_buf,
|
|||||||
main_ptr->context_state = CTX_PREPARE_FOR_IMCU;
|
main_ptr->context_state = CTX_PREPARE_FOR_IMCU;
|
||||||
if (*out_row_ctr >= out_rows_avail)
|
if (*out_row_ctr >= out_rows_avail)
|
||||||
return; /* Postprocessor exactly filled output buf */
|
return; /* Postprocessor exactly filled output buf */
|
||||||
/*FALLTHROUGH*/
|
FALLTHROUGH /*FALLTHROUGH*/
|
||||||
case CTX_PREPARE_FOR_IMCU:
|
case CTX_PREPARE_FOR_IMCU:
|
||||||
/* Prepare to process first M-1 row groups of this iMCU row */
|
/* Prepare to process first M-1 row groups of this iMCU row */
|
||||||
main_ptr->rowgroup_ctr = 0;
|
main_ptr->rowgroup_ctr = 0;
|
||||||
@ -371,7 +372,7 @@ process_data_context_main(j_decompress_ptr cinfo, JSAMPARRAY output_buf,
|
|||||||
if (main_ptr->iMCU_row_ctr == cinfo->total_iMCU_rows)
|
if (main_ptr->iMCU_row_ctr == cinfo->total_iMCU_rows)
|
||||||
set_bottom_pointers(cinfo);
|
set_bottom_pointers(cinfo);
|
||||||
main_ptr->context_state = CTX_PROCESS_IMCU;
|
main_ptr->context_state = CTX_PROCESS_IMCU;
|
||||||
/*FALLTHROUGH*/
|
FALLTHROUGH /*FALLTHROUGH*/
|
||||||
case CTX_PROCESS_IMCU:
|
case CTX_PROCESS_IMCU:
|
||||||
/* Call postprocessor using previously set pointers */
|
/* Call postprocessor using previously set pointers */
|
||||||
(*cinfo->post->post_process_data) (cinfo,
|
(*cinfo->post->post_process_data) (cinfo,
|
||||||
|
6
3rdparty/libjpeg-turbo/src/jmemmgr.c
vendored
6
3rdparty/libjpeg-turbo/src/jmemmgr.c
vendored
@ -4,7 +4,7 @@
|
|||||||
* This file was part of the Independent JPEG Group's software:
|
* This file was part of the Independent JPEG Group's software:
|
||||||
* Copyright (C) 1991-1997, Thomas G. Lane.
|
* Copyright (C) 1991-1997, Thomas G. Lane.
|
||||||
* libjpeg-turbo Modifications:
|
* libjpeg-turbo Modifications:
|
||||||
* Copyright (C) 2016, D. R. Commander.
|
* Copyright (C) 2016, 2021, D. R. Commander.
|
||||||
* For conditions of distribution and use, see the accompanying README.ijg
|
* For conditions of distribution and use, see the accompanying README.ijg
|
||||||
* file.
|
* file.
|
||||||
*
|
*
|
||||||
@ -1032,7 +1032,7 @@ free_pool(j_common_ptr cinfo, int pool_id)
|
|||||||
large_pool_ptr next_lhdr_ptr = lhdr_ptr->next;
|
large_pool_ptr next_lhdr_ptr = lhdr_ptr->next;
|
||||||
space_freed = lhdr_ptr->bytes_used +
|
space_freed = lhdr_ptr->bytes_used +
|
||||||
lhdr_ptr->bytes_left +
|
lhdr_ptr->bytes_left +
|
||||||
sizeof(large_pool_hdr);
|
sizeof(large_pool_hdr) + ALIGN_SIZE - 1;
|
||||||
jpeg_free_large(cinfo, (void *)lhdr_ptr, space_freed);
|
jpeg_free_large(cinfo, (void *)lhdr_ptr, space_freed);
|
||||||
mem->total_space_allocated -= space_freed;
|
mem->total_space_allocated -= space_freed;
|
||||||
lhdr_ptr = next_lhdr_ptr;
|
lhdr_ptr = next_lhdr_ptr;
|
||||||
@ -1045,7 +1045,7 @@ free_pool(j_common_ptr cinfo, int pool_id)
|
|||||||
while (shdr_ptr != NULL) {
|
while (shdr_ptr != NULL) {
|
||||||
small_pool_ptr next_shdr_ptr = shdr_ptr->next;
|
small_pool_ptr next_shdr_ptr = shdr_ptr->next;
|
||||||
space_freed = shdr_ptr->bytes_used + shdr_ptr->bytes_left +
|
space_freed = shdr_ptr->bytes_used + shdr_ptr->bytes_left +
|
||||||
sizeof(small_pool_hdr);
|
sizeof(small_pool_hdr) + ALIGN_SIZE - 1;
|
||||||
jpeg_free_small(cinfo, (void *)shdr_ptr, space_freed);
|
jpeg_free_small(cinfo, (void *)shdr_ptr, space_freed);
|
||||||
mem->total_space_allocated -= space_freed;
|
mem->total_space_allocated -= space_freed;
|
||||||
shdr_ptr = next_shdr_ptr;
|
shdr_ptr = next_shdr_ptr;
|
||||||
|
15
3rdparty/libjpeg-turbo/src/jpegint.h
vendored
15
3rdparty/libjpeg-turbo/src/jpegint.h
vendored
@ -5,8 +5,9 @@
|
|||||||
* Copyright (C) 1991-1997, Thomas G. Lane.
|
* Copyright (C) 1991-1997, Thomas G. Lane.
|
||||||
* Modified 1997-2009 by Guido Vollbeding.
|
* Modified 1997-2009 by Guido Vollbeding.
|
||||||
* libjpeg-turbo Modifications:
|
* libjpeg-turbo Modifications:
|
||||||
* Copyright (C) 2015-2016, 2019, D. R. Commander.
|
* Copyright (C) 2015-2016, 2019, 2021, D. R. Commander.
|
||||||
* Copyright (C) 2015, Google, Inc.
|
* Copyright (C) 2015, Google, Inc.
|
||||||
|
* Copyright (C) 2021, Alex Richardson.
|
||||||
* For conditions of distribution and use, see the accompanying README.ijg
|
* For conditions of distribution and use, see the accompanying README.ijg
|
||||||
* file.
|
* file.
|
||||||
*
|
*
|
||||||
@ -47,6 +48,18 @@ typedef enum { /* Operating modes for buffer controllers */
|
|||||||
/* JLONG must hold at least signed 32-bit values. */
|
/* JLONG must hold at least signed 32-bit values. */
|
||||||
typedef long JLONG;
|
typedef long JLONG;
|
||||||
|
|
||||||
|
/* JUINTPTR must hold pointer values. */
|
||||||
|
#ifdef __UINTPTR_TYPE__
|
||||||
|
/*
|
||||||
|
* __UINTPTR_TYPE__ is GNU-specific and available in GCC 4.6+ and Clang 3.0+.
|
||||||
|
* Fortunately, that is sufficient to support the few architectures for which
|
||||||
|
* sizeof(void *) != sizeof(size_t). The only other options would require C99
|
||||||
|
* or Clang-specific builtins.
|
||||||
|
*/
|
||||||
|
typedef __UINTPTR_TYPE__ JUINTPTR;
|
||||||
|
#else
|
||||||
|
typedef size_t JUINTPTR;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Left shift macro that handles a negative operand without causing any
|
* Left shift macro that handles a negative operand without causing any
|
||||||
|
Loading…
Reference in New Issue
Block a user