--- trunk/xvidcore/vfw/src/config.h 2005/01/10 05:01:01 1592 +++ trunk/xvidcore/vfw/src/config.h 2008/11/30 16:38:31 1827 @@ -19,7 +19,7 @@ * along with this program ; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: config.h,v 1.6 2005-01-10 05:01:01 syskin Exp $ + * $Id: config.h,v 1.13 2008-11-30 16:36:44 Isibaar Exp $ * ****************************************************************************/ #ifndef _CONFIG_H_ @@ -53,10 +53,10 @@ #define XVID_BUILD __TIME__ ", " __DATE__ #define XVID_WEBSITE "http://www.xvid.org/" -#define XVID_SPECIAL_BUILD "(Vanilla CVS Build)" +#define XVID_SPECIAL_BUILD "Vanilla CVS Build" /* constants */ -#define CONFIG_2PASS_FILE "\\video.pass" +#define CONFIG_2PASS_FILE ".\\video.pass" /* codec modes */ #define RC_MODE_1PASS 0 @@ -97,6 +97,32 @@ } zone_t; +/* this structure represents a quality preset. it encapsulates + options from the motion and quantizer config pages. */ +#define QUALITY_GENERAL_STRING "General purpose" +#define QUALITY_USER_STRING "(User defined)" +typedef struct { + char * name; + /* motion */ + int motion_search; + int vhq_mode; + int vhq_bframe; + int chromame; + int turbo; + int max_key_interval; + int frame_drop_ratio; + + /* quant */ + int min_iquant; + int max_iquant; + int min_pquant; + int max_pquant; + int min_bquant; + int max_bquant; + int trellis_quant; +} quality_t; + + typedef struct { /********** ATTENTION **********/ @@ -112,6 +138,10 @@ char profile_name[MAX_PATH]; int profile; /* used internally; *not* written to registry */ + /* quality preset */ + char quality_name[MAX_PATH]; + int quality; /* used internally; *not* written to registry */ + int quant_type; BYTE qmatrix_intra[64]; BYTE qmatrix_inter[64]; @@ -166,23 +196,8 @@ int audio_rate; int audio_size; - /* motion */ - int motion_search; - int vhq_mode; - int vhq_bframe; - int chromame; - int turbo; - int max_key_interval; - int frame_drop_ratio; - - /* quant */ - int min_iquant; - int max_iquant; - int min_pquant; - int max_pquant; - int min_bquant; - int max_bquant; - int trellis_quant; + /* user defined quality settings */ + quality_t quality_user; /* debug */ int num_threads; @@ -228,9 +243,10 @@ #define PROFILE_INTERLACE 0x00000008 #define PROFILE_QPEL 0x00000010 #define PROFILE_GMC 0x00000020 +#define PROFILE_4MV 0x00000040 +#define PROFILE_PACKED 0x00000080 +#define PROFILE_EXTRA 0x00000100 -#define PROFILE_AS (PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_MPEGQUANT|PROFILE_INTERLACE|PROFILE_QPEL|PROFILE_GMC) -#define PROFILE_ARTS (PROFILE_ADAPTQUANT) static const int PARS[][2] = { {1, 1}, @@ -254,24 +270,29 @@ int max_objects; int total_vmv_buffer_sz; /* macroblock memory; when BVOPS=false, vmv = 2*vcv; when BVOPS=true, vmv = 3*vcv*/ int max_vmv_buffer_sz; /* max macroblocks per vop */ - int vcv_decoder_rate; /* macroblocks decoded per second */ - int max_acpred_mbs; /* percentage */ + int vcv_decoder_rate; /* macroblocks decoded per second */ + int max_acpred_mbs; /* percentage */ int max_vbv_size; /* max vbv size (bits) 16368 bits */ - int max_video_packet_length; /* bits */ - int max_bitrate; /* kbits/s */ + int max_video_packet_length;/* bits */ + int max_bitrate; /* bits per second */ + int vbv_peakrate; /* max bits over anyone second period; 0=don't care */ + int xvid_max_bframes; /* xvid: max consecutive bframes */ unsigned int flags; } profile_t; extern const profile_t profiles[]; +extern const quality_t quality_table[]; +extern const int quality_table_num; /* number of elements in quality table */ + void config_reg_get(CONFIG * config); void config_reg_set(CONFIG * config); void sort_zones(zone_t * zones, int zone_num, int * sel); -BOOL CALLBACK main_proc(HWND, UINT, WPARAM, LPARAM); -BOOL CALLBACK about_proc(HWND, UINT, WPARAM, LPARAM); +INT_PTR CALLBACK main_proc(HWND, UINT, WPARAM, LPARAM); +INT_PTR CALLBACK about_proc(HWND, UINT, WPARAM, LPARAM); #endif /* _CONFIG_H_ */