--- trunk/xvidcore/vfw/src/config.h 2005/03/27 03:59:42 1607 +++ trunk/xvidcore/vfw/src/config.h 2005/10/22 22:32:44 1650 @@ -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.7 2005-03-27 03:59:42 suxen_drol Exp $ + * $Id: config.h,v 1.9 2005-10-22 22:32:44 Isibaar Exp $ * ****************************************************************************/ #ifndef _CONFIG_H_ @@ -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,8 +243,8 @@ #define PROFILE_INTERLACE 0x00000008 #define PROFILE_QPEL 0x00000010 #define PROFILE_GMC 0x00000020 -#define PROFILE_4MV 0x00000040 -#define PROFILE_DXN 0x00000080 +#define PROFILE_4MV 0x00000040 +#define PROFILE_EXTRA 0x00000080 static const int PARS[][2] = { @@ -254,19 +269,22 @@ 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_video_packet_length;/* bits */ int max_bitrate; /* bits per second */ - int vbv_peakrate; /* max bits over anyone second period; 0=don't care */ - int dxn_max_bframes; /* dxn: max consecutive bframes */ + 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);