Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavutil
mem.h
Go to the documentation of this file.
1
/*
2
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
3
*
4
* This file is part of Libav.
5
*
6
* Libav 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
* Libav 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 Libav; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
26
#ifndef AVUTIL_MEM_H
27
#define AVUTIL_MEM_H
28
29
#include <limits.h>
30
#include <stdint.h>
31
32
#include "
attributes.h
"
33
#include "
avutil.h
"
34
41
#if defined(__ICC) && __ICC < 1200 || defined(__SUNPRO_C)
42
#define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
43
#define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v
44
#elif defined(__TI_COMPILER_VERSION__)
45
#define DECLARE_ALIGNED(n,t,v) \
46
AV_PRAGMA(DATA_ALIGN(v,n)) \
47
t __attribute__((aligned(n))) v
48
#define DECLARE_ASM_CONST(n,t,v) \
49
AV_PRAGMA(DATA_ALIGN(v,n)) \
50
static const t __attribute__((aligned(n))) v
51
#elif defined(__GNUC__)
52
#define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
53
#define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v
54
#elif defined(_MSC_VER)
55
#define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v
56
#define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v
57
#else
58
#define DECLARE_ALIGNED(n,t,v) t v
59
#define DECLARE_ASM_CONST(n,t,v) static const t v
60
#endif
61
62
#if AV_GCC_VERSION_AT_LEAST(3,1)
63
#define av_malloc_attrib __attribute__((__malloc__))
64
#else
65
#define av_malloc_attrib
66
#endif
67
68
#if AV_GCC_VERSION_AT_LEAST(4,3)
69
#define av_alloc_size(...) __attribute__((alloc_size(__VA_ARGS__)))
70
#else
71
#define av_alloc_size(...)
72
#endif
73
82
void
*
av_malloc
(
size_t
size
)
av_malloc_attrib
av_alloc_size
(1);
83
93
av_alloc_size
(1, 2) static inline
void
*
av_malloc_array
(
size_t
nmemb,
size_t
size
)
94
{
95
if
(size <= 0 || nmemb >= INT_MAX / size)
96
return
NULL
;
97
return
av_malloc
(nmemb * size);
98
}
99
112
void
*
av_realloc
(
void
*ptr,
size_t
size
)
av_alloc_size
(2);
113
122
void
av_free
(
void
*ptr);
123
132
void
*
av_mallocz
(
size_t
size
)
av_malloc_attrib
av_alloc_size
(1);
133
144
av_alloc_size
(1, 2) static inline
void
*
av_mallocz_array
(
size_t
nmemb,
size_t
size
)
145
{
146
if
(size <= 0 || nmemb >= INT_MAX / size)
147
return
NULL
;
148
return
av_mallocz
(nmemb * size);
149
}
150
157
char
*
av_strdup
(
const
char
*s)
av_malloc_attrib
;
158
166
void
av_freep
(
void
*ptr);
167
177
void
av_memcpy_backptr
(
uint8_t
*dst,
int
back,
int
cnt);
178
183
#endif
/* AVUTIL_MEM_H */