[svn] / trunk / vfw / src / config.c Repository:
ViewVC logotype

Diff of /trunk/vfw/src/config.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 61, Sat Mar 23 06:58:56 2002 UTC revision 109, Mon Apr 8 12:51:41 2002 UTC
# Line 23  Line 23 
23   *   *
24   *      History:   *      History:
25   *   *
26     *      07.04.2002      min keyframe interval checkbox
27     *                              2-pass max bitrate and overflow customization
28     *      04.04.2002      interlacing support
29     *                              hinted ME support
30     *      24.03.2002      daniel smith <danielsmith@astroboymail.com>
31     *                              added Foxer's new CBR engine
32     *                              - cbr_buffer is being used as reaction delay (quick hack)
33   *      23.03.2002      daniel smith <danielsmith@astroboymail.com>   *      23.03.2002      daniel smith <danielsmith@astroboymail.com>
34   *                              added load defaults button   *                              added load defaults button
35   *                              merged foxer's alternative 2-pass code (2-pass alt tab)   *                              merged foxer's alternative 2-pass code (2-pass alt tab)
# Line 64  Line 71 
71          {"bitrate",                                     &reg.bitrate,                                   900000},          {"bitrate",                                     &reg.bitrate,                                   900000},
72          {"quality",                                     &reg.quality,                                   85},          {"quality",                                     &reg.quality,                                   85},
73          {"quant",                                       &reg.quant,                                             5},          {"quant",                                       &reg.quant,                                             5},
74          {"rc_buffersize",                       &reg.rc_buffersize,                             2048000},          {"rc_buffersize",                       &reg.rc_buffersize,                             16},
75    
76          {"motion_search",                       &reg.motion_search,                             5},          {"motion_search",                       &reg.motion_search,                             5},
77          {"quant_type",                          &reg.quant_type,                                0},          {"quant_type",                          &reg.quant_type,                                0},
78          {"fourcc_used",                         &reg.fourcc_used,                               0},          {"fourcc_used",                         &reg.fourcc_used,                               0},
79          {"max_key_interval",            &reg.max_key_interval,                  300},          {"max_key_interval",            &reg.max_key_interval,                  300},
80            {"min_key_interval",            &reg.min_key_interval,                  1},
81          {"lum_masking",                         &reg.lum_masking,                               0},          {"lum_masking",                         &reg.lum_masking,                               0},
82            {"interlacing",                         &reg.interlacing,                               0},
83    
84          {"min_iquant",                          &reg.min_iquant,                                1},          {"min_iquant",                          &reg.min_iquant,                                1},
85          {"max_iquant",                          &reg.max_iquant,                                31},          {"max_iquant",                          &reg.max_iquant,                                31},
# Line 79  Line 88 
88    
89          {"desired_size",                        &reg.desired_size,                              570000},          {"desired_size",                        &reg.desired_size,                              570000},
90          {"keyframe_boost",                      &reg.keyframe_boost,                    20},          {"keyframe_boost",                      &reg.keyframe_boost,                    20},
         {"min_key_interval",            &reg.min_key_interval,                  6},  
91          {"discard1pass",                        &reg.discard1pass,                              1},          {"discard1pass",                        &reg.discard1pass,                              1},
92          {"dummy2pass",                          &reg.dummy2pass,                                0},          {"dummy2pass",                          &reg.dummy2pass,                                0},
93          {"curve_compression_high",      &reg.curve_compression_high,    25},          {"curve_compression_high",      &reg.curve_compression_high,    25},
# Line 95  Line 103 
103          {"alt_curve_min_rel_qual",      &reg.alt_curve_min_rel_qual,    50},          {"alt_curve_min_rel_qual",      &reg.alt_curve_min_rel_qual,    50},
104          {"bitrate_payback_delay",       &reg.bitrate_payback_delay,             240},          {"bitrate_payback_delay",       &reg.bitrate_payback_delay,             240},
105          {"bitrate_payback_method",      &reg.bitrate_payback_method,    0},          {"bitrate_payback_method",      &reg.bitrate_payback_method,    0},
106            {"twopass_max_bitrate",         &reg.twopass_max_bitrate,               10000 * CONFIG_KBPS},
107            {"twopass_max_overflow_improvement", &reg.twopass_max_overflow_improvement, 60},
108            {"twopass_max_overflow_degradation", &reg.twopass_max_overflow_degradation, 60},
109            {"hinted_me",                           &reg.hinted_me,                                 0},
110    
111          {"credits_start",                       &reg.credits_start,                             0},          {"credits_start",                       &reg.credits_start,                             0},
112          {"credits_start_begin",         &reg.credits_start_begin,               0},          {"credits_start_begin",         &reg.credits_start_begin,               0},
# Line 112  Line 124 
124  };  };
125    
126  REG_STR const reg_strs[] = {  REG_STR const reg_strs[] = {
127            {"hintfile",                            reg.hintfile,                                   CONFIG_HINTFILE},
128          {"stats1",                                      reg.stats1,                                             CONFIG_2PASS_1_FILE},          {"stats1",                                      reg.stats1,                                             CONFIG_2PASS_1_FILE},
129          {"stats2",                                      reg.stats2,                                             CONFIG_2PASS_2_FILE}          {"stats2",                                      reg.stats2,                                             CONFIG_2PASS_2_FILE}
130  //      {"build",                                       reg.build,                                              XVID_BUILD}  //      {"build",                                       reg.build,                                              XVID_BUILD}
# Line 445  Line 458 
458  {  {
459          // create arrays of controls to be disabled for each mode          // create arrays of controls to be disabled for each mode
460          const int cbr_disable[] = {          const int cbr_disable[] = {
461                  IDC_KFBOOST, IDC_MINKEY, IDC_DISCARD1PASS, IDC_DUMMY2PASS,                  IDC_KFBOOST, IDC_DISCARD1PASS, IDC_DUMMY2PASS,
462                  IDC_CURVECOMPH, IDC_CURVECOMPL, IDC_PAYBACK, IDC_PAYBACKBIAS, IDC_PAYBACKPROP,                  IDC_CURVECOMPH, IDC_CURVECOMPL, IDC_PAYBACK, IDC_PAYBACKBIAS, IDC_PAYBACKPROP,
463                  IDC_STATS1, IDC_STATS1_BROWSE, IDC_STATS2, IDC_STATS2_BROWSE,                  IDC_STATS1, IDC_STATS1_BROWSE, IDC_STATS2, IDC_STATS2_BROWSE,
464                  IDC_CREDITS_START, IDC_CREDITS_END, IDC_CREDITS_START_BEGIN, IDC_CREDITS_START_END,                  IDC_CREDITS_START, IDC_CREDITS_END, IDC_CREDITS_START_BEGIN, IDC_CREDITS_START_END,
# Line 456  Line 469 
469          };          };
470    
471          const int qual_disable[] = {          const int qual_disable[] = {
472                  IDC_KFBOOST, IDC_MINKEY, IDC_DISCARD1PASS, IDC_DUMMY2PASS,                  IDC_KFBOOST, IDC_DISCARD1PASS, IDC_DUMMY2PASS,
473                  IDC_CURVECOMPH, IDC_CURVECOMPL, IDC_PAYBACK, IDC_PAYBACKBIAS, IDC_PAYBACKPROP,                  IDC_CURVECOMPH, IDC_CURVECOMPL, IDC_PAYBACK, IDC_PAYBACKBIAS, IDC_PAYBACKPROP,
474                  IDC_STATS1, IDC_STATS1_BROWSE, IDC_STATS2, IDC_STATS2_BROWSE,                  IDC_STATS1, IDC_STATS1_BROWSE, IDC_STATS2, IDC_STATS2_BROWSE,
475                  IDC_CREDITS_SIZE_RADIO, IDC_CREDITS_END_STATIC, IDC_CREDITS_START_SIZE, IDC_CREDITS_END_SIZE                  IDC_CREDITS_SIZE_RADIO, IDC_CREDITS_END_STATIC, IDC_CREDITS_START_SIZE, IDC_CREDITS_END_SIZE
# Line 464  Line 477 
477    
478          const int quant_disable[] = {          const int quant_disable[] = {
479                  IDC_MINIQUANT, IDC_MAXIQUANT, IDC_MINPQUANT, IDC_MAXPQUANT,                  IDC_MINIQUANT, IDC_MAXIQUANT, IDC_MINPQUANT, IDC_MAXPQUANT,
480                  IDC_KFBOOST, IDC_MINKEY, IDC_DISCARD1PASS, IDC_DUMMY2PASS,                  IDC_KFBOOST, IDC_DISCARD1PASS, IDC_DUMMY2PASS,
481                  IDC_CURVECOMPH, IDC_CURVECOMPL, IDC_PAYBACK, IDC_PAYBACKBIAS, IDC_PAYBACKPROP,                  IDC_CURVECOMPH, IDC_CURVECOMPL, IDC_PAYBACK, IDC_PAYBACKBIAS, IDC_PAYBACKPROP,
482                  IDC_STATS1, IDC_STATS1_BROWSE, IDC_STATS2, IDC_STATS2_BROWSE,                  IDC_STATS1, IDC_STATS1_BROWSE, IDC_STATS2, IDC_STATS2_BROWSE,
483                  IDC_CREDITS_SIZE_RADIO, IDC_CREDITS_END_STATIC, IDC_CREDITS_START_SIZE, IDC_CREDITS_END_SIZE                  IDC_CREDITS_SIZE_RADIO, IDC_CREDITS_END_STATIC, IDC_CREDITS_START_SIZE, IDC_CREDITS_END_SIZE
# Line 505  Line 518 
518          int i;          int i;
519    
520          // first perform checkbox-based enable/disable          // first perform checkbox-based enable/disable
521            CONTROLDLG(IDC_HINTFILE,                        ISDLGSET(IDC_HINTEDME));
522            CONTROLDLG(IDC_HINT_BROWSE,                     ISDLGSET(IDC_HINTEDME));
523    
524          CONTROLDLG(IDC_USEAUTO,                         ISDLGSET(IDC_USEALT));          CONTROLDLG(IDC_USEAUTO,                         ISDLGSET(IDC_USEALT));
525          CONTROLDLG(IDC_AUTOSTR,                         ISDLGSET(IDC_USEALT) && ISDLGSET(IDC_USEAUTO));          CONTROLDLG(IDC_AUTOSTR,                         ISDLGSET(IDC_USEALT) && ISDLGSET(IDC_USEAUTO));
526          CONTROLDLG(IDC_USEAUTOBONUS,            ISDLGSET(IDC_USEALT));          CONTROLDLG(IDC_USEAUTOBONUS,            ISDLGSET(IDC_USEALT));
# Line 552  Line 568 
568                  SendDlgItemMessage(hDlg, IDC_QUANTTYPE, CB_SETCURSEL, config->quant_type, 0);                  SendDlgItemMessage(hDlg, IDC_QUANTTYPE, CB_SETCURSEL, config->quant_type, 0);
569                  SendDlgItemMessage(hDlg, IDC_FOURCC, CB_SETCURSEL, config->fourcc_used, 0);                  SendDlgItemMessage(hDlg, IDC_FOURCC, CB_SETCURSEL, config->fourcc_used, 0);
570                  SetDlgItemInt(hDlg, IDC_MAXKEY, config->max_key_interval, FALSE);                  SetDlgItemInt(hDlg, IDC_MAXKEY, config->max_key_interval, FALSE);
571                    SetDlgItemInt(hDlg, IDC_MINKEY, config->min_key_interval, FALSE);
572                  CheckDlgButton(hDlg, IDC_LUMMASK, config->lum_masking ? BST_CHECKED : BST_UNCHECKED);                  CheckDlgButton(hDlg, IDC_LUMMASK, config->lum_masking ? BST_CHECKED : BST_UNCHECKED);
573                    CheckDlgButton(hDlg, IDC_INTERLACING, config->interlacing ? BST_CHECKED : BST_UNCHECKED);
574                  break;                  break;
575    
576          case DLG_QUANT :          case DLG_QUANT :
# Line 564  Line 582 
582    
583          case DLG_2PASS :          case DLG_2PASS :
584                  SetDlgItemInt(hDlg, IDC_KFBOOST, config->keyframe_boost, FALSE);                  SetDlgItemInt(hDlg, IDC_KFBOOST, config->keyframe_boost, FALSE);
                 SetDlgItemInt(hDlg, IDC_MINKEY, config->min_key_interval, FALSE);  
585                  CheckDlgButton(hDlg, IDC_DISCARD1PASS, config->discard1pass ? BST_CHECKED : BST_UNCHECKED);                  CheckDlgButton(hDlg, IDC_DISCARD1PASS, config->discard1pass ? BST_CHECKED : BST_UNCHECKED);
586                  CheckDlgButton(hDlg, IDC_DUMMY2PASS, config->dummy2pass ? BST_CHECKED : BST_UNCHECKED);                  CheckDlgButton(hDlg, IDC_DUMMY2PASS, config->dummy2pass ? BST_CHECKED : BST_UNCHECKED);
587    
# Line 574  Line 591 
591                  CheckDlgButton(hDlg, IDC_PAYBACKBIAS, (config->bitrate_payback_method == 0));                  CheckDlgButton(hDlg, IDC_PAYBACKBIAS, (config->bitrate_payback_method == 0));
592                  CheckDlgButton(hDlg, IDC_PAYBACKPROP, (config->bitrate_payback_method == 1));                  CheckDlgButton(hDlg, IDC_PAYBACKPROP, (config->bitrate_payback_method == 1));
593    
594                    CheckDlgButton(hDlg, IDC_HINTEDME, config->hinted_me ? BST_CHECKED : BST_UNCHECKED);
595                    SetDlgItemText(hDlg, IDC_HINTFILE, config->hintfile);
596                  SetDlgItemText(hDlg, IDC_STATS1, config->stats1);                  SetDlgItemText(hDlg, IDC_STATS1, config->stats1);
597                  SetDlgItemText(hDlg, IDC_STATS2, config->stats2);                  SetDlgItemText(hDlg, IDC_STATS2, config->stats2);
598                  break;                  break;
# Line 591  Line 610 
610    
611                  CheckDlgButton(hDlg, IDC_USEAUTOBONUS, config->alt_curve_use_auto_bonus_bias ? BST_CHECKED : BST_UNCHECKED);                  CheckDlgButton(hDlg, IDC_USEAUTOBONUS, config->alt_curve_use_auto_bonus_bias ? BST_CHECKED : BST_UNCHECKED);
612                  SetDlgItemInt(hDlg, IDC_BONUSBIAS, config->alt_curve_bonus_bias, FALSE);                  SetDlgItemInt(hDlg, IDC_BONUSBIAS, config->alt_curve_bonus_bias, FALSE);
613    
614                    SetDlgItemInt(hDlg, IDC_MAXBITRATE, config->twopass_max_bitrate / CONFIG_KBPS, FALSE);
615                    SetDlgItemInt(hDlg, IDC_OVERIMP, config->twopass_max_overflow_improvement, FALSE);
616                    SetDlgItemInt(hDlg, IDC_OVERDEG, config->twopass_max_overflow_degradation, FALSE);
617                  break;                  break;
618    
619          case DLG_CREDITS :          case DLG_CREDITS :
# Line 651  Line 674 
674                  config->quant_type = SendDlgItemMessage(hDlg, IDC_QUANTTYPE, CB_GETCURSEL, 0, 0);                  config->quant_type = SendDlgItemMessage(hDlg, IDC_QUANTTYPE, CB_GETCURSEL, 0, 0);
675                  config->fourcc_used = SendDlgItemMessage(hDlg, IDC_FOURCC, CB_GETCURSEL, 0, 0);                  config->fourcc_used = SendDlgItemMessage(hDlg, IDC_FOURCC, CB_GETCURSEL, 0, 0);
676                  config->max_key_interval = config_get_int(hDlg, IDC_MAXKEY, config->max_key_interval);                  config->max_key_interval = config_get_int(hDlg, IDC_MAXKEY, config->max_key_interval);
677                    config->min_key_interval = config_get_int(hDlg, IDC_MINKEY, config->min_key_interval);
678                  config->lum_masking = ISDLGSET(IDC_LUMMASK);                  config->lum_masking = ISDLGSET(IDC_LUMMASK);
679                    config->interlacing = ISDLGSET(IDC_INTERLACING);
680                  break;                  break;
681    
682          case DLG_QUANT :          case DLG_QUANT :
# Line 668  Line 693 
693    
694          case DLG_2PASS :          case DLG_2PASS :
695                  config->keyframe_boost = GetDlgItemInt(hDlg, IDC_KFBOOST, NULL, FALSE);                  config->keyframe_boost = GetDlgItemInt(hDlg, IDC_KFBOOST, NULL, FALSE);
                 config->min_key_interval = config_get_int(hDlg, IDC_MINKEY, config->min_key_interval);  
696                  config->discard1pass = ISDLGSET(IDC_DISCARD1PASS);                  config->discard1pass = ISDLGSET(IDC_DISCARD1PASS);
697                  config->dummy2pass = ISDLGSET(IDC_DUMMY2PASS);                  config->dummy2pass = ISDLGSET(IDC_DUMMY2PASS);
698                  config->curve_compression_high = GetDlgItemInt(hDlg, IDC_CURVECOMPH, NULL, FALSE);                  config->curve_compression_high = GetDlgItemInt(hDlg, IDC_CURVECOMPH, NULL, FALSE);
699                  config->curve_compression_low = GetDlgItemInt(hDlg, IDC_CURVECOMPL, NULL, FALSE);                  config->curve_compression_low = GetDlgItemInt(hDlg, IDC_CURVECOMPL, NULL, FALSE);
700                  config->bitrate_payback_delay = config_get_int(hDlg, IDC_PAYBACK, config->bitrate_payback_delay);                  config->bitrate_payback_delay = config_get_int(hDlg, IDC_PAYBACK, config->bitrate_payback_delay);
701                  config->bitrate_payback_method = ISDLGSET(IDC_PAYBACKPROP);                  config->bitrate_payback_method = ISDLGSET(IDC_PAYBACKPROP);
702                    config->hinted_me = ISDLGSET(IDC_HINTEDME);
703    
704                    if (GetDlgItemText(hDlg, IDC_HINTFILE, config->hintfile, MAX_PATH) == 0)
705                    {
706                            lstrcpy(config->hintfile, CONFIG_HINTFILE);
707                    }
708                  if (GetDlgItemText(hDlg, IDC_STATS1, config->stats1, MAX_PATH) == 0)                  if (GetDlgItemText(hDlg, IDC_STATS1, config->stats1, MAX_PATH) == 0)
709                  {                  {
710                          lstrcpy(config->stats1, CONFIG_2PASS_1_FILE);                          lstrcpy(config->stats1, CONFIG_2PASS_1_FILE);
# Line 704  Line 733 
733                  config->alt_curve_high_dist = config_get_int(hDlg, IDC_ALTCURVEHIGH, config->alt_curve_high_dist);                  config->alt_curve_high_dist = config_get_int(hDlg, IDC_ALTCURVEHIGH, config->alt_curve_high_dist);
734                  config->alt_curve_low_dist = config_get_int(hDlg, IDC_ALTCURVELOW, config->alt_curve_low_dist);                  config->alt_curve_low_dist = config_get_int(hDlg, IDC_ALTCURVELOW, config->alt_curve_low_dist);
735                  config->alt_curve_min_rel_qual = config_get_int(hDlg, IDC_MINQUAL, config->alt_curve_min_rel_qual);                  config->alt_curve_min_rel_qual = config_get_int(hDlg, IDC_MINQUAL, config->alt_curve_min_rel_qual);
736    
737                    config->twopass_max_bitrate /= CONFIG_KBPS;
738                    config->twopass_max_bitrate = config_get_int(hDlg, IDC_MAXBITRATE, config->twopass_max_bitrate);
739                    config->twopass_max_bitrate *= CONFIG_KBPS;
740                    config->twopass_max_overflow_improvement = config_get_int(hDlg, IDC_OVERIMP, config->twopass_max_overflow_improvement);
741                    config->twopass_max_overflow_degradation = config_get_int(hDlg, IDC_OVERDEG, config->twopass_max_overflow_degradation);
742    
743                    CONSTRAINVAL(config->twopass_max_overflow_improvement, 1, 80);
744                    CONSTRAINVAL(config->twopass_max_overflow_degradation, 1, 80);
745                  break;                  break;
746    
747          case DLG_CREDITS :          case DLG_CREDITS :
# Line 987  Line 1025 
1025                  {                  {
1026                          switch (LOWORD(wParam))                          switch (LOWORD(wParam))
1027                          {                          {
1028                            case IDC_HINTEDME :
1029                          case IDC_USEALT :                          case IDC_USEALT :
1030                          case IDC_USEAUTO :                          case IDC_USEAUTO :
1031                          case IDC_USEAUTOBONUS :                          case IDC_USEAUTOBONUS :
# Line 1001  Line 1040 
1040                                  break;                                  break;
1041                          }                          }
1042                  }                  }
1043                  if ((LOWORD(wParam) == IDC_STATS1_BROWSE || LOWORD(wParam) == IDC_STATS2_BROWSE) && HIWORD(wParam) == BN_CLICKED)                  if ((LOWORD(wParam) == IDC_HINT_BROWSE || LOWORD(wParam) == IDC_STATS1_BROWSE || LOWORD(wParam) == IDC_STATS2_BROWSE) && HIWORD(wParam) == BN_CLICKED)
1044                  {                  {
1045                          OPENFILENAME ofn;                          OPENFILENAME ofn;
1046                          char tmp[MAX_PATH];                          char tmp[MAX_PATH];
# Line 1018  Line 1057 
1057                          ofn.nMaxFile = MAX_PATH;                          ofn.nMaxFile = MAX_PATH;
1058                          ofn.Flags = OFN_PATHMUSTEXIST;                          ofn.Flags = OFN_PATHMUSTEXIST;
1059    
1060                          // display save box for stats1 using 1st-pass                          if (LOWORD(wParam) == IDC_HINT_BROWSE)
1061                          if (LOWORD(wParam) == IDC_STATS1_BROWSE &&                          {
1062                                    ofn.lpstrFilter = "motion hints (*.mvh)\0*.mvh\0All files (*.*)\0*.*\0\0";
1063                                    if (GetOpenFileName(&ofn))
1064                                    {
1065                                            SetDlgItemText(hDlg, IDC_HINTFILE, tmp);
1066                                    }
1067                            }
1068                            else if (LOWORD(wParam) == IDC_STATS1_BROWSE &&
1069                                  psi->config->mode == DLG_MODE_2PASS_1)                                  psi->config->mode == DLG_MODE_2PASS_1)
1070                          {                          {
1071                                  ofn.Flags |= OFN_OVERWRITEPROMPT;                                  ofn.Flags |= OFN_OVERWRITEPROMPT;

Legend:
Removed from v.61  
changed lines
  Added in v.109

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