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

1 : edgomez 1054 /*****************************************************************************
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 : syskin 1312 * $Id: config.h,v 1.1.2.17 2004-01-20 14:11:39 syskin Exp $
23 : edgomez 1054 *
24 :     ****************************************************************************/
25 : suxen_drol 889 #ifndef _CONFIG_H_
26 :     #define _CONFIG_H_
27 :    
28 :     #include <windows.h>
29 : suxen_drol 1017 #include "vfwext.h"
30 : syskin 1301 #include <xvid.h>
31 : suxen_drol 889
32 : suxen_drol 983 extern HINSTANCE g_hInst;
33 : suxen_drol 889
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 : suxen_drol 1017 /* min/max bitrate when not specified by profile */
44 :     #define DEFAULT_MIN_KBPS 16
45 :     #define DEFAULT_MAX_KBPS 10000
46 :    
47 : suxen_drol 889 /* registry stuff */
48 :     #define XVID_REG_KEY HKEY_CURRENT_USER
49 :     #define XVID_REG_PARENT "Software\\GNU"
50 :     #define XVID_REG_CHILD "XviD"
51 :     #define XVID_REG_CLASS "config"
52 :    
53 :     #define XVID_BUILD __TIME__ ", " __DATE__
54 :     #define XVID_WEBSITE "http://www.xvid.org/"
55 :     #define XVID_SPECIAL_BUILD "(Vanilla CVS Build)"
56 :    
57 :     /* constants */
58 : suxen_drol 983 #define CONFIG_2PASS_FILE "\\video.pass"
59 : suxen_drol 889
60 :     /* codec modes */
61 : suxen_drol 1017 #define RC_MODE_1PASS 0
62 :     #define RC_MODE_2PASS1 1
63 :     #define RC_MODE_2PASS2 2
64 :     #define RC_MODE_NULL 3
65 : suxen_drol 889
66 : suxen_drol 1017 #define RC_ZONE_WEIGHT 0
67 :     #define RC_ZONE_QUANT 1
68 :    
69 : suxen_drol 889 /* vhq modes */
70 :     #define VHQ_OFF 0
71 :     #define VHQ_MODE_DECISION 1
72 :     #define VHQ_LIMITED_SEARCH 2
73 :     #define VHQ_MEDIUM_SEARCH 3
74 :     #define VHQ_WIDE_SEARCH 4
75 :    
76 : suxen_drol 983 /* quantizer modes */
77 :     #define QUANT_MODE_H263 0
78 :     #define QUANT_MODE_MPEG 1
79 :     #define QUANT_MODE_CUSTOM 2
80 : suxen_drol 889
81 :    
82 : suxen_drol 1017 #define MAX_ZONES 64
83 : suxen_drol 889 typedef struct
84 :     {
85 : suxen_drol 1017 int frame;
86 :    
87 : suxen_drol 1069 int type;
88 : suxen_drol 1017 int mode;
89 :     int weight;
90 :     int quant;
91 : suxen_drol 1061
92 : suxen_drol 1017 unsigned int greyscale;
93 :     unsigned int chroma_opt;
94 :     unsigned int bvop_threshold;
95 :     } zone_t;
96 :    
97 :    
98 :     typedef struct
99 :     {
100 : suxen_drol 889 /********** ATTENTION **********/
101 : edgomez 1053 int mode; /* Vidomi directly accesses these vars */
102 :     int bitrate;
103 :     int desired_size; /* please try to avoid modifications here */
104 :     char stats[MAX_PATH];
105 : suxen_drol 889 /*******************************/
106 : suxen_drol 1061 int use_2pass_bitrate; /* use bitrate for 2pass2 (instead of desired size) */
107 : suxen_drol 889
108 : suxen_drol 1017 /* profile */
109 : suxen_drol 983 char profile_name[MAX_PATH];
110 : suxen_drol 1017 int profile; /* used internally; *not* written to registry */
111 : suxen_drol 983
112 : suxen_drol 1017 int quant_type;
113 :     BYTE qmatrix_intra[64];
114 :     BYTE qmatrix_inter[64];
115 : suxen_drol 889 int lum_masking;
116 :     int interlacing;
117 :     int qpel;
118 :     int gmc;
119 : suxen_drol 1017 int reduced_resolution;
120 : suxen_drol 983 int use_bvop;
121 : suxen_drol 889 int max_bframes;
122 :     int bquant_ratio;
123 :     int bquant_offset;
124 :     int packed;
125 : suxen_drol 983 int closed_gov;
126 : edgomez 1267 int display_aspect_ratio; /* aspect ratio */
127 : syskin 1277 int ar_x, ar_y; /* picture aspect ratio */
128 :     int par_x, par_y; /* custom pixel aspect ratio */
129 :     int ar_mode; /* picture/pixel AR */
130 : suxen_drol 889
131 : suxen_drol 1017 /* zones */
132 :     int num_zones;
133 :     zone_t zones[MAX_ZONES];
134 :     int cur_zone; /* used internally; *not* written to registry */
135 : suxen_drol 889
136 : suxen_drol 1017 /* single pass */
137 :     int rc_reaction_delay_factor;
138 :     int rc_averaging_period;
139 :     int rc_buffer;
140 :    
141 : suxen_drol 1061 /* 2pass1 */
142 :     int discard1pass;
143 :    
144 : suxen_drol 1017 /* 2pass2 */
145 : suxen_drol 889 int keyframe_boost;
146 : edgomez 1242 int kfthreshold;
147 : suxen_drol 889 int kfreduction;
148 :     int curve_compression_high;
149 :     int curve_compression_low;
150 : edgomez 1202 int overflow_control_strength;
151 : suxen_drol 889 int twopass_max_overflow_improvement;
152 :     int twopass_max_overflow_degradation;
153 :    
154 : suxen_drol 1017 /* motion */
155 :     int motion_search;
156 :     int vhq_mode;
157 :     int chromame;
158 : edgomez 1193 int cartoon_mode;
159 : Isibaar 1294 int turbo;
160 : suxen_drol 1017 int max_key_interval;
161 : suxen_drol 889 int frame_drop_ratio;
162 :    
163 : suxen_drol 1017 /* quant */
164 :     int min_iquant;
165 :     int max_iquant;
166 :     int min_pquant;
167 :     int max_pquant;
168 :     int min_bquant;
169 :     int max_bquant;
170 :     int trellis_quant;
171 : suxen_drol 889
172 : suxen_drol 1017 /* debug */
173 :     int num_threads;
174 :     int fourcc_used;
175 : suxen_drol 1032 int vop_debug;
176 : suxen_drol 1017 int debug;
177 : suxen_drol 1061 int display_status;
178 : suxen_drol 889
179 :     DWORD cpu;
180 : suxen_drol 1017
181 :     /* internal */
182 :     int ci_valid;
183 :     VFWEXT_CONFIGURE_INFO_T ci;
184 :    
185 : suxen_drol 889 BOOL save;
186 :     } CONFIG;
187 :    
188 :     typedef struct PROPSHEETINFO
189 :     {
190 : suxen_drol 983 int idd;
191 : suxen_drol 889 CONFIG * config;
192 :     } PROPSHEETINFO;
193 :    
194 :     typedef struct REG_INT
195 :     {
196 :     char* reg_value;
197 :     int* config_int;
198 :     int def;
199 :     } REG_INT;
200 :    
201 :     typedef struct REG_STR
202 :     {
203 :     char* reg_value;
204 :     char* config_str;
205 :     char* def;
206 :     } REG_STR;
207 :    
208 : suxen_drol 983
209 : suxen_drol 1017 #define PROFILE_ADAPTQUANT 0x00000001
210 :     #define PROFILE_BVOP 0x00000002
211 :     #define PROFILE_MPEGQUANT 0x00000004
212 :     #define PROFILE_INTERLACE 0x00000008
213 :     #define PROFILE_QPEL 0x00000010
214 :     #define PROFILE_GMC 0x00000020
215 :     #define PROFILE_REDUCED 0x00000040 /* dynamic resolution conversion */
216 :    
217 :     #define PROFILE_AS (PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_MPEGQUANT|PROFILE_INTERLACE|PROFILE_QPEL|PROFILE_GMC)
218 :     #define PROFILE_ARTS (PROFILE_ADAPTQUANT|PROFILE_REDUCED)
219 :    
220 : syskin 1277 static const int PARS[][2] = {
221 :     {1, 1},
222 :     {12, 11},
223 :     {10, 11},
224 :     {16, 11},
225 :     {40, 33},
226 :     {0, 0},
227 :     };
228 : suxen_drol 1017
229 : syskin 1277
230 :    
231 :    
232 : suxen_drol 1017 typedef struct
233 :     {
234 :     char * name;
235 :     int id; /* mpeg-4 profile id; iso/iec 14496-2:2001 table G-1 */
236 :     int width;
237 :     int height;
238 :     int fps;
239 :     int max_objects;
240 :     int total_vmv_buffer_sz; /* macroblock memory; when BVOPS=false, vmv = 2*vcv; when BVOPS=true, vmv = 3*vcv*/
241 :     int max_vmv_buffer_sz; /* max macroblocks per vop */
242 :     int vcv_decoder_rate; /* macroblocks decoded per second */
243 :     int max_acpred_mbs; /* percentage */
244 :     int max_vbv_size; /* max vbv size (bits) 16368 bits */
245 :     int max_video_packet_length; /* bits */
246 :     int max_bitrate; /* kbits/s */
247 :     unsigned int flags;
248 :     } profile_t;
249 :    
250 :    
251 :     extern const profile_t profiles[];
252 :    
253 :    
254 : suxen_drol 983 void config_reg_get(CONFIG * config);
255 :     void config_reg_set(CONFIG * config);
256 :    
257 : syskin 1312 static void
258 :     zones_update(HWND hDlg, CONFIG * config);
259 :    
260 : suxen_drol 889 BOOL CALLBACK main_proc(HWND, UINT, WPARAM, LPARAM);
261 :     BOOL CALLBACK about_proc(HWND, UINT, WPARAM, LPARAM);
262 :    
263 :     #endif /* _CONFIG_H_ */

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