--- branches/dev-api-4/xvidcore/vfw/src/config.c 2004/01/26 03:16:53 1333 +++ branches/dev-api-4/xvidcore/vfw/src/config.c 2004/01/31 14:03:26 1346 @@ -219,6 +219,7 @@ /* 2pass1 */ {"discard1pass", ®.discard1pass, 1}, + {"full1pass", ®.full1pass, 0}, /* 2pass2 */ {"keyframe_boost", ®.keyframe_boost, 10}, @@ -1027,6 +1028,7 @@ case IDD_RC_2PASS1 : SetDlgItemText(hDlg, IDC_STATS, config->stats); CheckDlg(hDlg, IDC_DISCARD1PASS, config->discard1pass); + CheckDlg(hDlg, IDC_FULL1PASS, config->full1pass); break; case IDD_RC_2PASS2 : @@ -1173,6 +1175,7 @@ if (GetDlgItemText(hDlg, IDC_STATS, config->stats, MAX_PATH) == 0) lstrcpy(config->stats, CONFIG_2PASS_FILE); config->discard1pass = IsDlgChecked(hDlg, IDC_DISCARD1PASS); + config->full1pass = IsDlgChecked(hDlg, IDC_FULL1PASS); break; case IDD_RC_2PASS2 : @@ -1200,22 +1203,36 @@ break; case IDD_BITRATE : - config->container_type = config->profile = SendDlgItemMessage(hDlg, IDC_BITRATE_CFORMAT, CB_GETCURSEL, 0, 0); + config->container_type = SendDlgItemMessage(hDlg, IDC_BITRATE_CFORMAT, CB_GETCURSEL, 0, 0); config->target_size = config_get_uint(hDlg, IDC_BITRATE_TSIZE, config->target_size); config->subtitle_size = config_get_uint(hDlg, IDC_BITRATE_SSIZE, config->subtitle_size); config->hours = config_get_uint(hDlg, IDC_BITRATE_HOURS, config->hours); config->minutes = config_get_uint(hDlg, IDC_BITRATE_MINUTES, config->minutes); config->seconds = config_get_uint(hDlg, IDC_BITRATE_SECONDS, config->seconds); - config->fps = config->profile = SendDlgItemMessage(hDlg, IDC_BITRATE_FPS, CB_GETCURSEL, 0, 0); + config->fps = SendDlgItemMessage(hDlg, IDC_BITRATE_FPS, CB_GETCURSEL, 0, 0); - config->audio_type = config->profile = SendDlgItemMessage(hDlg, IDC_BITRATE_AFORMAT, CB_GETCURSEL, 0, 0); + config->audio_type = SendDlgItemMessage(hDlg, IDC_BITRATE_AFORMAT, CB_GETCURSEL, 0, 0); config->audio_mode = IsDlgChecked(hDlg, IDC_BITRATE_AMODE_SIZE) ? 1 : 0 ; config->audio_rate = config_get_uint(hDlg, IDC_BITRATE_ARATE, config->audio_rate); config->audio_size = config_get_uint(hDlg, IDC_BITRATE_ASIZE, config->audio_size); - config->desired_size = config_get_uint(hDlg, IDC_BITRATE_VSIZE, config->desired_size); - config->bitrate = config_get_uint(hDlg, IDC_BITRATE_VRATE, config->bitrate); + /* the main window uses "AVI bitrate/filesize" not "video bitrate/filesize", + so we have to compensate by frames * 24 bytes */ + { + int frame_compensate = 24 * (int)( + (3600*config->hours + + 60*config->minutes + + config->seconds) * video_fps_list[config->fps].value) / 1024; + + int bitrate_compensate = (int)(24 * video_fps_list[config->fps].value) / 125; + + config->desired_size = + config_get_uint(hDlg, IDC_BITRATE_VSIZE, config->desired_size) - frame_compensate; + + config->bitrate = + config_get_uint(hDlg, IDC_BITRATE_VRATE, config->bitrate) - bitrate_compensate; + } break; case IDD_ZONE : @@ -1653,6 +1670,7 @@ EnableDlgWindow(hDlg, IDC_BITRATE_S, target_en); EnableDlgWindow(hDlg, IDC_BITRATE, target_en); + EnableDlgWindow(hDlg, IDC_BITRATE_ADV, target_en); EnableDlgWindow(hDlg, IDC_BITRATE_MIN, target_en_slider); EnableDlgWindow(hDlg, IDC_BITRATE_MAX, target_en_slider);