annotate common.h @ 2:2e2c46c87460 libavcodec

fixed config for direct mplayer build compatibility
author glantau
date Mon, 23 Jul 2001 20:06:54 +0000
parents 986e461dc072
children f439e6867cac
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
986e461dc072 Initial revision
glantau
parents:
diff changeset
4 #include "../config.h"
986e461dc072 Initial revision
glantau
parents:
diff changeset
5
2
2e2c46c87460 fixed config for direct mplayer build compatibility
glantau
parents: 0
diff changeset
6 #ifndef __WINE_WINDEF16_H
2e2c46c87460 fixed config for direct mplayer build compatibility
glantau
parents: 0
diff changeset
7 /* workaround for typedef conflict in MPlayer (wine typedefs) */
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
8 typedef unsigned short UINT16;
986e461dc072 Initial revision
glantau
parents:
diff changeset
9 typedef signed short INT16;
986e461dc072 Initial revision
glantau
parents:
diff changeset
10 #endif
986e461dc072 Initial revision
glantau
parents:
diff changeset
11
986e461dc072 Initial revision
glantau
parents:
diff changeset
12 typedef unsigned char UINT8;
986e461dc072 Initial revision
glantau
parents:
diff changeset
13 typedef unsigned int UINT32;
986e461dc072 Initial revision
glantau
parents:
diff changeset
14 typedef unsigned long long UINT64;
986e461dc072 Initial revision
glantau
parents:
diff changeset
15 typedef signed char INT8;
986e461dc072 Initial revision
glantau
parents:
diff changeset
16 typedef signed int INT32;
986e461dc072 Initial revision
glantau
parents:
diff changeset
17 typedef signed long long INT64;
986e461dc072 Initial revision
glantau
parents:
diff changeset
18
986e461dc072 Initial revision
glantau
parents:
diff changeset
19 /* bit output */
986e461dc072 Initial revision
glantau
parents:
diff changeset
20
986e461dc072 Initial revision
glantau
parents:
diff changeset
21 struct PutBitContext;
986e461dc072 Initial revision
glantau
parents:
diff changeset
22
986e461dc072 Initial revision
glantau
parents:
diff changeset
23 typedef void (*WriteDataFunc)(void *, UINT8 *, int);
986e461dc072 Initial revision
glantau
parents:
diff changeset
24
986e461dc072 Initial revision
glantau
parents:
diff changeset
25 typedef struct PutBitContext {
986e461dc072 Initial revision
glantau
parents:
diff changeset
26 UINT8 *buf, *buf_ptr, *buf_end;
986e461dc072 Initial revision
glantau
parents:
diff changeset
27 int bit_cnt;
986e461dc072 Initial revision
glantau
parents:
diff changeset
28 UINT32 bit_buf;
986e461dc072 Initial revision
glantau
parents:
diff changeset
29 long long data_out_size; /* in bytes */
986e461dc072 Initial revision
glantau
parents:
diff changeset
30 void *opaque;
986e461dc072 Initial revision
glantau
parents:
diff changeset
31 WriteDataFunc write_data;
986e461dc072 Initial revision
glantau
parents:
diff changeset
32 } PutBitContext;
986e461dc072 Initial revision
glantau
parents:
diff changeset
33
986e461dc072 Initial revision
glantau
parents:
diff changeset
34 void init_put_bits(PutBitContext *s,
986e461dc072 Initial revision
glantau
parents:
diff changeset
35 UINT8 *buffer, int buffer_size,
986e461dc072 Initial revision
glantau
parents:
diff changeset
36 void *opaque,
986e461dc072 Initial revision
glantau
parents:
diff changeset
37 void (*write_data)(void *, UINT8 *, int));
986e461dc072 Initial revision
glantau
parents:
diff changeset
38 void put_bits(PutBitContext *s, int n, unsigned int value);
986e461dc072 Initial revision
glantau
parents:
diff changeset
39 long long get_bit_count(PutBitContext *s);
986e461dc072 Initial revision
glantau
parents:
diff changeset
40 void align_put_bits(PutBitContext *s);
986e461dc072 Initial revision
glantau
parents:
diff changeset
41 void flush_put_bits(PutBitContext *s);
986e461dc072 Initial revision
glantau
parents:
diff changeset
42
986e461dc072 Initial revision
glantau
parents:
diff changeset
43 /* jpeg specific put_bits */
986e461dc072 Initial revision
glantau
parents:
diff changeset
44 void jput_bits(PutBitContext *s, int n, unsigned int value);
986e461dc072 Initial revision
glantau
parents:
diff changeset
45 void jflush_put_bits(PutBitContext *s);
986e461dc072 Initial revision
glantau
parents:
diff changeset
46
986e461dc072 Initial revision
glantau
parents:
diff changeset
47 /* bit input */
986e461dc072 Initial revision
glantau
parents:
diff changeset
48
986e461dc072 Initial revision
glantau
parents:
diff changeset
49 typedef struct GetBitContext {
986e461dc072 Initial revision
glantau
parents:
diff changeset
50 UINT8 *buf, *buf_ptr, *buf_end;
986e461dc072 Initial revision
glantau
parents:
diff changeset
51 int bit_cnt;
986e461dc072 Initial revision
glantau
parents:
diff changeset
52 UINT32 bit_buf;
986e461dc072 Initial revision
glantau
parents:
diff changeset
53 } GetBitContext;
986e461dc072 Initial revision
glantau
parents:
diff changeset
54
986e461dc072 Initial revision
glantau
parents:
diff changeset
55 typedef struct VLC {
986e461dc072 Initial revision
glantau
parents:
diff changeset
56 int bits;
986e461dc072 Initial revision
glantau
parents:
diff changeset
57 INT16 *table_codes;
986e461dc072 Initial revision
glantau
parents:
diff changeset
58 INT8 *table_bits;
986e461dc072 Initial revision
glantau
parents:
diff changeset
59 int table_size, table_allocated;
986e461dc072 Initial revision
glantau
parents:
diff changeset
60 } VLC;
986e461dc072 Initial revision
glantau
parents:
diff changeset
61
986e461dc072 Initial revision
glantau
parents:
diff changeset
62 void init_get_bits(GetBitContext *s,
986e461dc072 Initial revision
glantau
parents:
diff changeset
63 UINT8 *buffer, int buffer_size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
64
986e461dc072 Initial revision
glantau
parents:
diff changeset
65 unsigned int get_bits(GetBitContext *s, int n);
986e461dc072 Initial revision
glantau
parents:
diff changeset
66 void align_get_bits(GetBitContext *s);
986e461dc072 Initial revision
glantau
parents:
diff changeset
67 int init_vlc(VLC *vlc, int nb_bits, int nb_codes,
986e461dc072 Initial revision
glantau
parents:
diff changeset
68 const void *bits, int bits_wrap, int bits_size,
986e461dc072 Initial revision
glantau
parents:
diff changeset
69 const void *codes, int codes_wrap, int codes_size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
70 void free_vlc(VLC *vlc);
986e461dc072 Initial revision
glantau
parents:
diff changeset
71 int get_vlc(GetBitContext *s, VLC *vlc);
986e461dc072 Initial revision
glantau
parents:
diff changeset
72
986e461dc072 Initial revision
glantau
parents:
diff changeset
73 /* macro to go faster */
986e461dc072 Initial revision
glantau
parents:
diff changeset
74 /* n must be <= 24 */
986e461dc072 Initial revision
glantau
parents:
diff changeset
75 /* XXX: optimize buffer end test */
986e461dc072 Initial revision
glantau
parents:
diff changeset
76 #define SHOW_BITS(s, val, n)\
986e461dc072 Initial revision
glantau
parents:
diff changeset
77 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
78 if (bit_cnt < n && buf_ptr < (s)->buf_end) {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
79 bit_buf |= *buf_ptr++ << (24 - bit_cnt);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
80 bit_cnt += 8;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
81 if (bit_cnt < n && buf_ptr < (s)->buf_end) {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
82 bit_buf |= *buf_ptr++ << (24 - bit_cnt);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
83 bit_cnt += 8;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
84 if (bit_cnt < n && buf_ptr < (s)->buf_end) {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
85 bit_buf |= *buf_ptr++ << (24 - bit_cnt);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
86 bit_cnt += 8;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
87 }\
986e461dc072 Initial revision
glantau
parents:
diff changeset
88 }\
986e461dc072 Initial revision
glantau
parents:
diff changeset
89 }\
986e461dc072 Initial revision
glantau
parents:
diff changeset
90 val = bit_buf >> (32 - n);\
986e461dc072 Initial revision
glantau
parents:
diff changeset
91 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
92
986e461dc072 Initial revision
glantau
parents:
diff changeset
93 /* SHOW_BITS with n1 >= n must be been done before */
986e461dc072 Initial revision
glantau
parents:
diff changeset
94 #define FLUSH_BITS(n)\
986e461dc072 Initial revision
glantau
parents:
diff changeset
95 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
96 bit_buf <<= n;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
97 bit_cnt -= n;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
98 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
99
986e461dc072 Initial revision
glantau
parents:
diff changeset
100 #define SAVE_BITS(s) \
986e461dc072 Initial revision
glantau
parents:
diff changeset
101 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
102 bit_cnt = (s)->bit_cnt;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
103 bit_buf = (s)->bit_buf;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
104 buf_ptr = (s)->buf_ptr;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
105 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
106
986e461dc072 Initial revision
glantau
parents:
diff changeset
107 #define RESTORE_BITS(s) \
986e461dc072 Initial revision
glantau
parents:
diff changeset
108 {\
986e461dc072 Initial revision
glantau
parents:
diff changeset
109 (s)->buf_ptr = buf_ptr;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
110 (s)->bit_buf = bit_buf;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
111 (s)->bit_cnt = bit_cnt;\
986e461dc072 Initial revision
glantau
parents:
diff changeset
112 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
113
986e461dc072 Initial revision
glantau
parents:
diff changeset
114 /* define it to include statistics code (useful only for optimizing
986e461dc072 Initial revision
glantau
parents:
diff changeset
115 codec efficiency */
986e461dc072 Initial revision
glantau
parents:
diff changeset
116 //#define STATS
986e461dc072 Initial revision
glantau
parents:
diff changeset
117
986e461dc072 Initial revision
glantau
parents:
diff changeset
118 #ifdef STATS
986e461dc072 Initial revision
glantau
parents:
diff changeset
119
986e461dc072 Initial revision
glantau
parents:
diff changeset
120 enum {
986e461dc072 Initial revision
glantau
parents:
diff changeset
121 ST_UNKNOWN,
986e461dc072 Initial revision
glantau
parents:
diff changeset
122 ST_DC,
986e461dc072 Initial revision
glantau
parents:
diff changeset
123 ST_INTRA_AC,
986e461dc072 Initial revision
glantau
parents:
diff changeset
124 ST_INTER_AC,
986e461dc072 Initial revision
glantau
parents:
diff changeset
125 ST_INTRA_MB,
986e461dc072 Initial revision
glantau
parents:
diff changeset
126 ST_INTER_MB,
986e461dc072 Initial revision
glantau
parents:
diff changeset
127 ST_MV,
986e461dc072 Initial revision
glantau
parents:
diff changeset
128 ST_NB,
986e461dc072 Initial revision
glantau
parents:
diff changeset
129 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
130
986e461dc072 Initial revision
glantau
parents:
diff changeset
131 extern int st_current_index;
986e461dc072 Initial revision
glantau
parents:
diff changeset
132 extern unsigned int st_bit_counts[ST_NB];
986e461dc072 Initial revision
glantau
parents:
diff changeset
133 extern unsigned int st_out_bit_counts[ST_NB];
986e461dc072 Initial revision
glantau
parents:
diff changeset
134
986e461dc072 Initial revision
glantau
parents:
diff changeset
135 void print_stats(void);
986e461dc072 Initial revision
glantau
parents:
diff changeset
136 #endif
986e461dc072 Initial revision
glantau
parents:
diff changeset
137
986e461dc072 Initial revision
glantau
parents:
diff changeset
138 /* misc math functions */
986e461dc072 Initial revision
glantau
parents:
diff changeset
139
986e461dc072 Initial revision
glantau
parents:
diff changeset
140 extern inline int log2(unsigned int v)
986e461dc072 Initial revision
glantau
parents:
diff changeset
141 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
142 int n;
986e461dc072 Initial revision
glantau
parents:
diff changeset
143
986e461dc072 Initial revision
glantau
parents:
diff changeset
144 n = 0;
986e461dc072 Initial revision
glantau
parents:
diff changeset
145 if (v & 0xffff0000) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
146 v >>= 16;
986e461dc072 Initial revision
glantau
parents:
diff changeset
147 n += 16;
986e461dc072 Initial revision
glantau
parents:
diff changeset
148 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
149 if (v & 0xff00) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
150 v >>= 8;
986e461dc072 Initial revision
glantau
parents:
diff changeset
151 n += 8;
986e461dc072 Initial revision
glantau
parents:
diff changeset
152 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
153 if (v & 0xf0) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
154 v >>= 4;
986e461dc072 Initial revision
glantau
parents:
diff changeset
155 n += 4;
986e461dc072 Initial revision
glantau
parents:
diff changeset
156 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
157 if (v & 0xc) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
158 v >>= 2;
986e461dc072 Initial revision
glantau
parents:
diff changeset
159 n += 2;
986e461dc072 Initial revision
glantau
parents:
diff changeset
160 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
161 if (v & 0x2) {
986e461dc072 Initial revision
glantau
parents:
diff changeset
162 n++;
986e461dc072 Initial revision
glantau
parents:
diff changeset
163 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
164 return n;
986e461dc072 Initial revision
glantau
parents:
diff changeset
165 }
986e461dc072 Initial revision
glantau
parents:
diff changeset
166
986e461dc072 Initial revision
glantau
parents:
diff changeset
167 /* memory */
986e461dc072 Initial revision
glantau
parents:
diff changeset
168 void *av_mallocz(int size);
986e461dc072 Initial revision
glantau
parents:
diff changeset
169
986e461dc072 Initial revision
glantau
parents:
diff changeset
170 #endif