/*
* Copyright ( C ) 2014 , 2021 , 2024 - 2025 , D . R . Commander .
* Copyright ( C ) 2014 , Olle Liljenzin .
* Copyright ( C ) 2020 , Arm Limited .
*
* For conditions of distribution and use , see the accompanying README . ijg
* file .
*/
/*
* NOTE : If USE_CLZ_INTRINSIC is defined , then clz / bsr instructions will be
* used for bit counting rather than the lookup table . This will reduce the
* memory footprint by 64 k , which is important for some mobile applications
* that create many isolated instances of libjpeg - turbo ( web browsers , for
* instance . ) This may improve performance on some mobile platforms as well .
* This feature is enabled by default only on Arm processors , because some x86
* chips have a slow implementation of bsr , and the use of clz / bsr cannot be
* shown to have a significant performance impact even on the x86 chips that
* have a fast implementation of it . When building for Armv6 , you can
* explicitly disable the use of clz / bsr by adding - mthumb to the compiler
* flags ( this defines _ _ thumb__ ) .
*/
/* NOTE: Both GCC and Clang define __GNUC__ */
#if (defined (__GNUC__) && (defined (__arm__) || defined (__aarch64__))) || \
defined (_M_ARM) || defined (_M_ARM64) || defined (_M_ARM64EC)
#if !defined (__thumb__) || defined (__thumb2__)
#define USE_CLZ_INTRINSIC
#endif
#endif
#ifdef USE_CLZ_INTRINSIC
#if defined (_MSC_VER) && !defined (__clang__)
#define JPEG_NBITS_NONZERO(x) (32 - _CountLeadingZeros(x))
#else
#define JPEG_NBITS_NONZERO(x) (32 - __builtin_clz(x))
#endif
#define JPEG_NBITS(x) (x ? JPEG_NBITS_NONZERO(x) : 0 )
#else
extern const unsigned char jpeg_nbits_table[65536 ];
#define JPEG_NBITS(x) (jpeg_nbits_table[x])
#define JPEG_NBITS_NONZERO(x) JPEG_NBITS(x)
#endif
Messung V0.5 in Prozent C=95 H=98 G=96
¤ Dauer der Verarbeitung: 0.4 Sekunden
¤
*© Formatika GbR, Deutschland