--- trunk/xvidcore/vfw/src/config.c 2004/11/22 10:40:03 1562 +++ trunk/xvidcore/vfw/src/config.c 2005/01/10 03:36:53 1591 @@ -259,7 +259,6 @@ {"vhq_mode", ®.vhq_mode, 1}, {"vhq_bframe", ®.vhq_bframe, 0}, {"chromame", ®.chromame, 1}, - {"cartoon_mode", ®.cartoon_mode, 0}, {"turbo", ®.turbo, 0}, {"max_key_interval", ®.max_key_interval, 300}, {"frame_drop_ratio", ®.frame_drop_ratio, 0}, @@ -305,6 +304,7 @@ {"zone%i_greyscale", &stmp.greyscale, 0}, {"zone%i_chroma_opt", &stmp.chroma_opt, 0}, {"zone%i_bvop_threshold", &stmp.bvop_threshold, 0}, + {"zone%i_cartoon_mode", &stmp.cartoon_mode, 0}, }; static const BYTE default_qmatrix_intra[] = { @@ -940,8 +940,13 @@ /* step 2: calculate audio_size (kbytes)*/ if (audio_type!=NO_AUDIO) { if (audio_mode==0) { - audio_size = (int)( (1000.0 * duration * audio_rate) / (8.0*1024) ); - SetDlgItemInt(hDlg, IDC_BITRATE_ASIZE, audio_size, TRUE); + int new_audio_size = (int)( (1000.0 * duration * audio_rate) / (8.0*1024) ); + + /* this check is needed to avoid a loop */ + if (new_audio_size!=audio_size) { + audio_size = new_audio_size; + SetDlgItemInt(hDlg, IDC_BITRATE_ASIZE, new_audio_size, TRUE); + } }else{ int tmp_rate = (int)( (audio_size * 8.0 * 1024) / (1000.0 * duration) ); SetDlgItemInt(hDlg, IDC_BITRATE_ARATE, tmp_rate, TRUE); @@ -1000,7 +1005,7 @@ if (vsize > 0) { SetDlgItemInt(hDlg, IDC_BITRATE_VSIZE, vsize, TRUE); /* convert from kbytes to kbits-per-second */ - SetDlgItemInt(hDlg, IDC_BITRATE_VRATE, (vsize * 8 * 128) / (duration * 125), TRUE); + SetDlgItemInt(hDlg, IDC_BITRATE_VRATE, ((__int64)vsize * 8 * 128) / (duration * 125), TRUE); }else{ SetDlgItemText(hDlg, IDC_BITRATE_VSIZE, "Overflow"); SetDlgItemText(hDlg, IDC_BITRATE_VRATE, "Overflow"); @@ -1136,6 +1141,8 @@ CheckDlgButton(hDlg, IDC_ZONE_GREYSCALE, config->zones[config->cur_zone].greyscale); CheckDlgButton(hDlg, IDC_ZONE_CHROMAOPT, config->zones[config->cur_zone].chroma_opt); + CheckDlg(hDlg, IDC_CARTOON, config->zones[config->cur_zone].cartoon_mode); + SetDlgItemInt(hDlg, IDC_ZONE_BVOPTHRESHOLD, config->zones[config->cur_zone].bvop_threshold, TRUE); break; @@ -1144,7 +1151,6 @@ SendDlgItemMessage(hDlg, IDC_VHQ, CB_SETCURSEL, config->vhq_mode, 0); CheckDlg(hDlg, IDC_VHQ_BFRAME, config->vhq_bframe); CheckDlg(hDlg, IDC_CHROMAME, config->chromame); - CheckDlg(hDlg, IDC_CARTOON, config->cartoon_mode); CheckDlg(hDlg, IDC_TURBO, config->turbo); SetDlgItemInt(hDlg, IDC_FRAMEDROP, config->frame_drop_ratio, FALSE); SetDlgItemInt(hDlg, IDC_MAXKEY, config->max_key_interval, FALSE); @@ -1320,6 +1326,7 @@ config->zones[config->cur_zone].chroma_opt = IsDlgButtonChecked(hDlg, IDC_ZONE_CHROMAOPT); config->zones[config->cur_zone].bvop_threshold = config_get_int(hDlg, IDC_ZONE_BVOPTHRESHOLD, config->zones[config->cur_zone].bvop_threshold); + config->zones[config->cur_zone].cartoon_mode = IsDlgChecked(hDlg, IDC_CARTOON); break; case IDD_MOTION : @@ -1327,7 +1334,6 @@ config->vhq_mode = SendDlgItemMessage(hDlg, IDC_VHQ, CB_GETCURSEL, 0, 0); config->vhq_bframe = IsDlgButtonChecked(hDlg, IDC_VHQ_BFRAME); config->chromame = IsDlgChecked(hDlg, IDC_CHROMAME); - config->cartoon_mode = IsDlgChecked(hDlg, IDC_CARTOON); config->turbo = IsDlgChecked(hDlg, IDC_TURBO); config->frame_drop_ratio = config_get_uint(hDlg, IDC_FRAMEDROP, config->frame_drop_ratio);