--- trunk/xvidcore/vfw/src/config.c 2005/10/22 22:32:44 1650 +++ trunk/xvidcore/vfw/src/config.c 2008/11/27 16:33:32 1808 @@ -104,7 +104,7 @@ /* MPEG-4 PROFILES/LEVELS ============================================================== */ /* ===================================================================================== */ -#define EXTRA_PROFILES +/* #define EXTRA_PROFILES */ /* default vbv_occupancy is (64/170)*vbv_buffer_size */ @@ -138,18 +138,21 @@ { "Advanced Simple @ L4", 0xf4, 352, 576, 30, 4, 2376, 792, 23760, 50, 80*16368, 8192, 3000000, 0, -1, PROFILE_AS }, { "Advanced Simple @ L5", 0xf5, 720, 576, 30, 4, 4860, 1620, 48600, 25, 112*16368, 16384, 8000000, 0, -1, PROFILE_AS }, -#ifdef EXTRA_PROFILES +#ifndef EXTRA_PROFILES + { "Mobile", 0x00, 352, 240, 30, 1, 990, 330, 36000, 100, 128*8192, -1, 1334850, 8000000, 5, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_PACKED|PROFILE_MPEGQUANT|PROFILE_QPEL }, + { "Portable", 0x00, 640, 480, 30, 1, 3600, 1200, 36000, 100, 384*8192, -1, 4854000, 8000000, 5, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_PACKED|PROFILE_MPEGQUANT|PROFILE_QPEL|PROFILE_INTERLACE }, + { "Home", 0x00, 720, 576, 25, 1, 4860, 1620, 40500, 100, 384*8192, -1, 4854000, 8000000, 5, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_PACKED|PROFILE_MPEGQUANT|PROFILE_QPEL|PROFILE_INTERLACE }, + { "Highdef", 0x00, 1280, 720, 30, 1,10800, 3600, 108000, 100, 768*8192, -1, 9708400, 16000000, 5, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_PACKED|PROFILE_MPEGQUANT|PROFILE_QPEL|PROFILE_INTERLACE }, +#else { "Handheld", 0x00, 176, 144, 15, 1, 198, 99, 1485, 100, 32*8192, -1, 537600, 800000, 0, PROFILE_ADAPTQUANT|PROFILE_EXTRA }, - { "Portable NTSC", 0x00, 352, 240, 30, 1, 990, 330, 36000, 100, 384*8192, -1, 4854000, 8000000, 1, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_EXTRA }, - { "Portable PAL", 0x00, 352, 288, 25, 1, 1188, 396, 36000, 100, 384*8192, -1, 4854000, 8000000, 1, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_EXTRA }, - { "Home Theatre NTSC", 0x00, 720, 480, 30, 1, 4050, 1350, 40500, 100, 384*8192, -1, 4854000, 8000000, 1, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_INTERLACE|PROFILE_EXTRA }, - { "Home Theatre PAL", 0x00, 720, 576, 25, 1, 4860, 1620, 40500, 100, 384*8192, -1, 4854000, 8000000, 1, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_INTERLACE|PROFILE_EXTRA }, - { "Cinema Plus NTSC", 0x00, 720, 480, 30, 1, 4050, 1350, 40500, 100, 384*8192, -1, 4854000, 8000000, 3, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_MPEGQUANT|PROFILE_INTERLACE|PROFILE_QPEL|PROFILE_EXTRA }, - { "Cinema Plus PAL", 0x00, 720, 576, 25, 1, 4860, 1620, 40500, 100, 384*8192, -1, 4854000, 8000000, 3, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_MPEGQUANT|PROFILE_INTERLACE|PROFILE_QPEL|PROFILE_EXTRA }, - { "HDTV", 0x00, 1280, 720, 30, 1,10800, 3600, 108000, 100, 768*8192, -1, 9708400, 16000000, 2, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_INTERLACE|PROFILE_EXTRA }, + { "Portable NTSC", 0x00, 352, 240, 30, 1, 990, 330, 36000, 100, 384*8192, -1, 4854000, 8000000, 1, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_PACKED|PROFILE_EXTRA }, + { "Portable PAL", 0x00, 352, 288, 25, 1, 1188, 396, 36000, 100, 384*8192, -1, 4854000, 8000000, 1, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_PACKED|PROFILE_EXTRA }, + { "Home Theatre NTSC", 0x00, 720, 480, 30, 1, 4050, 1350, 40500, 100, 384*8192, -1, 4854000, 8000000, 1, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_PACKED|PROFILE_INTERLACE|PROFILE_EXTRA }, + { "Home Theatre PAL", 0x00, 720, 576, 25, 1, 4860, 1620, 40500, 100, 384*8192, -1, 4854000, 8000000, 1, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_PACKED|PROFILE_INTERLACE|PROFILE_EXTRA }, + { "HDTV", 0x00, 1280, 720, 30, 1,10800, 3600, 108000, 100, 768*8192, -1, 9708400, 16000000, 2, PROFILE_4MV|PROFILE_ADAPTQUANT|PROFILE_BVOP|PROFILE_PACKED|PROFILE_INTERLACE|PROFILE_EXTRA }, #endif - { "(unrestricted)", 0x00, 0, 0, 0, 0, 0, 0, 0, 100, 0*16368, -1, 0, 0, -1, 0xffffffff & ~PROFILE_EXTRA }, + { "(unrestricted)", 0x00, 0, 0, 0, 0, 0, 0, 0, 100, 0*16368, -1, 0, 0, -1, 0xffffffff & ~(PROFILE_EXTRA | PROFILE_PACKED)}, }; @@ -292,6 +295,9 @@ {"debug", ®.debug, 0x0}, {"vop_debug", ®.vop_debug, 0}, {"display_status", ®.display_status, 1}, + + /* smp */ + {"num_threads", ®.num_threads, 0}, /* decoder, shared with dshow */ {"Brightness", &pp_brightness, 0}, @@ -373,7 +379,6 @@ } reg.cpu = info.cpu_flags; - reg.num_threads = info.num_threads; RegOpenKeyEx(XVID_REG_KEY, XVID_REG_PARENT "\\" XVID_REG_CHILD, 0, KEY_READ, &hKey); @@ -700,12 +705,12 @@ static BOOL CALLBACK quantmatrix_proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { - CONFIG* config = (CONFIG*)GetWindowLong(hDlg, GWL_USERDATA); + CONFIG* config = (CONFIG*)GetWindowLongPtr(hDlg, GWLP_USERDATA); switch (uMsg) { case WM_INITDIALOG : - SetWindowLong(hDlg, GWL_USERDATA, lParam); + SetWindowLongPtr(hDlg, GWLP_USERDATA, lParam); config = (CONFIG*)lParam; quant_upload(hDlg, config); @@ -837,10 +842,6 @@ break; case IDD_ENC : - /* force threads disabled */ - EnableWindow(GetDlgItem(hDlg, IDC_NUMTHREADS_STATIC), FALSE); - EnableWindow(GetDlgItem(hDlg, IDC_NUMTHREADS), FALSE); - SendDlgItemMessage(hDlg, IDC_FOURCC, CB_ADDSTRING, 0, (LPARAM)"XVID"); SendDlgItemMessage(hDlg, IDC_FOURCC, CB_ADDSTRING, 0, (LPARAM)"DIVX"); SendDlgItemMessage(hDlg, IDC_FOURCC, CB_ADDSTRING, 0, (LPARAM)"DX50"); @@ -887,7 +888,7 @@ EnableDlgWindow(hDlg, IDC_MAXBFRAMES_S, bvops); EnableDlgWindow(hDlg, IDC_BQUANTRATIO_S, bvops); EnableDlgWindow(hDlg, IDC_BQUANTOFFSET_S, bvops); - EnableDlgWindow(hDlg, IDC_PACKED, bvops && !(profiles[profile].flags & PROFILE_EXTRA)); + EnableDlgWindow(hDlg, IDC_PACKED, bvops && !(profiles[profile].flags & PROFILE_PACKED)); break; case IDD_AR: @@ -1104,7 +1105,9 @@ EnableDlgWindow(hDlg, IDC_CPU_MMXEXT, cpu_force); EnableDlgWindow(hDlg, IDC_CPU_SSE, cpu_force); EnableDlgWindow(hDlg, IDC_CPU_SSE2, cpu_force); - EnableDlgWindow(hDlg, IDC_CPU_3DNOW, cpu_force); + EnableDlgWindow(hDlg, IDC_CPU_SSE3, cpu_force); + EnableDlgWindow(hDlg, IDC_CPU_SSE4, cpu_force); + EnableDlgWindow(hDlg, IDC_CPU_3DNOW, cpu_force); EnableDlgWindow(hDlg, IDC_CPU_3DNOWEXT, cpu_force); break; } @@ -1255,7 +1258,9 @@ CheckDlg(hDlg, IDC_CPU_MMXEXT, (config->cpu & XVID_CPU_MMXEXT)); CheckDlg(hDlg, IDC_CPU_SSE, (config->cpu & XVID_CPU_SSE)); CheckDlg(hDlg, IDC_CPU_SSE2, (config->cpu & XVID_CPU_SSE2)); - CheckDlg(hDlg, IDC_CPU_3DNOW, (config->cpu & XVID_CPU_3DNOW)); + CheckDlg(hDlg, IDC_CPU_SSE3, (config->cpu & XVID_CPU_SSE3)); + CheckDlg(hDlg, IDC_CPU_SSE4, (config->cpu & XVID_CPU_SSE41)); + CheckDlg(hDlg, IDC_CPU_3DNOW, (config->cpu & XVID_CPU_3DNOW)); CheckDlg(hDlg, IDC_CPU_3DNOWEXT, (config->cpu & XVID_CPU_3DNOWEXT)); CheckRadioButton(hDlg, IDC_CPU_AUTO, IDC_CPU_FORCE, @@ -1452,7 +1457,9 @@ config->cpu |= IsDlgChecked(hDlg, IDC_CPU_MMXEXT) ? XVID_CPU_MMXEXT : 0; config->cpu |= IsDlgChecked(hDlg, IDC_CPU_SSE) ? XVID_CPU_SSE : 0; config->cpu |= IsDlgChecked(hDlg, IDC_CPU_SSE2) ? XVID_CPU_SSE2 : 0; - config->cpu |= IsDlgChecked(hDlg, IDC_CPU_3DNOW) ? XVID_CPU_3DNOW : 0; + config->cpu |= IsDlgChecked(hDlg, IDC_CPU_SSE3) ? XVID_CPU_SSE3 : 0; + config->cpu |= IsDlgChecked(hDlg, IDC_CPU_SSE4) ? XVID_CPU_SSE41 : 0; + config->cpu |= IsDlgChecked(hDlg, IDC_CPU_3DNOW) ? XVID_CPU_3DNOW : 0; config->cpu |= IsDlgChecked(hDlg, IDC_CPU_3DNOWEXT) ? XVID_CPU_3DNOWEXT : 0; config->cpu |= IsDlgChecked(hDlg, IDC_CPU_FORCE) ? XVID_CPU_FORCE : 0; config->debug = get_dlgitem_hex(hDlg, IDC_DEBUG, config->debug); @@ -1484,13 +1491,13 @@ { PROPSHEETINFO *psi; - psi = (PROPSHEETINFO*)GetWindowLong(hDlg, GWL_USERDATA); + psi = (PROPSHEETINFO*)GetWindowLongPtr(hDlg, GWLP_USERDATA); switch (uMsg) { case WM_INITDIALOG : psi = (PROPSHEETINFO*) ((LPPROPSHEETPAGE)lParam)->lParam; - SetWindowLong(hDlg, GWL_USERDATA, (LPARAM)psi); + SetWindowLongPtr(hDlg, GWLP_USERDATA, (LPARAM)psi); if (g_hTooltip) EnumChildWindows(hDlg, enum_tooltips, 0); @@ -1678,19 +1685,19 @@ DPRINTF("PSN_SET"); adv_upload(hDlg, psi->idd, psi->config); adv_mode(hDlg, psi->idd, psi->config); - SetWindowLong(hDlg, DWL_MSGRESULT, FALSE); + SetWindowLongPtr(hDlg, DWLP_MSGRESULT, FALSE); break; case PSN_KILLACTIVE : DPRINTF("PSN_KILL"); adv_download(hDlg, psi->idd, psi->config); - SetWindowLong(hDlg, DWL_MSGRESULT, FALSE); + SetWindowLongPtr(hDlg, DWLP_MSGRESULT, FALSE); break; case PSN_APPLY : DPRINTF("PSN_APPLY"); psi->config->save = TRUE; - SetWindowLong(hDlg, DWL_MSGRESULT, FALSE); + SetWindowLongPtr(hDlg, DWLP_MSGRESULT, FALSE); break; } break; @@ -1744,7 +1751,7 @@ psh.dwFlags = PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW | PSH_NOCONTEXTHELP; psh.hwndParent = hParent; psh.hInstance = g_hInst; - psh.pszCaption = (LPSTR) "XviD Configuration"; + psh.pszCaption = (LPSTR) "Xvid Configuration"; psh.nPages = size; psh.nStartPage = 0; psh.ppsp = (LPCPROPSHEETPAGE)&psp; @@ -1913,13 +1920,13 @@ BOOL CALLBACK main_proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { - CONFIG* config = (CONFIG*)GetWindowLong(hDlg, GWL_USERDATA); + CONFIG* config = (CONFIG*)GetWindowLongPtr(hDlg, GWLP_USERDATA); unsigned int i; switch (uMsg) { case WM_INITDIALOG : - SetWindowLong(hDlg, GWL_USERDATA, lParam); + SetWindowLongPtr(hDlg, GWLP_USERDATA, lParam); config = (CONFIG*)lParam; for (i=0; i