OpenCores
URL https://opencores.org/ocsvn/bluespec-h264/bluespec-h264/trunk

Subversion Repositories bluespec-h264

[/] [bluespec-h264/] [trunk/] [test/] [decoder/] [ldecod/] [inc/] [ifunctions.h] - Blame information for rev 100

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 14 jamey.hick
 
2
/*!
3
 ************************************************************************
4
 *  \file
5
 *     ifunctions.h
6
 *
7
 *  \brief
8
 *     define some inline functions that are used within the encoder.
9
 *
10
 *  \author
11
 *      Main contributors (see contributors.h for copyright, address and affiliation details)
12
 *      - Karsten Sühring                 <suehring@hhi.de>
13
 *      - Alexis Tourapis                 <alexismt@ieee.org>
14
 *
15
 ************************************************************************
16
 */
17
 
18
#ifndef _IFUNCTIONS_H_
19
#define _IFUNCTIONS_H_
20
 
21
# if defined(WIN32) || (__STDC_VERSION__ >= 199901L)
22
static inline int imin(int a, int b)
23
{
24
  return ((a) < (b)) ? (a) : (b);
25
}
26
 
27
static inline int imax(int a, int b)
28
{
29
  return ((a) > (b)) ? (a) : (b);
30
}
31
 
32
static inline double dmin(double a, double b)
33
{
34
  return ((a) < (b)) ? (a) : (b);
35
}
36
 
37
static inline double dmax(double a, double b)
38
{
39
  return ((a) > (b)) ? (a) : (b);
40
}
41
 
42
static inline int64 i64min(int64 a, int64 b)
43
{
44
  return ((a) < (b)) ? (a) : (b);
45
}
46
 
47
static inline int64 i64max(int64 a, int64 b)
48
{
49
  return ((a) > (b)) ? (a) : (b);
50
}
51
 
52
static inline int iabs(int x)
53
{
54
  return ((x) < 0) ? -(x) : (x);
55
}
56
 
57
static inline double dabs(double x)
58
{
59
  return ((x) < 0) ? -(x) : (x);
60
}
61
 
62
static inline int isign(int x)
63
{
64
  return ((x) < 0) ? -1 : 1;
65
}
66
 
67
static inline int isignab(int a, int b)
68
{
69
  return ((b) < 0) ? -iabs(a) : iabs(a);
70
}
71
 
72
static inline int rshift_rnd(int x, int a)
73
{
74
  return (a > 0) ? ((x + (1 << (a-1) )) >> a) : (x << (-a));
75
}
76
 
77
static inline unsigned int rshift_rnd_us(unsigned int x, unsigned int a)
78
{
79
  return (a > 0) ? ((x + (1 << (a-1))) >> a) : x;
80
}
81
 
82
static inline int rshift_rnd_sf(int x, int a)
83
{
84
  return ((x + (1 << (a-1) )) >> a);
85
}
86
 
87
static inline unsigned int rshift_rnd_us_sf(unsigned int x, unsigned int a)
88
{
89
  return ((x + (1 << (a-1))) >> a);
90
}
91
 
92
static inline int iClip1(int high, int x)
93
{
94
  x = imax(x, 0);
95
  x = imin(x, high);
96
 
97
  return x;
98
}
99
 
100
static inline int iClip3(int low, int high, int x)
101
{
102
  x = imax(x, low);
103
  x = imin(x, high);
104
 
105
  return x;
106
}
107
 
108
static inline double dClip3(double low, double high, double x)
109
{
110
  x = dmax(x, low);
111
  x = dmin(x, high);
112
 
113
  return x;
114
}
115
 
116
static inline int RSD(int x)
117
{
118
 return ((x&2)?(x|1):(x&(~1)));
119
}
120
 
121
# else
122
 
123
#  define imin(a, b)                  (((a) < (b)) ? (a) : (b))
124
#  define imax(a, b)                  (((a) > (b)) ? (a) : (b))
125
#  define dmin(a, b)                  (((a) < (b)) ? (a) : (b))
126
#  define dmax(a, b)                  (((a) > (b)) ? (a) : (b))
127
#  define i64min(a, b)                (((a) < (b)) ? (a) : (b))
128
#  define i64max(a, b)                (((a) > (b)) ? (a) : (b))
129
#  define iabs(x)                     (((x) < 0)   ? -(x) : (x))
130
#  define dabs(x)                     (((x) < 0)   ? -(x) : (x))
131
#  define isign(x)                    (((x) < 0)   ? -1 : 1)
132
#  define isignab(a, b)               (((b) < 0)   ? -iabs(a) : iabs(a))
133
#  define rshift_rnd(x, a)            (((a) > 0)   ? (((x) + (1 << ((a)-1))) >> (a)) : ((x) << (-(a)))
134
#  define rshift_rnd_us(x, a)         (((a) > 0)   ? (((x) + (1 << ((a)-1))) >> (a)) : (x))
135
#  define rshift_rnd_sf(x, a)         (((x) + (1 << ((a)-1))) >> (a))
136
#  define rshift_rnd_us_sf(x, a)      (((x) + (1 << ((a)-1))) >> (a))
137
#  define iClip1(high, x)             (imax( imin(x, high), 0))
138
#  define iClip3(low, high, x)        (imax( imin(x, high), low))
139
#  define dClip3(low, high, x)        (dmax( dmin(x, high), low))
140
#  define RSD(x)                      (((x)&2)?((x)|1):((x)&(~1)))
141
 
142
# endif
143
#endif
144
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.