[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.19, Sat Jan 24 13:36:00 2004 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    #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    } zone_t;
97    
98    
99    typedef struct
100    {
101    /********** ATTENTION **********/
102            int mode;                                       /* Vidomi directly accesses these vars */
103            int bitrate;
104            int desired_size;                       /* please try to avoid modifications here */
105            char stats[MAX_PATH];
106    /*******************************/
107        int use_2pass_bitrate;        /* use bitrate for 2pass2 (instead of desired size) */
108            int desired_quant;                      /* for one-pass constant quant */
109    
110        /* profile  */
111        char profile_name[MAX_PATH];
112            int profile;            /* used internally; *not* written to registry */
113    
114        int quant_type;
115            BYTE qmatrix_intra[64];
116            BYTE qmatrix_inter[64];
117            int lum_masking;
118            int interlacing;
119            int qpel;
120            int gmc;
121            int reduced_resolution;
122        int use_bvop;
123            int max_bframes;
124            int bquant_ratio;
125            int bquant_offset;
126            int packed;
127            int closed_gov;
128            int display_aspect_ratio;                               /* aspect ratio */
129            int ar_x, ar_y;                                                 /* picture aspect ratio */
130            int par_x, par_y;                                               /* custom pixel aspect ratio */
131            int ar_mode;                                                    /* picture/pixel AR */
132    
133        /* zones */
134        int num_zones;
135        zone_t zones[MAX_ZONES];
136        int cur_zone;        /* used internally; *not* written to registry */
137    
138        /* single pass */
139            int rc_reaction_delay_factor;
140            int rc_averaging_period;
141            int rc_buffer;
142    
143        /* 2pass1 */
144            int discard1pass;
145    
146        /* 2pass2 */
147            int keyframe_boost;
148            int kfthreshold;
149            int kfreduction;
150            int curve_compression_high;
151            int curve_compression_low;
152            int overflow_control_strength;
153            int twopass_max_overflow_improvement;
154            int twopass_max_overflow_degradation;
155    
156        /* motion */
157            int motion_search;
158            int vhq_mode;
159            int chromame;
160            int cartoon_mode;
161            int turbo;
162        int max_key_interval;
163            int frame_drop_ratio;
164    
165        /* quant */
166            int min_iquant;
167            int max_iquant;
168            int min_pquant;
169            int max_pquant;
170            int min_bquant;
171            int max_bquant;
172        int trellis_quant;
173    
174        /* debug */
175            int num_threads;
176        int fourcc_used;
177        int vop_debug;
178        int debug;
179        int display_status;
180    
181            DWORD cpu;
182    
183        /* internal */
184        int ci_valid;
185        VFWEXT_CONFIGURE_INFO_T ci;
186    
187            BOOL save;
188    } CONFIG;
189    
190    typedef struct PROPSHEETINFO
191    {
192            int idd;
193            CONFIG * config;
194    } PROPSHEETINFO;
195    
196    typedef struct REG_INT
197    {
198            char* reg_value;
199            int* config_int;
200            int def;
201    } REG_INT;
202    
203    typedef struct REG_STR
204    {
205            char* reg_value;
206            char* config_str;
207            char* def;
208    } REG_STR;
209    
210    
211    #define PROFILE_ADAPTQUANT  0x00000001
212    #define PROFILE_BVOP            0x00000002
213    #define PROFILE_MPEGQUANT       0x00000004
214    #define PROFILE_INTERLACE       0x00000008
215    #define PROFILE_QPEL            0x00000010
216    #define PROFILE_GMC                     0x00000020
217    #define PROFILE_REDUCED         0x00000040      /* dynamic resolution conversion */
218    
219    #define PROFILE_AS                      (PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_MPEGQUANT|PROFILE_INTERLACE|PROFILE_QPEL|PROFILE_GMC)
220    #define PROFILE_ARTS            (PROFILE_ADAPTQUANT|PROFILE_REDUCED)
221    
222    static const int PARS[][2] = {
223            {1, 1},
224            {12, 11},
225            {10, 11},
226            {16, 11},
227            {40, 33},
228            {0, 0},
229    };
230    
231    
232    
233    
234    typedef struct
235    {
236            char * name;
237        int id;         /* mpeg-4 profile id; iso/iec 14496-2:2001 table G-1 */
238            int width;
239            int height;
240            int fps;
241            int max_objects;
242            int total_vmv_buffer_sz;    /* macroblock memory; when BVOPS=false, vmv = 2*vcv; when BVOPS=true,  vmv = 3*vcv*/
243            int max_vmv_buffer_sz;      /* max macroblocks per vop */
244            int vcv_decoder_rate;   /* macroblocks decoded per second */
245            int max_acpred_mbs;     /* percentage */
246            int max_vbv_size;                       /*    max vbv size (bits) 16368 bits */
247            int max_video_packet_length; /* bits */
248            int max_bitrate;                        /* kbits/s */
249            unsigned int flags;
250    } profile_t;
251    
252    
253    extern const profile_t profiles[];
254    
255    
256    void config_reg_get(CONFIG * config);
257    void config_reg_set(CONFIG * config);
258    
259    BOOL CALLBACK main_proc(HWND, UINT, WPARAM, LPARAM);
260    BOOL CALLBACK about_proc(HWND, UINT, WPARAM, LPARAM);
261    
262    #endif /* _CONFIG_H_ */

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

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