[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 1910, Thu Dec 2 06:46:07 2010 UTC revision 1917, Wed Dec 22 16:52:12 2010 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.41 2010-12-02 06:46:07 Isibaar Exp $   * $Id: config.c,v 1.44 2010-12-22 16:52:12 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 248  Line 249 
249          /* motion */          /* motion */
250          {"motion_search",                       &reg.quality_user.motion_search,                                6},          {"motion_search",                       &reg.quality_user.motion_search,                                6},
251          {"vhq_mode",                            &reg.quality_user.vhq_mode,                                     1},          {"vhq_mode",                            &reg.quality_user.vhq_mode,                                     1},
252            {"vhq_metric",                          &reg.quality_user.vhq_metric,                           0},
253          {"vhq_bframe",                          &reg.quality_user.vhq_bframe,                           0},          {"vhq_bframe",                          &reg.quality_user.vhq_bframe,                           0},
254          {"chromame",                            &reg.quality_user.chromame,                                     1},          {"chromame",                            &reg.quality_user.chromame,                                     1},
255          {"turbo",                                       &reg.quality_user.turbo,                                                0},          {"turbo",                                       &reg.quality_user.turbo,                                                0},
256          {"max_key_interval",            &reg.quality_user.max_key_interval,                     300},          {"max_key_interval",            &reg.quality_user.max_key_interval,                     250},
257          {"frame_drop_ratio",            &reg.quality_user.frame_drop_ratio,                     0},          {"frame_drop_ratio",            &reg.quality_user.frame_drop_ratio,                     0},
258    
259          /* quant */          /* quant */
# Line 268  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},
# Line 351  Line 354 
354                  FreeLibrary(m_hdll);                  FreeLibrary(m_hdll);
355          }          }
356    
         reg.cpu = info.cpu_flags;  
   
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 417  Line 418 
418                  memcpy(&config->zones[i], &stmp, sizeof(zone_t));                  memcpy(&config->zones[i], &stmp, sizeof(zone_t));
419          }          }
420    
421            if (!(config->cpu&XVID_CPU_FORCE)) {
422                    config->cpu = info.cpu_flags;
423                    config->num_threads = info.num_threads; /* autodetect */
424            }
425    
426          RegCloseKey(hKey);          RegCloseKey(hKey);
427  }  }
428    
# Line 819  Line 825 
825                  SendDlgItemMessage(hDlg, IDC_VHQ, CB_ADDSTRING, 0, (LPARAM)"2 - Limited Search");                  SendDlgItemMessage(hDlg, IDC_VHQ, CB_ADDSTRING, 0, (LPARAM)"2 - Limited Search");
826                  SendDlgItemMessage(hDlg, IDC_VHQ, CB_ADDSTRING, 0, (LPARAM)"3 - Medium Search");                  SendDlgItemMessage(hDlg, IDC_VHQ, CB_ADDSTRING, 0, (LPARAM)"3 - Medium Search");
827                  SendDlgItemMessage(hDlg, IDC_VHQ, CB_ADDSTRING, 0, (LPARAM)"4 - Wide Search");                  SendDlgItemMessage(hDlg, IDC_VHQ, CB_ADDSTRING, 0, (LPARAM)"4 - Wide Search");
828    
829                    SendDlgItemMessage(hDlg, IDC_VHQ_METRIC, CB_ADDSTRING, 0, (LPARAM)"0 - PSNR");
830                    SendDlgItemMessage(hDlg, IDC_VHQ_METRIC, CB_ADDSTRING, 0, (LPARAM)"1 - PSNR-HVS-M");
831                  break;                  break;
832    
833          case IDD_ENC :          case IDD_ENC :
# Line 860  Line 869 
869                  EnableDlgWindow(hDlg, IDC_TFF, IsDlgChecked(hDlg, IDC_INTERLACING));                  EnableDlgWindow(hDlg, IDC_TFF, IsDlgChecked(hDlg, IDC_INTERLACING));
870                  EnableDlgWindow(hDlg, IDC_QPEL, profiles[profile].flags&PROFILE_QPEL);                  EnableDlgWindow(hDlg, IDC_QPEL, profiles[profile].flags&PROFILE_QPEL);
871                  EnableDlgWindow(hDlg, IDC_GMC, profiles[profile].flags&PROFILE_GMC);                  EnableDlgWindow(hDlg, IDC_GMC, profiles[profile].flags&PROFILE_GMC);
872                    EnableDlgWindow(hDlg, IDC_SLICES, profiles[profile].flags&PROFILE_RESYNCMARKER);
873    
874                  bvops = (profiles[profile].flags&PROFILE_BVOP) && IsDlgChecked(hDlg, IDC_BVOP);                  bvops = (profiles[profile].flags&PROFILE_BVOP) && IsDlgChecked(hDlg, IDC_BVOP);
875                  EnableDlgWindow(hDlg, IDC_MAXBFRAMES,      bvops);                  EnableDlgWindow(hDlg, IDC_MAXBFRAMES,      bvops);
# Line 1158  Line 1168 
1168                  EnableDlgWindow(hDlg, IDC_CPU_SSE4,     cpu_force);                  EnableDlgWindow(hDlg, IDC_CPU_SSE4,     cpu_force);
1169          EnableDlgWindow(hDlg, IDC_CPU_3DNOW,    cpu_force);          EnableDlgWindow(hDlg, IDC_CPU_3DNOW,    cpu_force);
1170                  EnableDlgWindow(hDlg, IDC_CPU_3DNOWEXT, cpu_force);                  EnableDlgWindow(hDlg, IDC_CPU_3DNOWEXT, cpu_force);
1171                    EnableDlgWindow(hDlg, IDC_NUMTHREADS,   cpu_force);
1172                    EnableDlgWindow(hDlg, IDC_NUMTHREADS_STATIC,   cpu_force);
1173                  break;                  break;
1174          }          }
1175  }  }
# Line 1177  Line 1189 
1189                  CheckDlg(hDlg, IDC_TFF, config->tff);                  CheckDlg(hDlg, IDC_TFF, config->tff);
1190                  CheckDlg(hDlg, IDC_QPEL, config->qpel);                  CheckDlg(hDlg, IDC_QPEL, config->qpel);
1191                  CheckDlg(hDlg, IDC_GMC, config->gmc);                  CheckDlg(hDlg, IDC_GMC, config->gmc);
1192                    CheckDlg(hDlg, IDC_SLICES, (config->num_slices != 1));
1193                  CheckDlg(hDlg, IDC_BVOP, config->use_bvop);                  CheckDlg(hDlg, IDC_BVOP, config->use_bvop);
1194    
1195                  SetDlgItemInt(hDlg, IDC_MAXBFRAMES, config->max_bframes, FALSE);                  SetDlgItemInt(hDlg, IDC_MAXBFRAMES, config->max_bframes, FALSE);
# Line 1263  Line 1276 
1276    
1277                  SendDlgItemMessage(hDlg, IDC_MOTION, CB_SETCURSEL, quality_preset->motion_search, 0);                  SendDlgItemMessage(hDlg, IDC_MOTION, CB_SETCURSEL, quality_preset->motion_search, 0);
1278                  SendDlgItemMessage(hDlg, IDC_VHQ, CB_SETCURSEL, quality_preset->vhq_mode, 0);                  SendDlgItemMessage(hDlg, IDC_VHQ, CB_SETCURSEL, quality_preset->vhq_mode, 0);
1279                    SendDlgItemMessage(hDlg, IDC_VHQ_METRIC, CB_SETCURSEL, quality_preset->vhq_metric, 0);
1280                  CheckDlg(hDlg, IDC_VHQ_BFRAME, quality_preset->vhq_bframe);                  CheckDlg(hDlg, IDC_VHQ_BFRAME, quality_preset->vhq_bframe);
1281                  CheckDlg(hDlg, IDC_CHROMAME, quality_preset->chromame);                  CheckDlg(hDlg, IDC_CHROMAME, quality_preset->chromame);
1282                  CheckDlg(hDlg, IDC_TURBO, quality_preset->turbo);                  CheckDlg(hDlg, IDC_TURBO, quality_preset->turbo);
# Line 1271  Line 1285 
1285    
1286      EnableDlgWindow(hDlg, IDC_MOTION,     userdef);      EnableDlgWindow(hDlg, IDC_MOTION,     userdef);
1287      EnableDlgWindow(hDlg, IDC_VHQ,        userdef);      EnableDlgWindow(hDlg, IDC_VHQ,        userdef);
1288        EnableDlgWindow(hDlg, IDC_VHQ_METRIC, userdef);
1289      EnableDlgWindow(hDlg, IDC_VHQ_BFRAME, userdef);      EnableDlgWindow(hDlg, IDC_VHQ_BFRAME, userdef);
1290      EnableDlgWindow(hDlg, IDC_CHROMAME,   userdef);      EnableDlgWindow(hDlg, IDC_CHROMAME,   userdef);
1291      EnableDlgWindow(hDlg, IDC_TURBO,      userdef);      EnableDlgWindow(hDlg, IDC_TURBO,      userdef);
# Line 1315  Line 1330 
1330                  CheckRadioButton(hDlg, IDC_CPU_AUTO, IDC_CPU_FORCE,                  CheckRadioButton(hDlg, IDC_CPU_AUTO, IDC_CPU_FORCE,
1331                          config->cpu & XVID_CPU_FORCE ? IDC_CPU_FORCE : IDC_CPU_AUTO );                          config->cpu & XVID_CPU_FORCE ? IDC_CPU_FORCE : IDC_CPU_AUTO );
1332                  set_dlgitem_hex(hDlg, IDC_DEBUG, config->debug);                  set_dlgitem_hex(hDlg, IDC_DEBUG, config->debug);
1333                    SetDlgItemInt(hDlg, IDC_NUMTHREADS, config->num_threads, FALSE);
1334      break;      break;
1335    
1336    case IDD_ENC:    case IDD_ENC:
                 SetDlgItemInt(hDlg, IDC_NUMTHREADS, config->num_threads, FALSE);  
1337                  if(profiles[config->profile].flags & PROFILE_XVID)                  if(profiles[config->profile].flags & PROFILE_XVID)
1338                          SendDlgItemMessage(hDlg, IDC_FOURCC, CB_SETCURSEL, 0, 0);                          SendDlgItemMessage(hDlg, IDC_FOURCC, CB_SETCURSEL, 0, 0);
1339                  else                  else
# Line 1357  Line 1372 
1372                  config->tff = IsDlgChecked(hDlg, IDC_TFF);                  config->tff = IsDlgChecked(hDlg, IDC_TFF);
1373                  config->qpel = IsDlgChecked(hDlg, IDC_QPEL);                  config->qpel = IsDlgChecked(hDlg, IDC_QPEL);
1374                  config->gmc = IsDlgChecked(hDlg, IDC_GMC);                  config->gmc = IsDlgChecked(hDlg, IDC_GMC);
1375                    config->num_slices = (IsDlgChecked(hDlg, IDC_SLICES) ? ((config->num_slices < 2) ? 0 : config->num_slices) : 1);
1376    
1377                  config->use_bvop = IsDlgChecked(hDlg, IDC_BVOP);                  config->use_bvop = IsDlgChecked(hDlg, IDC_BVOP);
1378                  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 1474  Line 1490 
1490      if (config->quality==quality_table_num) {      if (config->quality==quality_table_num) {
1491        config->quality_user.motion_search = SendDlgItemMessage(hDlg, IDC_MOTION, CB_GETCURSEL, 0, 0);        config->quality_user.motion_search = SendDlgItemMessage(hDlg, IDC_MOTION, CB_GETCURSEL, 0, 0);
1492                    config->quality_user.vhq_mode = SendDlgItemMessage(hDlg, IDC_VHQ, CB_GETCURSEL, 0, 0);                    config->quality_user.vhq_mode = SendDlgItemMessage(hDlg, IDC_VHQ, CB_GETCURSEL, 0, 0);
1493                      config->quality_user.vhq_metric = SendDlgItemMessage(hDlg, IDC_VHQ_METRIC, CB_GETCURSEL, 0, 0);
1494                    config->quality_user.vhq_bframe = IsDlgButtonChecked(hDlg, IDC_VHQ_BFRAME);                    config->quality_user.vhq_bframe = IsDlgButtonChecked(hDlg, IDC_VHQ_BFRAME);
1495                    config->quality_user.chromame = IsDlgChecked(hDlg, IDC_CHROMAME);                    config->quality_user.chromame = IsDlgChecked(hDlg, IDC_CHROMAME);
1496                    config->quality_user.turbo = IsDlgChecked(hDlg, IDC_TURBO);                    config->quality_user.turbo = IsDlgChecked(hDlg, IDC_TURBO);
# Line 1516  Line 1533 
1533                  config->cpu |= IsDlgChecked(hDlg, IDC_CPU_3DNOWEXT) ? XVID_CPU_3DNOWEXT : 0;                  config->cpu |= IsDlgChecked(hDlg, IDC_CPU_3DNOWEXT) ? XVID_CPU_3DNOWEXT : 0;
1534                  config->cpu |= IsDlgChecked(hDlg, IDC_CPU_FORCE)        ? XVID_CPU_FORCE : 0;                  config->cpu |= IsDlgChecked(hDlg, IDC_CPU_FORCE)        ? XVID_CPU_FORCE : 0;
1535      config->debug = get_dlgitem_hex(hDlg, IDC_DEBUG, config->debug);      config->debug = get_dlgitem_hex(hDlg, IDC_DEBUG, config->debug);
1536                    config->num_threads = min(16, config_get_uint(hDlg, IDC_NUMTHREADS, config->num_threads));
1537      break;      break;
1538    
1539    case IDD_ENC :    case IDD_ENC :
                 config->num_threads = min(4, config_get_uint(hDlg, IDC_NUMTHREADS, config->num_threads));  
1540                  if(!(profiles[config->profile].flags & PROFILE_XVID))                  if(!(profiles[config->profile].flags & PROFILE_XVID))
1541                    config->fourcc_used = SendDlgItemMessage(hDlg, IDC_FOURCC, CB_GETCURSEL, 0, 0);                    config->fourcc_used = SendDlgItemMessage(hDlg, IDC_FOURCC, CB_GETCURSEL, 0, 0);
1542                  config->vop_debug = IsDlgChecked(hDlg, IDC_VOPDEBUG);                  config->vop_debug = IsDlgChecked(hDlg, IDC_VOPDEBUG);

Legend:
Removed from v.1910  
changed lines
  Added in v.1917

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