author | koda |
Fri, 05 Apr 2013 22:57:31 +0200 | |
changeset 8874 | 8121ce2b0a88 |
parent 7813 | 7ac83d79b897 |
permissions | -rw-r--r-- |
7813
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
1 |
/* |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
2 |
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
3 |
* |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
4 |
* This file is part of Libav. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
5 |
* |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
6 |
* Libav is free software; you can redistribute it and/or |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
7 |
* modify it under the terms of the GNU Lesser General Public |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
8 |
* License as published by the Free Software Foundation; either |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
9 |
* version 2.1 of the License, or (at your option) any later version. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
10 |
* |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
11 |
* Libav is distributed in the hope that it will be useful, |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
14 |
* Lesser General Public License for more details. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
15 |
* |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
16 |
* You should have received a copy of the GNU Lesser General Public |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
17 |
* License along with Libav; if not, write to the Free Software |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
18 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
19 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
20 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
21 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
22 |
* @file |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
23 |
* common internal and external API header |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
24 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
25 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
26 |
#ifndef AVUTIL_COMMON_H |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
27 |
#define AVUTIL_COMMON_H |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
28 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
29 |
#include <ctype.h> |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
30 |
#include <errno.h> |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
31 |
#include <inttypes.h> |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
32 |
#include <limits.h> |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
33 |
#include <math.h> |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
34 |
#include <stdio.h> |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
35 |
#include <stdlib.h> |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
36 |
#include <string.h> |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
37 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
38 |
#include "attributes.h" |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
39 |
#include "version.h" |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
40 |
#include "libavutil/avconfig.h" |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
41 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
42 |
#if AV_HAVE_BIGENDIAN |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
43 |
# define AV_NE(be, le) (be) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
44 |
#else |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
45 |
# define AV_NE(be, le) (le) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
46 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
47 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
48 |
//rounded division & shift |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
49 |
#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
50 |
/* assume b>0 */ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
51 |
#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
52 |
#define FFABS(a) ((a) >= 0 ? (a) : (-(a))) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
53 |
#define FFSIGN(a) ((a) > 0 ? 1 : -1) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
54 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
55 |
#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
56 |
#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
57 |
#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
58 |
#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
59 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
60 |
#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
61 |
#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
62 |
#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
63 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
64 |
/* misc math functions */ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
65 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
66 |
#if FF_API_AV_REVERSE |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
67 |
extern attribute_deprecated const uint8_t av_reverse[256]; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
68 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
69 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
70 |
#ifdef HAVE_AV_CONFIG_H |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
71 |
# include "config.h" |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
72 |
# include "intmath.h" |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
73 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
74 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
75 |
/* Pull in unguarded fallback defines at the end of this file. */ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
76 |
#include "common.h" |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
77 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
78 |
#ifndef av_log2 |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
79 |
av_const int av_log2(unsigned v); |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
80 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
81 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
82 |
#ifndef av_log2_16bit |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
83 |
av_const int av_log2_16bit(unsigned v); |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
84 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
85 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
86 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
87 |
* Clip a signed integer value into the amin-amax range. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
88 |
* @param a value to clip |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
89 |
* @param amin minimum value of the clip range |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
90 |
* @param amax maximum value of the clip range |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
91 |
* @return clipped value |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
92 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
93 |
static av_always_inline av_const int av_clip_c(int a, int amin, int amax) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
94 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
95 |
if (a < amin) return amin; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
96 |
else if (a > amax) return amax; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
97 |
else return a; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
98 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
99 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
100 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
101 |
* Clip a signed integer value into the 0-255 range. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
102 |
* @param a value to clip |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
103 |
* @return clipped value |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
104 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
105 |
static av_always_inline av_const uint8_t av_clip_uint8_c(int a) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
106 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
107 |
if (a&(~0xFF)) return (-a)>>31; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
108 |
else return a; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
109 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
110 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
111 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
112 |
* Clip a signed integer value into the -128,127 range. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
113 |
* @param a value to clip |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
114 |
* @return clipped value |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
115 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
116 |
static av_always_inline av_const int8_t av_clip_int8_c(int a) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
117 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
118 |
if ((a+0x80) & ~0xFF) return (a>>31) ^ 0x7F; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
119 |
else return a; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
120 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
121 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
122 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
123 |
* Clip a signed integer value into the 0-65535 range. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
124 |
* @param a value to clip |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
125 |
* @return clipped value |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
126 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
127 |
static av_always_inline av_const uint16_t av_clip_uint16_c(int a) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
128 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
129 |
if (a&(~0xFFFF)) return (-a)>>31; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
130 |
else return a; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
131 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
132 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
133 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
134 |
* Clip a signed integer value into the -32768,32767 range. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
135 |
* @param a value to clip |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
136 |
* @return clipped value |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
137 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
138 |
static av_always_inline av_const int16_t av_clip_int16_c(int a) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
139 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
140 |
if ((a+0x8000) & ~0xFFFF) return (a>>31) ^ 0x7FFF; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
141 |
else return a; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
142 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
143 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
144 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
145 |
* Clip a signed 64-bit integer value into the -2147483648,2147483647 range. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
146 |
* @param a value to clip |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
147 |
* @return clipped value |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
148 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
149 |
static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
150 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
151 |
if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (a>>63) ^ 0x7FFFFFFF; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
152 |
else return a; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
153 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
154 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
155 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
156 |
* Clip a signed integer to an unsigned power of two range. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
157 |
* @param a value to clip |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
158 |
* @param p bit position to clip at |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
159 |
* @return clipped value |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
160 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
161 |
static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
162 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
163 |
if (a & ~((1<<p) - 1)) return -a >> 31 & ((1<<p) - 1); |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
164 |
else return a; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
165 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
166 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
167 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
168 |
* Add two signed 32-bit values with saturation. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
169 |
* |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
170 |
* @param a one value |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
171 |
* @param b another value |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
172 |
* @return sum with signed saturation |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
173 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
174 |
static av_always_inline int av_sat_add32_c(int a, int b) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
175 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
176 |
return av_clipl_int32((int64_t)a + b); |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
177 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
178 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
179 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
180 |
* Add a doubled value to another value with saturation at both stages. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
181 |
* |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
182 |
* @param a first value |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
183 |
* @param b value doubled and added to a |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
184 |
* @return sum with signed saturation |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
185 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
186 |
static av_always_inline int av_sat_dadd32_c(int a, int b) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
187 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
188 |
return av_sat_add32(a, av_sat_add32(b, b)); |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
189 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
190 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
191 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
192 |
* Clip a float value into the amin-amax range. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
193 |
* @param a value to clip |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
194 |
* @param amin minimum value of the clip range |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
195 |
* @param amax maximum value of the clip range |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
196 |
* @return clipped value |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
197 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
198 |
static av_always_inline av_const float av_clipf_c(float a, float amin, float amax) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
199 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
200 |
if (a < amin) return amin; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
201 |
else if (a > amax) return amax; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
202 |
else return a; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
203 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
204 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
205 |
/** Compute ceil(log2(x)). |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
206 |
* @param x value used to compute ceil(log2(x)) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
207 |
* @return computed ceiling of log2(x) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
208 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
209 |
static av_always_inline av_const int av_ceil_log2_c(int x) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
210 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
211 |
return av_log2((x - 1) << 1); |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
212 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
213 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
214 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
215 |
* Count number of bits set to one in x |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
216 |
* @param x value to count bits of |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
217 |
* @return the number of bits set to one in x |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
218 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
219 |
static av_always_inline av_const int av_popcount_c(uint32_t x) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
220 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
221 |
x -= (x >> 1) & 0x55555555; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
222 |
x = (x & 0x33333333) + ((x >> 2) & 0x33333333); |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
223 |
x = (x + (x >> 4)) & 0x0F0F0F0F; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
224 |
x += x >> 8; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
225 |
return (x + (x >> 16)) & 0x3F; |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
226 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
227 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
228 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
229 |
* Count number of bits set to one in x |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
230 |
* @param x value to count bits of |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
231 |
* @return the number of bits set to one in x |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
232 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
233 |
static av_always_inline av_const int av_popcount64_c(uint64_t x) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
234 |
{ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
235 |
return av_popcount(x) + av_popcount(x >> 32); |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
236 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
237 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
238 |
#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24)) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
239 |
#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24)) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
240 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
241 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
242 |
* Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
243 |
* |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
244 |
* @param val Output value, must be an lvalue of type uint32_t. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
245 |
* @param GET_BYTE Expression reading one byte from the input. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
246 |
* Evaluated up to 7 times (4 for the currently |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
247 |
* assigned Unicode range). With a memory buffer |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
248 |
* input, this could be *ptr++. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
249 |
* @param ERROR Expression to be evaluated on invalid input, |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
250 |
* typically a goto statement. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
251 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
252 |
#define GET_UTF8(val, GET_BYTE, ERROR)\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
253 |
val= GET_BYTE;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
254 |
{\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
255 |
int ones= 7 - av_log2(val ^ 255);\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
256 |
if(ones==1)\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
257 |
ERROR\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
258 |
val&= 127>>ones;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
259 |
while(--ones > 0){\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
260 |
int tmp= GET_BYTE - 128;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
261 |
if(tmp>>6)\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
262 |
ERROR\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
263 |
val= (val<<6) + tmp;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
264 |
}\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
265 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
266 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
267 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
268 |
* Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
269 |
* |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
270 |
* @param val Output value, must be an lvalue of type uint32_t. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
271 |
* @param GET_16BIT Expression returning two bytes of UTF-16 data converted |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
272 |
* to native byte order. Evaluated one or two times. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
273 |
* @param ERROR Expression to be evaluated on invalid input, |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
274 |
* typically a goto statement. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
275 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
276 |
#define GET_UTF16(val, GET_16BIT, ERROR)\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
277 |
val = GET_16BIT;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
278 |
{\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
279 |
unsigned int hi = val - 0xD800;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
280 |
if (hi < 0x800) {\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
281 |
val = GET_16BIT - 0xDC00;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
282 |
if (val > 0x3FFU || hi > 0x3FFU)\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
283 |
ERROR\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
284 |
val += (hi<<10) + 0x10000;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
285 |
}\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
286 |
}\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
287 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
288 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
289 |
* @def PUT_UTF8(val, tmp, PUT_BYTE) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
290 |
* Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
291 |
* @param val is an input-only argument and should be of type uint32_t. It holds |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
292 |
* a UCS-4 encoded Unicode character that is to be converted to UTF-8. If |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
293 |
* val is given as a function it is executed only once. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
294 |
* @param tmp is a temporary variable and should be of type uint8_t. It |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
295 |
* represents an intermediate value during conversion that is to be |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
296 |
* output by PUT_BYTE. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
297 |
* @param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
298 |
* It could be a function or a statement, and uses tmp as the input byte. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
299 |
* For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
300 |
* executed up to 4 times for values in the valid UTF-8 range and up to |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
301 |
* 7 times in the general case, depending on the length of the converted |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
302 |
* Unicode character. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
303 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
304 |
#define PUT_UTF8(val, tmp, PUT_BYTE)\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
305 |
{\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
306 |
int bytes, shift;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
307 |
uint32_t in = val;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
308 |
if (in < 0x80) {\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
309 |
tmp = in;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
310 |
PUT_BYTE\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
311 |
} else {\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
312 |
bytes = (av_log2(in) + 4) / 5;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
313 |
shift = (bytes - 1) * 6;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
314 |
tmp = (256 - (256 >> bytes)) | (in >> shift);\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
315 |
PUT_BYTE\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
316 |
while (shift >= 6) {\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
317 |
shift -= 6;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
318 |
tmp = 0x80 | ((in >> shift) & 0x3f);\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
319 |
PUT_BYTE\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
320 |
}\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
321 |
}\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
322 |
} |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
323 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
324 |
/** |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
325 |
* @def PUT_UTF16(val, tmp, PUT_16BIT) |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
326 |
* Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
327 |
* @param val is an input-only argument and should be of type uint32_t. It holds |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
328 |
* a UCS-4 encoded Unicode character that is to be converted to UTF-16. If |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
329 |
* val is given as a function it is executed only once. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
330 |
* @param tmp is a temporary variable and should be of type uint16_t. It |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
331 |
* represents an intermediate value during conversion that is to be |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
332 |
* output by PUT_16BIT. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
333 |
* @param PUT_16BIT writes the converted UTF-16 data to any proper destination |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
334 |
* in desired endianness. It could be a function or a statement, and uses tmp |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
335 |
* as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
336 |
* PUT_BYTE will be executed 1 or 2 times depending on input character. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
337 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
338 |
#define PUT_UTF16(val, tmp, PUT_16BIT)\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
339 |
{\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
340 |
uint32_t in = val;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
341 |
if (in < 0x10000) {\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
342 |
tmp = in;\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
343 |
PUT_16BIT\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
344 |
} else {\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
345 |
tmp = 0xD800 | ((in - 0x10000) >> 10);\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
346 |
PUT_16BIT\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
347 |
tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
348 |
PUT_16BIT\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
349 |
}\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
350 |
}\ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
351 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
352 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
353 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
354 |
#include "mem.h" |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
355 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
356 |
#ifdef HAVE_AV_CONFIG_H |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
357 |
# include "internal.h" |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
358 |
#endif /* HAVE_AV_CONFIG_H */ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
359 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
360 |
#endif /* AVUTIL_COMMON_H */ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
361 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
362 |
/* |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
363 |
* The following definitions are outside the multiple inclusion guard |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
364 |
* to ensure they are immediately available in intmath.h. |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
365 |
*/ |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
366 |
|
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
367 |
#ifndef av_ceil_log2 |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
368 |
# define av_ceil_log2 av_ceil_log2_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
369 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
370 |
#ifndef av_clip |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
371 |
# define av_clip av_clip_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
372 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
373 |
#ifndef av_clip_uint8 |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
374 |
# define av_clip_uint8 av_clip_uint8_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
375 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
376 |
#ifndef av_clip_int8 |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
377 |
# define av_clip_int8 av_clip_int8_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
378 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
379 |
#ifndef av_clip_uint16 |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
380 |
# define av_clip_uint16 av_clip_uint16_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
381 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
382 |
#ifndef av_clip_int16 |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
383 |
# define av_clip_int16 av_clip_int16_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
384 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
385 |
#ifndef av_clipl_int32 |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
386 |
# define av_clipl_int32 av_clipl_int32_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
387 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
388 |
#ifndef av_clip_uintp2 |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
389 |
# define av_clip_uintp2 av_clip_uintp2_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
390 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
391 |
#ifndef av_sat_add32 |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
392 |
# define av_sat_add32 av_sat_add32_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
393 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
394 |
#ifndef av_sat_dadd32 |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
395 |
# define av_sat_dadd32 av_sat_dadd32_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
396 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
397 |
#ifndef av_clipf |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
398 |
# define av_clipf av_clipf_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
399 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
400 |
#ifndef av_popcount |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
401 |
# define av_popcount av_popcount_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
402 |
#endif |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
403 |
#ifndef av_popcount64 |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
404 |
# define av_popcount64 av_popcount64_c |
7ac83d79b897
support video recording on windows with automation and headers
koda
parents:
diff
changeset
|
405 |
#endif |