[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 1910 - (view) (download)

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

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