summaryrefslogtreecommitdiff
path: root/apps/codecs/libwmapro/libavutil/internal.h
diff options
context:
space:
mode:
authorMohamed Tarek <mt@rockbox.org>2010-04-30 11:11:56 +0000
committerMohamed Tarek <mt@rockbox.org>2010-04-30 11:11:56 +0000
commitcf43e5083b9e0f87de262ea31fd8067225ebfcda (patch)
tree073e6f4cd9561564d85e410a35432e1f4ead5b11 /apps/codecs/libwmapro/libavutil/internal.h
parentbc3c5c16571487bf71fed8c22b30ee40481e156e (diff)
downloadrockbox-cf43e5083b9e0f87de262ea31fd8067225ebfcda.tar.gz
rockbox-cf43e5083b9e0f87de262ea31fd8067225ebfcda.zip
Add libwmapro to apps/codecs. These files comprise a set of unmodified files needed from ffmpeg's libavcodec and libavutil to compile and use the wma pro decoder standalone. The files were taken from ffmpeg's svn r22886 dated 15 April 2010.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25763 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libwmapro/libavutil/internal.h')
-rw-r--r--apps/codecs/libwmapro/libavutil/internal.h207
1 files changed, 207 insertions, 0 deletions
diff --git a/apps/codecs/libwmapro/libavutil/internal.h b/apps/codecs/libwmapro/libavutil/internal.h
new file mode 100644
index 0000000000..b47db3d8c6
--- /dev/null
+++ b/apps/codecs/libwmapro/libavutil/internal.h
@@ -0,0 +1,207 @@
1/*
2 * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21/**
22 * @file libavutil/internal.h
23 * common internal API header
24 */
25
26#ifndef AVUTIL_INTERNAL_H
27#define AVUTIL_INTERNAL_H
28
29#if !defined(DEBUG) && !defined(NDEBUG)
30# define NDEBUG
31#endif
32
33#include <limits.h>
34#include <stdint.h>
35#include <stddef.h>
36#include <assert.h>
37#include "config.h"
38#include "attributes.h"
39#include "timer.h"
40
41#ifndef attribute_align_arg
42#if (!defined(__ICC) || __ICC > 1110) && AV_GCC_VERSION_AT_LEAST(4,2)
43# define attribute_align_arg __attribute__((force_align_arg_pointer))
44#else
45# define attribute_align_arg
46#endif
47#endif
48
49#ifndef attribute_used
50#if AV_GCC_VERSION_AT_LEAST(3,1)
51# define attribute_used __attribute__((used))
52#else
53# define attribute_used
54#endif
55#endif
56
57#ifndef av_alias
58#if HAVE_ATTRIBUTE_MAY_ALIAS && (!defined(__ICC) || __ICC > 1110) && AV_GCC_VERSION_AT_LEAST(3,3)
59# define av_alias __attribute__((may_alias))
60#else
61# define av_alias
62#endif
63#endif
64
65#ifndef INT16_MIN
66#define INT16_MIN (-0x7fff - 1)
67#endif
68
69#ifndef INT16_MAX
70#define INT16_MAX 0x7fff
71#endif
72
73#ifndef INT32_MIN
74#define INT32_MIN (-0x7fffffff - 1)
75#endif
76
77#ifndef INT32_MAX
78#define INT32_MAX 0x7fffffff
79#endif
80
81#ifndef UINT32_MAX
82#define UINT32_MAX 0xffffffff
83#endif
84
85#ifndef INT64_MIN
86#define INT64_MIN (-0x7fffffffffffffffLL - 1)
87#endif
88
89#ifndef INT64_MAX
90#define INT64_MAX INT64_C(9223372036854775807)
91#endif
92
93#ifndef UINT64_MAX
94#define UINT64_MAX UINT64_C(0xFFFFFFFFFFFFFFFF)
95#endif
96
97#ifndef INT_BIT
98# define INT_BIT (CHAR_BIT * sizeof(int))
99#endif
100
101#ifndef offsetof
102# define offsetof(T, F) ((unsigned int)((char *)&((T *)0)->F))
103#endif
104
105/* Use to export labels from asm. */
106#define LABEL_MANGLE(a) EXTERN_PREFIX #a
107
108// Use rip-relative addressing if compiling PIC code on x86-64.
109#if ARCH_X86_64 && defined(PIC)
110# define LOCAL_MANGLE(a) #a "(%%rip)"
111#else
112# define LOCAL_MANGLE(a) #a
113#endif
114
115#define MANGLE(a) EXTERN_PREFIX LOCAL_MANGLE(a)
116
117/* debug stuff */
118
119/* dprintf macros */
120#ifdef DEBUG
121# define dprintf(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__)
122#else
123# define dprintf(pctx, ...)
124#endif
125
126#define av_abort() do { av_log(NULL, AV_LOG_ERROR, "Abort at %s:%d\n", __FILE__, __LINE__); abort(); } while (0)
127
128/* math */
129
130#if ARCH_X86
131#define MASK_ABS(mask, level)\
132 __asm__ volatile(\
133 "cltd \n\t"\
134 "xorl %1, %0 \n\t"\
135 "subl %1, %0 \n\t"\
136 : "+a" (level), "=&d" (mask)\
137 );
138#else
139#define MASK_ABS(mask, level)\
140 mask = level >> 31;\
141 level = (level ^ mask) - mask;
142#endif
143
144/* avoid usage of dangerous/inappropriate system functions */
145#undef malloc
146#define malloc please_use_av_malloc
147#undef free
148#define free please_use_av_free
149#undef realloc
150#define realloc please_use_av_realloc
151#undef time
152#define time time_is_forbidden_due_to_security_issues
153#undef rand
154#define rand rand_is_forbidden_due_to_state_trashing_use_av_lfg_get
155#undef srand
156#define srand srand_is_forbidden_due_to_state_trashing_use_av_lfg_init
157#undef random
158#define random random_is_forbidden_due_to_state_trashing_use_av_lfg_get
159#undef sprintf
160#define sprintf sprintf_is_forbidden_due_to_security_issues_use_snprintf
161#undef strcat
162#define strcat strcat_is_forbidden_due_to_security_issues_use_av_strlcat
163#undef exit
164#define exit exit_is_forbidden
165#ifndef LIBAVFORMAT_BUILD
166#undef printf
167#define printf please_use_av_log_instead_of_printf
168#undef fprintf
169#define fprintf please_use_av_log_instead_of_fprintf
170#undef puts
171#define puts please_use_av_log_instead_of_puts
172#undef perror
173#define perror please_use_av_log_instead_of_perror
174#endif
175
176#define FF_ALLOC_OR_GOTO(ctx, p, size, label)\
177{\
178 p = av_malloc(size);\
179 if (p == NULL && (size) != 0) {\
180 av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\
181 goto label;\
182 }\
183}
184
185#define FF_ALLOCZ_OR_GOTO(ctx, p, size, label)\
186{\
187 p = av_mallocz(size);\
188 if (p == NULL && (size) != 0) {\
189 av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\
190 goto label;\
191 }\
192}
193
194#include "libm.h"
195
196/**
197 * Returns NULL if CONFIG_SMALL is true, otherwise the argument
198 * without modification. Used to disable the definition of strings
199 * (for example AVCodec long_names).
200 */
201#if CONFIG_SMALL
202# define NULL_IF_CONFIG_SMALL(x) NULL
203#else
204# define NULL_IF_CONFIG_SMALL(x) x
205#endif
206
207#endif /* AVUTIL_INTERNAL_H */