[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 1917 - (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 1917 * $Id: config.h,v 1.17 2010-12-22 16:52:12 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 : Isibaar 1915 char * name;
107 :     /* motion */
108 :     int motion_search;
109 : suxen_drol 1649 int vhq_mode;
110 : Isibaar 1914 int vhq_metric;
111 : suxen_drol 1649 int vhq_bframe;
112 :     int chromame;
113 :     int turbo;
114 :     int max_key_interval;
115 :     int frame_drop_ratio;
116 :    
117 :     /* quant */
118 :     int min_iquant;
119 :     int max_iquant;
120 :     int min_pquant;
121 :     int max_pquant;
122 :     int min_bquant;
123 :     int max_bquant;
124 :     int trellis_quant;
125 :     } quality_t;
126 :    
127 :    
128 : edgomez 1382 typedef struct
129 :     {
130 :     /********** ATTENTION **********/
131 :     int mode; /* Vidomi directly accesses these vars */
132 :     int bitrate;
133 :     int desired_size; /* please try to avoid modifications here */
134 :     char stats[MAX_PATH];
135 :     /*******************************/
136 :     int use_2pass_bitrate; /* use bitrate for 2pass2 (instead of desired size) */
137 :     int desired_quant; /* for one-pass constant quant */
138 :    
139 :     /* profile */
140 :     char profile_name[MAX_PATH];
141 :     int profile; /* used internally; *not* written to registry */
142 :    
143 : suxen_drol 1649 /* quality preset */
144 :     char quality_name[MAX_PATH];
145 :     int quality; /* used internally; *not* written to registry */
146 :    
147 : edgomez 1382 int quant_type;
148 :     BYTE qmatrix_intra[64];
149 :     BYTE qmatrix_inter[64];
150 :     int lum_masking;
151 :     int interlacing;
152 : syskin 1487 int tff;
153 : edgomez 1382 int qpel;
154 :     int gmc;
155 :     int use_bvop;
156 :     int max_bframes;
157 :     int bquant_ratio;
158 :     int bquant_offset;
159 :     int packed;
160 :     int display_aspect_ratio; /* aspect ratio */
161 :     int ar_x, ar_y; /* picture aspect ratio */
162 :     int par_x, par_y; /* custom pixel aspect ratio */
163 :     int ar_mode; /* picture/pixel AR */
164 :    
165 :     /* zones */
166 :     int num_zones;
167 :     zone_t zones[MAX_ZONES];
168 :     int cur_zone; /* used internally; *not* written to registry */
169 :    
170 :     /* single pass */
171 :     int rc_reaction_delay_factor;
172 :     int rc_averaging_period;
173 :     int rc_buffer;
174 :    
175 :     /* 2pass1 */
176 :     int discard1pass;
177 :    
178 :     /* 2pass2 */
179 :     int keyframe_boost;
180 :     int kfthreshold;
181 :     int kfreduction;
182 :     int curve_compression_high;
183 :     int curve_compression_low;
184 :     int overflow_control_strength;
185 :     int twopass_max_overflow_improvement;
186 :     int twopass_max_overflow_degradation;
187 :    
188 :     /* bitrate calculator */
189 :     int target_size;
190 :     int subtitle_size;
191 :     int container_type;
192 :     int hours;
193 :     int minutes;
194 :     int seconds;
195 :     int fps;
196 :     int audio_mode;
197 :     int audio_type;
198 :     int audio_rate;
199 :     int audio_size;
200 :    
201 : suxen_drol 1649 /* user defined quality settings */
202 :     quality_t quality_user;
203 : edgomez 1382
204 :     /* debug */
205 :     int num_threads;
206 :     int fourcc_used;
207 :     int vop_debug;
208 :     int debug;
209 :     int display_status;
210 :     int full1pass;
211 :    
212 :     DWORD cpu;
213 :    
214 : Isibaar 1914 int num_slices;
215 :    
216 : edgomez 1382 /* internal */
217 :     int ci_valid;
218 :     VFWEXT_CONFIGURE_INFO_T ci;
219 :    
220 :     BOOL save;
221 :     } CONFIG;
222 :    
223 :     typedef struct PROPSHEETINFO
224 :     {
225 :     int idd;
226 :     CONFIG * config;
227 :     } PROPSHEETINFO;
228 :    
229 :     typedef struct REG_INT
230 :     {
231 :     char* reg_value;
232 :     int* config_int;
233 :     int def;
234 :     } REG_INT;
235 :    
236 :     typedef struct REG_STR
237 :     {
238 :     char* reg_value;
239 :     char* config_str;
240 :     char* def;
241 :     } REG_STR;
242 :    
243 :    
244 : Isibaar 1917 #define PROFILE_ADAPTQUANT 0x00000001
245 :     #define PROFILE_BVOP 0x00000002
246 :     #define PROFILE_MPEGQUANT 0x00000004
247 :     #define PROFILE_INTERLACE 0x00000008
248 :     #define PROFILE_QPEL 0x00000010
249 :     #define PROFILE_GMC 0x00000020
250 :     #define PROFILE_4MV 0x00000040
251 :     #define PROFILE_PACKED 0x00000080
252 :     #define PROFILE_EXTRA 0x00000100
253 :     #define PROFILE_XVID 0x00000200
254 :     #define PROFILE_RESYNCMARKER 0x00000400
255 : edgomez 1382
256 :     static const int PARS[][2] = {
257 :     {1, 1},
258 :     {12, 11},
259 :     {10, 11},
260 :     {16, 11},
261 :     {40, 33},
262 :     {0, 0},
263 :     };
264 :    
265 :    
266 :    
267 :    
268 :     typedef struct
269 :     {
270 :     char * name;
271 : Isibaar 1910 char * short_name;
272 : edgomez 1382 int id; /* mpeg-4 profile id; iso/iec 14496-2:2001 table G-1 */
273 :     int width;
274 :     int height;
275 :     int fps;
276 :     int max_objects;
277 :     int total_vmv_buffer_sz; /* macroblock memory; when BVOPS=false, vmv = 2*vcv; when BVOPS=true, vmv = 3*vcv*/
278 :     int max_vmv_buffer_sz; /* max macroblocks per vop */
279 : Isibaar 1650 int vcv_decoder_rate; /* macroblocks decoded per second */
280 :     int max_acpred_mbs; /* percentage */
281 : edgomez 1382 int max_vbv_size; /* max vbv size (bits) 16368 bits */
282 : Isibaar 1650 int max_video_packet_length;/* bits */
283 : suxen_drol 1607 int max_bitrate; /* bits per second */
284 : Isibaar 1650 int vbv_peakrate; /* max bits over anyone second period; 0=don't care */
285 :     int xvid_max_bframes; /* xvid: max consecutive bframes */
286 : edgomez 1382 unsigned int flags;
287 :     } profile_t;
288 :    
289 :    
290 :     extern const profile_t profiles[];
291 :    
292 : suxen_drol 1649 extern const quality_t quality_table[];
293 :     extern const int quality_table_num; /* number of elements in quality table */
294 : edgomez 1382
295 : suxen_drol 1649
296 : edgomez 1382 void config_reg_get(CONFIG * config);
297 :     void config_reg_set(CONFIG * config);
298 :     void sort_zones(zone_t * zones, int zone_num, int * sel);
299 :    
300 :    
301 : Isibaar 1827 INT_PTR CALLBACK main_proc(HWND, UINT, WPARAM, LPARAM);
302 :     INT_PTR CALLBACK about_proc(HWND, UINT, WPARAM, LPARAM);
303 : edgomez 1382
304 :     #endif /* _CONFIG_H_ */

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