annotate common.h @ 21:20e680e7a490 libavcodec

get_bits() specialization, gives 4\speedup
author arpi_esp
date Sat, 04 Aug 2001 00:46:50 +0000
parents 907b67420d84
children 5aa6292a1660
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
1 #ifndef COMMON_H
986e461dc072 Initial revision
glantau
parents:
diff changeset
2 #define COMMON_H
986e461dc072 Initial revision
glantau
parents:
diff changeset
3
10
f439e6867cac added HAVE_AV_CONFIG_H
glantau
parents: 2
diff changeset
4 #ifdef HAVE_AV_CONFIG_H
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
5 #include "../config.h"
10
f439e6867cac added HAVE_AV_CONFIG_H
glantau
parents: 2
diff changeset
6 #endif
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
7
2
2e2c46c87460 fixed config for direct mplayer build compatibility
glantau
parents: 0
diff changeset
8 #ifndef __WINE_WINDEF16_H
2e2c46c87460 fixed config for direct mplayer build compatibility
glantau
parents: 0
diff changeset
9 /* workaround for typedef conflict in MPlayer (wine typedefs) */
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
10 typedef unsigned short UINT16;
986e461dc072 Initial revision
glantau
parents:
diff changeset
11 typedef signed short INT16;
986e461dc072 Initial revision
glantau
parents:
diff changeset
12 #endif
986e461dc072 Initial revision
glantau
parents:
diff changeset
13
986e461dc072 Initial revision
glantau
parents:
diff changeset
14 typedef unsigned char UINT8;
986e461dc072 Initial revision
glantau
parents:
diff changeset
15 typedef unsigned int UINT32;
986e461dc072 Initial revision
glantau
parents:
diff changeset
16 typedef unsigned long long UINT64;
986e461dc072 Initial revision
glantau
parents:
diff changeset
17 typedef signed char INT8;
986e461dc072 Initial revision
glantau
parents:
diff changeset
18 typedef signed int INT32;
986e461dc072 Initial revision
glantau
parents:
diff changeset
19 typedef signed long long INT64;
986e461dc072 Initial revision
glantau
parents:
diff changeset
20
986e461dc072 Initial revision
glantau
parents:
diff changeset
21 /* bit output */
986e461dc072 Initial revision
glantau
parents:
diff changeset
22
986e461dc072 Initial revision
glantau
parents:
diff changeset
23 struct PutBitContext;
986e461dc072 Initial revision
glantau
parents:
diff changeset
24
986e461dc072 Initial revision
glantau
parents:
diff changeset
25 typedef void (*WriteDataFunc)(void *, UINT8 *, int);
986e461dc072 Initial revision
glantau
parents:
diff changeset
26
986e461dc072 Initial revision
glantau
parents:
diff changeset
27 typedef struct PutBitContext {
20
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
28 UINT32 bit_buf;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
29 int bit_cnt;
20
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
30 UINT8 *buf, *buf_ptr, *buf_end;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
31 long long data_out_size; /* in bytes */
986e461dc072 Initial revision
glantau
parents:
diff changeset
32 void *opaque;
986e461dc072 Initial revision
glantau
parents:
diff changeset
33 WriteDataFunc write_data;
986e461dc072 Initial revision
glantau
parents:
diff changeset
34 } PutBitContext;
986e461dc072 Initial revision
glantau
parents:
diff changeset
35
986e461dc072 Initial revision
glantau
parents:
diff changeset
36 void init_put_bits(PutBitContext *s,
986e461dc072 Initial revision
glantau
parents:
diff changeset
37 UINT8 *buffer, int buffer_size,
986e461dc072 Initial revision
glantau
parents:
diff changeset
38 void *opaque,
986e461dc072 Initial revision
glantau
parents:
diff changeset
39 void (*write_data)(void *, UINT8 *, int));
986e461dc072 Initial revision
glantau
parents:
diff changeset
40 void put_bits(PutBitContext *s, int n, unsigned int value);
986e461dc072 Initial revision
glantau
parents:
diff changeset
41 long long get_bit_count(PutBitContext *s);
986e461dc072 Initial revision
glantau
parents:
diff changeset
42 void align_put_bits(PutBitContext *s);
986e461dc072 Initial revision
glantau
parents:
diff changeset
43 void flush_put_bits(PutBitContext *s);
986e461dc072 Initial revision
glantau
parents:
diff changeset
44
986e461dc072 Initial revision
glantau
parents:
diff changeset
45 /* jpeg specific put_bits */
986e461dc072 Initial revision
glantau
parents:
diff changeset
46 void jput_bits(PutBitContext *s, int n, unsigned int value);
986e461dc072 Initial revision
glantau
parents:
diff changeset
47 void jflush_put_bits(PutBitContext *s);
986e461dc072 Initial revision
glantau
parents:
diff changeset
48
986e461dc072 Initial revision
glantau
parents:
diff changeset
49 /* bit input */
986e461dc072 Initial revision
glantau
parents:
diff changeset
50
986e461dc072 Initial revision
glantau
parents:
diff changeset
51 typedef struct GetBitContext {
20
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
52 UINT32 bit_buf;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
53 int bit_cnt;
20
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
54 UINT8 *buf, *buf_ptr, *buf_end;
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
55 } GetBitContext;
986e461dc072 Initial revision
glantau
parents:
diff changeset
56
986e461dc072 Initial revision
glantau
parents:
diff changeset
57 typedef struct VLC {
986e461dc072 Initial revision
glantau
parents:
diff changeset
58 int bits;
986e461dc072 Initial revision
glantau
parents:
diff changeset
59 INT16 *table_codes;
986e461dc072 Initial revision
glantau
parents:
diff changeset
60 INT8 *table_bits;
986e461dc072 Initial revision
glantau
parents:
diff changeset
61 int table_size, table_allocated;
986e461dc072 Initial revision
glantau
parents:
diff changeset
62 } VLC;
986e461dc072 Initial revision
glantau
parents:
diff changeset
63
986e461dc072 Initial revision
glantau
parents:
diff changeset
64 void init_get_bits(GetBitContext *s,
986e461dc072 Initial revision
glantau
parents:
diff changeset
65 UINT8 *buffer, int buffer_size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
66
20
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
67 unsigned int get_bits_long(GetBitContext *s, int n);
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
68
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
69 static inline unsigned int get_bits(GetBitContext *s, int n){
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
70 if(s->bit_cnt>=n){
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
71 /* most common case here */
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
72 unsigned int val = s->bit_buf >> (32 - n);
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
73 s->bit_buf <<= n;
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
74 s->bit_cnt -= n;
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
75 #ifdef STATS
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
76 st_bit_counts[st_current_index] += n;
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
77 #endif
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
78 return val;
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
79 }
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
80 return get_bits_long(s,n);
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
81 }
907b67420d84 inlineing common case of get_bits() -> gives 2speedup. more optim coming soon...
arpi_esp
parents: 10
diff changeset
82
21
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
83 static inline unsigned int get_bits1(GetBitContext *s){
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
84 if(s->bit_cnt>0){
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
85 /* most common case here */
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
86 unsigned int val = s->bit_buf >> 31;
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
87 s->bit_buf <<= 1;
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
88 s->bit_cnt--;
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
89 #ifdef STATS
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
90 st_bit_counts[st_current_index]++;
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
91 #endif
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
92 return val;
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
93 }
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
94 return get_bits_long(s,1);
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
95 }
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
96
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
97 static inline void skip_bits(GetBitContext *s, int n){
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
98 if(s->bit_cnt>=n){
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
99 /* most common case here */
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
100 s->bit_buf <<= n;
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
101 s->bit_cnt -= n;
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
102 #ifdef STATS
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
103 st_bit_counts[st_current_index] += n;
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
104 #endif
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
105 } else {
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
106 get_bits_long(s,n);
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
107 }
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
108 }
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
109
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
110 static inline void skip_bits1(GetBitContext *s){
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
111 if(s->bit_cnt>0){
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
112 /* most common case here */
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
113 s->bit_buf <<= 1;
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
114 s->bit_cnt--;
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
115 #ifdef STATS
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
116 st_bit_counts[st_current_index]++;
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
117 #endif
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
118 } else {
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
119 get_bits_long(s,1);
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
120 }
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
121 }
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
122
20e680e7a490 get_bits() specialization, gives 4\speedup
arpi_esp
parents: 20
diff changeset
123
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
124 void align_get_bits(GetBitContext *s);
986e461dc072 Initial revision
glantau
parents:
diff changeset
125 int init_vlc(VLC *vlc, int nb_bits, int nb_codes,
986e461dc072 Initial revision
glantau
parents:
diff changeset
126 const void *bits, int bits_wrap, int bits_size,
986e461dc072 Initial revision
glantau
parents:
diff changeset
127 const void *codes, int codes_wrap, int codes_size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
128 void free_vlc(VLC *vlc);
986e461dc072 Initial revision
glantau
parents:
diff changeset
129 int get_vlc(GetBitContext *s, VLC *vlc);
986e461dc072 Initial revision
glantau
parents:
diff changeset
130
986e461dc072 Initial revision
glantau
parents:
diff changeset
131 /* macro to go faster */
986e461dc072 Initial revision
glantau
parents:
diff changeset
132 /* n must be <= 24 */
986e461dc072 Initial revision
glantau
parents:
diff changeset
133 /* XXX: optimize buffer end test */
986e461dc072 Initial revision
glantau
parents:
diff changeset
134 #define SHOW_BITS(s, val, n)\
986e461dc072 Initial revision
glantau
parents:
diff changeset
135 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
136 if (bit_cnt < n && buf_ptr < (s)->buf_end) {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
137 bit_buf |= *buf_ptr++ << (24 - bit_cnt);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
138 bit_cnt += 8;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
139 if (bit_cnt < n && buf_ptr < (s)->buf_end) {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
140 bit_buf |= *buf_ptr++ << (24 - bit_cnt);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
141 bit_cnt += 8;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
142 if (bit_cnt < n && buf_ptr < (s)->buf_end) {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
143 bit_buf |= *buf_ptr++ << (24 - bit_cnt);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
144 bit_cnt += 8;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
145 }\
986e461dc072 Initial revision
glantau
parents:
diff changeset
146 }\
986e461dc072 Initial revision
glantau
parents:
diff changeset
147 }\
986e461dc072 Initial revision
glantau
parents:
diff changeset
148 val = bit_buf >> (32 - n);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
149 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
150
986e461dc072 Initial revision
glantau
parents:
diff changeset
151 /* SHOW_BITS with n1 >= n must be been done before */
986e461dc072 Initial revision
glantau
parents:
diff changeset
152 #define FLUSH_BITS(n)\
986e461dc072 Initial revision
glantau
parents:
diff changeset
153 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
154 bit_buf <<= n;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
155 bit_cnt -= n;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
156 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
157
986e461dc072 Initial revision
glantau
parents:
diff changeset
158 #define SAVE_BITS(s) \
986e461dc072 Initial revision
glantau
parents:
diff changeset
159 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
160 bit_cnt = (s)->bit_cnt;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
161 bit_buf = (s)->bit_buf;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
162 buf_ptr = (s)->buf_ptr;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
163 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
164
986e461dc072 Initial revision
glantau
parents:
diff changeset
165 #define RESTORE_BITS(s) \
986e461dc072 Initial revision
glantau
parents:
diff changeset
166 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
167 (s)->buf_ptr = buf_ptr;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
168 (s)->bit_buf = bit_buf;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
169 (s)->bit_cnt = bit_cnt;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
170 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
171
986e461dc072 Initial revision
glantau
parents:
diff changeset
172 /* define it to include statistics code (useful only for optimizing
986e461dc072 Initial revision
glantau
parents:
diff changeset
173 codec efficiency */
986e461dc072 Initial revision
glantau
parents:
diff changeset
174 //#define STATS
986e461dc072 Initial revision
glantau
parents:
diff changeset
175
986e461dc072 Initial revision
glantau
parents:
diff changeset
176 #ifdef STATS
986e461dc072 Initial revision
glantau
parents:
diff changeset
177
986e461dc072 Initial revision
glantau
parents:
diff changeset
178 enum {
986e461dc072 Initial revision
glantau
parents:
diff changeset
179 ST_UNKNOWN,
986e461dc072 Initial revision
glantau
parents:
diff changeset
180 ST_DC,
986e461dc072 Initial revision
glantau
parents:
diff changeset
181 ST_INTRA_AC,
986e461dc072 Initial revision
glantau
parents:
diff changeset
182 ST_INTER_AC,
986e461dc072 Initial revision
glantau
parents:
diff changeset
183 ST_INTRA_MB,
986e461dc072 Initial revision
glantau
parents:
diff changeset
184 ST_INTER_MB,
986e461dc072 Initial revision
glantau
parents:
diff changeset
185 ST_MV,
986e461dc072 Initial revision
glantau
parents:
diff changeset
186 ST_NB,
986e461dc072 Initial revision
glantau
parents:
diff changeset
187 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
188
986e461dc072 Initial revision
glantau
parents:
diff changeset
189 extern int st_current_index;
986e461dc072 Initial revision
glantau
parents:
diff changeset
190 extern unsigned int st_bit_counts[ST_NB];
986e461dc072 Initial revision
glantau
parents:
diff changeset
191 extern unsigned int st_out_bit_counts[ST_NB];
986e461dc072 Initial revision
glantau
parents:
diff changeset
192
986e461dc072 Initial revision
glantau
parents:
diff changeset
193 void print_stats(void);
986e461dc072 Initial revision
glantau
parents:
diff changeset
194 #endif
986e461dc072 Initial revision
glantau
parents:
diff changeset
195
986e461dc072 Initial revision
glantau
parents:
diff changeset
196 /* misc math functions */
986e461dc072 Initial revision
glantau
parents:
diff changeset
197
986e461dc072 Initial revision
glantau
parents:
diff changeset
198 extern inline int log2(unsigned int v)
986e461dc072 Initial revision
glantau
parents:
diff changeset
199 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
200 int n;
986e461dc072 Initial revision
glantau
parents:
diff changeset
201
986e461dc072 Initial revision
glantau
parents:
diff changeset
202 n = 0;
986e461dc072 Initial revision
glantau
parents:
diff changeset
203 if (v & 0xffff0000) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
204 v >>= 16;
986e461dc072 Initial revision
glantau
parents:
diff changeset
205 n += 16;
986e461dc072 Initial revision
glantau
parents:
diff changeset
206 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
207 if (v & 0xff00) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
208 v >>= 8;
986e461dc072 Initial revision
glantau
parents:
diff changeset
209 n += 8;
986e461dc072 Initial revision
glantau
parents:
diff changeset
210 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
211 if (v & 0xf0) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
212 v >>= 4;
986e461dc072 Initial revision
glantau
parents:
diff changeset
213 n += 4;
986e461dc072 Initial revision
glantau
parents:
diff changeset
214 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
215 if (v & 0xc) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
216 v >>= 2;
986e461dc072 Initial revision
glantau
parents:
diff changeset
217 n += 2;
986e461dc072 Initial revision
glantau
parents:
diff changeset
218 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
219 if (v & 0x2) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
220 n++;
986e461dc072 Initial revision
glantau
parents:
diff changeset
221 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
222 return n;
986e461dc072 Initial revision
glantau
parents:
diff changeset
223 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
224
986e461dc072 Initial revision
glantau
parents:
diff changeset
225 /* memory */
986e461dc072 Initial revision
glantau
parents:
diff changeset
226 void *av_mallocz(int size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
227
986e461dc072 Initial revision
glantau
parents:
diff changeset
228 #endif