Coverage Report

Created: 2026-08-14 07:16

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/vlc/contrib/contrib-build/bpg/libavutil/common.h
Line
Count
Source
1
/*
2
 * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
3
 *
4
 * This file is part of FFmpeg.
5
 *
6
 * FFmpeg is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU Lesser General Public
8
 * License as published by the Free Software Foundation; either
9
 * version 2.1 of the License, or (at your option) any later version.
10
 *
11
 * FFmpeg is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
 * Lesser General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Lesser General Public
17
 * License along with FFmpeg; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
 */
20
21
/**
22
 * @file
23
 * common internal and external API header
24
 */
25
26
#ifndef AVUTIL_COMMON_H
27
#define AVUTIL_COMMON_H
28
29
#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS) && !defined(UINT64_C)
30
#error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
31
#endif
32
33
#include <errno.h>
34
#include <inttypes.h>
35
#include <limits.h>
36
#include <math.h>
37
#include <stdint.h>
38
#include <stdio.h>
39
#include <stdlib.h>
40
#include <string.h>
41
42
#include "attributes.h"
43
#include "version.h"
44
#include "libavutil/avconfig.h"
45
46
#if AV_HAVE_BIGENDIAN
47
#   define AV_NE(be, le) (be)
48
#else
49
#   define AV_NE(be, le) (le)
50
#endif
51
52
//rounded division & shift
53
#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b))
54
/* assume b>0 */
55
#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b))
56
/* assume a>0 and b>0 */
57
0
#define FF_CEIL_RSHIFT(a,b) (!av_builtin_constant_p(b) ? -((-(a)) >> (b)) \
58
0
                                                       : ((a) + (1<<(b)) - 1) >> (b))
59
0
#define FFUDIV(a,b) (((a)>0 ?(a):(a)-(b)+1) / (b))
60
0
#define FFUMOD(a,b) ((a)-(b)*FFUDIV(a,b))
61
0
#define FFABS(a) ((a) >= 0 ? (a) : (-(a)))
62
#define FFSIGN(a) ((a) > 0 ? 1 : -1)
63
64
0
#define FFMAX(a,b) ((a) > (b) ? (a) : (b))
65
#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c)
66
0
#define FFMIN(a,b) ((a) > (b) ? (b) : (a))
67
#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c)
68
69
0
#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0)
70
0
#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0]))
71
0
#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1))
72
73
/* misc math functions */
74
75
/**
76
 * Reverse the order of the bits of an 8-bits unsigned integer.
77
 */
78
#if FF_API_AV_REVERSE
79
extern attribute_deprecated const uint8_t av_reverse[256];
80
#endif
81
82
#ifdef HAVE_AV_CONFIG_H
83
#   include "config.h"
84
#   include "intmath.h"
85
#endif
86
87
/* Pull in unguarded fallback defines at the end of this file. */
88
#include "common.h"
89
90
#ifndef av_log2
91
av_const int av_log2(unsigned v);
92
#endif
93
94
#ifndef av_log2_16bit
95
av_const int av_log2_16bit(unsigned v);
96
#endif
97
98
/**
99
 * Clip a signed integer value into the amin-amax range.
100
 * @param a value to clip
101
 * @param amin minimum value of the clip range
102
 * @param amax maximum value of the clip range
103
 * @return clipped value
104
 */
105
static av_always_inline av_const int av_clip_c(int a, int amin, int amax)
106
0
{
107
#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
108
    if (amin > amax) abort();
109
#endif
110
0
    if      (a < amin) return amin;
111
0
    else if (a > amax) return amax;
112
0
    else               return a;
113
0
}
Unexecuted instantiation: hevc_cabac.c:av_clip_c
Unexecuted instantiation: hevc_filter.c:av_clip_c
Unexecuted instantiation: hevc.c:av_clip_c
Unexecuted instantiation: hevcpred.c:av_clip_c
Unexecuted instantiation: hevc_refs.c:av_clip_c
Unexecuted instantiation: hevcdsp.c:av_clip_c
Unexecuted instantiation: hevc_mvs.c:av_clip_c
Unexecuted instantiation: hevc_ps.c:av_clip_c
Unexecuted instantiation: hevc_sei.c:av_clip_c
Unexecuted instantiation: utils.c:av_clip_c
Unexecuted instantiation: cabac.c:av_clip_c
Unexecuted instantiation: golomb.c:av_clip_c
Unexecuted instantiation: videodsp.c:av_clip_c
Unexecuted instantiation: mem.c:av_clip_c
Unexecuted instantiation: buffer.c:av_clip_c
Unexecuted instantiation: frame.c:av_clip_c
Unexecuted instantiation: pixdesc.c:av_clip_c
Unexecuted instantiation: md5.c:av_clip_c
Unexecuted instantiation: libbpg.c:av_clip_c
114
115
/**
116
 * Clip a signed 64bit integer value into the amin-amax range.
117
 * @param a value to clip
118
 * @param amin minimum value of the clip range
119
 * @param amax maximum value of the clip range
120
 * @return clipped value
121
 */
122
static av_always_inline av_const int64_t av_clip64_c(int64_t a, int64_t amin, int64_t amax)
123
0
{
124
0
#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
125
0
    if (amin > amax) abort();
126
0
#endif
127
0
    if      (a < amin) return amin;
128
0
    else if (a > amax) return amax;
129
0
    else               return a;
130
0
}
Unexecuted instantiation: hevc_cabac.c:av_clip64_c
Unexecuted instantiation: hevc_filter.c:av_clip64_c
Unexecuted instantiation: hevc.c:av_clip64_c
Unexecuted instantiation: hevcpred.c:av_clip64_c
Unexecuted instantiation: hevc_refs.c:av_clip64_c
Unexecuted instantiation: hevcdsp.c:av_clip64_c
Unexecuted instantiation: hevc_mvs.c:av_clip64_c
Unexecuted instantiation: hevc_ps.c:av_clip64_c
Unexecuted instantiation: hevc_sei.c:av_clip64_c
Unexecuted instantiation: utils.c:av_clip64_c
Unexecuted instantiation: cabac.c:av_clip64_c
Unexecuted instantiation: golomb.c:av_clip64_c
Unexecuted instantiation: videodsp.c:av_clip64_c
Unexecuted instantiation: mem.c:av_clip64_c
Unexecuted instantiation: buffer.c:av_clip64_c
Unexecuted instantiation: frame.c:av_clip64_c
Unexecuted instantiation: pixdesc.c:av_clip64_c
Unexecuted instantiation: md5.c:av_clip64_c
Unexecuted instantiation: libbpg.c:av_clip64_c
131
132
/**
133
 * Clip a signed integer value into the 0-255 range.
134
 * @param a value to clip
135
 * @return clipped value
136
 */
137
static av_always_inline av_const uint8_t av_clip_uint8_c(int a)
138
0
{
139
0
    if (a&(~0xFF)) return (-a)>>31;
140
0
    else           return a;
141
0
}
Unexecuted instantiation: hevc_cabac.c:av_clip_uint8_c
Unexecuted instantiation: hevc_filter.c:av_clip_uint8_c
Unexecuted instantiation: hevc.c:av_clip_uint8_c
Unexecuted instantiation: hevcpred.c:av_clip_uint8_c
Unexecuted instantiation: hevc_refs.c:av_clip_uint8_c
Unexecuted instantiation: hevcdsp.c:av_clip_uint8_c
Unexecuted instantiation: hevc_mvs.c:av_clip_uint8_c
Unexecuted instantiation: hevc_ps.c:av_clip_uint8_c
Unexecuted instantiation: hevc_sei.c:av_clip_uint8_c
Unexecuted instantiation: utils.c:av_clip_uint8_c
Unexecuted instantiation: cabac.c:av_clip_uint8_c
Unexecuted instantiation: golomb.c:av_clip_uint8_c
Unexecuted instantiation: videodsp.c:av_clip_uint8_c
Unexecuted instantiation: mem.c:av_clip_uint8_c
Unexecuted instantiation: buffer.c:av_clip_uint8_c
Unexecuted instantiation: frame.c:av_clip_uint8_c
Unexecuted instantiation: pixdesc.c:av_clip_uint8_c
Unexecuted instantiation: md5.c:av_clip_uint8_c
Unexecuted instantiation: libbpg.c:av_clip_uint8_c
142
143
/**
144
 * Clip a signed integer value into the -128,127 range.
145
 * @param a value to clip
146
 * @return clipped value
147
 */
148
static av_always_inline av_const int8_t av_clip_int8_c(int a)
149
0
{
150
0
    if ((a+0x80) & ~0xFF) return (a>>31) ^ 0x7F;
151
0
    else                  return a;
152
0
}
Unexecuted instantiation: hevc_cabac.c:av_clip_int8_c
Unexecuted instantiation: hevc_filter.c:av_clip_int8_c
Unexecuted instantiation: hevc.c:av_clip_int8_c
Unexecuted instantiation: hevcpred.c:av_clip_int8_c
Unexecuted instantiation: hevc_refs.c:av_clip_int8_c
Unexecuted instantiation: hevcdsp.c:av_clip_int8_c
Unexecuted instantiation: hevc_mvs.c:av_clip_int8_c
Unexecuted instantiation: hevc_ps.c:av_clip_int8_c
Unexecuted instantiation: hevc_sei.c:av_clip_int8_c
Unexecuted instantiation: utils.c:av_clip_int8_c
Unexecuted instantiation: cabac.c:av_clip_int8_c
Unexecuted instantiation: golomb.c:av_clip_int8_c
Unexecuted instantiation: videodsp.c:av_clip_int8_c
Unexecuted instantiation: mem.c:av_clip_int8_c
Unexecuted instantiation: buffer.c:av_clip_int8_c
Unexecuted instantiation: frame.c:av_clip_int8_c
Unexecuted instantiation: pixdesc.c:av_clip_int8_c
Unexecuted instantiation: md5.c:av_clip_int8_c
Unexecuted instantiation: libbpg.c:av_clip_int8_c
153
154
/**
155
 * Clip a signed integer value into the 0-65535 range.
156
 * @param a value to clip
157
 * @return clipped value
158
 */
159
static av_always_inline av_const uint16_t av_clip_uint16_c(int a)
160
0
{
161
0
    if (a&(~0xFFFF)) return (-a)>>31;
162
0
    else             return a;
163
0
}
Unexecuted instantiation: hevc_cabac.c:av_clip_uint16_c
Unexecuted instantiation: hevc_filter.c:av_clip_uint16_c
Unexecuted instantiation: hevc.c:av_clip_uint16_c
Unexecuted instantiation: hevcpred.c:av_clip_uint16_c
Unexecuted instantiation: hevc_refs.c:av_clip_uint16_c
Unexecuted instantiation: hevcdsp.c:av_clip_uint16_c
Unexecuted instantiation: hevc_mvs.c:av_clip_uint16_c
Unexecuted instantiation: hevc_ps.c:av_clip_uint16_c
Unexecuted instantiation: hevc_sei.c:av_clip_uint16_c
Unexecuted instantiation: utils.c:av_clip_uint16_c
Unexecuted instantiation: cabac.c:av_clip_uint16_c
Unexecuted instantiation: golomb.c:av_clip_uint16_c
Unexecuted instantiation: videodsp.c:av_clip_uint16_c
Unexecuted instantiation: mem.c:av_clip_uint16_c
Unexecuted instantiation: buffer.c:av_clip_uint16_c
Unexecuted instantiation: frame.c:av_clip_uint16_c
Unexecuted instantiation: pixdesc.c:av_clip_uint16_c
Unexecuted instantiation: md5.c:av_clip_uint16_c
Unexecuted instantiation: libbpg.c:av_clip_uint16_c
164
165
/**
166
 * Clip a signed integer value into the -32768,32767 range.
167
 * @param a value to clip
168
 * @return clipped value
169
 */
170
static av_always_inline av_const int16_t av_clip_int16_c(int a)
171
0
{
172
0
    if ((a+0x8000) & ~0xFFFF) return (a>>31) ^ 0x7FFF;
173
0
    else                      return a;
174
0
}
Unexecuted instantiation: hevc_cabac.c:av_clip_int16_c
Unexecuted instantiation: hevc_filter.c:av_clip_int16_c
Unexecuted instantiation: hevc.c:av_clip_int16_c
Unexecuted instantiation: hevcpred.c:av_clip_int16_c
Unexecuted instantiation: hevc_refs.c:av_clip_int16_c
Unexecuted instantiation: hevcdsp.c:av_clip_int16_c
Unexecuted instantiation: hevc_mvs.c:av_clip_int16_c
Unexecuted instantiation: hevc_ps.c:av_clip_int16_c
Unexecuted instantiation: hevc_sei.c:av_clip_int16_c
Unexecuted instantiation: utils.c:av_clip_int16_c
Unexecuted instantiation: cabac.c:av_clip_int16_c
Unexecuted instantiation: golomb.c:av_clip_int16_c
Unexecuted instantiation: videodsp.c:av_clip_int16_c
Unexecuted instantiation: mem.c:av_clip_int16_c
Unexecuted instantiation: buffer.c:av_clip_int16_c
Unexecuted instantiation: frame.c:av_clip_int16_c
Unexecuted instantiation: pixdesc.c:av_clip_int16_c
Unexecuted instantiation: md5.c:av_clip_int16_c
Unexecuted instantiation: libbpg.c:av_clip_int16_c
175
176
/**
177
 * Clip a signed 64-bit integer value into the -2147483648,2147483647 range.
178
 * @param a value to clip
179
 * @return clipped value
180
 */
181
static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a)
182
0
{
183
0
    if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (int32_t)((a>>63) ^ 0x7FFFFFFF);
184
0
    else                                         return (int32_t)a;
185
0
}
Unexecuted instantiation: hevc_cabac.c:av_clipl_int32_c
Unexecuted instantiation: hevc_filter.c:av_clipl_int32_c
Unexecuted instantiation: hevc.c:av_clipl_int32_c
Unexecuted instantiation: hevcpred.c:av_clipl_int32_c
Unexecuted instantiation: hevc_refs.c:av_clipl_int32_c
Unexecuted instantiation: hevcdsp.c:av_clipl_int32_c
Unexecuted instantiation: hevc_mvs.c:av_clipl_int32_c
Unexecuted instantiation: hevc_ps.c:av_clipl_int32_c
Unexecuted instantiation: hevc_sei.c:av_clipl_int32_c
Unexecuted instantiation: utils.c:av_clipl_int32_c
Unexecuted instantiation: cabac.c:av_clipl_int32_c
Unexecuted instantiation: golomb.c:av_clipl_int32_c
Unexecuted instantiation: videodsp.c:av_clipl_int32_c
Unexecuted instantiation: mem.c:av_clipl_int32_c
Unexecuted instantiation: buffer.c:av_clipl_int32_c
Unexecuted instantiation: frame.c:av_clipl_int32_c
Unexecuted instantiation: pixdesc.c:av_clipl_int32_c
Unexecuted instantiation: md5.c:av_clipl_int32_c
Unexecuted instantiation: libbpg.c:av_clipl_int32_c
186
187
/**
188
 * Clip a signed integer to an unsigned power of two range.
189
 * @param  a value to clip
190
 * @param  p bit position to clip at
191
 * @return clipped value
192
 */
193
static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p)
194
0
{
195
0
    if (a & ~((1<<p) - 1)) return -a >> 31 & ((1<<p) - 1);
196
0
    else                   return  a;
197
0
}
Unexecuted instantiation: hevc_cabac.c:av_clip_uintp2_c
Unexecuted instantiation: hevc_filter.c:av_clip_uintp2_c
Unexecuted instantiation: hevc.c:av_clip_uintp2_c
Unexecuted instantiation: hevcpred.c:av_clip_uintp2_c
Unexecuted instantiation: hevc_refs.c:av_clip_uintp2_c
Unexecuted instantiation: hevcdsp.c:av_clip_uintp2_c
Unexecuted instantiation: hevc_mvs.c:av_clip_uintp2_c
Unexecuted instantiation: hevc_ps.c:av_clip_uintp2_c
Unexecuted instantiation: hevc_sei.c:av_clip_uintp2_c
Unexecuted instantiation: utils.c:av_clip_uintp2_c
Unexecuted instantiation: cabac.c:av_clip_uintp2_c
Unexecuted instantiation: golomb.c:av_clip_uintp2_c
Unexecuted instantiation: videodsp.c:av_clip_uintp2_c
Unexecuted instantiation: mem.c:av_clip_uintp2_c
Unexecuted instantiation: buffer.c:av_clip_uintp2_c
Unexecuted instantiation: frame.c:av_clip_uintp2_c
Unexecuted instantiation: pixdesc.c:av_clip_uintp2_c
Unexecuted instantiation: md5.c:av_clip_uintp2_c
Unexecuted instantiation: libbpg.c:av_clip_uintp2_c
198
199
/**
200
 * Add two signed 32-bit values with saturation.
201
 *
202
 * @param  a one value
203
 * @param  b another value
204
 * @return sum with signed saturation
205
 */
206
static av_always_inline int av_sat_add32_c(int a, int b)
207
0
{
208
0
    return av_clipl_int32((int64_t)a + b);
209
0
}
Unexecuted instantiation: hevc_cabac.c:av_sat_add32_c
Unexecuted instantiation: hevc_filter.c:av_sat_add32_c
Unexecuted instantiation: hevc.c:av_sat_add32_c
Unexecuted instantiation: hevcpred.c:av_sat_add32_c
Unexecuted instantiation: hevc_refs.c:av_sat_add32_c
Unexecuted instantiation: hevcdsp.c:av_sat_add32_c
Unexecuted instantiation: hevc_mvs.c:av_sat_add32_c
Unexecuted instantiation: hevc_ps.c:av_sat_add32_c
Unexecuted instantiation: hevc_sei.c:av_sat_add32_c
Unexecuted instantiation: utils.c:av_sat_add32_c
Unexecuted instantiation: cabac.c:av_sat_add32_c
Unexecuted instantiation: golomb.c:av_sat_add32_c
Unexecuted instantiation: videodsp.c:av_sat_add32_c
Unexecuted instantiation: mem.c:av_sat_add32_c
Unexecuted instantiation: buffer.c:av_sat_add32_c
Unexecuted instantiation: frame.c:av_sat_add32_c
Unexecuted instantiation: pixdesc.c:av_sat_add32_c
Unexecuted instantiation: md5.c:av_sat_add32_c
Unexecuted instantiation: libbpg.c:av_sat_add32_c
210
211
/**
212
 * Add a doubled value to another value with saturation at both stages.
213
 *
214
 * @param  a first value
215
 * @param  b value doubled and added to a
216
 * @return sum with signed saturation
217
 */
218
static av_always_inline int av_sat_dadd32_c(int a, int b)
219
0
{
220
0
    return av_sat_add32(a, av_sat_add32(b, b));
221
0
}
Unexecuted instantiation: hevc_cabac.c:av_sat_dadd32_c
Unexecuted instantiation: hevc_filter.c:av_sat_dadd32_c
Unexecuted instantiation: hevc.c:av_sat_dadd32_c
Unexecuted instantiation: hevcpred.c:av_sat_dadd32_c
Unexecuted instantiation: hevc_refs.c:av_sat_dadd32_c
Unexecuted instantiation: hevcdsp.c:av_sat_dadd32_c
Unexecuted instantiation: hevc_mvs.c:av_sat_dadd32_c
Unexecuted instantiation: hevc_ps.c:av_sat_dadd32_c
Unexecuted instantiation: hevc_sei.c:av_sat_dadd32_c
Unexecuted instantiation: utils.c:av_sat_dadd32_c
Unexecuted instantiation: cabac.c:av_sat_dadd32_c
Unexecuted instantiation: golomb.c:av_sat_dadd32_c
Unexecuted instantiation: videodsp.c:av_sat_dadd32_c
Unexecuted instantiation: mem.c:av_sat_dadd32_c
Unexecuted instantiation: buffer.c:av_sat_dadd32_c
Unexecuted instantiation: frame.c:av_sat_dadd32_c
Unexecuted instantiation: pixdesc.c:av_sat_dadd32_c
Unexecuted instantiation: md5.c:av_sat_dadd32_c
Unexecuted instantiation: libbpg.c:av_sat_dadd32_c
222
223
/**
224
 * Clip a float value into the amin-amax range.
225
 * @param a value to clip
226
 * @param amin minimum value of the clip range
227
 * @param amax maximum value of the clip range
228
 * @return clipped value
229
 */
230
static av_always_inline av_const float av_clipf_c(float a, float amin, float amax)
231
0
{
232
0
#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
233
0
    if (amin > amax) abort();
234
0
#endif
235
0
    if      (a < amin) return amin;
236
0
    else if (a > amax) return amax;
237
0
    else               return a;
238
0
}
Unexecuted instantiation: hevc_cabac.c:av_clipf_c
Unexecuted instantiation: hevc_filter.c:av_clipf_c
Unexecuted instantiation: hevc.c:av_clipf_c
Unexecuted instantiation: hevcpred.c:av_clipf_c
Unexecuted instantiation: hevc_refs.c:av_clipf_c
Unexecuted instantiation: hevcdsp.c:av_clipf_c
Unexecuted instantiation: hevc_mvs.c:av_clipf_c
Unexecuted instantiation: hevc_ps.c:av_clipf_c
Unexecuted instantiation: hevc_sei.c:av_clipf_c
Unexecuted instantiation: utils.c:av_clipf_c
Unexecuted instantiation: cabac.c:av_clipf_c
Unexecuted instantiation: golomb.c:av_clipf_c
Unexecuted instantiation: videodsp.c:av_clipf_c
Unexecuted instantiation: mem.c:av_clipf_c
Unexecuted instantiation: buffer.c:av_clipf_c
Unexecuted instantiation: frame.c:av_clipf_c
Unexecuted instantiation: pixdesc.c:av_clipf_c
Unexecuted instantiation: md5.c:av_clipf_c
Unexecuted instantiation: libbpg.c:av_clipf_c
239
240
/**
241
 * Clip a double value into the amin-amax range.
242
 * @param a value to clip
243
 * @param amin minimum value of the clip range
244
 * @param amax maximum value of the clip range
245
 * @return clipped value
246
 */
247
static av_always_inline av_const double av_clipd_c(double a, double amin, double amax)
248
0
{
249
0
#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
250
0
    if (amin > amax) abort();
251
0
#endif
252
0
    if      (a < amin) return amin;
253
0
    else if (a > amax) return amax;
254
0
    else               return a;
255
0
}
Unexecuted instantiation: hevc_cabac.c:av_clipd_c
Unexecuted instantiation: hevc_filter.c:av_clipd_c
Unexecuted instantiation: hevc.c:av_clipd_c
Unexecuted instantiation: hevcpred.c:av_clipd_c
Unexecuted instantiation: hevc_refs.c:av_clipd_c
Unexecuted instantiation: hevcdsp.c:av_clipd_c
Unexecuted instantiation: hevc_mvs.c:av_clipd_c
Unexecuted instantiation: hevc_ps.c:av_clipd_c
Unexecuted instantiation: hevc_sei.c:av_clipd_c
Unexecuted instantiation: utils.c:av_clipd_c
Unexecuted instantiation: cabac.c:av_clipd_c
Unexecuted instantiation: golomb.c:av_clipd_c
Unexecuted instantiation: videodsp.c:av_clipd_c
Unexecuted instantiation: mem.c:av_clipd_c
Unexecuted instantiation: buffer.c:av_clipd_c
Unexecuted instantiation: frame.c:av_clipd_c
Unexecuted instantiation: pixdesc.c:av_clipd_c
Unexecuted instantiation: md5.c:av_clipd_c
Unexecuted instantiation: libbpg.c:av_clipd_c
256
257
/** Compute ceil(log2(x)).
258
 * @param x value used to compute ceil(log2(x))
259
 * @return computed ceiling of log2(x)
260
 */
261
static av_always_inline av_const int av_ceil_log2_c(int x)
262
0
{
263
0
    return av_log2((x - 1) << 1);
264
0
}
Unexecuted instantiation: hevc_cabac.c:av_ceil_log2_c
Unexecuted instantiation: hevc_filter.c:av_ceil_log2_c
Unexecuted instantiation: hevc.c:av_ceil_log2_c
Unexecuted instantiation: hevcpred.c:av_ceil_log2_c
Unexecuted instantiation: hevc_refs.c:av_ceil_log2_c
Unexecuted instantiation: hevcdsp.c:av_ceil_log2_c
Unexecuted instantiation: hevc_mvs.c:av_ceil_log2_c
Unexecuted instantiation: hevc_ps.c:av_ceil_log2_c
Unexecuted instantiation: hevc_sei.c:av_ceil_log2_c
Unexecuted instantiation: utils.c:av_ceil_log2_c
Unexecuted instantiation: cabac.c:av_ceil_log2_c
Unexecuted instantiation: golomb.c:av_ceil_log2_c
Unexecuted instantiation: videodsp.c:av_ceil_log2_c
Unexecuted instantiation: mem.c:av_ceil_log2_c
Unexecuted instantiation: buffer.c:av_ceil_log2_c
Unexecuted instantiation: frame.c:av_ceil_log2_c
Unexecuted instantiation: pixdesc.c:av_ceil_log2_c
Unexecuted instantiation: md5.c:av_ceil_log2_c
Unexecuted instantiation: libbpg.c:av_ceil_log2_c
265
266
/**
267
 * Count number of bits set to one in x
268
 * @param x value to count bits of
269
 * @return the number of bits set to one in x
270
 */
271
static av_always_inline av_const int av_popcount_c(uint32_t x)
272
0
{
273
0
    x -= (x >> 1) & 0x55555555;
274
0
    x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
275
0
    x = (x + (x >> 4)) & 0x0F0F0F0F;
276
0
    x += x >> 8;
277
0
    return (x + (x >> 16)) & 0x3F;
278
0
}
Unexecuted instantiation: hevc_cabac.c:av_popcount_c
Unexecuted instantiation: hevc_filter.c:av_popcount_c
Unexecuted instantiation: hevc.c:av_popcount_c
Unexecuted instantiation: hevcpred.c:av_popcount_c
Unexecuted instantiation: hevc_refs.c:av_popcount_c
Unexecuted instantiation: hevcdsp.c:av_popcount_c
Unexecuted instantiation: hevc_mvs.c:av_popcount_c
Unexecuted instantiation: hevc_ps.c:av_popcount_c
Unexecuted instantiation: hevc_sei.c:av_popcount_c
Unexecuted instantiation: utils.c:av_popcount_c
Unexecuted instantiation: cabac.c:av_popcount_c
Unexecuted instantiation: golomb.c:av_popcount_c
Unexecuted instantiation: videodsp.c:av_popcount_c
Unexecuted instantiation: mem.c:av_popcount_c
Unexecuted instantiation: buffer.c:av_popcount_c
Unexecuted instantiation: frame.c:av_popcount_c
Unexecuted instantiation: pixdesc.c:av_popcount_c
Unexecuted instantiation: md5.c:av_popcount_c
Unexecuted instantiation: libbpg.c:av_popcount_c
279
280
/**
281
 * Count number of bits set to one in x
282
 * @param x value to count bits of
283
 * @return the number of bits set to one in x
284
 */
285
static av_always_inline av_const int av_popcount64_c(uint64_t x)
286
0
{
287
0
    return av_popcount((uint32_t)x) + av_popcount((uint32_t)(x >> 32));
288
0
}
Unexecuted instantiation: hevc_cabac.c:av_popcount64_c
Unexecuted instantiation: hevc_filter.c:av_popcount64_c
Unexecuted instantiation: hevc.c:av_popcount64_c
Unexecuted instantiation: hevcpred.c:av_popcount64_c
Unexecuted instantiation: hevc_refs.c:av_popcount64_c
Unexecuted instantiation: hevcdsp.c:av_popcount64_c
Unexecuted instantiation: hevc_mvs.c:av_popcount64_c
Unexecuted instantiation: hevc_ps.c:av_popcount64_c
Unexecuted instantiation: hevc_sei.c:av_popcount64_c
Unexecuted instantiation: utils.c:av_popcount64_c
Unexecuted instantiation: cabac.c:av_popcount64_c
Unexecuted instantiation: golomb.c:av_popcount64_c
Unexecuted instantiation: videodsp.c:av_popcount64_c
Unexecuted instantiation: mem.c:av_popcount64_c
Unexecuted instantiation: buffer.c:av_popcount64_c
Unexecuted instantiation: frame.c:av_popcount64_c
Unexecuted instantiation: pixdesc.c:av_popcount64_c
Unexecuted instantiation: md5.c:av_popcount64_c
Unexecuted instantiation: libbpg.c:av_popcount64_c
289
290
0
#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24))
291
#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24))
292
293
/**
294
 * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form.
295
 *
296
 * @param val      Output value, must be an lvalue of type uint32_t.
297
 * @param GET_BYTE Expression reading one byte from the input.
298
 *                 Evaluated up to 7 times (4 for the currently
299
 *                 assigned Unicode range).  With a memory buffer
300
 *                 input, this could be *ptr++.
301
 * @param ERROR    Expression to be evaluated on invalid input,
302
 *                 typically a goto statement.
303
 *
304
 * @warning ERROR should not contain a loop control statement which
305
 * could interact with the internal while loop, and should force an
306
 * exit from the macro code (e.g. through a goto or a return) in order
307
 * to prevent undefined results.
308
 */
309
#define GET_UTF8(val, GET_BYTE, ERROR)\
310
    val= GET_BYTE;\
311
    {\
312
        uint32_t top = (val & 128) >> 1;\
313
        if ((val & 0xc0) == 0x80 || val >= 0xFE)\
314
            ERROR\
315
        while (val & top) {\
316
            int tmp= GET_BYTE - 128;\
317
            if(tmp>>6)\
318
                ERROR\
319
            val= (val<<6) + tmp;\
320
            top <<= 5;\
321
        }\
322
        val &= (top << 1) - 1;\
323
    }
324
325
/**
326
 * Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form.
327
 *
328
 * @param val       Output value, must be an lvalue of type uint32_t.
329
 * @param GET_16BIT Expression returning two bytes of UTF-16 data converted
330
 *                  to native byte order.  Evaluated one or two times.
331
 * @param ERROR     Expression to be evaluated on invalid input,
332
 *                  typically a goto statement.
333
 */
334
#define GET_UTF16(val, GET_16BIT, ERROR)\
335
    val = GET_16BIT;\
336
    {\
337
        unsigned int hi = val - 0xD800;\
338
        if (hi < 0x800) {\
339
            val = GET_16BIT - 0xDC00;\
340
            if (val > 0x3FFU || hi > 0x3FFU)\
341
                ERROR\
342
            val += (hi<<10) + 0x10000;\
343
        }\
344
    }\
345
346
/**
347
 * @def PUT_UTF8(val, tmp, PUT_BYTE)
348
 * Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long).
349
 * @param val is an input-only argument and should be of type uint32_t. It holds
350
 * a UCS-4 encoded Unicode character that is to be converted to UTF-8. If
351
 * val is given as a function it is executed only once.
352
 * @param tmp is a temporary variable and should be of type uint8_t. It
353
 * represents an intermediate value during conversion that is to be
354
 * output by PUT_BYTE.
355
 * @param PUT_BYTE writes the converted UTF-8 bytes to any proper destination.
356
 * It could be a function or a statement, and uses tmp as the input byte.
357
 * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be
358
 * executed up to 4 times for values in the valid UTF-8 range and up to
359
 * 7 times in the general case, depending on the length of the converted
360
 * Unicode character.
361
 */
362
#define PUT_UTF8(val, tmp, PUT_BYTE)\
363
    {\
364
        int bytes, shift;\
365
        uint32_t in = val;\
366
        if (in < 0x80) {\
367
            tmp = in;\
368
            PUT_BYTE\
369
        } else {\
370
            bytes = (av_log2(in) + 4) / 5;\
371
            shift = (bytes - 1) * 6;\
372
            tmp = (256 - (256 >> bytes)) | (in >> shift);\
373
            PUT_BYTE\
374
            while (shift >= 6) {\
375
                shift -= 6;\
376
                tmp = 0x80 | ((in >> shift) & 0x3f);\
377
                PUT_BYTE\
378
            }\
379
        }\
380
    }
381
382
/**
383
 * @def PUT_UTF16(val, tmp, PUT_16BIT)
384
 * Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes).
385
 * @param val is an input-only argument and should be of type uint32_t. It holds
386
 * a UCS-4 encoded Unicode character that is to be converted to UTF-16. If
387
 * val is given as a function it is executed only once.
388
 * @param tmp is a temporary variable and should be of type uint16_t. It
389
 * represents an intermediate value during conversion that is to be
390
 * output by PUT_16BIT.
391
 * @param PUT_16BIT writes the converted UTF-16 data to any proper destination
392
 * in desired endianness. It could be a function or a statement, and uses tmp
393
 * as the input byte.  For example, PUT_BYTE could be "*output++ = tmp;"
394
 * PUT_BYTE will be executed 1 or 2 times depending on input character.
395
 */
396
#define PUT_UTF16(val, tmp, PUT_16BIT)\
397
    {\
398
        uint32_t in = val;\
399
        if (in < 0x10000) {\
400
            tmp = in;\
401
            PUT_16BIT\
402
        } else {\
403
            tmp = 0xD800 | ((in - 0x10000) >> 10);\
404
            PUT_16BIT\
405
            tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\
406
            PUT_16BIT\
407
        }\
408
    }\
409
410
411
412
#include "mem.h"
413
414
#ifdef HAVE_AV_CONFIG_H
415
#    include "internal.h"
416
#endif /* HAVE_AV_CONFIG_H */
417
418
#endif /* AVUTIL_COMMON_H */
419
420
/*
421
 * The following definitions are outside the multiple inclusion guard
422
 * to ensure they are immediately available in intmath.h.
423
 */
424
425
#ifndef av_ceil_log2
426
0
#   define av_ceil_log2     av_ceil_log2_c
427
#endif
428
#ifndef av_clip
429
0
#   define av_clip          av_clip_c
430
#endif
431
#ifndef av_clip64
432
#   define av_clip64        av_clip64_c
433
#endif
434
#ifndef av_clip_uint8
435
#   define av_clip_uint8    av_clip_uint8_c
436
#endif
437
#ifndef av_clip_int8
438
0
#   define av_clip_int8     av_clip_int8_c
439
#endif
440
#ifndef av_clip_uint16
441
#   define av_clip_uint16   av_clip_uint16_c
442
#endif
443
#ifndef av_clip_int16
444
0
#   define av_clip_int16    av_clip_int16_c
445
#endif
446
#ifndef av_clipl_int32
447
#   define av_clipl_int32   av_clipl_int32_c
448
#endif
449
#ifndef av_clip_uintp2
450
0
#   define av_clip_uintp2   av_clip_uintp2_c
451
#endif
452
#ifndef av_sat_add32
453
#   define av_sat_add32     av_sat_add32_c
454
#endif
455
#ifndef av_sat_dadd32
456
#   define av_sat_dadd32    av_sat_dadd32_c
457
#endif
458
#ifndef av_clipf
459
#   define av_clipf         av_clipf_c
460
#endif
461
#ifndef av_clipd
462
#   define av_clipd         av_clipd_c
463
#endif
464
#ifndef av_popcount
465
#   define av_popcount      av_popcount_c
466
#endif
467
#ifndef av_popcount64
468
#   define av_popcount64    av_popcount64_c
469
#endif