Mercurial > libavutil.hg
annotate internal.h @ 941:1f17993c2baa libavutil
Add compatibility wrappers for functions moved from lavf to lavc
When symbol versioning is enabled, moving symbols from one library to
another breaks binary compatibility. This adds wrappers with the old
version tag for the av_*packet functions recently moved to lavc.
author | mru |
---|---|
date | Tue, 15 Jun 2010 13:26:52 +0000 |
parents | 074893f9f95e |
children | c8b09f0c66a0 |
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 /** |
899
0795a743bda1
Remove explicit filename from Doxygen @file commands.
diego
parents:
873
diff
changeset
|
22 * @file |
633 | 23 * common internal API header |
0
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 |
567 | 26 #ifndef AVUTIL_INTERNAL_H |
27 #define AVUTIL_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 | |
626 | 33 #include <limits.h> |
343 | 34 #include <stdint.h> |
366 | 35 #include <stddef.h> |
36 #include <assert.h> | |
639
19d5f5c17725
cosmetics: Move all #includes together at the beginning of the file.
diego
parents:
637
diff
changeset
|
37 #include "config.h" |
873
4d9ad0ed07d0
Replace many includes of libavutil/common.h with what is actually needed
mru
parents:
871
diff
changeset
|
38 #include "attributes.h" |
604 | 39 #include "timer.h" |
343 | 40 |
374
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
41 #ifndef attribute_align_arg |
742
1091b120412e
Icc 11.1 does not support attributes force_align_arg_pointer, alloc_size and cold.
cehoyos
parents:
736
diff
changeset
|
42 #if (!defined(__ICC) || __ICC > 1110) && AV_GCC_VERSION_AT_LEAST(4,2) |
374
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
43 # 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
|
44 #else |
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
45 # define attribute_align_arg |
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
46 #endif |
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
47 #endif |
8805bba131a9
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
366
diff
changeset
|
48 |
154 | 49 #ifndef attribute_used |
590
e9d89a89561a
Use AV_GCC_VERSION_AT_LEAST() to simplify gcc version checks.
cehoyos
parents:
589
diff
changeset
|
50 #if AV_GCC_VERSION_AT_LEAST(3,1) |
154 | 51 # define attribute_used __attribute__((used)) |
52 #else | |
53 # define attribute_used | |
54 #endif | |
55 #endif | |
56 | |
155 | 57 #ifndef INT16_MIN |
774 | 58 #define INT16_MIN (-0x7fff - 1) |
155 | 59 #endif |
60 | |
61 #ifndef INT16_MAX | |
62 #define INT16_MAX 0x7fff | |
63 #endif | |
64 | |
65 #ifndef INT32_MIN | |
774 | 66 #define INT32_MIN (-0x7fffffff - 1) |
155 | 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 | |
774 | 78 #define INT64_MIN (-0x7fffffffffffffffLL - 1) |
155 | 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 | |
666 | 90 # define INT_BIT (CHAR_BIT * sizeof(int)) |
155 | 91 #endif |
92 | |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
93 #ifndef offsetof |
774 | 94 # 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
|
95 #endif |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
96 |
736
9c9a242f840c
Add LABEL_MANGLE() to export label symbols from inside asm blocks.
ramiro
parents:
703
diff
changeset
|
97 /* Use to export labels from asm. */ |
9c9a242f840c
Add LABEL_MANGLE() to export label symbols from inside asm blocks.
ramiro
parents:
703
diff
changeset
|
98 #define LABEL_MANGLE(a) EXTERN_PREFIX #a |
9c9a242f840c
Add LABEL_MANGLE() to export label symbols from inside asm blocks.
ramiro
parents:
703
diff
changeset
|
99 |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
100 // Use rip-relative addressing if compiling PIC code on x86-64. |
603 | 101 #if ARCH_X86_64 && defined(PIC) |
487
9df3dec6f840
Split MANGLE macro into LOCAL_MANGLE AND EXTERN_PREFIX parts
diego
parents:
481
diff
changeset
|
102 # define LOCAL_MANGLE(a) #a "(%%rip)" |
473 | 103 #else |
487
9df3dec6f840
Split MANGLE macro into LOCAL_MANGLE AND EXTERN_PREFIX parts
diego
parents:
481
diff
changeset
|
104 # define LOCAL_MANGLE(a) #a |
138 | 105 #endif |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
106 |
487
9df3dec6f840
Split MANGLE macro into LOCAL_MANGLE AND EXTERN_PREFIX parts
diego
parents:
481
diff
changeset
|
107 #define MANGLE(a) EXTERN_PREFIX LOCAL_MANGLE(a) |
9df3dec6f840
Split MANGLE macro into LOCAL_MANGLE AND EXTERN_PREFIX parts
diego
parents:
481
diff
changeset
|
108 |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
109 /* debug stuff */ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
110 |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
111 /* dprintf macros */ |
138 | 112 #ifdef DEBUG |
285 | 113 # define dprintf(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__) |
138 | 114 #else |
285 | 115 # define dprintf(pctx, ...) |
138 | 116 #endif |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
117 |
138 | 118 #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
|
119 |
143 | 120 /* math */ |
121 | |
603 | 122 #if ARCH_X86 |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
123 #define MASK_ABS(mask, level)\ |
578 | 124 __asm__ volatile(\ |
461
62530c1673a0
Use cltd instead of cdq asm mnemonic, ICC and gcc support both, but
reimar
parents:
432
diff
changeset
|
125 "cltd \n\t"\ |
13 | 126 "xorl %1, %0 \n\t"\ |
127 "subl %1, %0 \n\t"\ | |
128 : "+a" (level), "=&d" (mask)\ | |
129 ); | |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
130 #else |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
131 #define MASK_ABS(mask, level)\ |
774 | 132 mask = level >> 31;\ |
133 level = (level ^ mask) - mask; | |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
134 #endif |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
135 |
637 | 136 /* avoid usage of dangerous/inappropriate system functions */ |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
137 #undef malloc |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
138 #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
|
139 #undef free |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
140 #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
|
141 #undef realloc |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
142 #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
|
143 #undef time |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
144 #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
|
145 #undef rand |
703
b386bd0fad52
When warning about forbidden pseudo random number generation functions,
diego
parents:
675
diff
changeset
|
146 #define rand rand_is_forbidden_due_to_state_trashing_use_av_lfg_get |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
147 #undef srand |
703
b386bd0fad52
When warning about forbidden pseudo random number generation functions,
diego
parents:
675
diff
changeset
|
148 #define srand srand_is_forbidden_due_to_state_trashing_use_av_lfg_init |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
149 #undef random |
703
b386bd0fad52
When warning about forbidden pseudo random number generation functions,
diego
parents:
675
diff
changeset
|
150 #define random random_is_forbidden_due_to_state_trashing_use_av_lfg_get |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
151 #undef sprintf |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
152 #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
|
153 #undef strcat |
349 | 154 #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
|
155 #undef exit |
321 | 156 #define exit exit_is_forbidden |
569
165ae9e8f4fb
Remove wrong and unnecessary condition. VHOOK filters are not special
stefano
parents:
567
diff
changeset
|
157 #ifndef LIBAVFORMAT_BUILD |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
158 #undef printf |
627
d4b82de2ce47
Disambiguate the macros used to disable fprintf/printf/puts functions.
diego
parents:
626
diff
changeset
|
159 #define printf please_use_av_log_instead_of_printf |
359
b951d460bcb4
undef forbidden names before we #define them in case they are macros in libc
mru
parents:
355
diff
changeset
|
160 #undef fprintf |
627
d4b82de2ce47
Disambiguate the macros used to disable fprintf/printf/puts functions.
diego
parents:
626
diff
changeset
|
161 #define fprintf please_use_av_log_instead_of_fprintf |
431 | 162 #undef puts |
627
d4b82de2ce47
Disambiguate the macros used to disable fprintf/printf/puts functions.
diego
parents:
626
diff
changeset
|
163 #define puts please_use_av_log_instead_of_puts |
403
c22fbe7d64cf
Generate a linking error if perror() is used in libav*
lucabe
parents:
402
diff
changeset
|
164 #undef perror |
c22fbe7d64cf
Generate a linking error if perror() is used in libav*
lucabe
parents:
402
diff
changeset
|
165 #define perror please_use_av_log_instead_of_perror |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
166 #endif |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
167 |
777
9b87c6b537bb
Rename CHECKED_ALLOC(Z) to FF_ALLOC(Z)_OR_GOTO and add context and label
ramiro
parents:
775
diff
changeset
|
168 #define FF_ALLOC_OR_GOTO(ctx, p, size, label)\ |
772 | 169 {\ |
774 | 170 p = av_malloc(size);\ |
171 if (p == NULL && (size) != 0) {\ | |
777
9b87c6b537bb
Rename CHECKED_ALLOC(Z) to FF_ALLOC(Z)_OR_GOTO and add context and label
ramiro
parents:
775
diff
changeset
|
172 av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\ |
9b87c6b537bb
Rename CHECKED_ALLOC(Z) to FF_ALLOC(Z)_OR_GOTO and add context and label
ramiro
parents:
775
diff
changeset
|
173 goto label;\ |
772 | 174 }\ |
175 } | |
176 | |
777
9b87c6b537bb
Rename CHECKED_ALLOC(Z) to FF_ALLOC(Z)_OR_GOTO and add context and label
ramiro
parents:
775
diff
changeset
|
177 #define FF_ALLOCZ_OR_GOTO(ctx, p, size, label)\ |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
178 {\ |
774 | 179 p = av_mallocz(size);\ |
180 if (p == NULL && (size) != 0) {\ | |
777
9b87c6b537bb
Rename CHECKED_ALLOC(Z) to FF_ALLOC(Z)_OR_GOTO and add context and label
ramiro
parents:
775
diff
changeset
|
181 av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\ |
9b87c6b537bb
Rename CHECKED_ALLOC(Z) to FF_ALLOC(Z)_OR_GOTO and add context and label
ramiro
parents:
775
diff
changeset
|
182 goto label;\ |
0
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
183 }\ |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
184 } |
ee8f44bb7c4d
libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff
changeset
|
185 |
871 | 186 #include "libm.h" |
600 | 187 |
605
5d605aafa09d
move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents:
604
diff
changeset
|
188 /** |
636 | 189 * Returns NULL if CONFIG_SMALL is true, otherwise the argument |
190 * without modification. Used to disable the definition of strings | |
605
5d605aafa09d
move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents:
604
diff
changeset
|
191 * (for example AVCodec long_names). |
5d605aafa09d
move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents:
604
diff
changeset
|
192 */ |
5d605aafa09d
move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents:
604
diff
changeset
|
193 #if CONFIG_SMALL |
5d605aafa09d
move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents:
604
diff
changeset
|
194 # define NULL_IF_CONFIG_SMALL(x) NULL |
5d605aafa09d
move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents:
604
diff
changeset
|
195 #else |
5d605aafa09d
move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents:
604
diff
changeset
|
196 # define NULL_IF_CONFIG_SMALL(x) x |
5d605aafa09d
move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents:
604
diff
changeset
|
197 #endif |
5d605aafa09d
move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents:
604
diff
changeset
|
198 |
941
1f17993c2baa
Add compatibility wrappers for functions moved from lavf to lavc
mru
parents:
919
diff
changeset
|
199 #if HAVE_SYMVER_ASM_LABEL |
1f17993c2baa
Add compatibility wrappers for functions moved from lavf to lavc
mru
parents:
919
diff
changeset
|
200 # define FF_SYMVER(type, name, args, ver) \ |
1f17993c2baa
Add compatibility wrappers for functions moved from lavf to lavc
mru
parents:
919
diff
changeset
|
201 type ff_##name args __asm__ (#name "@" ver); \ |
1f17993c2baa
Add compatibility wrappers for functions moved from lavf to lavc
mru
parents:
919
diff
changeset
|
202 type ff_##name args |
1f17993c2baa
Add compatibility wrappers for functions moved from lavf to lavc
mru
parents:
919
diff
changeset
|
203 #elif HAVE_SYMVER_GNU_ASM |
1f17993c2baa
Add compatibility wrappers for functions moved from lavf to lavc
mru
parents:
919
diff
changeset
|
204 # define FF_SYMVER(type, name, args, ver) \ |
1f17993c2baa
Add compatibility wrappers for functions moved from lavf to lavc
mru
parents:
919
diff
changeset
|
205 __asm__ (".symver ff_" #name "," #name "@" ver); \ |
1f17993c2baa
Add compatibility wrappers for functions moved from lavf to lavc
mru
parents:
919
diff
changeset
|
206 type ff_##name args; \ |
1f17993c2baa
Add compatibility wrappers for functions moved from lavf to lavc
mru
parents:
919
diff
changeset
|
207 type ff_##name args |
1f17993c2baa
Add compatibility wrappers for functions moved from lavf to lavc
mru
parents:
919
diff
changeset
|
208 #endif |
1f17993c2baa
Add compatibility wrappers for functions moved from lavf to lavc
mru
parents:
919
diff
changeset
|
209 |
567 | 210 #endif /* AVUTIL_INTERNAL_H */ |