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

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

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

revision 1914, Tue Dec 21 16:56:42 2010 UTC revision 1952, Wed Feb 16 19:04:39 2011 UTC
# Line 19  Line 19 
19   *      along with this program; if not, write to the Free Software   *      along with this program; if not, write to the Free Software
20   *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.   *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21   *   *
22   * $Id: config.c,v 1.42 2010-12-21 16:56:42 Isibaar Exp $   * $Id: config.c,v 1.47 2011-02-16 18:59:45 Isibaar Exp $
23   *   *
24   *************************************************************************/   *************************************************************************/
25    
# Line 125  Line 125 
125    { "MPEG4 Advanced Simple @ L4", "MPEG4 ASP @ L4",         0xf4,  352, 576, 30,  4, 2376,  792,  23760,  50,  80*16368,  8192, 3000000,        0, -1, PROFILE_AS },    { "MPEG4 Advanced Simple @ L4", "MPEG4 ASP @ L4",         0xf4,  352, 576, 30,  4, 2376,  792,  23760,  50,  80*16368,  8192, 3000000,        0, -1, PROFILE_AS },
126    { "MPEG4 Advanced Simple @ L5", "MPEG4 ASP @ L5",         0xf5,  720, 576, 30,  4, 4860, 1620,  48600,  25, 112*16368, 16384, 8000000,        0, -1, PROFILE_AS },    { "MPEG4 Advanced Simple @ L5", "MPEG4 ASP @ L5",         0xf5,  720, 576, 30,  4, 4860, 1620,  48600,  25, 112*16368, 16384, 8000000,        0, -1, PROFILE_AS },
127    
128    { "(unrestricted)", "(unrestricted)",  0x00,    0,   0,  0,  0,    0,    0,      0, 100,   0*16368,    -1,       0,        0, -1, 0xffffffff & ~(PROFILE_EXTRA | PROFILE_PACKED)},    { "(unrestricted)", "(unrestricted)",  0x00,    0,   0,  0,  0,    0,    0,      0, 100,   0*16368,    -1,       0,        0, -1, 0xffffffff & ~(PROFILE_EXTRA | PROFILE_PACKED | PROFILE_XVID)},
129  };  };
130    
131    
132  const quality_t quality_table[] =  const quality_t quality_table[] =
133  {  {
134      /* name                 |  m  vhq  bf cme  tbo  kfi  fdr  | iquant pquant bquant trellis */      /* name                 |  m  vhq mtc bf cme  tbo  kfi  fdr  | iquant pquant bquant trellis */
135    { "Real-time",               1,  0,  0,  0,  0,  300,  0,     1, 31, 1, 31, 1, 31,   0   },    { "Real-time",               1,  0,  0,  0,  0,  0,  300,  0,     1, 31, 1, 31, 1, 31,   0   },
136    { QUALITY_GENERAL_STRING,    6,  1,  0,  1,  0,  300,  0,     1, 31, 1, 31, 1, 31,   1   },    { QUALITY_GENERAL_STRING,    6,  1,  0,  0,  1,  0,  300,  0,     1, 31, 1, 31, 1, 31,   1   },
137  };  };
138    
139  const int quality_table_num = sizeof(quality_table)/sizeof(quality_t);  const int quality_table_num = sizeof(quality_table)/sizeof(quality_t);
# Line 201  Line 201 
201          {"bquant_ratio",                        &reg.bquant_ratio,                              150},   /* 100-base float */          {"bquant_ratio",                        &reg.bquant_ratio,                              150},   /* 100-base float */
202          {"bquant_offset",                       &reg.bquant_offset,                             100},   /* 100-base float */          {"bquant_offset",                       &reg.bquant_offset,                             100},   /* 100-base float */
203          {"packed",                                      &reg.packed,                                    1},          {"packed",                                      &reg.packed,                                    1},
204            {"num_slices",                          &reg.num_slices,                                1},
205    
206          /* aspect ratio */          /* aspect ratio */
207          {"ar_mode",                                     &reg.ar_mode,                                   0},          {"ar_mode",                                     &reg.ar_mode,                                   0},
# Line 269  Line 270 
270          {"debug",                                       &reg.debug,                                             0x0},          {"debug",                                       &reg.debug,                                             0x0},
271          {"vop_debug",                           &reg.vop_debug,                                 0},          {"vop_debug",                           &reg.vop_debug,                                 0},
272          {"display_status",                      &reg.display_status,                    1},          {"display_status",                      &reg.display_status,                    1},
273            {"cpu_flags",                           &reg.cpu,                                               0},
274    
275          /* smp */          /* smp */
276          {"num_threads",                         &reg.num_threads,                               0},          {"num_threads",                         &reg.num_threads,                               0},
         {"num_slices",                          &reg.num_slices,                                1},  
277    
278          /* decoder, shared with dshow */          /* decoder, shared with dshow */
279          {"Brightness",                          &pp_brightness,                                 0},          {"Brightness",                          &pp_brightness,                                 0},
# Line 353  Line 354 
354                  FreeLibrary(m_hdll);                  FreeLibrary(m_hdll);
355          }          }
356    
         reg.cpu = info.cpu_flags;  
         reg.num_threads = info.num_threads;  
   
357          RegOpenKeyEx(XVID_REG_KEY, XVID_REG_PARENT "\\" XVID_REG_CHILD, 0, KEY_READ, &hKey);          RegOpenKeyEx(XVID_REG_KEY, XVID_REG_PARENT "\\" XVID_REG_CHILD, 0, KEY_READ, &hKey);
358    
359          /* read integer values */          /* read integer values */
# Line 420  Line 418 
418                  memcpy(&config->zones[i], &stmp, sizeof(zone_t));                  memcpy(&config->zones[i], &stmp, sizeof(zone_t));
419          }          }
420    
421          if (config->num_threads == 0)          if (!(config->cpu&XVID_CPU_FORCE)) {
422                  config->num_threads = info.num_threads; /* old autodetect */                  config->cpu = info.cpu_flags;
423                    config->num_threads = info.num_threads; /* autodetect */
424            }
425    
426          RegCloseKey(hKey);          RegCloseKey(hKey);
427  }  }
# Line 853  Line 853 
853          int cpu_force;          int cpu_force;
854          int custom_quant, bvops;          int custom_quant, bvops;
855          int ar_mode, ar_par;          int ar_mode, ar_par;
856            int qpel_checked, mot_srch_prec, vhq_enabled, bvhq_enabled;
857    
858          switch(idd) {          switch(idd) {
859          case IDD_PROFILE :          case IDD_PROFILE :
# Line 869  Line 870 
870                  EnableDlgWindow(hDlg, IDC_TFF, IsDlgChecked(hDlg, IDC_INTERLACING));                  EnableDlgWindow(hDlg, IDC_TFF, IsDlgChecked(hDlg, IDC_INTERLACING));
871                  EnableDlgWindow(hDlg, IDC_QPEL, profiles[profile].flags&PROFILE_QPEL);                  EnableDlgWindow(hDlg, IDC_QPEL, profiles[profile].flags&PROFILE_QPEL);
872                  EnableDlgWindow(hDlg, IDC_GMC, profiles[profile].flags&PROFILE_GMC);                  EnableDlgWindow(hDlg, IDC_GMC, profiles[profile].flags&PROFILE_GMC);
873                    EnableDlgWindow(hDlg, IDC_SLICES, profiles[profile].flags&PROFILE_RESYNCMARKER);
874    
875                  bvops = (profiles[profile].flags&PROFILE_BVOP) && IsDlgChecked(hDlg, IDC_BVOP);                  bvops = (profiles[profile].flags&PROFILE_BVOP) && IsDlgChecked(hDlg, IDC_BVOP);
876                  EnableDlgWindow(hDlg, IDC_MAXBFRAMES,      bvops);                  EnableDlgWindow(hDlg, IDC_MAXBFRAMES,      bvops);
# Line 1170  Line 1172 
1172                  EnableDlgWindow(hDlg, IDC_NUMTHREADS,   cpu_force);                  EnableDlgWindow(hDlg, IDC_NUMTHREADS,   cpu_force);
1173                  EnableDlgWindow(hDlg, IDC_NUMTHREADS_STATIC,   cpu_force);                  EnableDlgWindow(hDlg, IDC_NUMTHREADS_STATIC,   cpu_force);
1174                  break;                  break;
1175    
1176            case IDD_MOTION:
1177                    {
1178                            const int userdef = (config->quality==quality_table_num);
1179                            if (userdef) {
1180                                    bvops = (profiles[config->profile].flags&PROFILE_BVOP) && config->use_bvop;
1181                                    qpel_checked = (profiles[config->profile].flags&PROFILE_QPEL) && config->qpel;
1182                                    mot_srch_prec = SendDlgItemMessage(hDlg, IDC_MOTION, CB_GETCURSEL, 0, 0);
1183                                    vhq_enabled = SendDlgItemMessage(hDlg, IDC_VHQ, CB_GETCURSEL, 0, 0);
1184                                    bvhq_enabled = IsDlgButtonChecked(hDlg, IDC_VHQ_BFRAME);
1185                                    EnableDlgWindow(hDlg, IDC_VHQ, mot_srch_prec);
1186                                    EnableDlgWindow(hDlg, IDC_VHQ_BFRAME, mot_srch_prec && bvops && vhq_enabled);
1187                                    EnableDlgWindow(hDlg, IDC_CHROMAME, mot_srch_prec);
1188                                    EnableDlgWindow(hDlg, IDC_TURBO, mot_srch_prec && (bvops || qpel_checked));
1189                                    EnableDlgWindow(hDlg, IDC_VHQ_METRIC, mot_srch_prec && (vhq_enabled || bvhq_enabled));
1190                                    EnableDlgWindow(hDlg, IDC_FRAMEDROP, mot_srch_prec);
1191                                    EnableDlgWindow(hDlg, IDC_MAXKEY, mot_srch_prec);
1192                            }
1193                            break;
1194                    }
1195          }          }
1196  }  }
1197    
# Line 1188  Line 1210 
1210                  CheckDlg(hDlg, IDC_TFF, config->tff);                  CheckDlg(hDlg, IDC_TFF, config->tff);
1211                  CheckDlg(hDlg, IDC_QPEL, config->qpel);                  CheckDlg(hDlg, IDC_QPEL, config->qpel);
1212                  CheckDlg(hDlg, IDC_GMC, config->gmc);                  CheckDlg(hDlg, IDC_GMC, config->gmc);
1213                    CheckDlg(hDlg, IDC_SLICES, (config->num_slices != 1));
1214                  CheckDlg(hDlg, IDC_BVOP, config->use_bvop);                  CheckDlg(hDlg, IDC_BVOP, config->use_bvop);
1215    
1216                  SetDlgItemInt(hDlg, IDC_MAXBFRAMES, config->max_bframes, FALSE);                  SetDlgItemInt(hDlg, IDC_MAXBFRAMES, config->max_bframes, FALSE);
# Line 1271  Line 1294 
1294      {      {
1295      const int userdef = (config->quality==quality_table_num);      const int userdef = (config->quality==quality_table_num);
1296      const quality_t* quality_preset = userdef ? &config->quality_user : &quality_table[config->quality];      const quality_t* quality_preset = userdef ? &config->quality_user : &quality_table[config->quality];
1297        int bvops = (profiles[config->profile].flags&PROFILE_BVOP) && config->use_bvop;
1298        int qpel_checked = (profiles[config->profile].flags&PROFILE_QPEL) && config->qpel;
1299        int bvops_qpel_motion = (bvops || qpel_checked) && quality_preset->motion_search;
1300        int vhq_or_bvhq = quality_preset->vhq_mode || quality_preset->vhq_bframe;
1301    
1302                  SendDlgItemMessage(hDlg, IDC_MOTION, CB_SETCURSEL, quality_preset->motion_search, 0);                  SendDlgItemMessage(hDlg, IDC_MOTION, CB_SETCURSEL, quality_preset->motion_search, 0);
1303                  SendDlgItemMessage(hDlg, IDC_VHQ, CB_SETCURSEL, quality_preset->vhq_mode, 0);                  SendDlgItemMessage(hDlg, IDC_VHQ, CB_SETCURSEL, quality_preset->vhq_mode, 0);
# Line 1282  Line 1309 
1309                  SetDlgItemInt(hDlg, IDC_MAXKEY, quality_preset->max_key_interval, FALSE);                  SetDlgItemInt(hDlg, IDC_MAXKEY, quality_preset->max_key_interval, FALSE);
1310    
1311      EnableDlgWindow(hDlg, IDC_MOTION,     userdef);      EnableDlgWindow(hDlg, IDC_MOTION,     userdef);
1312      EnableDlgWindow(hDlg, IDC_VHQ,        userdef);      EnableDlgWindow(hDlg, IDC_VHQ,        userdef && quality_preset->motion_search);
1313      EnableDlgWindow(hDlg, IDC_VHQ_METRIC, userdef);      EnableDlgWindow(hDlg, IDC_VHQ_METRIC, userdef && vhq_or_bvhq);
1314      EnableDlgWindow(hDlg, IDC_VHQ_BFRAME, userdef);      EnableDlgWindow(hDlg, IDC_VHQ_BFRAME, userdef && bvops);
1315      EnableDlgWindow(hDlg, IDC_CHROMAME,   userdef);      EnableDlgWindow(hDlg, IDC_CHROMAME,   userdef && quality_preset->motion_search);
1316      EnableDlgWindow(hDlg, IDC_TURBO,      userdef);      EnableDlgWindow(hDlg, IDC_TURBO,      userdef && bvops_qpel_motion);
1317      EnableDlgWindow(hDlg, IDC_FRAMEDROP,  userdef);      EnableDlgWindow(hDlg, IDC_FRAMEDROP,  userdef && quality_preset->motion_search);
1318      EnableDlgWindow(hDlg, IDC_MAXKEY,     userdef);      EnableDlgWindow(hDlg, IDC_MAXKEY,     userdef && quality_preset->motion_search);
1319    
1320                  break;                  break;
1321      }      }
1322    
# Line 1370  Line 1398 
1398                  config->tff = IsDlgChecked(hDlg, IDC_TFF);                  config->tff = IsDlgChecked(hDlg, IDC_TFF);
1399                  config->qpel = IsDlgChecked(hDlg, IDC_QPEL);                  config->qpel = IsDlgChecked(hDlg, IDC_QPEL);
1400                  config->gmc = IsDlgChecked(hDlg, IDC_GMC);                  config->gmc = IsDlgChecked(hDlg, IDC_GMC);
1401                    config->num_slices = (IsDlgChecked(hDlg, IDC_SLICES) ? ((config->num_slices < 2) ? 0 : config->num_slices) : 1);
1402    
1403                  config->use_bvop = IsDlgChecked(hDlg, IDC_BVOP);                  config->use_bvop = IsDlgChecked(hDlg, IDC_BVOP);
1404                  config->max_bframes = config_get_uint(hDlg, IDC_MAXBFRAMES, config->max_bframes);                  config->max_bframes = config_get_uint(hDlg, IDC_MAXBFRAMES, config->max_bframes);
# Line 1709  Line 1738 
1738                           LOWORD(wParam) == IDC_LEVEL_PROFILE ||                           LOWORD(wParam) == IDC_LEVEL_PROFILE ||
1739                           LOWORD(wParam) == IDC_QUANTTYPE ||                           LOWORD(wParam) == IDC_QUANTTYPE ||
1740                           LOWORD(wParam) == IDC_ASPECT_RATIO ||                           LOWORD(wParam) == IDC_ASPECT_RATIO ||
1741                             LOWORD(wParam) == IDC_MOTION ||
1742                             LOWORD(wParam) == IDC_VHQ ||
1743                           LOWORD(wParam) == IDC_BITRATE_CFORMAT ||                           LOWORD(wParam) == IDC_BITRATE_CFORMAT ||
1744                           LOWORD(wParam) == IDC_BITRATE_AFORMAT ||                           LOWORD(wParam) == IDC_BITRATE_AFORMAT ||
1745                           LOWORD(wParam) == IDC_BITRATE_FPS)) {                           LOWORD(wParam) == IDC_BITRATE_FPS)) {
# Line 2007  Line 2038 
2038                  SendDlgItemMessage(hDlg, IDC_MODE, CB_ADDSTRING, 0, (LPARAM)"Null test speed");                  SendDlgItemMessage(hDlg, IDC_MODE, CB_ADDSTRING, 0, (LPARAM)"Null test speed");
2039  #endif  #endif
2040    
2041                  for (i=0; i<quality_table_num; i++)                  for (i=0; i<(unsigned int)quality_table_num; i++)
2042                          SendDlgItemMessage(hDlg, IDC_QUALITY, CB_ADDSTRING, 0, (LPARAM)quality_table[i].name);                          SendDlgItemMessage(hDlg, IDC_QUALITY, CB_ADDSTRING, 0, (LPARAM)quality_table[i].name);
2043      SendDlgItemMessage(hDlg, IDC_QUALITY, CB_ADDSTRING, 0, (LPARAM)QUALITY_USER_STRING);      SendDlgItemMessage(hDlg, IDC_QUALITY, CB_ADDSTRING, 0, (LPARAM)QUALITY_USER_STRING);
2044    

Legend:
Removed from v.1914  
changed lines
  Added in v.1952

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