annotate common.h @ 10:f439e6867cac libavcodec

added HAVE_AV_CONFIG_H
author glantau
date Mon, 30 Jul 2001 23:22:07 +0000
parents 2e2c46c87460
children 907b67420d84
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 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
28 UINT8 *buf, *buf_ptr, *buf_end;
986e461dc072 Initial revision
glantau
parents:
diff changeset
29 int bit_cnt;
986e461dc072 Initial revision
glantau
parents:
diff changeset
30 UINT32 bit_buf;
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 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
52 UINT8 *buf, *buf_ptr, *buf_end;
986e461dc072 Initial revision
glantau
parents:
diff changeset
53 int bit_cnt;
986e461dc072 Initial revision
glantau
parents:
diff changeset
54 UINT32 bit_buf;
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
986e461dc072 Initial revision
glantau
parents:
diff changeset
67 unsigned int get_bits(GetBitContext *s, int n);
986e461dc072 Initial revision
glantau
parents:
diff changeset
68 void align_get_bits(GetBitContext *s);
986e461dc072 Initial revision
glantau
parents:
diff changeset
69 int init_vlc(VLC *vlc, int nb_bits, int nb_codes,
986e461dc072 Initial revision
glantau
parents:
diff changeset
70 const void *bits, int bits_wrap, int bits_size,
986e461dc072 Initial revision
glantau
parents:
diff changeset
71 const void *codes, int codes_wrap, int codes_size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
72 void free_vlc(VLC *vlc);
986e461dc072 Initial revision
glantau
parents:
diff changeset
73 int get_vlc(GetBitContext *s, VLC *vlc);
986e461dc072 Initial revision
glantau
parents:
diff changeset
74
986e461dc072 Initial revision
glantau
parents:
diff changeset
75 /* macro to go faster */
986e461dc072 Initial revision
glantau
parents:
diff changeset
76 /* n must be <= 24 */
986e461dc072 Initial revision
glantau
parents:
diff changeset
77 /* XXX: optimize buffer end test */
986e461dc072 Initial revision
glantau
parents:
diff changeset
78 #define SHOW_BITS(s, val, n)\
986e461dc072 Initial revision
glantau
parents:
diff changeset
79 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
80 if (bit_cnt < n && buf_ptr < (s)->buf_end) {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
81 bit_buf |= *buf_ptr++ << (24 - bit_cnt);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
82 bit_cnt += 8;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
83 if (bit_cnt < n && buf_ptr < (s)->buf_end) {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
84 bit_buf |= *buf_ptr++ << (24 - bit_cnt);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
85 bit_cnt += 8;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
86 if (bit_cnt < n && buf_ptr < (s)->buf_end) {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
87 bit_buf |= *buf_ptr++ << (24 - bit_cnt);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
88 bit_cnt += 8;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
89 }\
986e461dc072 Initial revision
glantau
parents:
diff changeset
90 }\
986e461dc072 Initial revision
glantau
parents:
diff changeset
91 }\
986e461dc072 Initial revision
glantau
parents:
diff changeset
92 val = bit_buf >> (32 - n);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
93 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
94
986e461dc072 Initial revision
glantau
parents:
diff changeset
95 /* SHOW_BITS with n1 >= n must be been done before */
986e461dc072 Initial revision
glantau
parents:
diff changeset
96 #define FLUSH_BITS(n)\
986e461dc072 Initial revision
glantau
parents:
diff changeset
97 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
98 bit_buf <<= n;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
99 bit_cnt -= n;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
100 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
101
986e461dc072 Initial revision
glantau
parents:
diff changeset
102 #define SAVE_BITS(s) \
986e461dc072 Initial revision
glantau
parents:
diff changeset
103 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
104 bit_cnt = (s)->bit_cnt;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
105 bit_buf = (s)->bit_buf;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
106 buf_ptr = (s)->buf_ptr;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
107 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
108
986e461dc072 Initial revision
glantau
parents:
diff changeset
109 #define RESTORE_BITS(s) \
986e461dc072 Initial revision
glantau
parents:
diff changeset
110 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
111 (s)->buf_ptr = buf_ptr;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
112 (s)->bit_buf = bit_buf;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
113 (s)->bit_cnt = bit_cnt;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
114 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
115
986e461dc072 Initial revision
glantau
parents:
diff changeset
116 /* define it to include statistics code (useful only for optimizing
986e461dc072 Initial revision
glantau
parents:
diff changeset
117 codec efficiency */
986e461dc072 Initial revision
glantau
parents:
diff changeset
118 //#define STATS
986e461dc072 Initial revision
glantau
parents:
diff changeset
119
986e461dc072 Initial revision
glantau
parents:
diff changeset
120 #ifdef STATS
986e461dc072 Initial revision
glantau
parents:
diff changeset
121
986e461dc072 Initial revision
glantau
parents:
diff changeset
122 enum {
986e461dc072 Initial revision
glantau
parents:
diff changeset
123 ST_UNKNOWN,
986e461dc072 Initial revision
glantau
parents:
diff changeset
124 ST_DC,
986e461dc072 Initial revision
glantau
parents:
diff changeset
125 ST_INTRA_AC,
986e461dc072 Initial revision
glantau
parents:
diff changeset
126 ST_INTER_AC,
986e461dc072 Initial revision
glantau
parents:
diff changeset
127 ST_INTRA_MB,
986e461dc072 Initial revision
glantau
parents:
diff changeset
128 ST_INTER_MB,
986e461dc072 Initial revision
glantau
parents:
diff changeset
129 ST_MV,
986e461dc072 Initial revision
glantau
parents:
diff changeset
130 ST_NB,
986e461dc072 Initial revision
glantau
parents:
diff changeset
131 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
132
986e461dc072 Initial revision
glantau
parents:
diff changeset
133 extern int st_current_index;
986e461dc072 Initial revision
glantau
parents:
diff changeset
134 extern unsigned int st_bit_counts[ST_NB];
986e461dc072 Initial revision
glantau
parents:
diff changeset
135 extern unsigned int st_out_bit_counts[ST_NB];
986e461dc072 Initial revision
glantau
parents:
diff changeset
136
986e461dc072 Initial revision
glantau
parents:
diff changeset
137 void print_stats(void);
986e461dc072 Initial revision
glantau
parents:
diff changeset
138 #endif
986e461dc072 Initial revision
glantau
parents:
diff changeset
139
986e461dc072 Initial revision
glantau
parents:
diff changeset
140 /* misc math functions */
986e461dc072 Initial revision
glantau
parents:
diff changeset
141
986e461dc072 Initial revision
glantau
parents:
diff changeset
142 extern inline int log2(unsigned int v)
986e461dc072 Initial revision
glantau
parents:
diff changeset
143 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
144 int n;
986e461dc072 Initial revision
glantau
parents:
diff changeset
145
986e461dc072 Initial revision
glantau
parents:
diff changeset
146 n = 0;
986e461dc072 Initial revision
glantau
parents:
diff changeset
147 if (v & 0xffff0000) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
148 v >>= 16;
986e461dc072 Initial revision
glantau
parents:
diff changeset
149 n += 16;
986e461dc072 Initial revision
glantau
parents:
diff changeset
150 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
151 if (v & 0xff00) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
152 v >>= 8;
986e461dc072 Initial revision
glantau
parents:
diff changeset
153 n += 8;
986e461dc072 Initial revision
glantau
parents:
diff changeset
154 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
155 if (v & 0xf0) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
156 v >>= 4;
986e461dc072 Initial revision
glantau
parents:
diff changeset
157 n += 4;
986e461dc072 Initial revision
glantau
parents:
diff changeset
158 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
159 if (v & 0xc) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
160 v >>= 2;
986e461dc072 Initial revision
glantau
parents:
diff changeset
161 n += 2;
986e461dc072 Initial revision
glantau
parents:
diff changeset
162 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
163 if (v & 0x2) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
164 n++;
986e461dc072 Initial revision
glantau
parents:
diff changeset
165 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
166 return n;
986e461dc072 Initial revision
glantau
parents:
diff changeset
167 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
168
986e461dc072 Initial revision
glantau
parents:
diff changeset
169 /* memory */
986e461dc072 Initial revision
glantau
parents:
diff changeset
170 void *av_mallocz(int size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
171
986e461dc072 Initial revision
glantau
parents:
diff changeset
172 #endif