[svn] / branches / dev-api-4 / xvidcore / vfw / src / config.h Repository:
ViewVC logotype

Annotation of /branches/dev-api-4/xvidcore/vfw/src/config.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1017 - (view) (download)

1 : suxen_drol 889 #ifndef _CONFIG_H_
2 :     #define _CONFIG_H_
3 :    
4 :     #include <windows.h>
5 : suxen_drol 1017 #include "vfwext.h"
6 : suxen_drol 889
7 : suxen_drol 983 extern HINSTANCE g_hInst;
8 : suxen_drol 889
9 :    
10 :     /* small hack */
11 :     #ifndef IDC_HAND
12 :     #define IDC_HAND MAKEINTRESOURCE(32649)
13 :     #endif
14 :    
15 :     /* one kilobit */
16 :     #define CONFIG_KBPS 1000
17 :    
18 : suxen_drol 1017 /* min/max bitrate when not specified by profile */
19 :     #define DEFAULT_MIN_KBPS 16
20 :     #define DEFAULT_MAX_KBPS 10000
21 :    
22 :    
23 : suxen_drol 889 /* registry stuff */
24 :     #define XVID_REG_KEY HKEY_CURRENT_USER
25 :     #define XVID_REG_PARENT "Software\\GNU"
26 :     #define XVID_REG_CHILD "XviD"
27 :     #define XVID_REG_CLASS "config"
28 :    
29 :     #define XVID_BUILD __TIME__ ", " __DATE__
30 :     #define XVID_WEBSITE "http://www.xvid.org/"
31 :     #define XVID_SPECIAL_BUILD "(Vanilla CVS Build)"
32 :    
33 :     /* constants */
34 : suxen_drol 983 #define CONFIG_2PASS_FILE "\\video.pass"
35 : suxen_drol 889
36 :     /* codec modes */
37 : suxen_drol 1017 #define RC_MODE_1PASS 0
38 :     #define RC_MODE_2PASS1 1
39 :     #define RC_MODE_2PASS2 2
40 :     #define RC_MODE_NULL 3
41 : suxen_drol 889
42 : suxen_drol 1017 #define RC_ZONE_WEIGHT 0
43 :     #define RC_ZONE_QUANT 1
44 :    
45 : suxen_drol 889 /* vhq modes */
46 :     #define VHQ_OFF 0
47 :     #define VHQ_MODE_DECISION 1
48 :     #define VHQ_LIMITED_SEARCH 2
49 :     #define VHQ_MEDIUM_SEARCH 3
50 :     #define VHQ_WIDE_SEARCH 4
51 :    
52 : suxen_drol 983 /* quantizer modes */
53 :     #define QUANT_MODE_H263 0
54 :     #define QUANT_MODE_MPEG 1
55 :     #define QUANT_MODE_CUSTOM 2
56 : suxen_drol 889
57 :    
58 : suxen_drol 1017 #define MAX_ZONES 64
59 : suxen_drol 889 typedef struct
60 :     {
61 : suxen_drol 1017 int frame;
62 :    
63 :     int mode;
64 :     int weight;
65 :     int quant;
66 :     /* overrides: when ==MODIFIER_USE_DEFAULT use default/global setting */
67 :     unsigned int greyscale;
68 :     unsigned int chroma_opt;
69 :     unsigned int bvop_threshold;
70 :     } zone_t;
71 :    
72 :    
73 :     typedef struct
74 :     {
75 : suxen_drol 889 /********** ATTENTION **********/
76 :     int mode; // Vidomi directly accesses these vars
77 : suxen_drol 1017 int bitrate; //
78 : suxen_drol 889 int desired_size; // please try to avoid modifications here
79 : suxen_drol 983 char stats[MAX_PATH]; //
80 : suxen_drol 889 /*******************************/
81 :    
82 : suxen_drol 1017 /* profile */
83 : suxen_drol 983 char profile_name[MAX_PATH];
84 : suxen_drol 1017 int profile; /* used internally; *not* written to registry */
85 : suxen_drol 983
86 : suxen_drol 1017 int quant_type;
87 :     BYTE qmatrix_intra[64];
88 :     BYTE qmatrix_inter[64];
89 : suxen_drol 889 int lum_masking;
90 :     int interlacing;
91 :     int qpel;
92 :     int gmc;
93 : suxen_drol 1017 int reduced_resolution;
94 : suxen_drol 983 int use_bvop;
95 : suxen_drol 889 int max_bframes;
96 :     int bquant_ratio;
97 :     int bquant_offset;
98 :     int packed;
99 : suxen_drol 983 int closed_gov;
100 : suxen_drol 889
101 : suxen_drol 1017 /* zones */
102 :     int num_zones;
103 :     zone_t zones[MAX_ZONES];
104 :     int cur_zone; /* used internally; *not* written to registry */
105 : suxen_drol 889
106 : suxen_drol 1017 /* single pass */
107 :     int rc_reaction_delay_factor;
108 :     int rc_averaging_period;
109 :     int rc_buffer;
110 :    
111 :     /* 2pass2 */
112 : suxen_drol 889 int keyframe_boost;
113 :     int kftreshold;
114 :     int kfreduction;
115 :     int discard1pass;
116 :     int curve_compression_high;
117 :     int curve_compression_low;
118 :     int use_alt_curve;
119 :     int alt_curve_use_auto;
120 :     int alt_curve_auto_str;
121 :     int alt_curve_use_auto_bonus_bias;
122 :     int alt_curve_bonus_bias;
123 :     int alt_curve_type;
124 :     int alt_curve_high_dist;
125 :     int alt_curve_low_dist;
126 :     int alt_curve_min_rel_qual;
127 :     int twopass_max_overflow_improvement;
128 :     int twopass_max_overflow_degradation;
129 :     int bitrate_payback_delay;
130 :     int bitrate_payback_method;
131 :    
132 : suxen_drol 1017 /* motion */
133 :    
134 :     int motion_search;
135 :     int vhq_mode;
136 :     int chromame;
137 :     int max_key_interval;
138 :     int min_key_interval;
139 : suxen_drol 889 int frame_drop_ratio;
140 :    
141 : suxen_drol 1017 /* quant */
142 :     int min_iquant;
143 :     int max_iquant;
144 :     int min_pquant;
145 :     int max_pquant;
146 :     int min_bquant;
147 :     int max_bquant;
148 :     int trellis_quant;
149 : suxen_drol 889
150 : suxen_drol 1017 /* debug */
151 :     int num_threads;
152 :     int fourcc_used;
153 :     int debug;
154 : suxen_drol 889
155 :     DWORD cpu;
156 : suxen_drol 1017
157 :     /* internal */
158 :     int ci_valid;
159 :     VFWEXT_CONFIGURE_INFO_T ci;
160 :    
161 : suxen_drol 889 BOOL save;
162 :     } CONFIG;
163 :    
164 :     typedef struct PROPSHEETINFO
165 :     {
166 : suxen_drol 983 int idd;
167 : suxen_drol 889 CONFIG * config;
168 :     } PROPSHEETINFO;
169 :    
170 :     typedef struct REG_INT
171 :     {
172 :     char* reg_value;
173 :     int* config_int;
174 :     int def;
175 :     } REG_INT;
176 :    
177 :     typedef struct REG_STR
178 :     {
179 :     char* reg_value;
180 :     char* config_str;
181 :     char* def;
182 :     } REG_STR;
183 :    
184 : suxen_drol 983
185 : suxen_drol 1017 #define PROFILE_ADAPTQUANT 0x00000001
186 :     #define PROFILE_BVOP 0x00000002
187 :     #define PROFILE_MPEGQUANT 0x00000004
188 :     #define PROFILE_INTERLACE 0x00000008
189 :     #define PROFILE_QPEL 0x00000010
190 :     #define PROFILE_GMC 0x00000020
191 :     #define PROFILE_REDUCED 0x00000040 /* dynamic resolution conversion */
192 :    
193 :     #define PROFILE_AS (PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_MPEGQUANT|PROFILE_INTERLACE|PROFILE_QPEL|PROFILE_GMC)
194 :     #define PROFILE_ARTS (PROFILE_ADAPTQUANT|PROFILE_REDUCED)
195 :    
196 :    
197 :     typedef struct
198 :     {
199 :     char * name;
200 :     int id; /* mpeg-4 profile id; iso/iec 14496-2:2001 table G-1 */
201 :     int width;
202 :     int height;
203 :     int fps;
204 :     int max_objects;
205 :     int total_vmv_buffer_sz; /* macroblock memory; when BVOPS=false, vmv = 2*vcv; when BVOPS=true, vmv = 3*vcv*/
206 :     int max_vmv_buffer_sz; /* max macroblocks per vop */
207 :     int vcv_decoder_rate; /* macroblocks decoded per second */
208 :     int max_acpred_mbs; /* percentage */
209 :     int max_vbv_size; /* max vbv size (bits) 16368 bits */
210 :     int max_video_packet_length; /* bits */
211 :     int max_bitrate; /* kbits/s */
212 :     unsigned int flags;
213 :     } profile_t;
214 :    
215 :    
216 :     extern const profile_t profiles[];
217 :    
218 :    
219 : suxen_drol 983 void config_reg_get(CONFIG * config);
220 :     void config_reg_set(CONFIG * config);
221 :    
222 : suxen_drol 889 BOOL CALLBACK main_proc(HWND, UINT, WPARAM, LPARAM);
223 :     BOOL CALLBACK about_proc(HWND, UINT, WPARAM, LPARAM);
224 :    
225 : suxen_drol 983
226 : suxen_drol 889 #endif /* _CONFIG_H_ */

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4