Coverage Report

Created: 2025-06-22 07:10

/src/libwebp/src/utils/utils.h
Line
Count
Source (jump to first uncovered line)
1
// Copyright 2012 Google Inc. All Rights Reserved.
2
//
3
// Use of this source code is governed by a BSD-style license
4
// that can be found in the COPYING file in the root of the source
5
// tree. An additional intellectual property rights grant can be found
6
// in the file PATENTS. All contributing project authors may
7
// be found in the AUTHORS file in the root of the source tree.
8
// -----------------------------------------------------------------------------
9
//
10
// Misc. common utility functions
11
//
12
// Authors: Skal (pascal.massimino@gmail.com)
13
//          Urvang (urvang@google.com)
14
15
#ifndef WEBP_UTILS_UTILS_H_
16
#define WEBP_UTILS_UTILS_H_
17
18
#ifdef HAVE_CONFIG_H
19
#include "src/webp/config.h"
20
#endif
21
22
#include <assert.h>
23
24
#include "src/webp/types.h"
25
26
#ifdef __cplusplus
27
extern "C" {
28
#endif
29
30
//------------------------------------------------------------------------------
31
// Memory allocation
32
33
// This is the maximum memory amount that libwebp will ever try to allocate.
34
#ifndef WEBP_MAX_ALLOCABLE_MEMORY
35
#if SIZE_MAX > (1ULL << 34)
36
23.2k
#define WEBP_MAX_ALLOCABLE_MEMORY (1ULL << 34)
37
#else
38
// For 32-bit targets keep this below INT_MAX to avoid valgrind warnings.
39
#define WEBP_MAX_ALLOCABLE_MEMORY ((1ULL << 31) - (1 << 16))
40
#endif
41
#endif  // WEBP_MAX_ALLOCABLE_MEMORY
42
43
25.0k
static WEBP_INLINE int CheckSizeOverflow(uint64_t size) {
44
25.0k
  return size == (size_t)size;
45
25.0k
}
Unexecuted instantiation: webp_dec.c:CheckSizeOverflow
Unexecuted instantiation: picture_enc.c:CheckSizeOverflow
Unexecuted instantiation: webp_enc.c:CheckSizeOverflow
Unexecuted instantiation: rescaler_utils.c:CheckSizeOverflow
utils.c:CheckSizeOverflow
Line
Count
Source
43
23.2k
static WEBP_INLINE int CheckSizeOverflow(uint64_t size) {
44
23.2k
  return size == (size_t)size;
45
23.2k
}
Unexecuted instantiation: buffer_dec.c:CheckSizeOverflow
frame_dec.c:CheckSizeOverflow
Line
Count
Source
43
1.82k
static WEBP_INLINE int CheckSizeOverflow(uint64_t size) {
44
1.82k
  return size == (size_t)size;
45
1.82k
}
Unexecuted instantiation: io_dec.c:CheckSizeOverflow
Unexecuted instantiation: vp8_dec.c:CheckSizeOverflow
Unexecuted instantiation: vp8l_dec.c:CheckSizeOverflow
Unexecuted instantiation: cost.c:CheckSizeOverflow
Unexecuted instantiation: dec.c:CheckSizeOverflow
Unexecuted instantiation: enc.c:CheckSizeOverflow
Unexecuted instantiation: lossless.c:CheckSizeOverflow
Unexecuted instantiation: cost_sse2.c:CheckSizeOverflow
Unexecuted instantiation: enc_sse2.c:CheckSizeOverflow
Unexecuted instantiation: enc_sse41.c:CheckSizeOverflow
Unexecuted instantiation: dec_sse2.c:CheckSizeOverflow
Unexecuted instantiation: lossless_sse2.c:CheckSizeOverflow
Unexecuted instantiation: rescaler_sse2.c:CheckSizeOverflow
Unexecuted instantiation: yuv_sse2.c:CheckSizeOverflow
Unexecuted instantiation: dec_sse41.c:CheckSizeOverflow
Unexecuted instantiation: yuv_sse41.c:CheckSizeOverflow
Unexecuted instantiation: alpha_enc.c:CheckSizeOverflow
Unexecuted instantiation: analysis_enc.c:CheckSizeOverflow
Unexecuted instantiation: frame_enc.c:CheckSizeOverflow
Unexecuted instantiation: iterator_enc.c:CheckSizeOverflow
Unexecuted instantiation: picture_csp_enc.c:CheckSizeOverflow
Unexecuted instantiation: picture_tools_enc.c:CheckSizeOverflow
Unexecuted instantiation: quant_enc.c:CheckSizeOverflow
Unexecuted instantiation: syntax_enc.c:CheckSizeOverflow
Unexecuted instantiation: token_enc.c:CheckSizeOverflow
Unexecuted instantiation: tree_enc.c:CheckSizeOverflow
Unexecuted instantiation: vp8l_enc.c:CheckSizeOverflow
Unexecuted instantiation: bit_reader_utils.c:CheckSizeOverflow
Unexecuted instantiation: bit_writer_utils.c:CheckSizeOverflow
Unexecuted instantiation: color_cache_utils.c:CheckSizeOverflow
Unexecuted instantiation: huffman_encode_utils.c:CheckSizeOverflow
Unexecuted instantiation: huffman_utils.c:CheckSizeOverflow
Unexecuted instantiation: palette.c:CheckSizeOverflow
Unexecuted instantiation: thread_utils.c:CheckSizeOverflow
Unexecuted instantiation: alpha_dec.c:CheckSizeOverflow
Unexecuted instantiation: tree_dec.c:CheckSizeOverflow
Unexecuted instantiation: lossless_enc.c:CheckSizeOverflow
Unexecuted instantiation: lossless_enc_sse2.c:CheckSizeOverflow
Unexecuted instantiation: backward_references_enc.c:CheckSizeOverflow
Unexecuted instantiation: cost_enc.c:CheckSizeOverflow
Unexecuted instantiation: filter_enc.c:CheckSizeOverflow
Unexecuted instantiation: histogram_enc.c:CheckSizeOverflow
Unexecuted instantiation: near_lossless_enc.c:CheckSizeOverflow
Unexecuted instantiation: picture_rescale_enc.c:CheckSizeOverflow
Unexecuted instantiation: predictor_enc.c:CheckSizeOverflow
Unexecuted instantiation: quant_levels_dec_utils.c:CheckSizeOverflow
Unexecuted instantiation: backward_references_cost_enc.c:CheckSizeOverflow
46
47
// size-checking safe malloc/calloc: verify that the requested size is not too
48
// large, or return NULL. You don't need to call these for constructs like
49
// malloc(sizeof(foo)), but only if there's picture-dependent size involved
50
// somewhere (like: malloc(num_pixels * sizeof(*something))). That's why this
51
// safe malloc() borrows the signature from calloc(), pointing at the dangerous
52
// underlying multiply involved.
53
WEBP_EXTERN void* WebPSafeMalloc(uint64_t nmemb, size_t size);
54
// Note that WebPSafeCalloc() expects the second argument type to be 'size_t'
55
// in order to favor the "calloc(num_foo, sizeof(foo))" pattern.
56
WEBP_EXTERN void* WebPSafeCalloc(uint64_t nmemb, size_t size);
57
58
// Companion deallocation function to the above allocations.
59
WEBP_EXTERN void WebPSafeFree(void* const ptr);
60
61
//------------------------------------------------------------------------------
62
// Alignment
63
64
5.46k
#define WEBP_ALIGN_CST 31
65
1.82k
#define WEBP_ALIGN(PTR) (((uintptr_t)(PTR) + WEBP_ALIGN_CST) & \
66
1.82k
                         ~(uintptr_t)WEBP_ALIGN_CST)
67
68
#include <string.h>
69
// memcpy() is the safe way of moving potentially unaligned 32b memory.
70
10.1M
static WEBP_INLINE uint32_t WebPMemToUint32(const uint8_t* const ptr) {
71
10.1M
  uint32_t A;
72
10.1M
  memcpy(&A, ptr, sizeof(A));
73
10.1M
  return A;
74
10.1M
}
Unexecuted instantiation: webp_dec.c:WebPMemToUint32
Unexecuted instantiation: picture_enc.c:WebPMemToUint32
Unexecuted instantiation: webp_enc.c:WebPMemToUint32
Unexecuted instantiation: rescaler_utils.c:WebPMemToUint32
Unexecuted instantiation: utils.c:WebPMemToUint32
Unexecuted instantiation: buffer_dec.c:WebPMemToUint32
Unexecuted instantiation: frame_dec.c:WebPMemToUint32
Unexecuted instantiation: io_dec.c:WebPMemToUint32
Unexecuted instantiation: vp8_dec.c:WebPMemToUint32
Unexecuted instantiation: vp8l_dec.c:WebPMemToUint32
Unexecuted instantiation: cost.c:WebPMemToUint32
Unexecuted instantiation: dec.c:WebPMemToUint32
Unexecuted instantiation: enc.c:WebPMemToUint32
Unexecuted instantiation: lossless.c:WebPMemToUint32
Unexecuted instantiation: cost_sse2.c:WebPMemToUint32
Unexecuted instantiation: enc_sse2.c:WebPMemToUint32
Unexecuted instantiation: enc_sse41.c:WebPMemToUint32
dec_sse2.c:WebPMemToUint32
Line
Count
Source
70
8.77M
static WEBP_INLINE uint32_t WebPMemToUint32(const uint8_t* const ptr) {
71
8.77M
  uint32_t A;
72
8.77M
  memcpy(&A, ptr, sizeof(A));
73
8.77M
  return A;
74
8.77M
}
Unexecuted instantiation: lossless_sse2.c:WebPMemToUint32
Unexecuted instantiation: rescaler_sse2.c:WebPMemToUint32
Unexecuted instantiation: yuv_sse2.c:WebPMemToUint32
dec_sse41.c:WebPMemToUint32
Line
Count
Source
70
263k
static WEBP_INLINE uint32_t WebPMemToUint32(const uint8_t* const ptr) {
71
263k
  uint32_t A;
72
263k
  memcpy(&A, ptr, sizeof(A));
73
263k
  return A;
74
263k
}
Unexecuted instantiation: yuv_sse41.c:WebPMemToUint32
Unexecuted instantiation: alpha_enc.c:WebPMemToUint32
Unexecuted instantiation: analysis_enc.c:WebPMemToUint32
Unexecuted instantiation: frame_enc.c:WebPMemToUint32
Unexecuted instantiation: iterator_enc.c:WebPMemToUint32
Unexecuted instantiation: picture_csp_enc.c:WebPMemToUint32
Unexecuted instantiation: picture_tools_enc.c:WebPMemToUint32
Unexecuted instantiation: quant_enc.c:WebPMemToUint32
Unexecuted instantiation: syntax_enc.c:WebPMemToUint32
Unexecuted instantiation: token_enc.c:WebPMemToUint32
Unexecuted instantiation: tree_enc.c:WebPMemToUint32
Unexecuted instantiation: vp8l_enc.c:WebPMemToUint32
bit_reader_utils.c:WebPMemToUint32
Line
Count
Source
70
1.12M
static WEBP_INLINE uint32_t WebPMemToUint32(const uint8_t* const ptr) {
71
1.12M
  uint32_t A;
72
1.12M
  memcpy(&A, ptr, sizeof(A));
73
1.12M
  return A;
74
1.12M
}
Unexecuted instantiation: bit_writer_utils.c:WebPMemToUint32
Unexecuted instantiation: color_cache_utils.c:WebPMemToUint32
Unexecuted instantiation: huffman_encode_utils.c:WebPMemToUint32
Unexecuted instantiation: huffman_utils.c:WebPMemToUint32
Unexecuted instantiation: palette.c:WebPMemToUint32
Unexecuted instantiation: thread_utils.c:WebPMemToUint32
Unexecuted instantiation: alpha_dec.c:WebPMemToUint32
Unexecuted instantiation: tree_dec.c:WebPMemToUint32
Unexecuted instantiation: lossless_enc.c:WebPMemToUint32
Unexecuted instantiation: lossless_enc_sse2.c:WebPMemToUint32
Unexecuted instantiation: backward_references_enc.c:WebPMemToUint32
Unexecuted instantiation: cost_enc.c:WebPMemToUint32
Unexecuted instantiation: filter_enc.c:WebPMemToUint32
Unexecuted instantiation: histogram_enc.c:WebPMemToUint32
Unexecuted instantiation: near_lossless_enc.c:WebPMemToUint32
Unexecuted instantiation: picture_rescale_enc.c:WebPMemToUint32
Unexecuted instantiation: predictor_enc.c:WebPMemToUint32
Unexecuted instantiation: quant_levels_dec_utils.c:WebPMemToUint32
Unexecuted instantiation: backward_references_cost_enc.c:WebPMemToUint32
75
76
9.03M
static WEBP_INLINE int32_t WebPMemToInt32(const uint8_t* const ptr) {
77
9.03M
  return (int32_t)WebPMemToUint32(ptr);
78
9.03M
}
Unexecuted instantiation: webp_dec.c:WebPMemToInt32
Unexecuted instantiation: picture_enc.c:WebPMemToInt32
Unexecuted instantiation: webp_enc.c:WebPMemToInt32
Unexecuted instantiation: rescaler_utils.c:WebPMemToInt32
Unexecuted instantiation: utils.c:WebPMemToInt32
Unexecuted instantiation: buffer_dec.c:WebPMemToInt32
Unexecuted instantiation: frame_dec.c:WebPMemToInt32
Unexecuted instantiation: io_dec.c:WebPMemToInt32
Unexecuted instantiation: vp8_dec.c:WebPMemToInt32
Unexecuted instantiation: vp8l_dec.c:WebPMemToInt32
Unexecuted instantiation: cost.c:WebPMemToInt32
Unexecuted instantiation: dec.c:WebPMemToInt32
Unexecuted instantiation: enc.c:WebPMemToInt32
Unexecuted instantiation: lossless.c:WebPMemToInt32
Unexecuted instantiation: cost_sse2.c:WebPMemToInt32
Unexecuted instantiation: enc_sse2.c:WebPMemToInt32
Unexecuted instantiation: enc_sse41.c:WebPMemToInt32
dec_sse2.c:WebPMemToInt32
Line
Count
Source
76
8.77M
static WEBP_INLINE int32_t WebPMemToInt32(const uint8_t* const ptr) {
77
8.77M
  return (int32_t)WebPMemToUint32(ptr);
78
8.77M
}
Unexecuted instantiation: lossless_sse2.c:WebPMemToInt32
Unexecuted instantiation: rescaler_sse2.c:WebPMemToInt32
Unexecuted instantiation: yuv_sse2.c:WebPMemToInt32
dec_sse41.c:WebPMemToInt32
Line
Count
Source
76
263k
static WEBP_INLINE int32_t WebPMemToInt32(const uint8_t* const ptr) {
77
263k
  return (int32_t)WebPMemToUint32(ptr);
78
263k
}
Unexecuted instantiation: yuv_sse41.c:WebPMemToInt32
Unexecuted instantiation: alpha_enc.c:WebPMemToInt32
Unexecuted instantiation: analysis_enc.c:WebPMemToInt32
Unexecuted instantiation: frame_enc.c:WebPMemToInt32
Unexecuted instantiation: iterator_enc.c:WebPMemToInt32
Unexecuted instantiation: picture_csp_enc.c:WebPMemToInt32
Unexecuted instantiation: picture_tools_enc.c:WebPMemToInt32
Unexecuted instantiation: quant_enc.c:WebPMemToInt32
Unexecuted instantiation: syntax_enc.c:WebPMemToInt32
Unexecuted instantiation: token_enc.c:WebPMemToInt32
Unexecuted instantiation: tree_enc.c:WebPMemToInt32
Unexecuted instantiation: vp8l_enc.c:WebPMemToInt32
Unexecuted instantiation: bit_reader_utils.c:WebPMemToInt32
Unexecuted instantiation: bit_writer_utils.c:WebPMemToInt32
Unexecuted instantiation: color_cache_utils.c:WebPMemToInt32
Unexecuted instantiation: huffman_encode_utils.c:WebPMemToInt32
Unexecuted instantiation: huffman_utils.c:WebPMemToInt32
Unexecuted instantiation: palette.c:WebPMemToInt32
Unexecuted instantiation: thread_utils.c:WebPMemToInt32
Unexecuted instantiation: alpha_dec.c:WebPMemToInt32
Unexecuted instantiation: tree_dec.c:WebPMemToInt32
Unexecuted instantiation: lossless_enc.c:WebPMemToInt32
Unexecuted instantiation: lossless_enc_sse2.c:WebPMemToInt32
Unexecuted instantiation: backward_references_enc.c:WebPMemToInt32
Unexecuted instantiation: cost_enc.c:WebPMemToInt32
Unexecuted instantiation: filter_enc.c:WebPMemToInt32
Unexecuted instantiation: histogram_enc.c:WebPMemToInt32
Unexecuted instantiation: near_lossless_enc.c:WebPMemToInt32
Unexecuted instantiation: picture_rescale_enc.c:WebPMemToInt32
Unexecuted instantiation: predictor_enc.c:WebPMemToInt32
Unexecuted instantiation: quant_levels_dec_utils.c:WebPMemToInt32
Unexecuted instantiation: backward_references_cost_enc.c:WebPMemToInt32
79
80
8.18M
static WEBP_INLINE void WebPUint32ToMem(uint8_t* const ptr, uint32_t val) {
81
8.18M
  memcpy(ptr, &val, sizeof(val));
82
8.18M
}
Unexecuted instantiation: webp_dec.c:WebPUint32ToMem
Unexecuted instantiation: picture_enc.c:WebPUint32ToMem
Unexecuted instantiation: webp_enc.c:WebPUint32ToMem
Unexecuted instantiation: rescaler_utils.c:WebPUint32ToMem
Unexecuted instantiation: utils.c:WebPUint32ToMem
Unexecuted instantiation: buffer_dec.c:WebPUint32ToMem
Unexecuted instantiation: frame_dec.c:WebPUint32ToMem
Unexecuted instantiation: io_dec.c:WebPUint32ToMem
Unexecuted instantiation: vp8_dec.c:WebPUint32ToMem
Unexecuted instantiation: vp8l_dec.c:WebPUint32ToMem
Unexecuted instantiation: cost.c:WebPUint32ToMem
dec.c:WebPUint32ToMem
Line
Count
Source
80
83.6k
static WEBP_INLINE void WebPUint32ToMem(uint8_t* const ptr, uint32_t val) {
81
83.6k
  memcpy(ptr, &val, sizeof(val));
82
83.6k
}
Unexecuted instantiation: enc.c:WebPUint32ToMem
Unexecuted instantiation: lossless.c:WebPUint32ToMem
Unexecuted instantiation: cost_sse2.c:WebPUint32ToMem
Unexecuted instantiation: enc_sse2.c:WebPUint32ToMem
Unexecuted instantiation: enc_sse41.c:WebPUint32ToMem
dec_sse2.c:WebPUint32ToMem
Line
Count
Source
80
8.09M
static WEBP_INLINE void WebPUint32ToMem(uint8_t* const ptr, uint32_t val) {
81
8.09M
  memcpy(ptr, &val, sizeof(val));
82
8.09M
}
Unexecuted instantiation: lossless_sse2.c:WebPUint32ToMem
Unexecuted instantiation: rescaler_sse2.c:WebPUint32ToMem
Unexecuted instantiation: yuv_sse2.c:WebPUint32ToMem
Unexecuted instantiation: dec_sse41.c:WebPUint32ToMem
Unexecuted instantiation: yuv_sse41.c:WebPUint32ToMem
Unexecuted instantiation: alpha_enc.c:WebPUint32ToMem
Unexecuted instantiation: analysis_enc.c:WebPUint32ToMem
Unexecuted instantiation: frame_enc.c:WebPUint32ToMem
Unexecuted instantiation: iterator_enc.c:WebPUint32ToMem
Unexecuted instantiation: picture_csp_enc.c:WebPUint32ToMem
Unexecuted instantiation: picture_tools_enc.c:WebPUint32ToMem
Unexecuted instantiation: quant_enc.c:WebPUint32ToMem
Unexecuted instantiation: syntax_enc.c:WebPUint32ToMem
Unexecuted instantiation: token_enc.c:WebPUint32ToMem
Unexecuted instantiation: tree_enc.c:WebPUint32ToMem
Unexecuted instantiation: vp8l_enc.c:WebPUint32ToMem
Unexecuted instantiation: bit_reader_utils.c:WebPUint32ToMem
Unexecuted instantiation: bit_writer_utils.c:WebPUint32ToMem
Unexecuted instantiation: color_cache_utils.c:WebPUint32ToMem
Unexecuted instantiation: huffman_encode_utils.c:WebPUint32ToMem
Unexecuted instantiation: huffman_utils.c:WebPUint32ToMem
Unexecuted instantiation: palette.c:WebPUint32ToMem
Unexecuted instantiation: thread_utils.c:WebPUint32ToMem
Unexecuted instantiation: alpha_dec.c:WebPUint32ToMem
Unexecuted instantiation: tree_dec.c:WebPUint32ToMem
Unexecuted instantiation: lossless_enc.c:WebPUint32ToMem
Unexecuted instantiation: lossless_enc_sse2.c:WebPUint32ToMem
Unexecuted instantiation: backward_references_enc.c:WebPUint32ToMem
Unexecuted instantiation: cost_enc.c:WebPUint32ToMem
Unexecuted instantiation: filter_enc.c:WebPUint32ToMem
Unexecuted instantiation: histogram_enc.c:WebPUint32ToMem
Unexecuted instantiation: near_lossless_enc.c:WebPUint32ToMem
Unexecuted instantiation: picture_rescale_enc.c:WebPUint32ToMem
Unexecuted instantiation: predictor_enc.c:WebPUint32ToMem
Unexecuted instantiation: quant_levels_dec_utils.c:WebPUint32ToMem
Unexecuted instantiation: backward_references_cost_enc.c:WebPUint32ToMem
83
84
8.09M
static WEBP_INLINE void WebPInt32ToMem(uint8_t* const ptr, int val) {
85
8.09M
  WebPUint32ToMem(ptr, (uint32_t)val);
86
8.09M
}
Unexecuted instantiation: webp_dec.c:WebPInt32ToMem
Unexecuted instantiation: picture_enc.c:WebPInt32ToMem
Unexecuted instantiation: webp_enc.c:WebPInt32ToMem
Unexecuted instantiation: rescaler_utils.c:WebPInt32ToMem
Unexecuted instantiation: utils.c:WebPInt32ToMem
Unexecuted instantiation: buffer_dec.c:WebPInt32ToMem
Unexecuted instantiation: frame_dec.c:WebPInt32ToMem
Unexecuted instantiation: io_dec.c:WebPInt32ToMem
Unexecuted instantiation: vp8_dec.c:WebPInt32ToMem
Unexecuted instantiation: vp8l_dec.c:WebPInt32ToMem
Unexecuted instantiation: cost.c:WebPInt32ToMem
Unexecuted instantiation: dec.c:WebPInt32ToMem
Unexecuted instantiation: enc.c:WebPInt32ToMem
Unexecuted instantiation: lossless.c:WebPInt32ToMem
Unexecuted instantiation: cost_sse2.c:WebPInt32ToMem
Unexecuted instantiation: enc_sse2.c:WebPInt32ToMem
Unexecuted instantiation: enc_sse41.c:WebPInt32ToMem
dec_sse2.c:WebPInt32ToMem
Line
Count
Source
84
8.09M
static WEBP_INLINE void WebPInt32ToMem(uint8_t* const ptr, int val) {
85
8.09M
  WebPUint32ToMem(ptr, (uint32_t)val);
86
8.09M
}
Unexecuted instantiation: lossless_sse2.c:WebPInt32ToMem
Unexecuted instantiation: rescaler_sse2.c:WebPInt32ToMem
Unexecuted instantiation: yuv_sse2.c:WebPInt32ToMem
Unexecuted instantiation: dec_sse41.c:WebPInt32ToMem
Unexecuted instantiation: yuv_sse41.c:WebPInt32ToMem
Unexecuted instantiation: alpha_enc.c:WebPInt32ToMem
Unexecuted instantiation: analysis_enc.c:WebPInt32ToMem
Unexecuted instantiation: frame_enc.c:WebPInt32ToMem
Unexecuted instantiation: iterator_enc.c:WebPInt32ToMem
Unexecuted instantiation: picture_csp_enc.c:WebPInt32ToMem
Unexecuted instantiation: picture_tools_enc.c:WebPInt32ToMem
Unexecuted instantiation: quant_enc.c:WebPInt32ToMem
Unexecuted instantiation: syntax_enc.c:WebPInt32ToMem
Unexecuted instantiation: token_enc.c:WebPInt32ToMem
Unexecuted instantiation: tree_enc.c:WebPInt32ToMem
Unexecuted instantiation: vp8l_enc.c:WebPInt32ToMem
Unexecuted instantiation: bit_reader_utils.c:WebPInt32ToMem
Unexecuted instantiation: bit_writer_utils.c:WebPInt32ToMem
Unexecuted instantiation: color_cache_utils.c:WebPInt32ToMem
Unexecuted instantiation: huffman_encode_utils.c:WebPInt32ToMem
Unexecuted instantiation: huffman_utils.c:WebPInt32ToMem
Unexecuted instantiation: palette.c:WebPInt32ToMem
Unexecuted instantiation: thread_utils.c:WebPInt32ToMem
Unexecuted instantiation: alpha_dec.c:WebPInt32ToMem
Unexecuted instantiation: tree_dec.c:WebPInt32ToMem
Unexecuted instantiation: lossless_enc.c:WebPInt32ToMem
Unexecuted instantiation: lossless_enc_sse2.c:WebPInt32ToMem
Unexecuted instantiation: backward_references_enc.c:WebPInt32ToMem
Unexecuted instantiation: cost_enc.c:WebPInt32ToMem
Unexecuted instantiation: filter_enc.c:WebPInt32ToMem
Unexecuted instantiation: histogram_enc.c:WebPInt32ToMem
Unexecuted instantiation: near_lossless_enc.c:WebPInt32ToMem
Unexecuted instantiation: picture_rescale_enc.c:WebPInt32ToMem
Unexecuted instantiation: predictor_enc.c:WebPInt32ToMem
Unexecuted instantiation: quant_levels_dec_utils.c:WebPInt32ToMem
Unexecuted instantiation: backward_references_cost_enc.c:WebPInt32ToMem
87
88
//------------------------------------------------------------------------------
89
// Reading/writing data.
90
91
// Read 16, 24 or 32 bits stored in little-endian order.
92
18.8k
static WEBP_INLINE int GetLE16(const uint8_t* const data) {
93
18.8k
  return (int)(data[0] << 0) | (data[1] << 8);
94
18.8k
}
webp_dec.c:GetLE16
Line
Count
Source
92
18.8k
static WEBP_INLINE int GetLE16(const uint8_t* const data) {
93
18.8k
  return (int)(data[0] << 0) | (data[1] << 8);
94
18.8k
}
Unexecuted instantiation: picture_enc.c:GetLE16
Unexecuted instantiation: webp_enc.c:GetLE16
Unexecuted instantiation: rescaler_utils.c:GetLE16
Unexecuted instantiation: utils.c:GetLE16
Unexecuted instantiation: buffer_dec.c:GetLE16
Unexecuted instantiation: frame_dec.c:GetLE16
Unexecuted instantiation: io_dec.c:GetLE16
Unexecuted instantiation: vp8_dec.c:GetLE16
Unexecuted instantiation: vp8l_dec.c:GetLE16
Unexecuted instantiation: cost.c:GetLE16
Unexecuted instantiation: dec.c:GetLE16
Unexecuted instantiation: enc.c:GetLE16
Unexecuted instantiation: lossless.c:GetLE16
Unexecuted instantiation: cost_sse2.c:GetLE16
Unexecuted instantiation: enc_sse2.c:GetLE16
Unexecuted instantiation: enc_sse41.c:GetLE16
Unexecuted instantiation: dec_sse2.c:GetLE16
Unexecuted instantiation: lossless_sse2.c:GetLE16
Unexecuted instantiation: rescaler_sse2.c:GetLE16
Unexecuted instantiation: yuv_sse2.c:GetLE16
Unexecuted instantiation: dec_sse41.c:GetLE16
Unexecuted instantiation: yuv_sse41.c:GetLE16
Unexecuted instantiation: alpha_enc.c:GetLE16
Unexecuted instantiation: analysis_enc.c:GetLE16
Unexecuted instantiation: frame_enc.c:GetLE16
Unexecuted instantiation: iterator_enc.c:GetLE16
Unexecuted instantiation: picture_csp_enc.c:GetLE16
Unexecuted instantiation: picture_tools_enc.c:GetLE16
Unexecuted instantiation: quant_enc.c:GetLE16
Unexecuted instantiation: syntax_enc.c:GetLE16
Unexecuted instantiation: token_enc.c:GetLE16
Unexecuted instantiation: tree_enc.c:GetLE16
Unexecuted instantiation: vp8l_enc.c:GetLE16
Unexecuted instantiation: bit_reader_utils.c:GetLE16
Unexecuted instantiation: bit_writer_utils.c:GetLE16
Unexecuted instantiation: color_cache_utils.c:GetLE16
Unexecuted instantiation: huffman_encode_utils.c:GetLE16
Unexecuted instantiation: huffman_utils.c:GetLE16
Unexecuted instantiation: palette.c:GetLE16
Unexecuted instantiation: thread_utils.c:GetLE16
Unexecuted instantiation: alpha_dec.c:GetLE16
Unexecuted instantiation: tree_dec.c:GetLE16
Unexecuted instantiation: lossless_enc.c:GetLE16
Unexecuted instantiation: lossless_enc_sse2.c:GetLE16
Unexecuted instantiation: backward_references_enc.c:GetLE16
Unexecuted instantiation: cost_enc.c:GetLE16
Unexecuted instantiation: filter_enc.c:GetLE16
Unexecuted instantiation: histogram_enc.c:GetLE16
Unexecuted instantiation: near_lossless_enc.c:GetLE16
Unexecuted instantiation: picture_rescale_enc.c:GetLE16
Unexecuted instantiation: predictor_enc.c:GetLE16
Unexecuted instantiation: quant_levels_dec_utils.c:GetLE16
Unexecuted instantiation: backward_references_cost_enc.c:GetLE16
95
96
512
static WEBP_INLINE int GetLE24(const uint8_t* const data) {
97
512
  return GetLE16(data) | (data[2] << 16);
98
512
}
webp_dec.c:GetLE24
Line
Count
Source
96
512
static WEBP_INLINE int GetLE24(const uint8_t* const data) {
97
512
  return GetLE16(data) | (data[2] << 16);
98
512
}
Unexecuted instantiation: picture_enc.c:GetLE24
Unexecuted instantiation: webp_enc.c:GetLE24
Unexecuted instantiation: rescaler_utils.c:GetLE24
Unexecuted instantiation: utils.c:GetLE24
Unexecuted instantiation: buffer_dec.c:GetLE24
Unexecuted instantiation: frame_dec.c:GetLE24
Unexecuted instantiation: io_dec.c:GetLE24
Unexecuted instantiation: vp8_dec.c:GetLE24
Unexecuted instantiation: vp8l_dec.c:GetLE24
Unexecuted instantiation: cost.c:GetLE24
Unexecuted instantiation: dec.c:GetLE24
Unexecuted instantiation: enc.c:GetLE24
Unexecuted instantiation: lossless.c:GetLE24
Unexecuted instantiation: cost_sse2.c:GetLE24
Unexecuted instantiation: enc_sse2.c:GetLE24
Unexecuted instantiation: enc_sse41.c:GetLE24
Unexecuted instantiation: dec_sse2.c:GetLE24
Unexecuted instantiation: lossless_sse2.c:GetLE24
Unexecuted instantiation: rescaler_sse2.c:GetLE24
Unexecuted instantiation: yuv_sse2.c:GetLE24
Unexecuted instantiation: dec_sse41.c:GetLE24
Unexecuted instantiation: yuv_sse41.c:GetLE24
Unexecuted instantiation: alpha_enc.c:GetLE24
Unexecuted instantiation: analysis_enc.c:GetLE24
Unexecuted instantiation: frame_enc.c:GetLE24
Unexecuted instantiation: iterator_enc.c:GetLE24
Unexecuted instantiation: picture_csp_enc.c:GetLE24
Unexecuted instantiation: picture_tools_enc.c:GetLE24
Unexecuted instantiation: quant_enc.c:GetLE24
Unexecuted instantiation: syntax_enc.c:GetLE24
Unexecuted instantiation: token_enc.c:GetLE24
Unexecuted instantiation: tree_enc.c:GetLE24
Unexecuted instantiation: vp8l_enc.c:GetLE24
Unexecuted instantiation: bit_reader_utils.c:GetLE24
Unexecuted instantiation: bit_writer_utils.c:GetLE24
Unexecuted instantiation: color_cache_utils.c:GetLE24
Unexecuted instantiation: huffman_encode_utils.c:GetLE24
Unexecuted instantiation: huffman_utils.c:GetLE24
Unexecuted instantiation: palette.c:GetLE24
Unexecuted instantiation: thread_utils.c:GetLE24
Unexecuted instantiation: alpha_dec.c:GetLE24
Unexecuted instantiation: tree_dec.c:GetLE24
Unexecuted instantiation: lossless_enc.c:GetLE24
Unexecuted instantiation: lossless_enc_sse2.c:GetLE24
Unexecuted instantiation: backward_references_enc.c:GetLE24
Unexecuted instantiation: cost_enc.c:GetLE24
Unexecuted instantiation: filter_enc.c:GetLE24
Unexecuted instantiation: histogram_enc.c:GetLE24
Unexecuted instantiation: near_lossless_enc.c:GetLE24
Unexecuted instantiation: picture_rescale_enc.c:GetLE24
Unexecuted instantiation: predictor_enc.c:GetLE24
Unexecuted instantiation: quant_levels_dec_utils.c:GetLE24
Unexecuted instantiation: backward_references_cost_enc.c:GetLE24
99
100
9.14k
static WEBP_INLINE uint32_t GetLE32(const uint8_t* const data) {
101
9.14k
  return GetLE16(data) | ((uint32_t)GetLE16(data + 2) << 16);
102
9.14k
}
webp_dec.c:GetLE32
Line
Count
Source
100
9.14k
static WEBP_INLINE uint32_t GetLE32(const uint8_t* const data) {
101
9.14k
  return GetLE16(data) | ((uint32_t)GetLE16(data + 2) << 16);
102
9.14k
}
Unexecuted instantiation: picture_enc.c:GetLE32
Unexecuted instantiation: webp_enc.c:GetLE32
Unexecuted instantiation: rescaler_utils.c:GetLE32
Unexecuted instantiation: utils.c:GetLE32
Unexecuted instantiation: buffer_dec.c:GetLE32
Unexecuted instantiation: frame_dec.c:GetLE32
Unexecuted instantiation: io_dec.c:GetLE32
Unexecuted instantiation: vp8_dec.c:GetLE32
Unexecuted instantiation: vp8l_dec.c:GetLE32
Unexecuted instantiation: cost.c:GetLE32
Unexecuted instantiation: dec.c:GetLE32
Unexecuted instantiation: enc.c:GetLE32
Unexecuted instantiation: lossless.c:GetLE32
Unexecuted instantiation: cost_sse2.c:GetLE32
Unexecuted instantiation: enc_sse2.c:GetLE32
Unexecuted instantiation: enc_sse41.c:GetLE32
Unexecuted instantiation: dec_sse2.c:GetLE32
Unexecuted instantiation: lossless_sse2.c:GetLE32
Unexecuted instantiation: rescaler_sse2.c:GetLE32
Unexecuted instantiation: yuv_sse2.c:GetLE32
Unexecuted instantiation: dec_sse41.c:GetLE32
Unexecuted instantiation: yuv_sse41.c:GetLE32
Unexecuted instantiation: alpha_enc.c:GetLE32
Unexecuted instantiation: analysis_enc.c:GetLE32
Unexecuted instantiation: frame_enc.c:GetLE32
Unexecuted instantiation: iterator_enc.c:GetLE32
Unexecuted instantiation: picture_csp_enc.c:GetLE32
Unexecuted instantiation: picture_tools_enc.c:GetLE32
Unexecuted instantiation: quant_enc.c:GetLE32
Unexecuted instantiation: syntax_enc.c:GetLE32
Unexecuted instantiation: token_enc.c:GetLE32
Unexecuted instantiation: tree_enc.c:GetLE32
Unexecuted instantiation: vp8l_enc.c:GetLE32
Unexecuted instantiation: bit_reader_utils.c:GetLE32
Unexecuted instantiation: bit_writer_utils.c:GetLE32
Unexecuted instantiation: color_cache_utils.c:GetLE32
Unexecuted instantiation: huffman_encode_utils.c:GetLE32
Unexecuted instantiation: huffman_utils.c:GetLE32
Unexecuted instantiation: palette.c:GetLE32
Unexecuted instantiation: thread_utils.c:GetLE32
Unexecuted instantiation: alpha_dec.c:GetLE32
Unexecuted instantiation: tree_dec.c:GetLE32
Unexecuted instantiation: lossless_enc.c:GetLE32
Unexecuted instantiation: lossless_enc_sse2.c:GetLE32
Unexecuted instantiation: backward_references_enc.c:GetLE32
Unexecuted instantiation: cost_enc.c:GetLE32
Unexecuted instantiation: filter_enc.c:GetLE32
Unexecuted instantiation: histogram_enc.c:GetLE32
Unexecuted instantiation: near_lossless_enc.c:GetLE32
Unexecuted instantiation: picture_rescale_enc.c:GetLE32
Unexecuted instantiation: predictor_enc.c:GetLE32
Unexecuted instantiation: quant_levels_dec_utils.c:GetLE32
Unexecuted instantiation: backward_references_cost_enc.c:GetLE32
103
104
// Store 16, 24 or 32 bits in little-endian order.
105
0
static WEBP_INLINE void PutLE16(uint8_t* const data, int val) {
106
0
  assert(val < (1 << 16));
107
0
  data[0] = (val >> 0) & 0xff;
108
0
  data[1] = (val >> 8) & 0xff;
109
0
}
Unexecuted instantiation: webp_dec.c:PutLE16
Unexecuted instantiation: picture_enc.c:PutLE16
Unexecuted instantiation: webp_enc.c:PutLE16
Unexecuted instantiation: rescaler_utils.c:PutLE16
Unexecuted instantiation: utils.c:PutLE16
Unexecuted instantiation: buffer_dec.c:PutLE16
Unexecuted instantiation: frame_dec.c:PutLE16
Unexecuted instantiation: io_dec.c:PutLE16
Unexecuted instantiation: vp8_dec.c:PutLE16
Unexecuted instantiation: vp8l_dec.c:PutLE16
Unexecuted instantiation: cost.c:PutLE16
Unexecuted instantiation: dec.c:PutLE16
Unexecuted instantiation: enc.c:PutLE16
Unexecuted instantiation: lossless.c:PutLE16
Unexecuted instantiation: cost_sse2.c:PutLE16
Unexecuted instantiation: enc_sse2.c:PutLE16
Unexecuted instantiation: enc_sse41.c:PutLE16
Unexecuted instantiation: dec_sse2.c:PutLE16
Unexecuted instantiation: lossless_sse2.c:PutLE16
Unexecuted instantiation: rescaler_sse2.c:PutLE16
Unexecuted instantiation: yuv_sse2.c:PutLE16
Unexecuted instantiation: dec_sse41.c:PutLE16
Unexecuted instantiation: yuv_sse41.c:PutLE16
Unexecuted instantiation: alpha_enc.c:PutLE16
Unexecuted instantiation: analysis_enc.c:PutLE16
Unexecuted instantiation: frame_enc.c:PutLE16
Unexecuted instantiation: iterator_enc.c:PutLE16
Unexecuted instantiation: picture_csp_enc.c:PutLE16
Unexecuted instantiation: picture_tools_enc.c:PutLE16
Unexecuted instantiation: quant_enc.c:PutLE16
Unexecuted instantiation: syntax_enc.c:PutLE16
Unexecuted instantiation: token_enc.c:PutLE16
Unexecuted instantiation: tree_enc.c:PutLE16
Unexecuted instantiation: vp8l_enc.c:PutLE16
Unexecuted instantiation: bit_reader_utils.c:PutLE16
Unexecuted instantiation: bit_writer_utils.c:PutLE16
Unexecuted instantiation: color_cache_utils.c:PutLE16
Unexecuted instantiation: huffman_encode_utils.c:PutLE16
Unexecuted instantiation: huffman_utils.c:PutLE16
Unexecuted instantiation: palette.c:PutLE16
Unexecuted instantiation: thread_utils.c:PutLE16
Unexecuted instantiation: alpha_dec.c:PutLE16
Unexecuted instantiation: tree_dec.c:PutLE16
Unexecuted instantiation: lossless_enc.c:PutLE16
Unexecuted instantiation: lossless_enc_sse2.c:PutLE16
Unexecuted instantiation: backward_references_enc.c:PutLE16
Unexecuted instantiation: cost_enc.c:PutLE16
Unexecuted instantiation: filter_enc.c:PutLE16
Unexecuted instantiation: histogram_enc.c:PutLE16
Unexecuted instantiation: near_lossless_enc.c:PutLE16
Unexecuted instantiation: picture_rescale_enc.c:PutLE16
Unexecuted instantiation: predictor_enc.c:PutLE16
Unexecuted instantiation: quant_levels_dec_utils.c:PutLE16
Unexecuted instantiation: backward_references_cost_enc.c:PutLE16
110
111
0
static WEBP_INLINE void PutLE24(uint8_t* const data, int val) {
112
0
  assert(val < (1 << 24));
113
0
  PutLE16(data, val & 0xffff);
114
0
  data[2] = (val >> 16) & 0xff;
115
0
}
Unexecuted instantiation: webp_dec.c:PutLE24
Unexecuted instantiation: picture_enc.c:PutLE24
Unexecuted instantiation: webp_enc.c:PutLE24
Unexecuted instantiation: rescaler_utils.c:PutLE24
Unexecuted instantiation: utils.c:PutLE24
Unexecuted instantiation: buffer_dec.c:PutLE24
Unexecuted instantiation: frame_dec.c:PutLE24
Unexecuted instantiation: io_dec.c:PutLE24
Unexecuted instantiation: vp8_dec.c:PutLE24
Unexecuted instantiation: vp8l_dec.c:PutLE24
Unexecuted instantiation: cost.c:PutLE24
Unexecuted instantiation: dec.c:PutLE24
Unexecuted instantiation: enc.c:PutLE24
Unexecuted instantiation: lossless.c:PutLE24
Unexecuted instantiation: cost_sse2.c:PutLE24
Unexecuted instantiation: enc_sse2.c:PutLE24
Unexecuted instantiation: enc_sse41.c:PutLE24
Unexecuted instantiation: dec_sse2.c:PutLE24
Unexecuted instantiation: lossless_sse2.c:PutLE24
Unexecuted instantiation: rescaler_sse2.c:PutLE24
Unexecuted instantiation: yuv_sse2.c:PutLE24
Unexecuted instantiation: dec_sse41.c:PutLE24
Unexecuted instantiation: yuv_sse41.c:PutLE24
Unexecuted instantiation: alpha_enc.c:PutLE24
Unexecuted instantiation: analysis_enc.c:PutLE24
Unexecuted instantiation: frame_enc.c:PutLE24
Unexecuted instantiation: iterator_enc.c:PutLE24
Unexecuted instantiation: picture_csp_enc.c:PutLE24
Unexecuted instantiation: picture_tools_enc.c:PutLE24
Unexecuted instantiation: quant_enc.c:PutLE24
Unexecuted instantiation: syntax_enc.c:PutLE24
Unexecuted instantiation: token_enc.c:PutLE24
Unexecuted instantiation: tree_enc.c:PutLE24
Unexecuted instantiation: vp8l_enc.c:PutLE24
Unexecuted instantiation: bit_reader_utils.c:PutLE24
Unexecuted instantiation: bit_writer_utils.c:PutLE24
Unexecuted instantiation: color_cache_utils.c:PutLE24
Unexecuted instantiation: huffman_encode_utils.c:PutLE24
Unexecuted instantiation: huffman_utils.c:PutLE24
Unexecuted instantiation: palette.c:PutLE24
Unexecuted instantiation: thread_utils.c:PutLE24
Unexecuted instantiation: alpha_dec.c:PutLE24
Unexecuted instantiation: tree_dec.c:PutLE24
Unexecuted instantiation: lossless_enc.c:PutLE24
Unexecuted instantiation: lossless_enc_sse2.c:PutLE24
Unexecuted instantiation: backward_references_enc.c:PutLE24
Unexecuted instantiation: cost_enc.c:PutLE24
Unexecuted instantiation: filter_enc.c:PutLE24
Unexecuted instantiation: histogram_enc.c:PutLE24
Unexecuted instantiation: near_lossless_enc.c:PutLE24
Unexecuted instantiation: picture_rescale_enc.c:PutLE24
Unexecuted instantiation: predictor_enc.c:PutLE24
Unexecuted instantiation: quant_levels_dec_utils.c:PutLE24
Unexecuted instantiation: backward_references_cost_enc.c:PutLE24
116
117
0
static WEBP_INLINE void PutLE32(uint8_t* const data, uint32_t val) {
118
0
  PutLE16(data, (int)(val & 0xffff));
119
0
  PutLE16(data + 2, (int)(val >> 16));
120
0
}
Unexecuted instantiation: webp_dec.c:PutLE32
Unexecuted instantiation: picture_enc.c:PutLE32
Unexecuted instantiation: webp_enc.c:PutLE32
Unexecuted instantiation: rescaler_utils.c:PutLE32
Unexecuted instantiation: utils.c:PutLE32
Unexecuted instantiation: buffer_dec.c:PutLE32
Unexecuted instantiation: frame_dec.c:PutLE32
Unexecuted instantiation: io_dec.c:PutLE32
Unexecuted instantiation: vp8_dec.c:PutLE32
Unexecuted instantiation: vp8l_dec.c:PutLE32
Unexecuted instantiation: cost.c:PutLE32
Unexecuted instantiation: dec.c:PutLE32
Unexecuted instantiation: enc.c:PutLE32
Unexecuted instantiation: lossless.c:PutLE32
Unexecuted instantiation: cost_sse2.c:PutLE32
Unexecuted instantiation: enc_sse2.c:PutLE32
Unexecuted instantiation: enc_sse41.c:PutLE32
Unexecuted instantiation: dec_sse2.c:PutLE32
Unexecuted instantiation: lossless_sse2.c:PutLE32
Unexecuted instantiation: rescaler_sse2.c:PutLE32
Unexecuted instantiation: yuv_sse2.c:PutLE32
Unexecuted instantiation: dec_sse41.c:PutLE32
Unexecuted instantiation: yuv_sse41.c:PutLE32
Unexecuted instantiation: alpha_enc.c:PutLE32
Unexecuted instantiation: analysis_enc.c:PutLE32
Unexecuted instantiation: frame_enc.c:PutLE32
Unexecuted instantiation: iterator_enc.c:PutLE32
Unexecuted instantiation: picture_csp_enc.c:PutLE32
Unexecuted instantiation: picture_tools_enc.c:PutLE32
Unexecuted instantiation: quant_enc.c:PutLE32
Unexecuted instantiation: syntax_enc.c:PutLE32
Unexecuted instantiation: token_enc.c:PutLE32
Unexecuted instantiation: tree_enc.c:PutLE32
Unexecuted instantiation: vp8l_enc.c:PutLE32
Unexecuted instantiation: bit_reader_utils.c:PutLE32
Unexecuted instantiation: bit_writer_utils.c:PutLE32
Unexecuted instantiation: color_cache_utils.c:PutLE32
Unexecuted instantiation: huffman_encode_utils.c:PutLE32
Unexecuted instantiation: huffman_utils.c:PutLE32
Unexecuted instantiation: palette.c:PutLE32
Unexecuted instantiation: thread_utils.c:PutLE32
Unexecuted instantiation: alpha_dec.c:PutLE32
Unexecuted instantiation: tree_dec.c:PutLE32
Unexecuted instantiation: lossless_enc.c:PutLE32
Unexecuted instantiation: lossless_enc_sse2.c:PutLE32
Unexecuted instantiation: backward_references_enc.c:PutLE32
Unexecuted instantiation: cost_enc.c:PutLE32
Unexecuted instantiation: filter_enc.c:PutLE32
Unexecuted instantiation: histogram_enc.c:PutLE32
Unexecuted instantiation: near_lossless_enc.c:PutLE32
Unexecuted instantiation: picture_rescale_enc.c:PutLE32
Unexecuted instantiation: predictor_enc.c:PutLE32
Unexecuted instantiation: quant_levels_dec_utils.c:PutLE32
Unexecuted instantiation: backward_references_cost_enc.c:PutLE32
121
122
// use GNU builtins where available.
123
#if defined(__GNUC__) && \
124
    ((__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || __GNUC__ >= 4)
125
// Returns (int)floor(log2(n)). n must be > 0.
126
32.4M
static WEBP_INLINE int BitsLog2Floor(uint32_t n) {
127
32.4M
  return 31 ^ __builtin_clz(n);
128
32.4M
}
Unexecuted instantiation: webp_dec.c:BitsLog2Floor
Unexecuted instantiation: picture_enc.c:BitsLog2Floor
Unexecuted instantiation: webp_enc.c:BitsLog2Floor
Unexecuted instantiation: rescaler_utils.c:BitsLog2Floor
Unexecuted instantiation: utils.c:BitsLog2Floor
Unexecuted instantiation: buffer_dec.c:BitsLog2Floor
Unexecuted instantiation: frame_dec.c:BitsLog2Floor
Unexecuted instantiation: io_dec.c:BitsLog2Floor
vp8_dec.c:BitsLog2Floor
Line
Count
Source
126
21.8M
static WEBP_INLINE int BitsLog2Floor(uint32_t n) {
127
21.8M
  return 31 ^ __builtin_clz(n);
128
21.8M
}
Unexecuted instantiation: vp8l_dec.c:BitsLog2Floor
Unexecuted instantiation: cost.c:BitsLog2Floor
Unexecuted instantiation: dec.c:BitsLog2Floor
Unexecuted instantiation: enc.c:BitsLog2Floor
Unexecuted instantiation: lossless.c:BitsLog2Floor
Unexecuted instantiation: cost_sse2.c:BitsLog2Floor
Unexecuted instantiation: enc_sse2.c:BitsLog2Floor
Unexecuted instantiation: enc_sse41.c:BitsLog2Floor
Unexecuted instantiation: dec_sse2.c:BitsLog2Floor
Unexecuted instantiation: lossless_sse2.c:BitsLog2Floor
Unexecuted instantiation: rescaler_sse2.c:BitsLog2Floor
Unexecuted instantiation: yuv_sse2.c:BitsLog2Floor
Unexecuted instantiation: dec_sse41.c:BitsLog2Floor
Unexecuted instantiation: yuv_sse41.c:BitsLog2Floor
Unexecuted instantiation: alpha_enc.c:BitsLog2Floor
Unexecuted instantiation: analysis_enc.c:BitsLog2Floor
Unexecuted instantiation: frame_enc.c:BitsLog2Floor
Unexecuted instantiation: iterator_enc.c:BitsLog2Floor
Unexecuted instantiation: picture_csp_enc.c:BitsLog2Floor
Unexecuted instantiation: picture_tools_enc.c:BitsLog2Floor
Unexecuted instantiation: quant_enc.c:BitsLog2Floor
Unexecuted instantiation: syntax_enc.c:BitsLog2Floor
Unexecuted instantiation: token_enc.c:BitsLog2Floor
Unexecuted instantiation: tree_enc.c:BitsLog2Floor
Unexecuted instantiation: vp8l_enc.c:BitsLog2Floor
bit_reader_utils.c:BitsLog2Floor
Line
Count
Source
126
368k
static WEBP_INLINE int BitsLog2Floor(uint32_t n) {
127
368k
  return 31 ^ __builtin_clz(n);
128
368k
}
Unexecuted instantiation: bit_writer_utils.c:BitsLog2Floor
Unexecuted instantiation: color_cache_utils.c:BitsLog2Floor
Unexecuted instantiation: huffman_encode_utils.c:BitsLog2Floor
Unexecuted instantiation: huffman_utils.c:BitsLog2Floor
Unexecuted instantiation: palette.c:BitsLog2Floor
Unexecuted instantiation: thread_utils.c:BitsLog2Floor
Unexecuted instantiation: alpha_dec.c:BitsLog2Floor
tree_dec.c:BitsLog2Floor
Line
Count
Source
126
10.2M
static WEBP_INLINE int BitsLog2Floor(uint32_t n) {
127
10.2M
  return 31 ^ __builtin_clz(n);
128
10.2M
}
Unexecuted instantiation: lossless_enc.c:BitsLog2Floor
Unexecuted instantiation: lossless_enc_sse2.c:BitsLog2Floor
Unexecuted instantiation: backward_references_enc.c:BitsLog2Floor
Unexecuted instantiation: cost_enc.c:BitsLog2Floor
Unexecuted instantiation: filter_enc.c:BitsLog2Floor
Unexecuted instantiation: histogram_enc.c:BitsLog2Floor
Unexecuted instantiation: near_lossless_enc.c:BitsLog2Floor
Unexecuted instantiation: picture_rescale_enc.c:BitsLog2Floor
Unexecuted instantiation: predictor_enc.c:BitsLog2Floor
Unexecuted instantiation: quant_levels_dec_utils.c:BitsLog2Floor
Unexecuted instantiation: backward_references_cost_enc.c:BitsLog2Floor
129
// counts the number of trailing zero
130
0
static WEBP_INLINE int BitsCtz(uint32_t n) { return __builtin_ctz(n); }
Unexecuted instantiation: webp_dec.c:BitsCtz
Unexecuted instantiation: picture_enc.c:BitsCtz
Unexecuted instantiation: webp_enc.c:BitsCtz
Unexecuted instantiation: rescaler_utils.c:BitsCtz
Unexecuted instantiation: utils.c:BitsCtz
Unexecuted instantiation: buffer_dec.c:BitsCtz
Unexecuted instantiation: frame_dec.c:BitsCtz
Unexecuted instantiation: io_dec.c:BitsCtz
Unexecuted instantiation: vp8_dec.c:BitsCtz
Unexecuted instantiation: vp8l_dec.c:BitsCtz
Unexecuted instantiation: cost.c:BitsCtz
Unexecuted instantiation: dec.c:BitsCtz
Unexecuted instantiation: enc.c:BitsCtz
Unexecuted instantiation: lossless.c:BitsCtz
Unexecuted instantiation: cost_sse2.c:BitsCtz
Unexecuted instantiation: enc_sse2.c:BitsCtz
Unexecuted instantiation: enc_sse41.c:BitsCtz
Unexecuted instantiation: dec_sse2.c:BitsCtz
Unexecuted instantiation: lossless_sse2.c:BitsCtz
Unexecuted instantiation: rescaler_sse2.c:BitsCtz
Unexecuted instantiation: yuv_sse2.c:BitsCtz
Unexecuted instantiation: dec_sse41.c:BitsCtz
Unexecuted instantiation: yuv_sse41.c:BitsCtz
Unexecuted instantiation: alpha_enc.c:BitsCtz
Unexecuted instantiation: analysis_enc.c:BitsCtz
Unexecuted instantiation: frame_enc.c:BitsCtz
Unexecuted instantiation: iterator_enc.c:BitsCtz
Unexecuted instantiation: picture_csp_enc.c:BitsCtz
Unexecuted instantiation: picture_tools_enc.c:BitsCtz
Unexecuted instantiation: quant_enc.c:BitsCtz
Unexecuted instantiation: syntax_enc.c:BitsCtz
Unexecuted instantiation: token_enc.c:BitsCtz
Unexecuted instantiation: tree_enc.c:BitsCtz
Unexecuted instantiation: vp8l_enc.c:BitsCtz
Unexecuted instantiation: bit_reader_utils.c:BitsCtz
Unexecuted instantiation: bit_writer_utils.c:BitsCtz
Unexecuted instantiation: color_cache_utils.c:BitsCtz
Unexecuted instantiation: huffman_encode_utils.c:BitsCtz
Unexecuted instantiation: huffman_utils.c:BitsCtz
Unexecuted instantiation: palette.c:BitsCtz
Unexecuted instantiation: thread_utils.c:BitsCtz
Unexecuted instantiation: alpha_dec.c:BitsCtz
Unexecuted instantiation: tree_dec.c:BitsCtz
Unexecuted instantiation: lossless_enc.c:BitsCtz
Unexecuted instantiation: lossless_enc_sse2.c:BitsCtz
Unexecuted instantiation: backward_references_enc.c:BitsCtz
Unexecuted instantiation: cost_enc.c:BitsCtz
Unexecuted instantiation: filter_enc.c:BitsCtz
Unexecuted instantiation: histogram_enc.c:BitsCtz
Unexecuted instantiation: near_lossless_enc.c:BitsCtz
Unexecuted instantiation: picture_rescale_enc.c:BitsCtz
Unexecuted instantiation: predictor_enc.c:BitsCtz
Unexecuted instantiation: quant_levels_dec_utils.c:BitsCtz
Unexecuted instantiation: backward_references_cost_enc.c:BitsCtz
131
#elif defined(_MSC_VER) && _MSC_VER > 1310 && \
132
      (defined(_M_X64) || defined(_M_IX86))
133
#include <intrin.h>
134
#pragma intrinsic(_BitScanReverse)
135
#pragma intrinsic(_BitScanForward)
136
137
static WEBP_INLINE int BitsLog2Floor(uint32_t n) {
138
  unsigned long first_set_bit;  // NOLINT (runtime/int)
139
  _BitScanReverse(&first_set_bit, n);
140
  return first_set_bit;
141
}
142
static WEBP_INLINE int BitsCtz(uint32_t n) {
143
  unsigned long first_set_bit;  // NOLINT (runtime/int)
144
  _BitScanForward(&first_set_bit, n);
145
  return first_set_bit;
146
}
147
#else   // default: use the (slow) C-version.
148
#define WEBP_HAVE_SLOW_CLZ_CTZ   // signal that the Clz/Ctz function are slow
149
// Returns 31 ^ clz(n) = log2(n). This is the default C-implementation, either
150
// based on table or not. Can be used as fallback if clz() is not available.
151
#define WEBP_NEED_LOG_TABLE_8BIT
152
extern const uint8_t WebPLogTable8bit[256];
153
static WEBP_INLINE int WebPLog2FloorC(uint32_t n) {
154
  int log_value = 0;
155
  while (n >= 256) {
156
    log_value += 8;
157
    n >>= 8;
158
  }
159
  return log_value + WebPLogTable8bit[n];
160
}
161
162
static WEBP_INLINE int BitsLog2Floor(uint32_t n) { return WebPLog2FloorC(n); }
163
164
static WEBP_INLINE int BitsCtz(uint32_t n) {
165
  int i;
166
  for (i = 0; i < 32; ++i, n >>= 1) {
167
    if (n & 1) return i;
168
  }
169
  return 32;
170
}
171
172
#endif
173
174
//------------------------------------------------------------------------------
175
// Pixel copying.
176
177
struct WebPPicture;
178
179
// Copy width x height pixels from 'src' to 'dst' honoring the strides.
180
WEBP_EXTERN void WebPCopyPlane(const uint8_t* src, int src_stride,
181
                               uint8_t* dst, int dst_stride,
182
                               int width, int height);
183
184
// Copy ARGB pixels from 'src' to 'dst' honoring strides. 'src' and 'dst' are
185
// assumed to be already allocated and using ARGB data.
186
WEBP_EXTERN void WebPCopyPixels(const struct WebPPicture* const src,
187
                                struct WebPPicture* const dst);
188
189
//------------------------------------------------------------------------------
190
// Unique colors.
191
192
// Returns count of unique colors in 'pic', assuming pic->use_argb is true.
193
// If the unique color count is more than MAX_PALETTE_SIZE, returns
194
// MAX_PALETTE_SIZE+1.
195
// If 'palette' is not NULL and number of unique colors is less than or equal to
196
// MAX_PALETTE_SIZE, also outputs the actual unique colors into 'palette'.
197
// Note: 'palette' is assumed to be an array already allocated with at least
198
// MAX_PALETTE_SIZE elements.
199
// TODO(vrabaud) remove whenever we can break the ABI.
200
WEBP_EXTERN int WebPGetColorPalette(const struct WebPPicture* const pic,
201
                                    uint32_t* const palette);
202
203
//------------------------------------------------------------------------------
204
205
#ifdef __cplusplus
206
}    // extern "C"
207
#endif
208
209
#endif  // WEBP_UTILS_UTILS_H_