[svn] / trunk / xvidcore / vfw / src / config.h Repository:
ViewVC logotype

Annotation of /trunk/xvidcore/vfw/src/config.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1650 - (view) (download)

1 : edgomez 1382 /*****************************************************************************
2 :     *
3 :     * XVID MPEG-4 VIDEO CODEC
4 :     * - VFW configuration header -
5 :     *
6 :     * Copyright(C) 2002-2003 Anonymous <xvid-devel@xvid.org>
7 :     *
8 :     * This program is free software ; you can redistribute it and/or modify
9 :     * it under the terms of the GNU General Public License as published by
10 :     * the Free Software Foundation ; either version 2 of the License, or
11 :     * (at your option) any later version.
12 :     *
13 :     * This program is distributed in the hope that it will be useful,
14 :     * but WITHOUT ANY WARRANTY ; without even the implied warranty of
15 :     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 :     * GNU General Public License for more details.
17 :     *
18 :     * You should have received a copy of the GNU General Public License
19 :     * along with this program ; if not, write to the Free Software
20 :     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 :     *
22 : Isibaar 1650 * $Id: config.h,v 1.9 2005-10-22 22:32:44 Isibaar Exp $
23 : edgomez 1382 *
24 :     ****************************************************************************/
25 :     #ifndef _CONFIG_H_
26 :     #define _CONFIG_H_
27 :    
28 :     #include <windows.h>
29 :     #include "vfwext.h"
30 :     #include <xvid.h>
31 :    
32 :     extern HINSTANCE g_hInst;
33 :    
34 :    
35 :     /* small hack */
36 :     #ifndef IDC_HAND
37 :     #define IDC_HAND MAKEINTRESOURCE(32649)
38 :     #endif
39 :    
40 :     /* one kilobit */
41 :     #define CONFIG_KBPS 1000
42 :    
43 :     /* min/max bitrate when not specified by profile */
44 :     #define DEFAULT_MIN_KBPS 16
45 :     #define DEFAULT_MAX_KBPS 10000
46 :     #define DEFAULT_QUANT 400
47 :    
48 :     /* registry stuff */
49 :     #define XVID_REG_KEY HKEY_CURRENT_USER
50 :     #define XVID_REG_PARENT "Software\\GNU"
51 :     #define XVID_REG_CHILD "XviD"
52 :     #define XVID_REG_CLASS "config"
53 :    
54 :     #define XVID_BUILD __TIME__ ", " __DATE__
55 :     #define XVID_WEBSITE "http://www.xvid.org/"
56 :     #define XVID_SPECIAL_BUILD "(Vanilla CVS Build)"
57 :    
58 :     /* constants */
59 :     #define CONFIG_2PASS_FILE "\\video.pass"
60 :    
61 :     /* codec modes */
62 :     #define RC_MODE_1PASS 0
63 :     #define RC_MODE_2PASS1 1
64 :     #define RC_MODE_2PASS2 2
65 :     #define RC_MODE_NULL 3
66 :    
67 :     #define RC_ZONE_WEIGHT 0
68 :     #define RC_ZONE_QUANT 1
69 :    
70 :     /* vhq modes */
71 :     #define VHQ_OFF 0
72 :     #define VHQ_MODE_DECISION 1
73 :     #define VHQ_LIMITED_SEARCH 2
74 :     #define VHQ_MEDIUM_SEARCH 3
75 :     #define VHQ_WIDE_SEARCH 4
76 :    
77 :     /* quantizer modes */
78 :     #define QUANT_MODE_H263 0
79 :     #define QUANT_MODE_MPEG 1
80 :     #define QUANT_MODE_CUSTOM 2
81 :    
82 :    
83 :     #define MAX_ZONES 64
84 :     typedef struct
85 :     {
86 :     int frame;
87 :    
88 :     int type;
89 :     int mode;
90 :     int weight;
91 :     int quant;
92 :    
93 :     unsigned int greyscale;
94 :     unsigned int chroma_opt;
95 :     unsigned int bvop_threshold;
96 : syskin 1588 unsigned int cartoon_mode;
97 : edgomez 1382 } zone_t;
98 :    
99 :    
100 : suxen_drol 1649 /* this structure represents a quality preset. it encapsulates
101 :     options from the motion and quantizer config pages. */
102 :     #define QUALITY_GENERAL_STRING "General purpose"
103 :     #define QUALITY_USER_STRING "(User defined)"
104 :     typedef struct {
105 :     char * name;
106 :     /* motion */
107 :     int motion_search;
108 :     int vhq_mode;
109 :     int vhq_bframe;
110 :     int chromame;
111 :     int turbo;
112 :     int max_key_interval;
113 :     int frame_drop_ratio;
114 :    
115 :     /* quant */
116 :     int min_iquant;
117 :     int max_iquant;
118 :     int min_pquant;
119 :     int max_pquant;
120 :     int min_bquant;
121 :     int max_bquant;
122 :     int trellis_quant;
123 :     } quality_t;
124 :    
125 :    
126 : edgomez 1382 typedef struct
127 :     {
128 :     /********** ATTENTION **********/
129 :     int mode; /* Vidomi directly accesses these vars */
130 :     int bitrate;
131 :     int desired_size; /* please try to avoid modifications here */
132 :     char stats[MAX_PATH];
133 :     /*******************************/
134 :     int use_2pass_bitrate; /* use bitrate for 2pass2 (instead of desired size) */
135 :     int desired_quant; /* for one-pass constant quant */
136 :    
137 :     /* profile */
138 :     char profile_name[MAX_PATH];
139 :     int profile; /* used internally; *not* written to registry */
140 :    
141 : suxen_drol 1649 /* quality preset */
142 :     char quality_name[MAX_PATH];
143 :     int quality; /* used internally; *not* written to registry */
144 :    
145 : edgomez 1382 int quant_type;
146 :     BYTE qmatrix_intra[64];
147 :     BYTE qmatrix_inter[64];
148 :     int lum_masking;
149 :     int interlacing;
150 : syskin 1487 int tff;
151 : edgomez 1382 int qpel;
152 :     int gmc;
153 :     int use_bvop;
154 :     int max_bframes;
155 :     int bquant_ratio;
156 :     int bquant_offset;
157 :     int packed;
158 :     int display_aspect_ratio; /* aspect ratio */
159 :     int ar_x, ar_y; /* picture aspect ratio */
160 :     int par_x, par_y; /* custom pixel aspect ratio */
161 :     int ar_mode; /* picture/pixel AR */
162 :    
163 :     /* zones */
164 :     int num_zones;
165 :     zone_t zones[MAX_ZONES];
166 :     int cur_zone; /* used internally; *not* written to registry */
167 :    
168 :     /* single pass */
169 :     int rc_reaction_delay_factor;
170 :     int rc_averaging_period;
171 :     int rc_buffer;
172 :    
173 :     /* 2pass1 */
174 :     int discard1pass;
175 :    
176 :     /* 2pass2 */
177 :     int keyframe_boost;
178 :     int kfthreshold;
179 :     int kfreduction;
180 :     int curve_compression_high;
181 :     int curve_compression_low;
182 :     int overflow_control_strength;
183 :     int twopass_max_overflow_improvement;
184 :     int twopass_max_overflow_degradation;
185 :    
186 :     /* bitrate calculator */
187 :     int target_size;
188 :     int subtitle_size;
189 :     int container_type;
190 :     int hours;
191 :     int minutes;
192 :     int seconds;
193 :     int fps;
194 :     int audio_mode;
195 :     int audio_type;
196 :     int audio_rate;
197 :     int audio_size;
198 :    
199 : suxen_drol 1649 /* user defined quality settings */
200 :     quality_t quality_user;
201 : edgomez 1382
202 :     /* debug */
203 :     int num_threads;
204 :     int fourcc_used;
205 :     int vop_debug;
206 :     int debug;
207 :     int display_status;
208 :     int full1pass;
209 :    
210 :     DWORD cpu;
211 :    
212 :     /* internal */
213 :     int ci_valid;
214 :     VFWEXT_CONFIGURE_INFO_T ci;
215 :    
216 :     BOOL save;
217 :     } CONFIG;
218 :    
219 :     typedef struct PROPSHEETINFO
220 :     {
221 :     int idd;
222 :     CONFIG * config;
223 :     } PROPSHEETINFO;
224 :    
225 :     typedef struct REG_INT
226 :     {
227 :     char* reg_value;
228 :     int* config_int;
229 :     int def;
230 :     } REG_INT;
231 :    
232 :     typedef struct REG_STR
233 :     {
234 :     char* reg_value;
235 :     char* config_str;
236 :     char* def;
237 :     } REG_STR;
238 :    
239 :    
240 :     #define PROFILE_ADAPTQUANT 0x00000001
241 :     #define PROFILE_BVOP 0x00000002
242 :     #define PROFILE_MPEGQUANT 0x00000004
243 :     #define PROFILE_INTERLACE 0x00000008
244 :     #define PROFILE_QPEL 0x00000010
245 :     #define PROFILE_GMC 0x00000020
246 : Isibaar 1650 #define PROFILE_4MV 0x00000040
247 :     #define PROFILE_EXTRA 0x00000080
248 : edgomez 1382
249 :    
250 :     static const int PARS[][2] = {
251 :     {1, 1},
252 :     {12, 11},
253 :     {10, 11},
254 :     {16, 11},
255 :     {40, 33},
256 :     {0, 0},
257 :     };
258 :    
259 :    
260 :    
261 :    
262 :     typedef struct
263 :     {
264 :     char * name;
265 :     int id; /* mpeg-4 profile id; iso/iec 14496-2:2001 table G-1 */
266 :     int width;
267 :     int height;
268 :     int fps;
269 :     int max_objects;
270 :     int total_vmv_buffer_sz; /* macroblock memory; when BVOPS=false, vmv = 2*vcv; when BVOPS=true, vmv = 3*vcv*/
271 :     int max_vmv_buffer_sz; /* max macroblocks per vop */
272 : Isibaar 1650 int vcv_decoder_rate; /* macroblocks decoded per second */
273 :     int max_acpred_mbs; /* percentage */
274 : edgomez 1382 int max_vbv_size; /* max vbv size (bits) 16368 bits */
275 : Isibaar 1650 int max_video_packet_length;/* bits */
276 : suxen_drol 1607 int max_bitrate; /* bits per second */
277 : Isibaar 1650 int vbv_peakrate; /* max bits over anyone second period; 0=don't care */
278 :     int xvid_max_bframes; /* xvid: max consecutive bframes */
279 : edgomez 1382 unsigned int flags;
280 :     } profile_t;
281 :    
282 :    
283 :     extern const profile_t profiles[];
284 :    
285 : suxen_drol 1649 extern const quality_t quality_table[];
286 :     extern const int quality_table_num; /* number of elements in quality table */
287 : edgomez 1382
288 : suxen_drol 1649
289 : edgomez 1382 void config_reg_get(CONFIG * config);
290 :     void config_reg_set(CONFIG * config);
291 :     void sort_zones(zone_t * zones, int zone_num, int * sel);
292 :    
293 :    
294 :     BOOL CALLBACK main_proc(HWND, UINT, WPARAM, LPARAM);
295 :     BOOL CALLBACK about_proc(HWND, UINT, WPARAM, LPARAM);
296 :    
297 :     #endif /* _CONFIG_H_ */

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