Coverage Report

Created: 2026-08-14 06:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libwebp/src/utils/utils.h
Line
Count
Source
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/utils/bounds_safety.h"
25
#include "src/webp/format_constants.h"
26
#include "src/webp/types.h"
27
28
WEBP_ASSUME_UNSAFE_INDEXABLE_ABI
29
30
#ifdef __cplusplus
31
extern "C" {
32
#endif
33
34
//------------------------------------------------------------------------------
35
// Memory allocation
36
37
// This is the maximum memory amount that libwebp will ever try to allocate.
38
#ifndef WEBP_MAX_ALLOCABLE_MEMORY
39
#if SIZE_MAX > (1ULL << 34)
40
24.4k
#define WEBP_MAX_ALLOCABLE_MEMORY (1ULL << 34)
41
#else
42
// For 32-bit targets keep this below INT_MAX to avoid valgrind warnings.
43
#define WEBP_MAX_ALLOCABLE_MEMORY ((1ULL << 31) - (1 << 16))
44
#endif
45
#endif  // WEBP_MAX_ALLOCABLE_MEMORY
46
47
26.1k
static WEBP_INLINE int CheckSizeOverflow(uint64_t size) {
48
26.1k
  return size == (size_t)size;
49
26.1k
}
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
47
24.4k
static WEBP_INLINE int CheckSizeOverflow(uint64_t size) {
48
24.4k
  return size == (size_t)size;
49
24.4k
}
Unexecuted instantiation: buffer_dec.c:CheckSizeOverflow
frame_dec.c:CheckSizeOverflow
Line
Count
Source
47
1.67k
static WEBP_INLINE int CheckSizeOverflow(uint64_t size) {
48
1.67k
  return size == (size_t)size;
49
1.67k
}
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: lossless_enc_avx2.c:CheckSizeOverflow
Unexecuted instantiation: backward_references_cost_enc.c:CheckSizeOverflow
50
51
// size-checking safe malloc/calloc: verify that the requested size is not too
52
// large, or return NULL. You don't need to call these for constructs like
53
// malloc(sizeof(foo)), but only if there's picture-dependent size involved
54
// somewhere (like: malloc(num_pixels * sizeof(*something))). That's why this
55
// safe malloc() borrows the signature from calloc(), pointing at the dangerous
56
// underlying multiply involved.
57
WEBP_EXTERN void* WEBP_SIZED_BY_OR_NULL(nmemb* size)
58
    WebPSafeMalloc(uint64_t nmemb, size_t size);
59
// Note that WebPSafeCalloc() expects the second argument type to be 'size_t'
60
// in order to favor the "calloc(num_foo, sizeof(foo))" pattern.
61
WEBP_EXTERN void* WEBP_SIZED_BY_OR_NULL(nmemb* size)
62
    WebPSafeCalloc(uint64_t nmemb, size_t size);
63
64
// Companion deallocation function to the above allocations.
65
WEBP_EXTERN void WebPSafeFree(void* const ptr);
66
67
//------------------------------------------------------------------------------
68
// Alignment
69
70
5.01k
#define WEBP_ALIGN_CST 31
71
#define WEBP_ALIGN(PTR) \
72
1.67k
  (((uintptr_t)(PTR) + WEBP_ALIGN_CST) & ~(uintptr_t)WEBP_ALIGN_CST)
73
74
#include <string.h>
75
// memcpy() is the safe way of moving potentially unaligned 32b memory.
76
9.62M
static WEBP_INLINE uint32_t WebPMemToUint32(const uint8_t* const ptr) {
77
9.62M
  uint32_t A;
78
9.62M
  WEBP_UNSAFE_MEMCPY(&A, ptr, sizeof(A));
79
9.62M
  return A;
80
9.62M
}
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
76
7.43M
static WEBP_INLINE uint32_t WebPMemToUint32(const uint8_t* const ptr) {
77
7.43M
  uint32_t A;
78
7.43M
  WEBP_UNSAFE_MEMCPY(&A, ptr, sizeof(A));
79
7.43M
  return A;
80
7.43M
}
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
76
264k
static WEBP_INLINE uint32_t WebPMemToUint32(const uint8_t* const ptr) {
77
264k
  uint32_t A;
78
264k
  WEBP_UNSAFE_MEMCPY(&A, ptr, sizeof(A));
79
264k
  return A;
80
264k
}
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
76
1.93M
static WEBP_INLINE uint32_t WebPMemToUint32(const uint8_t* const ptr) {
77
1.93M
  uint32_t A;
78
1.93M
  WEBP_UNSAFE_MEMCPY(&A, ptr, sizeof(A));
79
1.93M
  return A;
80
1.93M
}
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: lossless_enc_avx2.c:WebPMemToUint32
Unexecuted instantiation: backward_references_cost_enc.c:WebPMemToUint32
81
82
7.69M
static WEBP_INLINE int32_t WebPMemToInt32(const uint8_t* const ptr) {
83
7.69M
  return (int32_t)WebPMemToUint32(ptr);
84
7.69M
}
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
82
7.43M
static WEBP_INLINE int32_t WebPMemToInt32(const uint8_t* const ptr) {
83
7.43M
  return (int32_t)WebPMemToUint32(ptr);
84
7.43M
}
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
82
264k
static WEBP_INLINE int32_t WebPMemToInt32(const uint8_t* const ptr) {
83
264k
  return (int32_t)WebPMemToUint32(ptr);
84
264k
}
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: lossless_enc_avx2.c:WebPMemToInt32
Unexecuted instantiation: backward_references_cost_enc.c:WebPMemToInt32
85
86
6.88M
static WEBP_INLINE void WebPUint32ToMem(uint8_t* const ptr, uint32_t val) {
87
6.88M
  WEBP_UNSAFE_MEMCPY(ptr, &val, sizeof(val));
88
6.88M
}
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
86
68.8k
static WEBP_INLINE void WebPUint32ToMem(uint8_t* const ptr, uint32_t val) {
87
68.8k
  WEBP_UNSAFE_MEMCPY(ptr, &val, sizeof(val));
88
68.8k
}
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
86
6.81M
static WEBP_INLINE void WebPUint32ToMem(uint8_t* const ptr, uint32_t val) {
87
6.81M
  WEBP_UNSAFE_MEMCPY(ptr, &val, sizeof(val));
88
6.81M
}
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: lossless_enc_avx2.c:WebPUint32ToMem
Unexecuted instantiation: backward_references_cost_enc.c:WebPUint32ToMem
89
90
6.81M
static WEBP_INLINE void WebPInt32ToMem(uint8_t* const ptr, int val) {
91
6.81M
  WebPUint32ToMem(ptr, (uint32_t)val);
92
6.81M
}
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
90
6.81M
static WEBP_INLINE void WebPInt32ToMem(uint8_t* const ptr, int val) {
91
6.81M
  WebPUint32ToMem(ptr, (uint32_t)val);
92
6.81M
}
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: lossless_enc_avx2.c:WebPInt32ToMem
Unexecuted instantiation: backward_references_cost_enc.c:WebPInt32ToMem
93
94
//------------------------------------------------------------------------------
95
// Reading/writing data.
96
97
// Read 16, 24 or 32 bits stored in little-endian order.
98
18.9k
static WEBP_INLINE int GetLE16(const uint8_t* const WEBP_COUNTED_BY(2) data) {
99
18.9k
  return (int)(data[0] << 0) | (data[1] << 8);
100
18.9k
}
webp_dec.c:GetLE16
Line
Count
Source
98
18.9k
static WEBP_INLINE int GetLE16(const uint8_t* const WEBP_COUNTED_BY(2) data) {
99
18.9k
  return (int)(data[0] << 0) | (data[1] << 8);
100
18.9k
}
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: lossless_enc_avx2.c:GetLE16
Unexecuted instantiation: backward_references_cost_enc.c:GetLE16
101
102
494
static WEBP_INLINE int GetLE24(const uint8_t* const WEBP_COUNTED_BY(3) data) {
103
494
  return GetLE16(data) | (data[2] << 16);
104
494
}
webp_dec.c:GetLE24
Line
Count
Source
102
494
static WEBP_INLINE int GetLE24(const uint8_t* const WEBP_COUNTED_BY(3) data) {
103
494
  return GetLE16(data) | (data[2] << 16);
104
494
}
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: lossless_enc_avx2.c:GetLE24
Unexecuted instantiation: backward_references_cost_enc.c:GetLE24
105
106
static WEBP_INLINE uint32_t GetLE32(const uint8_t* const WEBP_COUNTED_BY(4)
107
9.20k
                                        data) {
108
9.20k
  return GetLE16(data) | ((uint32_t)GetLE16(data + 2) << 16);
109
9.20k
}
webp_dec.c:GetLE32
Line
Count
Source
107
9.20k
                                        data) {
108
9.20k
  return GetLE16(data) | ((uint32_t)GetLE16(data + 2) << 16);
109
9.20k
}
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: lossless_enc_avx2.c:GetLE32
Unexecuted instantiation: backward_references_cost_enc.c:GetLE32
110
111
// Store 16, 24 or 32 bits in little-endian order.
112
static WEBP_INLINE void PutLE16(uint8_t* const WEBP_COUNTED_BY(2) data,
113
0
                                int val) {
114
0
  assert(val < (1 << 16));
115
0
  data[0] = (val >> 0) & 0xff;
116
0
  data[1] = (val >> 8) & 0xff;
117
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: lossless_enc_avx2.c:PutLE16
Unexecuted instantiation: backward_references_cost_enc.c:PutLE16
118
119
static WEBP_INLINE void PutLE24(uint8_t* const WEBP_COUNTED_BY(3) data,
120
0
                                int val) {
121
0
  assert(val < (1 << 24));
122
0
  PutLE16(data, val & 0xffff);
123
0
  data[2] = (val >> 16) & 0xff;
124
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: lossless_enc_avx2.c:PutLE24
Unexecuted instantiation: backward_references_cost_enc.c:PutLE24
125
126
static WEBP_INLINE void PutLE32(uint8_t* const WEBP_COUNTED_BY(4) data,
127
0
                                uint32_t val) {
128
0
  PutLE16(data, (int)(val & 0xffff));
129
0
  PutLE16(data + 2, (int)(val >> 16));
130
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: lossless_enc_avx2.c:PutLE32
Unexecuted instantiation: backward_references_cost_enc.c:PutLE32
131
132
// use GNU builtins where available.
133
#if defined(__GNUC__) && \
134
    ((__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || __GNUC__ >= 4)
135
// Returns (int)floor(log2(n)). n must be > 0.
136
20.0M
static WEBP_INLINE int BitsLog2Floor(uint32_t n) {
137
20.0M
  return 31 ^ __builtin_clz(n);
138
20.0M
}
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
136
11.3M
static WEBP_INLINE int BitsLog2Floor(uint32_t n) {
137
11.3M
  return 31 ^ __builtin_clz(n);
138
11.3M
}
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
136
368k
static WEBP_INLINE int BitsLog2Floor(uint32_t n) {
137
368k
  return 31 ^ __builtin_clz(n);
138
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
136
8.32M
static WEBP_INLINE int BitsLog2Floor(uint32_t n) {
137
8.32M
  return 31 ^ __builtin_clz(n);
138
8.32M
}
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: lossless_enc_avx2.c:BitsLog2Floor
Unexecuted instantiation: backward_references_cost_enc.c:BitsLog2Floor
139
// counts the number of trailing zero
140
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: lossless_enc_avx2.c:BitsCtz
Unexecuted instantiation: backward_references_cost_enc.c:BitsCtz
141
#elif defined(_MSC_VER) && _MSC_VER > 1310 && \
142
    (defined(_M_X64) || defined(_M_IX86))
143
#include <intrin.h>
144
#pragma intrinsic(_BitScanReverse)
145
#pragma intrinsic(_BitScanForward)
146
147
static WEBP_INLINE int BitsLog2Floor(uint32_t n) {
148
  unsigned long first_set_bit;  // NOLINT (runtime/int)
149
  _BitScanReverse(&first_set_bit, n);
150
  return first_set_bit;
151
}
152
static WEBP_INLINE int BitsCtz(uint32_t n) {
153
  unsigned long first_set_bit;  // NOLINT (runtime/int)
154
  _BitScanForward(&first_set_bit, n);
155
  return first_set_bit;
156
}
157
#else                           // default: use the (slow) C-version.
158
#define WEBP_HAVE_SLOW_CLZ_CTZ  // signal that the Clz/Ctz function are slow
159
// Returns 31 ^ clz(n) = log2(n). This is the default C-implementation, either
160
// based on table or not. Can be used as fallback if clz() is not available.
161
#define WEBP_NEED_LOG_TABLE_8BIT
162
extern const uint8_t WebPLogTable8bit[256];
163
static WEBP_INLINE int WebPLog2FloorC(uint32_t n) {
164
  int log_value = 0;
165
  while (n >= 256) {
166
    log_value += 8;
167
    n >>= 8;
168
  }
169
  return log_value + WebPLogTable8bit[n];
170
}
171
172
static WEBP_INLINE int BitsLog2Floor(uint32_t n) { return WebPLog2FloorC(n); }
173
174
static WEBP_INLINE int BitsCtz(uint32_t n) {
175
  int i;
176
  for (i = 0; i < 32; ++i, n >>= 1) {
177
    if (n & 1) return i;
178
  }
179
  return 32;
180
}
181
182
#endif
183
184
//------------------------------------------------------------------------------
185
// Pixel copying.
186
187
struct WebPPicture;
188
189
// Copy width x height pixels from 'src' to 'dst' honoring the strides.
190
WEBP_EXTERN void WebPCopyPlane(const uint8_t* src, int src_stride, uint8_t* dst,
191
                               int dst_stride, int width, int height);
192
193
// Copy ARGB pixels from 'src' to 'dst' honoring strides. 'src' and 'dst' are
194
// assumed to be already allocated and using ARGB data.
195
WEBP_EXTERN void WebPCopyPixels(const struct WebPPicture* const src,
196
                                struct WebPPicture* const dst);
197
198
//------------------------------------------------------------------------------
199
// Unique colors.
200
201
// Returns count of unique colors in 'pic', assuming pic->use_argb is true.
202
// If the unique color count is more than MAX_PALETTE_SIZE, returns
203
// MAX_PALETTE_SIZE+1.
204
// If 'palette' is not NULL and number of unique colors is less than or equal to
205
// MAX_PALETTE_SIZE, also outputs the actual unique colors into 'palette'.
206
// Note: 'palette' is assumed to be an array already allocated with at least
207
// MAX_PALETTE_SIZE elements.
208
// TODO(vrabaud) remove whenever we can break the ABI.
209
WEBP_EXTERN int WebPGetColorPalette(
210
    const struct WebPPicture* const pic,
211
    uint32_t* const WEBP_COUNTED_BY_OR_NULL(MAX_PALETTE_SIZE) palette);
212
213
//------------------------------------------------------------------------------
214
215
#ifdef __cplusplus
216
}  // extern "C"
217
#endif
218
219
#endif  // WEBP_UTILS_UTILS_H_