Mercurial > libavutil.hg
annotate internal.h @ 374:8805bba131a9 libavutil
Add attribute that forces alignment of stack to functions that need it.
Necessary for systems that don't align by default to 16 bytes, required by some
SSE instructions.
Requires GCC >= 4.2.
Based on patch by Gal Chardon.
author | ramiro |
---|---|
date | Mon, 13 Aug 2007 15:28:29 +0000 |
parents | 4d3f4347b718 |
children | 5a85ad617615 |
rev | line source |
---|---|
108
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
1 /* |
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
2 * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> |
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
3 * |
116
d76a36742464
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
114
diff
changeset
|
4 * This file is part of FFmpeg. |
d76a36742464
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
114
diff
changeset
|
5 * |
d76a36742464
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
114
diff
changeset
|
6 * FFmpeg is free software; you can redistribute it and/or |
108
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
7 * modify it under the terms of the GNU Lesser General Public |
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
8 * License as published by the Free Software Foundation; either |
116
d76a36742464
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
114
diff
changeset
|
9 * version 2.1 of the License, or (at your option) any later version. |
108
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
10 * |
116
d76a36742464
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
114
diff
changeset
|
11 * FFmpeg is distributed in the hope that it will be useful, |
108
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
14 * Lesser General Public License for more details. |
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
15 * |
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
16 * You should have received a copy of the GNU Lesser General Public |
116
d76a36742464
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
114
diff
changeset
|
17 * License along with FFmpeg; if not, write to the Free Software |
108
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
19 */ |
11be8e0d1344
Add official LGPL license headers to the files that were missing them.
diego
parents:
107
diff
changeset
|
20 |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
21 /** |
80
624fc3ad183a
Split common.h in two parts, purely internal stuff (internal.h) and things
reimar
parents:
75
diff
changeset
|
22 * @file internal.h |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
23 * common internal api header. |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
24 */ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
25 |
80
624fc3ad183a
Split common.h in two parts, purely internal stuff (internal.h) and things
reimar
parents:
75
diff
changeset
|
26 #ifndef INTERNAL_H |
624fc3ad183a
Split common.h in two parts, purely internal stuff (internal.h) and things
reimar
parents:
75
diff
changeset
|
27 #define INTERNAL_H |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
28 |
366 | 29 #if !defined(DEBUG) && !defined(NDEBUG) |
30 # define NDEBUG | |
31 #endif | |
32 | |
343 | 33 #include <stdint.h> |
366 | 34 #include <stddef.h> |
35 #include <assert.h> | |
343 | 36 |
374
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
37 #ifndef attribute_align_arg |
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
38 #if defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__>1) |
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
39 # define attribute_align_arg __attribute__((force_align_arg_pointer)) |
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
40 #else |
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
41 # define attribute_align_arg |
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
42 #endif |
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
43 #endif |
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
44 |
154 | 45 #ifndef attribute_used |
46 #if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ > 0) | |
47 # define attribute_used __attribute__((used)) | |
48 #else | |
49 # define attribute_used | |
50 #endif | |
51 #endif | |
52 | |
155 | 53 #ifndef M_PI |
54 #define M_PI 3.14159265358979323846 | |
55 #endif | |
56 | |
57 #ifndef INT16_MIN | |
58 #define INT16_MIN (-0x7fff-1) | |
59 #endif | |
60 | |
61 #ifndef INT16_MAX | |
62 #define INT16_MAX 0x7fff | |
63 #endif | |
64 | |
65 #ifndef INT32_MIN | |
66 #define INT32_MIN (-0x7fffffff-1) | |
67 #endif | |
68 | |
69 #ifndef INT32_MAX | |
70 #define INT32_MAX 0x7fffffff | |
71 #endif | |
72 | |
73 #ifndef UINT32_MAX | |
74 #define UINT32_MAX 0xffffffff | |
75 #endif | |
76 | |
77 #ifndef INT64_MIN | |
78 #define INT64_MIN (-0x7fffffffffffffffLL-1) | |
79 #endif | |
80 | |
81 #ifndef INT64_MAX | |
156 | 82 #define INT64_MAX INT64_C(9223372036854775807) |
155 | 83 #endif |
84 | |
85 #ifndef UINT64_MAX | |
156 | 86 #define UINT64_MAX UINT64_C(0xFFFFFFFFFFFFFFFF) |
155 | 87 #endif |
88 | |
89 #ifndef INT_BIT | |
90 # if INT_MAX != 2147483647 | |
91 # define INT_BIT 64 | |
92 # else | |
93 # define INT_BIT 32 | |
94 # endif | |
95 #endif | |
96 | |
57
4d00c7c7d07d
Make ffmpeg better support pic - from Diego Petten <flameeyes@gentoo.org>
lu_zero
parents:
55
diff
changeset
|
97 #if ( defined(__PIC__) || defined(__pic__) ) && ! defined(PIC) |
4d00c7c7d07d
Make ffmpeg better support pic - from Diego Petten <flameeyes@gentoo.org>
lu_zero
parents:
55
diff
changeset
|
98 # define PIC |
4d00c7c7d07d
Make ffmpeg better support pic - from Diego Petten <flameeyes@gentoo.org>
lu_zero
parents:
55
diff
changeset
|
99 #endif |
4d00c7c7d07d
Make ffmpeg better support pic - from Diego Petten <flameeyes@gentoo.org>
lu_zero
parents:
55
diff
changeset
|
100 |
152
5b211d03227b
Move BE_*/LE_*/ST*/LD* macros to a common place. Some further
reimar
parents:
143
diff
changeset
|
101 #include "intreadwrite.h" |
89
59433f391f2d
do not include bswap.h in common.h for external programs, since the former
reimar
parents:
80
diff
changeset
|
102 #include "bswap.h" |
59433f391f2d
do not include bswap.h in common.h for external programs, since the former
reimar
parents:
80
diff
changeset
|
103 |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
104 #ifndef offsetof |
138 | 105 # define offsetof(T,F) ((unsigned int)((char *)&((T *)0)->F)) |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
106 #endif |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
107 |
138 | 108 #ifdef USE_FASTMEMCPY |
109 # include "libvo/fastmemcpy.h" | |
340 | 110 # define memcpy(a,b,c) fast_memcpy(a,b,c) |
138 | 111 #endif |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
112 |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
113 // Use rip-relative addressing if compiling PIC code on x86-64. |
138 | 114 #if defined(__MINGW32__) || defined(__CYGWIN__) || \ |
115 defined(__OS2__) || (defined (__OpenBSD__) && !defined(__ELF__)) | |
116 # if defined(ARCH_X86_64) && defined(PIC) | |
117 # define MANGLE(a) "_" #a"(%%rip)" | |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
118 # else |
138 | 119 # define MANGLE(a) "_" #a |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
120 # endif |
138 | 121 #else |
122 # if defined(ARCH_X86_64) && defined(PIC) | |
123 # define MANGLE(a) #a"(%%rip)" | |
124 # elif defined(CONFIG_DARWIN) | |
125 # define MANGLE(a) "_" #a | |
126 # else | |
127 # define MANGLE(a) #a | |
128 # endif | |
129 #endif | |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
130 |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
131 /* debug stuff */ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
132 |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
133 /* dprintf macros */ |
138 | 134 #ifdef DEBUG |
285 | 135 # define dprintf(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__) |
138 | 136 #else |
285 | 137 # define dprintf(pctx, ...) |
138 | 138 #endif |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
139 |
138 | 140 #define av_abort() do { av_log(NULL, AV_LOG_ERROR, "Abort at %s:%d\n", __FILE__, __LINE__); abort(); } while (0) |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
141 |
143 | 142 /* math */ |
143 | |
134 | 144 extern const uint32_t ff_inverse[256]; |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
145 |
125 | 146 #if defined(ARCH_X86) |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
147 # define FASTDIV(a,b) \ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
148 ({\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
149 int ret,dmy;\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
150 asm volatile(\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
151 "mull %3"\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
152 :"=d"(ret),"=a"(dmy)\ |
134 | 153 :"1"(a),"g"(ff_inverse[b])\ |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
154 );\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
155 ret;\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
156 }) |
114
37779851c665
add FASTDIV macro for ARM. Reported speed-up on MPEG-4 decoding: 1.8%
gpoirier
parents:
108
diff
changeset
|
157 #elif defined(ARCH_ARMV4L) |
37779851c665
add FASTDIV macro for ARM. Reported speed-up on MPEG-4 decoding: 1.8%
gpoirier
parents:
108
diff
changeset
|
158 # define FASTDIV(a,b) \ |
37779851c665
add FASTDIV macro for ARM. Reported speed-up on MPEG-4 decoding: 1.8%
gpoirier
parents:
108
diff
changeset
|
159 ({\ |
37779851c665
add FASTDIV macro for ARM. Reported speed-up on MPEG-4 decoding: 1.8%
gpoirier
parents:
108
diff
changeset
|
160 int ret,dmy;\ |
37779851c665
add FASTDIV macro for ARM. Reported speed-up on MPEG-4 decoding: 1.8%
gpoirier
parents:
108
diff
changeset
|
161 asm volatile(\ |
37779851c665
add FASTDIV macro for ARM. Reported speed-up on MPEG-4 decoding: 1.8%
gpoirier
parents:
108
diff
changeset
|
162 "umull %1, %0, %2, %3"\ |
37779851c665
add FASTDIV macro for ARM. Reported speed-up on MPEG-4 decoding: 1.8%
gpoirier
parents:
108
diff
changeset
|
163 :"=&r"(ret),"=&r"(dmy)\ |
134 | 164 :"r"(a),"r"(ff_inverse[b])\ |
114
37779851c665
add FASTDIV macro for ARM. Reported speed-up on MPEG-4 decoding: 1.8%
gpoirier
parents:
108
diff
changeset
|
165 );\ |
37779851c665
add FASTDIV macro for ARM. Reported speed-up on MPEG-4 decoding: 1.8%
gpoirier
parents:
108
diff
changeset
|
166 ret;\ |
37779851c665
add FASTDIV macro for ARM. Reported speed-up on MPEG-4 decoding: 1.8%
gpoirier
parents:
108
diff
changeset
|
167 }) |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
168 #elif defined(CONFIG_FASTDIV) |
134 | 169 # define FASTDIV(a,b) ((uint32_t)((((uint64_t)a)*ff_inverse[b])>>32)) |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
170 #else |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
171 # define FASTDIV(a,b) ((a)/(b)) |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
172 #endif |
12 | 173 |
157 | 174 extern const uint8_t ff_sqrt_tab[128]; |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
175 |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
176 static inline int ff_sqrt(int a) |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
177 { |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
178 int ret=0; |
334 | 179 int s, b; |
12 | 180 |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
181 if(a<128) return ff_sqrt_tab[a]; |
12 | 182 |
334 | 183 for(s=30; s>=0; s-=2){ |
184 ret+=ret; | |
185 b= (1+2*ret)<<s; | |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
186 if(b<=a){ |
333 | 187 a-=b; |
334 | 188 ret++; |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
189 } |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
190 } |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
191 return ret; |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
192 } |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
193 |
125 | 194 #if defined(ARCH_X86) |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
195 #define MASK_ABS(mask, level)\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
196 asm volatile(\ |
13 | 197 "cdq \n\t"\ |
198 "xorl %1, %0 \n\t"\ | |
199 "subl %1, %0 \n\t"\ | |
200 : "+a" (level), "=&d" (mask)\ | |
201 ); | |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
202 #else |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
203 #define MASK_ABS(mask, level)\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
204 mask= level>>31;\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
205 level= (level^mask)-mask; |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
206 #endif |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
207 |
121
69714d5e1561
Protect code that uses CMOV instructions with HAVE_CMOV,
gpoirier
parents:
116
diff
changeset
|
208 #ifdef HAVE_CMOV |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
209 #define COPY3_IF_LT(x,y,a,b,c,d)\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
210 asm volatile (\ |
13 | 211 "cmpl %0, %3 \n\t"\ |
212 "cmovl %3, %0 \n\t"\ | |
213 "cmovl %4, %1 \n\t"\ | |
214 "cmovl %5, %2 \n\t"\ | |
323
0e5545f9a454
Add first and second output to earlyclobbers in COPY3_IF_LT macro.
diego
parents:
321
diff
changeset
|
215 : "+&r" (x), "+&r" (a), "+r" (c)\ |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
216 : "r" (y), "r" (b), "r" (d)\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
217 ); |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
218 #else |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
219 #define COPY3_IF_LT(x,y,a,b,c,d)\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
220 if((y)<(x)){\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
221 (x)=(y);\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
222 (a)=(b);\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
223 (c)=(d);\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
224 } |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
225 #endif |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
226 |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
227 /* avoid usage of various functions */ |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
228 #undef malloc |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
229 #define malloc please_use_av_malloc |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
230 #undef free |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
231 #define free please_use_av_free |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
232 #undef realloc |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
233 #define realloc please_use_av_realloc |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
234 #undef time |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
235 #define time time_is_forbidden_due_to_security_issues |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
236 #undef rand |
355 | 237 #define rand rand_is_forbidden_due_to_state_trashing_use_av_random |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
238 #undef srand |
355 | 239 #define srand srand_is_forbidden_due_to_state_trashing_use_av_init_random |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
240 #undef random |
355 | 241 #define random random_is_forbidden_due_to_state_trashing_use_av_random |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
242 #undef sprintf |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
243 #define sprintf sprintf_is_forbidden_due_to_security_issues_use_snprintf |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
244 #undef strcat |
349 | 245 #define strcat strcat_is_forbidden_due_to_security_issues_use_av_strlcat |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
246 #undef exit |
321 | 247 #define exit exit_is_forbidden |
353
05c01c4c1ca9
Remove leading underscores from specifiers, they are reserved.
diego
parents:
349
diff
changeset
|
248 #if !(defined(LIBAVFORMAT_BUILD) || defined(FRAMEHOOK_H)) |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
249 #undef printf |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
250 #define printf please_use_av_log |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
251 #undef fprintf |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
252 #define fprintf please_use_av_log |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
253 #endif |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
254 |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
255 #define CHECKED_ALLOCZ(p, size)\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
256 {\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
257 p= av_mallocz(size);\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
258 if(p==NULL && (size)!=0){\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
259 perror("malloc");\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
260 goto fail;\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
261 }\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
262 } |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
263 |
4
26a00aee5eac
Move lrintf implementation from libavcodec/dsputil.h to libavutil/common.h
diego
parents:
3
diff
changeset
|
264 #ifndef HAVE_LRINTF |
26a00aee5eac
Move lrintf implementation from libavcodec/dsputil.h to libavutil/common.h
diego
parents:
3
diff
changeset
|
265 /* XXX: add ISOC specific test to avoid specific BSD testing. */ |
26a00aee5eac
Move lrintf implementation from libavcodec/dsputil.h to libavutil/common.h
diego
parents:
3
diff
changeset
|
266 /* better than nothing implementation. */ |
26a00aee5eac
Move lrintf implementation from libavcodec/dsputil.h to libavutil/common.h
diego
parents:
3
diff
changeset
|
267 /* btw, rintf() is existing on fbsd too -- alex */ |
159
039198e96ee2
rename always_inline to av_always_inline and move to common.h
mru
parents:
157
diff
changeset
|
268 static av_always_inline long int lrintf(float x) |
4
26a00aee5eac
Move lrintf implementation from libavcodec/dsputil.h to libavutil/common.h
diego
parents:
3
diff
changeset
|
269 { |
26a00aee5eac
Move lrintf implementation from libavcodec/dsputil.h to libavutil/common.h
diego
parents:
3
diff
changeset
|
270 return (int)(rint(x)); |
26a00aee5eac
Move lrintf implementation from libavcodec/dsputil.h to libavutil/common.h
diego
parents:
3
diff
changeset
|
271 } |
26a00aee5eac
Move lrintf implementation from libavcodec/dsputil.h to libavutil/common.h
diego
parents:
3
diff
changeset
|
272 #endif /* HAVE_LRINTF */ |
26a00aee5eac
Move lrintf implementation from libavcodec/dsputil.h to libavutil/common.h
diego
parents:
3
diff
changeset
|
273 |
80
624fc3ad183a
Split common.h in two parts, purely internal stuff (internal.h) and things
reimar
parents:
75
diff
changeset
|
274 #endif /* INTERNAL_H */ |