Coverage Report

Created: 2023-12-08 06:53

/src/freeimage-svn/FreeImage/trunk/Source/LibOpenJPEG/opj_intmath.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
3
 * Copyright (c) 2002-2007, Professor Benoit Macq
4
 * Copyright (c) 2001-2003, David Janssens
5
 * Copyright (c) 2002-2003, Yannick Verschueren
6
 * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
7
 * Copyright (c) 2005, Herve Drolon, FreeImage Team
8
 * All rights reserved.
9
 *
10
 * Redistribution and use in source and binary forms, with or without
11
 * modification, are permitted provided that the following conditions
12
 * are met:
13
 * 1. Redistributions of source code must retain the above copyright
14
 *    notice, this list of conditions and the following disclaimer.
15
 * 2. Redistributions in binary form must reproduce the above copyright
16
 *    notice, this list of conditions and the following disclaimer in the
17
 *    documentation and/or other materials provided with the distribution.
18
 *
19
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
20
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
 * POSSIBILITY OF SUCH DAMAGE.
30
 */
31
#ifndef __INT_H
32
#define __INT_H
33
/**
34
@file opj_intmath.h
35
@brief Implementation of operations on integers (INT)
36
37
The functions in OPJ_INTMATH.H have for goal to realize operations on integers.
38
*/
39
40
/** @defgroup OPJ_INTMATH OPJ_INTMATH - Implementation of operations on integers */
41
/*@{*/
42
43
/** @name Exported functions (see also openjpeg.h) */
44
/*@{*/
45
/* ----------------------------------------------------------------------- */
46
/**
47
Get the minimum of two integers
48
@return Returns a if a < b else b
49
*/
50
0
static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b) {
51
0
  return a < b ? a : b;
52
0
}
Unexecuted instantiation: image.c:opj_int_min
Unexecuted instantiation: openjpeg.c:opj_int_min
Unexecuted instantiation: cio.c:opj_int_min
Unexecuted instantiation: event.c:opj_int_min
Unexecuted instantiation: j2k.c:opj_int_min
Unexecuted instantiation: jp2.c:opj_int_min
Unexecuted instantiation: mct.c:opj_int_min
Unexecuted instantiation: pi.c:opj_int_min
Unexecuted instantiation: tcd.c:opj_int_min
Unexecuted instantiation: tgt.c:opj_int_min
Unexecuted instantiation: bio.c:opj_int_min
Unexecuted instantiation: dwt.c:opj_int_min
Unexecuted instantiation: function_list.c:opj_int_min
Unexecuted instantiation: invert.c:opj_int_min
Unexecuted instantiation: t1.c:opj_int_min
Unexecuted instantiation: t2.c:opj_int_min
Unexecuted instantiation: mqc.c:opj_int_min
Unexecuted instantiation: raw.c:opj_int_min
53
54
/**
55
Get the minimum of two integers
56
@return Returns a if a < b else b
57
*/
58
0
static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b) {
59
0
  return a < b ? a : b;
60
0
}
Unexecuted instantiation: image.c:opj_uint_min
Unexecuted instantiation: openjpeg.c:opj_uint_min
Unexecuted instantiation: cio.c:opj_uint_min
Unexecuted instantiation: event.c:opj_uint_min
Unexecuted instantiation: j2k.c:opj_uint_min
Unexecuted instantiation: jp2.c:opj_uint_min
Unexecuted instantiation: mct.c:opj_uint_min
Unexecuted instantiation: pi.c:opj_uint_min
Unexecuted instantiation: tcd.c:opj_uint_min
Unexecuted instantiation: tgt.c:opj_uint_min
Unexecuted instantiation: bio.c:opj_uint_min
Unexecuted instantiation: dwt.c:opj_uint_min
Unexecuted instantiation: function_list.c:opj_uint_min
Unexecuted instantiation: invert.c:opj_uint_min
Unexecuted instantiation: t1.c:opj_uint_min
Unexecuted instantiation: t2.c:opj_uint_min
Unexecuted instantiation: mqc.c:opj_uint_min
Unexecuted instantiation: raw.c:opj_uint_min
61
62
/**
63
Get the maximum of two integers
64
@return Returns a if a > b else b
65
*/
66
0
static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b) {
67
0
  return (a > b) ? a : b;
68
0
}
Unexecuted instantiation: image.c:opj_int_max
Unexecuted instantiation: openjpeg.c:opj_int_max
Unexecuted instantiation: cio.c:opj_int_max
Unexecuted instantiation: event.c:opj_int_max
Unexecuted instantiation: j2k.c:opj_int_max
Unexecuted instantiation: jp2.c:opj_int_max
Unexecuted instantiation: mct.c:opj_int_max
Unexecuted instantiation: pi.c:opj_int_max
Unexecuted instantiation: tcd.c:opj_int_max
Unexecuted instantiation: tgt.c:opj_int_max
Unexecuted instantiation: bio.c:opj_int_max
Unexecuted instantiation: dwt.c:opj_int_max
Unexecuted instantiation: function_list.c:opj_int_max
Unexecuted instantiation: invert.c:opj_int_max
Unexecuted instantiation: t1.c:opj_int_max
Unexecuted instantiation: t2.c:opj_int_max
Unexecuted instantiation: mqc.c:opj_int_max
Unexecuted instantiation: raw.c:opj_int_max
69
70
/**
71
Get the maximum of two integers
72
@return Returns a if a > b else b
73
*/
74
0
static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32  a, OPJ_UINT32  b) {
75
0
  return (a > b) ? a : b;
76
0
}
Unexecuted instantiation: image.c:opj_uint_max
Unexecuted instantiation: openjpeg.c:opj_uint_max
Unexecuted instantiation: cio.c:opj_uint_max
Unexecuted instantiation: event.c:opj_uint_max
Unexecuted instantiation: j2k.c:opj_uint_max
Unexecuted instantiation: jp2.c:opj_uint_max
Unexecuted instantiation: mct.c:opj_uint_max
Unexecuted instantiation: pi.c:opj_uint_max
Unexecuted instantiation: tcd.c:opj_uint_max
Unexecuted instantiation: tgt.c:opj_uint_max
Unexecuted instantiation: bio.c:opj_uint_max
Unexecuted instantiation: dwt.c:opj_uint_max
Unexecuted instantiation: function_list.c:opj_uint_max
Unexecuted instantiation: invert.c:opj_uint_max
Unexecuted instantiation: t1.c:opj_uint_max
Unexecuted instantiation: t2.c:opj_uint_max
Unexecuted instantiation: mqc.c:opj_uint_max
Unexecuted instantiation: raw.c:opj_uint_max
77
78
/**
79
Clamp an integer inside an interval
80
@return
81
<ul>
82
<li>Returns a if (min < a < max)
83
<li>Returns max if (a > max)
84
<li>Returns min if (a < min) 
85
</ul>
86
*/
87
0
static INLINE OPJ_INT32 opj_int_clamp(OPJ_INT32 a, OPJ_INT32 min, OPJ_INT32 max) {
88
0
  if (a < min)
89
0
    return min;
90
0
  if (a > max)
91
0
    return max;
92
0
  return a;
93
0
}
Unexecuted instantiation: image.c:opj_int_clamp
Unexecuted instantiation: openjpeg.c:opj_int_clamp
Unexecuted instantiation: cio.c:opj_int_clamp
Unexecuted instantiation: event.c:opj_int_clamp
Unexecuted instantiation: j2k.c:opj_int_clamp
Unexecuted instantiation: jp2.c:opj_int_clamp
Unexecuted instantiation: mct.c:opj_int_clamp
Unexecuted instantiation: pi.c:opj_int_clamp
Unexecuted instantiation: tcd.c:opj_int_clamp
Unexecuted instantiation: tgt.c:opj_int_clamp
Unexecuted instantiation: bio.c:opj_int_clamp
Unexecuted instantiation: dwt.c:opj_int_clamp
Unexecuted instantiation: function_list.c:opj_int_clamp
Unexecuted instantiation: invert.c:opj_int_clamp
Unexecuted instantiation: t1.c:opj_int_clamp
Unexecuted instantiation: t2.c:opj_int_clamp
Unexecuted instantiation: mqc.c:opj_int_clamp
Unexecuted instantiation: raw.c:opj_int_clamp
94
/**
95
@return Get absolute value of integer
96
*/
97
0
static INLINE OPJ_INT32 opj_int_abs(OPJ_INT32 a) {
98
0
  return a < 0 ? -a : a;
99
0
}
Unexecuted instantiation: image.c:opj_int_abs
Unexecuted instantiation: openjpeg.c:opj_int_abs
Unexecuted instantiation: cio.c:opj_int_abs
Unexecuted instantiation: event.c:opj_int_abs
Unexecuted instantiation: j2k.c:opj_int_abs
Unexecuted instantiation: jp2.c:opj_int_abs
Unexecuted instantiation: mct.c:opj_int_abs
Unexecuted instantiation: pi.c:opj_int_abs
Unexecuted instantiation: tcd.c:opj_int_abs
Unexecuted instantiation: tgt.c:opj_int_abs
Unexecuted instantiation: bio.c:opj_int_abs
Unexecuted instantiation: dwt.c:opj_int_abs
Unexecuted instantiation: function_list.c:opj_int_abs
Unexecuted instantiation: invert.c:opj_int_abs
Unexecuted instantiation: t1.c:opj_int_abs
Unexecuted instantiation: t2.c:opj_int_abs
Unexecuted instantiation: mqc.c:opj_int_abs
Unexecuted instantiation: raw.c:opj_int_abs
100
/**
101
Divide an integer and round upwards
102
@return Returns a divided by b
103
*/
104
0
static INLINE OPJ_INT32 opj_int_ceildiv(OPJ_INT32 a, OPJ_INT32 b) {
105
0
  assert(b);
106
0
  return (a + b - 1) / b;
107
0
}
Unexecuted instantiation: image.c:opj_int_ceildiv
Unexecuted instantiation: openjpeg.c:opj_int_ceildiv
Unexecuted instantiation: cio.c:opj_int_ceildiv
Unexecuted instantiation: event.c:opj_int_ceildiv
Unexecuted instantiation: j2k.c:opj_int_ceildiv
Unexecuted instantiation: jp2.c:opj_int_ceildiv
Unexecuted instantiation: mct.c:opj_int_ceildiv
Unexecuted instantiation: pi.c:opj_int_ceildiv
Unexecuted instantiation: tcd.c:opj_int_ceildiv
Unexecuted instantiation: tgt.c:opj_int_ceildiv
Unexecuted instantiation: bio.c:opj_int_ceildiv
Unexecuted instantiation: dwt.c:opj_int_ceildiv
Unexecuted instantiation: function_list.c:opj_int_ceildiv
Unexecuted instantiation: invert.c:opj_int_ceildiv
Unexecuted instantiation: t1.c:opj_int_ceildiv
Unexecuted instantiation: t2.c:opj_int_ceildiv
Unexecuted instantiation: mqc.c:opj_int_ceildiv
Unexecuted instantiation: raw.c:opj_int_ceildiv
108
109
/**
110
Divide an integer and round upwards
111
@return Returns a divided by b
112
*/
113
0
static INLINE OPJ_UINT32  opj_uint_ceildiv(OPJ_UINT32  a, OPJ_UINT32  b) {
114
0
  return (a + b - 1) / b;
115
0
}
Unexecuted instantiation: image.c:opj_uint_ceildiv
Unexecuted instantiation: openjpeg.c:opj_uint_ceildiv
Unexecuted instantiation: cio.c:opj_uint_ceildiv
Unexecuted instantiation: event.c:opj_uint_ceildiv
Unexecuted instantiation: j2k.c:opj_uint_ceildiv
Unexecuted instantiation: jp2.c:opj_uint_ceildiv
Unexecuted instantiation: mct.c:opj_uint_ceildiv
Unexecuted instantiation: pi.c:opj_uint_ceildiv
Unexecuted instantiation: tcd.c:opj_uint_ceildiv
Unexecuted instantiation: tgt.c:opj_uint_ceildiv
Unexecuted instantiation: bio.c:opj_uint_ceildiv
Unexecuted instantiation: dwt.c:opj_uint_ceildiv
Unexecuted instantiation: function_list.c:opj_uint_ceildiv
Unexecuted instantiation: invert.c:opj_uint_ceildiv
Unexecuted instantiation: t1.c:opj_uint_ceildiv
Unexecuted instantiation: t2.c:opj_uint_ceildiv
Unexecuted instantiation: mqc.c:opj_uint_ceildiv
Unexecuted instantiation: raw.c:opj_uint_ceildiv
116
117
/**
118
Divide an integer by a power of 2 and round upwards
119
@return Returns a divided by 2^b
120
*/
121
0
static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b) {
122
0
  return (OPJ_INT32)((a + (OPJ_INT64)(1 << b) - 1) >> b);
123
0
}
Unexecuted instantiation: image.c:opj_int_ceildivpow2
Unexecuted instantiation: openjpeg.c:opj_int_ceildivpow2
Unexecuted instantiation: cio.c:opj_int_ceildivpow2
Unexecuted instantiation: event.c:opj_int_ceildivpow2
Unexecuted instantiation: j2k.c:opj_int_ceildivpow2
Unexecuted instantiation: jp2.c:opj_int_ceildivpow2
Unexecuted instantiation: mct.c:opj_int_ceildivpow2
Unexecuted instantiation: pi.c:opj_int_ceildivpow2
Unexecuted instantiation: tcd.c:opj_int_ceildivpow2
Unexecuted instantiation: tgt.c:opj_int_ceildivpow2
Unexecuted instantiation: bio.c:opj_int_ceildivpow2
Unexecuted instantiation: dwt.c:opj_int_ceildivpow2
Unexecuted instantiation: function_list.c:opj_int_ceildivpow2
Unexecuted instantiation: invert.c:opj_int_ceildivpow2
Unexecuted instantiation: t1.c:opj_int_ceildivpow2
Unexecuted instantiation: t2.c:opj_int_ceildivpow2
Unexecuted instantiation: mqc.c:opj_int_ceildivpow2
Unexecuted instantiation: raw.c:opj_int_ceildivpow2
124
/**
125
Divide an integer by a power of 2 and round downwards
126
@return Returns a divided by 2^b
127
*/
128
0
static INLINE OPJ_INT32 opj_int_floordivpow2(OPJ_INT32 a, OPJ_INT32 b) {
129
0
  return a >> b;
130
0
}
Unexecuted instantiation: image.c:opj_int_floordivpow2
Unexecuted instantiation: openjpeg.c:opj_int_floordivpow2
Unexecuted instantiation: cio.c:opj_int_floordivpow2
Unexecuted instantiation: event.c:opj_int_floordivpow2
Unexecuted instantiation: j2k.c:opj_int_floordivpow2
Unexecuted instantiation: jp2.c:opj_int_floordivpow2
Unexecuted instantiation: mct.c:opj_int_floordivpow2
Unexecuted instantiation: pi.c:opj_int_floordivpow2
Unexecuted instantiation: tcd.c:opj_int_floordivpow2
Unexecuted instantiation: tgt.c:opj_int_floordivpow2
Unexecuted instantiation: bio.c:opj_int_floordivpow2
Unexecuted instantiation: dwt.c:opj_int_floordivpow2
Unexecuted instantiation: function_list.c:opj_int_floordivpow2
Unexecuted instantiation: invert.c:opj_int_floordivpow2
Unexecuted instantiation: t1.c:opj_int_floordivpow2
Unexecuted instantiation: t2.c:opj_int_floordivpow2
Unexecuted instantiation: mqc.c:opj_int_floordivpow2
Unexecuted instantiation: raw.c:opj_int_floordivpow2
131
/**
132
Get logarithm of an integer and round downwards
133
@return Returns log2(a)
134
*/
135
0
static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a) {
136
0
  OPJ_INT32 l;
137
0
  for (l = 0; a > 1; l++) {
138
0
    a >>= 1;
139
0
  }
140
0
  return l;
141
0
}
Unexecuted instantiation: image.c:opj_int_floorlog2
Unexecuted instantiation: openjpeg.c:opj_int_floorlog2
Unexecuted instantiation: cio.c:opj_int_floorlog2
Unexecuted instantiation: event.c:opj_int_floorlog2
Unexecuted instantiation: j2k.c:opj_int_floorlog2
Unexecuted instantiation: jp2.c:opj_int_floorlog2
Unexecuted instantiation: mct.c:opj_int_floorlog2
Unexecuted instantiation: pi.c:opj_int_floorlog2
Unexecuted instantiation: tcd.c:opj_int_floorlog2
Unexecuted instantiation: tgt.c:opj_int_floorlog2
Unexecuted instantiation: bio.c:opj_int_floorlog2
Unexecuted instantiation: dwt.c:opj_int_floorlog2
Unexecuted instantiation: function_list.c:opj_int_floorlog2
Unexecuted instantiation: invert.c:opj_int_floorlog2
Unexecuted instantiation: t1.c:opj_int_floorlog2
Unexecuted instantiation: t2.c:opj_int_floorlog2
Unexecuted instantiation: mqc.c:opj_int_floorlog2
Unexecuted instantiation: raw.c:opj_int_floorlog2
142
/**
143
Get logarithm of an integer and round downwards
144
@return Returns log2(a)
145
*/
146
0
static INLINE OPJ_UINT32  opj_uint_floorlog2(OPJ_UINT32  a) {
147
0
  OPJ_UINT32  l;
148
0
  for (l = 0; a > 1; ++l)
149
0
  {
150
0
    a >>= 1;
151
0
  }
152
0
  return l;
153
0
}
Unexecuted instantiation: image.c:opj_uint_floorlog2
Unexecuted instantiation: openjpeg.c:opj_uint_floorlog2
Unexecuted instantiation: cio.c:opj_uint_floorlog2
Unexecuted instantiation: event.c:opj_uint_floorlog2
Unexecuted instantiation: j2k.c:opj_uint_floorlog2
Unexecuted instantiation: jp2.c:opj_uint_floorlog2
Unexecuted instantiation: mct.c:opj_uint_floorlog2
Unexecuted instantiation: pi.c:opj_uint_floorlog2
Unexecuted instantiation: tcd.c:opj_uint_floorlog2
Unexecuted instantiation: tgt.c:opj_uint_floorlog2
Unexecuted instantiation: bio.c:opj_uint_floorlog2
Unexecuted instantiation: dwt.c:opj_uint_floorlog2
Unexecuted instantiation: function_list.c:opj_uint_floorlog2
Unexecuted instantiation: invert.c:opj_uint_floorlog2
Unexecuted instantiation: t1.c:opj_uint_floorlog2
Unexecuted instantiation: t2.c:opj_uint_floorlog2
Unexecuted instantiation: mqc.c:opj_uint_floorlog2
Unexecuted instantiation: raw.c:opj_uint_floorlog2
154
155
/**
156
Multiply two fixed-precision rational numbers.
157
@param a
158
@param b
159
@return Returns a * b
160
*/
161
0
static INLINE OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b) {
162
0
    OPJ_INT64 temp = (OPJ_INT64) a * (OPJ_INT64) b ;
163
0
    temp += temp & 4096;
164
0
    return (OPJ_INT32) (temp >> 13) ;
165
0
}
Unexecuted instantiation: image.c:opj_int_fix_mul
Unexecuted instantiation: openjpeg.c:opj_int_fix_mul
Unexecuted instantiation: cio.c:opj_int_fix_mul
Unexecuted instantiation: event.c:opj_int_fix_mul
Unexecuted instantiation: j2k.c:opj_int_fix_mul
Unexecuted instantiation: jp2.c:opj_int_fix_mul
Unexecuted instantiation: mct.c:opj_int_fix_mul
Unexecuted instantiation: pi.c:opj_int_fix_mul
Unexecuted instantiation: tcd.c:opj_int_fix_mul
Unexecuted instantiation: tgt.c:opj_int_fix_mul
Unexecuted instantiation: bio.c:opj_int_fix_mul
Unexecuted instantiation: dwt.c:opj_int_fix_mul
Unexecuted instantiation: function_list.c:opj_int_fix_mul
Unexecuted instantiation: invert.c:opj_int_fix_mul
Unexecuted instantiation: t1.c:opj_int_fix_mul
Unexecuted instantiation: t2.c:opj_int_fix_mul
Unexecuted instantiation: mqc.c:opj_int_fix_mul
Unexecuted instantiation: raw.c:opj_int_fix_mul
166
167
/* ----------------------------------------------------------------------- */
168
/*@}*/
169
170
/*@}*/
171
172
#endif