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

Diff of /xvidcore/vfw/src/config.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.1.2.10

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