annotate internal.h @ 992:a13125b5be3a libavutil

bswap: change ME to NE in macro names Other parts of FFmpeg use NE (native endian) rather than ME (machine). This makes it consistent.
author mru
date Sat, 10 Jul 2010 22:09:01 +0000
parents bb7159d1f769
children bbe201fb5a98
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
8c48a1b999a3 spelling/grammar/consistency review part I
diego
parents: 627
diff changeset
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
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 549
diff changeset
26 #ifndef AVUTIL_INTERNAL_H
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 549
diff changeset
27 #define AVUTIL_INTERNAL_H
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
28
366
4d3f4347b718 move #include of system headers to top of file
mru
parents: 365
diff changeset
29 #if !defined(DEBUG) && !defined(NDEBUG)
4d3f4347b718 move #include of system headers to top of file
mru
parents: 365
diff changeset
30 # define NDEBUG
4d3f4347b718 move #include of system headers to top of file
mru
parents: 365
diff changeset
31 #endif
4d3f4347b718 move #include of system headers to top of file
mru
parents: 365
diff changeset
32
626
667697e17feb Add required limits.h header.
diego
parents: 625
diff changeset
33 #include <limits.h>
343
f21d1907d47c include all prerequisites in header files
mru
parents: 340
diff changeset
34 #include <stdint.h>
366
4d3f4347b718 move #include of system headers to top of file
mru
parents: 365
diff changeset
35 #include <stddef.h>
4d3f4347b718 move #include of system headers to top of file
mru
parents: 365
diff changeset
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
3c748945c2ad move timer related code in a new timer.h file
aurel
parents: 603
diff changeset
39 #include "timer.h"
343
f21d1907d47c include all prerequisites in header files
mru
parents: 340
diff changeset
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
943
da95a329a6b5 Document FF_SYMVER and attribute_used
michael
parents: 942
diff changeset
49
da95a329a6b5 Document FF_SYMVER and attribute_used
michael
parents: 942
diff changeset
50 /**
957
e34e8d654ded Fix grammar errors in documentation
mru
parents: 943
diff changeset
51 * Mark a variable as used and prevent the compiler from optimizing it away.
e34e8d654ded Fix grammar errors in documentation
mru
parents: 943
diff changeset
52 * This is useful for asm that accesses varibles in ways that the compiler does not
943
da95a329a6b5 Document FF_SYMVER and attribute_used
michael
parents: 942
diff changeset
53 * understand
da95a329a6b5 Document FF_SYMVER and attribute_used
michael
parents: 942
diff changeset
54 */
154
b94a48efd763 move some __attribute__ macros to internal.h
mru
parents: 152
diff changeset
55 #ifndef attribute_used
590
e9d89a89561a Use AV_GCC_VERSION_AT_LEAST() to simplify gcc version checks.
cehoyos
parents: 589
diff changeset
56 #if AV_GCC_VERSION_AT_LEAST(3,1)
154
b94a48efd763 move some __attribute__ macros to internal.h
mru
parents: 152
diff changeset
57 # define attribute_used __attribute__((used))
b94a48efd763 move some __attribute__ macros to internal.h
mru
parents: 152
diff changeset
58 #else
b94a48efd763 move some __attribute__ macros to internal.h
mru
parents: 152
diff changeset
59 # define attribute_used
b94a48efd763 move some __attribute__ macros to internal.h
mru
parents: 152
diff changeset
60 #endif
b94a48efd763 move some __attribute__ macros to internal.h
mru
parents: 152
diff changeset
61 #endif
b94a48efd763 move some __attribute__ macros to internal.h
mru
parents: 152
diff changeset
62
155
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
63 #ifndef INT16_MIN
774
1896cda0ecfc whitespace cosmetics, prettyprinting
diego
parents: 772
diff changeset
64 #define INT16_MIN (-0x7fff - 1)
155
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
65 #endif
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
66
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
67 #ifndef INT16_MAX
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
68 #define INT16_MAX 0x7fff
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
69 #endif
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
70
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
71 #ifndef INT32_MIN
774
1896cda0ecfc whitespace cosmetics, prettyprinting
diego
parents: 772
diff changeset
72 #define INT32_MIN (-0x7fffffff - 1)
155
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
73 #endif
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
74
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
75 #ifndef INT32_MAX
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
76 #define INT32_MAX 0x7fffffff
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
77 #endif
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
78
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
79 #ifndef UINT32_MAX
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
80 #define UINT32_MAX 0xffffffff
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
81 #endif
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
82
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
83 #ifndef INT64_MIN
774
1896cda0ecfc whitespace cosmetics, prettyprinting
diego
parents: 772
diff changeset
84 #define INT64_MIN (-0x7fffffffffffffffLL - 1)
155
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
85 #endif
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
86
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
87 #ifndef INT64_MAX
156
69e5b350225c use the standard INT64_C() macro for 64-bit constants
mru
parents: 155
diff changeset
88 #define INT64_MAX INT64_C(9223372036854775807)
155
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
89 #endif
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
90
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
91 #ifndef UINT64_MAX
156
69e5b350225c use the standard INT64_C() macro for 64-bit constants
mru
parents: 155
diff changeset
92 #define UINT64_MAX UINT64_C(0xFFFFFFFFFFFFFFFF)
155
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
93 #endif
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
94
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
95 #ifndef INT_BIT
666
86393a769260 Correct, portable definition of INT_BIT
mru
parents: 642
diff changeset
96 # define INT_BIT (CHAR_BIT * sizeof(int))
155
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
97 #endif
5d849a1c0d4d move more macros to internal.h
mru
parents: 154
diff changeset
98
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
99 #ifndef offsetof
774
1896cda0ecfc whitespace cosmetics, prettyprinting
diego
parents: 772
diff changeset
100 # 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
101 #endif
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
102
736
9c9a242f840c Add LABEL_MANGLE() to export label symbols from inside asm blocks.
ramiro
parents: 703
diff changeset
103 /* Use to export labels from asm. */
9c9a242f840c Add LABEL_MANGLE() to export label symbols from inside asm blocks.
ramiro
parents: 703
diff changeset
104 #define LABEL_MANGLE(a) EXTERN_PREFIX #a
9c9a242f840c Add LABEL_MANGLE() to export label symbols from inside asm blocks.
ramiro
parents: 703
diff changeset
105
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
106 // Use rip-relative addressing if compiling PIC code on x86-64.
603
880c6441f56a Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 600
diff changeset
107 #if ARCH_X86_64 && defined(PIC)
487
9df3dec6f840 Split MANGLE macro into LOCAL_MANGLE AND EXTERN_PREFIX parts
diego
parents: 481
diff changeset
108 # define LOCAL_MANGLE(a) #a "(%%rip)"
473
e841859035a6 Simplify MANGLE macro preprocessor condition checks.
diego
parents: 472
diff changeset
109 #else
487
9df3dec6f840 Split MANGLE macro into LOCAL_MANGLE AND EXTERN_PREFIX parts
diego
parents: 481
diff changeset
110 # define LOCAL_MANGLE(a) #a
138
e8767b5a5fdb indentation
mru
parents: 134
diff changeset
111 #endif
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
112
487
9df3dec6f840 Split MANGLE macro into LOCAL_MANGLE AND EXTERN_PREFIX parts
diego
parents: 481
diff changeset
113 #define MANGLE(a) EXTERN_PREFIX LOCAL_MANGLE(a)
9df3dec6f840 Split MANGLE macro into LOCAL_MANGLE AND EXTERN_PREFIX parts
diego
parents: 481
diff changeset
114
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
115 /* debug stuff */
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
116
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
117 /* dprintf macros */
138
e8767b5a5fdb indentation
mru
parents: 134
diff changeset
118 #ifdef DEBUG
285
c529dbdea4f7 Give context to dprintf
mbardiaux
parents: 283
diff changeset
119 # define dprintf(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__)
138
e8767b5a5fdb indentation
mru
parents: 134
diff changeset
120 #else
285
c529dbdea4f7 Give context to dprintf
mbardiaux
parents: 283
diff changeset
121 # define dprintf(pctx, ...)
138
e8767b5a5fdb indentation
mru
parents: 134
diff changeset
122 #endif
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
123
138
e8767b5a5fdb indentation
mru
parents: 134
diff changeset
124 #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
125
143
bec4c3d175da move comment
mru
parents: 139
diff changeset
126 /* math */
bec4c3d175da move comment
mru
parents: 139
diff changeset
127
603
880c6441f56a Change semantic of CONFIG_*, HAVE_* and ARCH_*.
aurel
parents: 600
diff changeset
128 #if ARCH_X86
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
129 #define MASK_ABS(mask, level)\
578
b20a4eb68876 Convert asm keyword into __asm__.
flameeyes
parents: 569
diff changeset
130 __asm__ volatile(\
461
62530c1673a0 Use cltd instead of cdq asm mnemonic, ICC and gcc support both, but
reimar
parents: 432
diff changeset
131 "cltd \n\t"\
13
aedb6bd881b9 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 12
diff changeset
132 "xorl %1, %0 \n\t"\
aedb6bd881b9 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 12
diff changeset
133 "subl %1, %0 \n\t"\
aedb6bd881b9 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 12
diff changeset
134 : "+a" (level), "=&d" (mask)\
aedb6bd881b9 COSMETICS: tabs --> spaces, some prettyprinting
diego
parents: 12
diff changeset
135 );
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
136 #else
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
137 #define MASK_ABS(mask, level)\
774
1896cda0ecfc whitespace cosmetics, prettyprinting
diego
parents: 772
diff changeset
138 mask = level >> 31;\
1896cda0ecfc whitespace cosmetics, prettyprinting
diego
parents: 772
diff changeset
139 level = (level ^ mask) - mask;
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
140 #endif
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
141
637
683a6dbdd2b2 spelling/grammar/consistency review part III
diego
parents: 636
diff changeset
142 /* 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
143 #undef malloc
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
144 #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
145 #undef free
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
146 #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
147 #undef realloc
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
148 #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
149 #undef time
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
150 #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
151 #undef rand
703
b386bd0fad52 When warning about forbidden pseudo random number generation functions,
diego
parents: 675
diff changeset
152 #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
153 #undef srand
703
b386bd0fad52 When warning about forbidden pseudo random number generation functions,
diego
parents: 675
diff changeset
154 #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
155 #undef random
703
b386bd0fad52 When warning about forbidden pseudo random number generation functions,
diego
parents: 675
diff changeset
156 #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
157 #undef sprintf
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
158 #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
159 #undef strcat
349
bba4d248d13a more av_strl* adjustments
reimar
parents: 343
diff changeset
160 #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
161 #undef exit
321
39cdbea1a8f1 prevent exit missuse
michael
parents: 285
diff changeset
162 #define exit exit_is_forbidden
569
165ae9e8f4fb Remove wrong and unnecessary condition. VHOOK filters are not special
stefano
parents: 567
diff changeset
163 #ifndef LIBAVFORMAT_BUILD
359
b951d460bcb4 undef forbidden names before we #define them in case they are macros in libc
mru
parents: 355
diff changeset
164 #undef printf
627
d4b82de2ce47 Disambiguate the macros used to disable fprintf/printf/puts functions.
diego
parents: 626
diff changeset
165 #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
166 #undef fprintf
627
d4b82de2ce47 Disambiguate the macros used to disable fprintf/printf/puts functions.
diego
parents: 626
diff changeset
167 #define fprintf please_use_av_log_instead_of_fprintf
431
fa6c031f2a57 Disallow puts(), av_log() should be used instead.
diego
parents: 411
diff changeset
168 #undef puts
627
d4b82de2ce47 Disambiguate the macros used to disable fprintf/printf/puts functions.
diego
parents: 626
diff changeset
169 #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
170 #undef perror
c22fbe7d64cf Generate a linking error if perror() is used in libav*
lucabe
parents: 402
diff changeset
171 #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
172 #endif
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
173
777
9b87c6b537bb Rename CHECKED_ALLOC(Z) to FF_ALLOC(Z)_OR_GOTO and add context and label
ramiro
parents: 775
diff changeset
174 #define FF_ALLOC_OR_GOTO(ctx, p, size, label)\
772
988be4b2fd0c Add CHECKED_ALLOC macro.
ramiro
parents: 753
diff changeset
175 {\
774
1896cda0ecfc whitespace cosmetics, prettyprinting
diego
parents: 772
diff changeset
176 p = av_malloc(size);\
1896cda0ecfc whitespace cosmetics, prettyprinting
diego
parents: 772
diff changeset
177 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
178 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
179 goto label;\
772
988be4b2fd0c Add CHECKED_ALLOC macro.
ramiro
parents: 753
diff changeset
180 }\
988be4b2fd0c Add CHECKED_ALLOC macro.
ramiro
parents: 753
diff changeset
181 }
988be4b2fd0c Add CHECKED_ALLOC macro.
ramiro
parents: 753
diff changeset
182
777
9b87c6b537bb Rename CHECKED_ALLOC(Z) to FF_ALLOC(Z)_OR_GOTO and add context and label
ramiro
parents: 775
diff changeset
183 #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
184 {\
774
1896cda0ecfc whitespace cosmetics, prettyprinting
diego
parents: 772
diff changeset
185 p = av_mallocz(size);\
1896cda0ecfc whitespace cosmetics, prettyprinting
diego
parents: 772
diff changeset
186 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
187 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
188 goto label;\
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
871
0d85cdd07648 Move libm replacements to new header libm.h
mru
parents: 865
diff changeset
192 #include "libm.h"
600
198d4fd6541d Add truncf() replacement function.
ramiro
parents: 598
diff changeset
193
605
5d605aafa09d move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents: 604
diff changeset
194 /**
957
e34e8d654ded Fix grammar errors in documentation
mru
parents: 943
diff changeset
195 * Return NULL if CONFIG_SMALL is true, otherwise the argument
636
c04808220c83 spelling/grammar/consistency review part II
diego
parents: 633
diff changeset
196 * 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
197 * (for example AVCodec long_names).
5d605aafa09d move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents: 604
diff changeset
198 */
5d605aafa09d move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents: 604
diff changeset
199 #if CONFIG_SMALL
5d605aafa09d move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents: 604
diff changeset
200 # define NULL_IF_CONFIG_SMALL(x) NULL
5d605aafa09d move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents: 604
diff changeset
201 #else
5d605aafa09d move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents: 604
diff changeset
202 # define NULL_IF_CONFIG_SMALL(x) x
5d605aafa09d move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents: 604
diff changeset
203 #endif
5d605aafa09d move NULL_IF_CONFIG_SMALL() definition into internal header
aurel
parents: 604
diff changeset
204
943
da95a329a6b5 Document FF_SYMVER and attribute_used
michael
parents: 942
diff changeset
205
da95a329a6b5 Document FF_SYMVER and attribute_used
michael
parents: 942
diff changeset
206 /**
963
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
207 * Define a function with only the non-default version specified.
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
208 *
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
209 * On systems with ELF shared libraries, all symbols exported from
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
210 * FFmpeg libraries are tagged with the name and major version of the
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
211 * library to which they belong. If a function is moved from one
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
212 * library to another, a wrapper must be retained in the original
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
213 * location to preserve binary compatibility.
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
214 *
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
215 * Functions defined with this macro will never be used to resolve
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
216 * symbols by the build-time linker.
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
217 *
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
218 * @param type return type of function
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
219 * @param name name of function
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
220 * @param args argument list of function
bb7159d1f769 Improve FF_SYMVER documentation
mru
parents: 957
diff changeset
221 * @param ver version tag to assign function
943
da95a329a6b5 Document FF_SYMVER and attribute_used
michael
parents: 942
diff changeset
222 */
941
1f17993c2baa Add compatibility wrappers for functions moved from lavf to lavc
mru
parents: 919
diff changeset
223 #if HAVE_SYMVER_ASM_LABEL
942
c8b09f0c66a0 Fix symbol version compat wrappers on systems with export prefixes
mru
parents: 941
diff changeset
224 # define FF_SYMVER(type, name, args, ver) \
c8b09f0c66a0 Fix symbol version compat wrappers on systems with export prefixes
mru
parents: 941
diff changeset
225 type ff_##name args __asm__ (EXTERN_PREFIX #name "@" ver); \
941
1f17993c2baa Add compatibility wrappers for functions moved from lavf to lavc
mru
parents: 919
diff changeset
226 type ff_##name args
1f17993c2baa Add compatibility wrappers for functions moved from lavf to lavc
mru
parents: 919
diff changeset
227 #elif HAVE_SYMVER_GNU_ASM
942
c8b09f0c66a0 Fix symbol version compat wrappers on systems with export prefixes
mru
parents: 941
diff changeset
228 # define FF_SYMVER(type, name, args, ver) \
c8b09f0c66a0 Fix symbol version compat wrappers on systems with export prefixes
mru
parents: 941
diff changeset
229 __asm__ (".symver ff_" #name "," EXTERN_PREFIX #name "@" ver); \
c8b09f0c66a0 Fix symbol version compat wrappers on systems with export prefixes
mru
parents: 941
diff changeset
230 type ff_##name args; \
941
1f17993c2baa Add compatibility wrappers for functions moved from lavf to lavc
mru
parents: 919
diff changeset
231 type ff_##name args
1f17993c2baa Add compatibility wrappers for functions moved from lavf to lavc
mru
parents: 919
diff changeset
232 #endif
1f17993c2baa Add compatibility wrappers for functions moved from lavf to lavc
mru
parents: 919
diff changeset
233
567
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 549
diff changeset
234 #endif /* AVUTIL_INTERNAL_H */