104 |
/* MPEG-4 PROFILES/LEVELS ============================================================== */ |
/* MPEG-4 PROFILES/LEVELS ============================================================== */ |
105 |
/* ===================================================================================== */ |
/* ===================================================================================== */ |
106 |
|
|
107 |
|
#define DXN_PROFILES |
108 |
|
|
109 |
/* default vbv_occupancy is (64/170)*vbv_buffer_size */ |
/* default vbv_occupancy is (64/170)*vbv_buffer_size */ |
110 |
|
|
169 |
} named_int_t; |
} named_int_t; |
170 |
|
|
171 |
|
|
172 |
#define NO_AUDIO 5 |
#define NO_AUDIO 7 |
173 |
static const named_int_t audio_type_list[] = { |
static const named_int_t audio_type_list[] = { |
174 |
{ "MP3-CBR", 1000, 48000/1152/6 }, |
{ "MP3-CBR", 1000, 48000/1152/6 }, |
175 |
{ "MP3-VBR", 24, 48000/1152/6 }, |
{ "MP3-VBR", 24, 48000/1152/6 }, |
176 |
{ "OGG", /*?*/1000, 48000*(0.7F/1024 + 0.3F/180) }, |
{ "OGG", /*?*/1000, 48000*(0.7F/1024 + 0.3F/180) }, |
177 |
{ "AC3", 64, 48000/1536/6 }, |
{ "AC3", 64, 48000/1536/6 }, |
178 |
{ "DTS", 21, /*?*/48000/1152/6 }, |
{ "DTS", 21, /*?*/48000/1152/6 }, |
179 |
|
{ "AAC", 21, 48000/1024/6 }, |
180 |
|
{ "HE-AAC", 42, 48000/1024/6 }, |
181 |
{ "(None)", 0, 0 }, |
{ "(None)", 0, 0 }, |
182 |
}; |
}; |
183 |
|
|
200 |
{"quant_type", ®.quant_type, 0}, |
{"quant_type", ®.quant_type, 0}, |
201 |
{"lum_masking", ®.lum_masking, 0}, |
{"lum_masking", ®.lum_masking, 0}, |
202 |
{"interlacing", ®.interlacing, 0}, |
{"interlacing", ®.interlacing, 0}, |
203 |
|
{"tff", ®.tff, 0}, |
204 |
{"qpel", ®.qpel, 0}, |
{"qpel", ®.qpel, 0}, |
205 |
{"gmc", ®.gmc, 0}, |
{"gmc", ®.gmc, 0}, |
206 |
{"reduced_resolution", ®.reduced_resolution, 0}, |
{"reduced_resolution", ®.reduced_resolution, 0}, |
257 |
/* motion */ |
/* motion */ |
258 |
{"motion_search", ®.motion_search, 6}, |
{"motion_search", ®.motion_search, 6}, |
259 |
{"vhq_mode", ®.vhq_mode, 1}, |
{"vhq_mode", ®.vhq_mode, 1}, |
260 |
|
{"vhq_bframe", ®.vhq_bframe, 0}, |
261 |
{"chromame", ®.chromame, 1}, |
{"chromame", ®.chromame, 1}, |
|
{"cartoon_mode", ®.cartoon_mode, 0}, |
|
262 |
{"turbo", ®.turbo, 0}, |
{"turbo", ®.turbo, 0}, |
263 |
{"max_key_interval", ®.max_key_interval, 300}, |
{"max_key_interval", ®.max_key_interval, 300}, |
264 |
{"frame_drop_ratio", ®.frame_drop_ratio, 0}, |
{"frame_drop_ratio", ®.frame_drop_ratio, 0}, |
289 |
}; |
}; |
290 |
|
|
291 |
static const REG_STR reg_strs[] = { |
static const REG_STR reg_strs[] = { |
292 |
{"profile", reg.profile_name, "AS @ L5"}, |
{"profile", reg.profile_name, "(unrestricted)"}, |
293 |
{"stats", reg.stats, CONFIG_2PASS_FILE}, |
{"stats", reg.stats, CONFIG_2PASS_FILE}, |
294 |
}; |
}; |
295 |
|
|
304 |
{"zone%i_greyscale", &stmp.greyscale, 0}, |
{"zone%i_greyscale", &stmp.greyscale, 0}, |
305 |
{"zone%i_chroma_opt", &stmp.chroma_opt, 0}, |
{"zone%i_chroma_opt", &stmp.chroma_opt, 0}, |
306 |
{"zone%i_bvop_threshold", &stmp.bvop_threshold, 0}, |
{"zone%i_bvop_threshold", &stmp.bvop_threshold, 0}, |
307 |
|
{"zone%i_cartoon_mode", &stmp.cartoon_mode, 0}, |
308 |
}; |
}; |
309 |
|
|
310 |
static const BYTE default_qmatrix_intra[] = { |
static const BYTE default_qmatrix_intra[] = { |
843 |
EnableDlgWindow(hDlg, IDC_QUANTMATRIX, custom_quant); |
EnableDlgWindow(hDlg, IDC_QUANTMATRIX, custom_quant); |
844 |
EnableDlgWindow(hDlg, IDC_LUMMASK, profiles[profile].flags&PROFILE_ADAPTQUANT); |
EnableDlgWindow(hDlg, IDC_LUMMASK, profiles[profile].flags&PROFILE_ADAPTQUANT); |
845 |
EnableDlgWindow(hDlg, IDC_INTERLACING, profiles[profile].flags&PROFILE_INTERLACE); |
EnableDlgWindow(hDlg, IDC_INTERLACING, profiles[profile].flags&PROFILE_INTERLACE); |
846 |
|
EnableDlgWindow(hDlg, IDC_TFF, IsDlgChecked(hDlg, IDC_INTERLACING)); |
847 |
EnableDlgWindow(hDlg, IDC_QPEL, profiles[profile].flags&PROFILE_QPEL); |
EnableDlgWindow(hDlg, IDC_QPEL, profiles[profile].flags&PROFILE_QPEL); |
848 |
EnableDlgWindow(hDlg, IDC_GMC, profiles[profile].flags&PROFILE_GMC); |
EnableDlgWindow(hDlg, IDC_GMC, profiles[profile].flags&PROFILE_GMC); |
849 |
EnableDlgWindow(hDlg, IDC_REDUCED, profiles[profile].flags&PROFILE_REDUCED); |
EnableDlgWindow(hDlg, IDC_REDUCED, profiles[profile].flags&PROFILE_REDUCED); |
940 |
/* step 2: calculate audio_size (kbytes)*/ |
/* step 2: calculate audio_size (kbytes)*/ |
941 |
if (audio_type!=NO_AUDIO) { |
if (audio_type!=NO_AUDIO) { |
942 |
if (audio_mode==0) { |
if (audio_mode==0) { |
943 |
audio_size = (duration * audio_rate) / 8; |
int new_audio_size = (int)( (1000.0 * duration * audio_rate) / (8.0*1024) ); |
944 |
|
|
945 |
|
/* this check is needed to avoid a loop */ |
946 |
|
if (new_audio_size!=audio_size) |
947 |
|
SetDlgItemInt(hDlg, IDC_BITRATE_ASIZE, new_audio_size, TRUE); |
948 |
|
}else{ |
949 |
|
int tmp_rate = (int)( (audio_size * 8.0 * 1024) / (1000.0 * duration) ); |
950 |
|
SetDlgItemInt(hDlg, IDC_BITRATE_ARATE, tmp_rate, TRUE); |
951 |
} |
} |
952 |
}else{ |
}else{ |
953 |
audio_size = 0; |
audio_size = 0; |
987 |
overhead /= 1024; |
overhead /= 1024; |
988 |
break; |
break; |
989 |
|
|
990 |
case 3 : /* OGM: inaccurate model */ |
case 3 : /* alexnoe formula */ |
991 |
overhead = (int)(0.0039F * (target_size - subtitle_size)); |
overhead = (int)( (target_size - subtitle_size) * (28.0/4224.0 + (1.0/255.0)) ); |
992 |
break; |
break; |
993 |
|
|
994 |
default : /* (none) */ |
default : /* (none) */ |
1060 |
SendDlgItemMessage(hDlg, IDC_QUANTTYPE, CB_SETCURSEL, config->quant_type, 0); |
SendDlgItemMessage(hDlg, IDC_QUANTTYPE, CB_SETCURSEL, config->quant_type, 0); |
1061 |
CheckDlg(hDlg, IDC_LUMMASK, config->lum_masking); |
CheckDlg(hDlg, IDC_LUMMASK, config->lum_masking); |
1062 |
CheckDlg(hDlg, IDC_INTERLACING, config->interlacing); |
CheckDlg(hDlg, IDC_INTERLACING, config->interlacing); |
1063 |
|
CheckDlg(hDlg, IDC_TFF, config->tff); |
1064 |
CheckDlg(hDlg, IDC_QPEL, config->qpel); |
CheckDlg(hDlg, IDC_QPEL, config->qpel); |
1065 |
CheckDlg(hDlg, IDC_GMC, config->gmc); |
CheckDlg(hDlg, IDC_GMC, config->gmc); |
1066 |
CheckDlg(hDlg, IDC_REDUCED, config->reduced_resolution); |
CheckDlg(hDlg, IDC_REDUCED, config->reduced_resolution); |
1139 |
CheckDlgButton(hDlg, IDC_ZONE_GREYSCALE, config->zones[config->cur_zone].greyscale); |
CheckDlgButton(hDlg, IDC_ZONE_GREYSCALE, config->zones[config->cur_zone].greyscale); |
1140 |
CheckDlgButton(hDlg, IDC_ZONE_CHROMAOPT, config->zones[config->cur_zone].chroma_opt); |
CheckDlgButton(hDlg, IDC_ZONE_CHROMAOPT, config->zones[config->cur_zone].chroma_opt); |
1141 |
|
|
1142 |
|
CheckDlg(hDlg, IDC_CARTOON, config->zones[config->cur_zone].cartoon_mode); |
1143 |
|
|
1144 |
SetDlgItemInt(hDlg, IDC_ZONE_BVOPTHRESHOLD, config->zones[config->cur_zone].bvop_threshold, TRUE); |
SetDlgItemInt(hDlg, IDC_ZONE_BVOPTHRESHOLD, config->zones[config->cur_zone].bvop_threshold, TRUE); |
1145 |
break; |
break; |
1146 |
|
|
1147 |
case IDD_MOTION : |
case IDD_MOTION : |
1148 |
SendDlgItemMessage(hDlg, IDC_MOTION, CB_SETCURSEL, config->motion_search, 0); |
SendDlgItemMessage(hDlg, IDC_MOTION, CB_SETCURSEL, config->motion_search, 0); |
1149 |
SendDlgItemMessage(hDlg, IDC_VHQ, CB_SETCURSEL, config->vhq_mode, 0); |
SendDlgItemMessage(hDlg, IDC_VHQ, CB_SETCURSEL, config->vhq_mode, 0); |
1150 |
|
CheckDlg(hDlg, IDC_VHQ_BFRAME, config->vhq_bframe); |
1151 |
CheckDlg(hDlg, IDC_CHROMAME, config->chromame); |
CheckDlg(hDlg, IDC_CHROMAME, config->chromame); |
|
CheckDlg(hDlg, IDC_CARTOON, config->cartoon_mode); |
|
1152 |
CheckDlg(hDlg, IDC_TURBO, config->turbo); |
CheckDlg(hDlg, IDC_TURBO, config->turbo); |
1153 |
SetDlgItemInt(hDlg, IDC_FRAMEDROP, config->frame_drop_ratio, FALSE); |
SetDlgItemInt(hDlg, IDC_FRAMEDROP, config->frame_drop_ratio, FALSE); |
1154 |
SetDlgItemInt(hDlg, IDC_MAXKEY, config->max_key_interval, FALSE); |
SetDlgItemInt(hDlg, IDC_MAXKEY, config->max_key_interval, FALSE); |
1209 |
config->quant_type = SendDlgItemMessage(hDlg, IDC_QUANTTYPE, CB_GETCURSEL, 0, 0); |
config->quant_type = SendDlgItemMessage(hDlg, IDC_QUANTTYPE, CB_GETCURSEL, 0, 0); |
1210 |
config->lum_masking = IsDlgChecked(hDlg, IDC_LUMMASK); |
config->lum_masking = IsDlgChecked(hDlg, IDC_LUMMASK); |
1211 |
config->interlacing = IsDlgChecked(hDlg, IDC_INTERLACING); |
config->interlacing = IsDlgChecked(hDlg, IDC_INTERLACING); |
1212 |
|
config->tff = IsDlgChecked(hDlg, IDC_TFF); |
1213 |
config->qpel = IsDlgChecked(hDlg, IDC_QPEL); |
config->qpel = IsDlgChecked(hDlg, IDC_QPEL); |
1214 |
config->gmc = IsDlgChecked(hDlg, IDC_GMC); |
config->gmc = IsDlgChecked(hDlg, IDC_GMC); |
1215 |
config->reduced_resolution = IsDlgChecked(hDlg, IDC_REDUCED); |
config->reduced_resolution = IsDlgChecked(hDlg, IDC_REDUCED); |
1324 |
config->zones[config->cur_zone].chroma_opt = IsDlgButtonChecked(hDlg, IDC_ZONE_CHROMAOPT); |
config->zones[config->cur_zone].chroma_opt = IsDlgButtonChecked(hDlg, IDC_ZONE_CHROMAOPT); |
1325 |
|
|
1326 |
config->zones[config->cur_zone].bvop_threshold = config_get_int(hDlg, IDC_ZONE_BVOPTHRESHOLD, config->zones[config->cur_zone].bvop_threshold); |
config->zones[config->cur_zone].bvop_threshold = config_get_int(hDlg, IDC_ZONE_BVOPTHRESHOLD, config->zones[config->cur_zone].bvop_threshold); |
1327 |
|
config->zones[config->cur_zone].cartoon_mode = IsDlgChecked(hDlg, IDC_CARTOON); |
1328 |
break; |
break; |
1329 |
|
|
1330 |
case IDD_MOTION : |
case IDD_MOTION : |
1331 |
config->motion_search = SendDlgItemMessage(hDlg, IDC_MOTION, CB_GETCURSEL, 0, 0); |
config->motion_search = SendDlgItemMessage(hDlg, IDC_MOTION, CB_GETCURSEL, 0, 0); |
1332 |
config->vhq_mode = SendDlgItemMessage(hDlg, IDC_VHQ, CB_GETCURSEL, 0, 0); |
config->vhq_mode = SendDlgItemMessage(hDlg, IDC_VHQ, CB_GETCURSEL, 0, 0); |
1333 |
|
config->vhq_bframe = IsDlgButtonChecked(hDlg, IDC_VHQ_BFRAME); |
1334 |
config->chromame = IsDlgChecked(hDlg, IDC_CHROMAME); |
config->chromame = IsDlgChecked(hDlg, IDC_CHROMAME); |
|
config->cartoon_mode = IsDlgChecked(hDlg, IDC_CARTOON); |
|
1335 |
config->turbo = IsDlgChecked(hDlg, IDC_TURBO); |
config->turbo = IsDlgChecked(hDlg, IDC_TURBO); |
1336 |
|
|
1337 |
config->frame_drop_ratio = config_get_uint(hDlg, IDC_FRAMEDROP, config->frame_drop_ratio); |
config->frame_drop_ratio = config_get_uint(hDlg, IDC_FRAMEDROP, config->frame_drop_ratio); |
1413 |
{ |
{ |
1414 |
switch (LOWORD(wParam)) |
switch (LOWORD(wParam)) |
1415 |
{ |
{ |
1416 |
|
case IDC_INTERLACING : |
1417 |
|
case IDC_VHQ_BFRAME : |
1418 |
case IDC_BVOP : |
case IDC_BVOP : |
1419 |
case IDC_ZONE_MODE_WEIGHT : |
case IDC_ZONE_MODE_WEIGHT : |
1420 |
case IDC_ZONE_MODE_QUANT : |
case IDC_ZONE_MODE_QUANT : |
1439 |
|
|
1440 |
ofn.hwndOwner = hDlg; |
ofn.hwndOwner = hDlg; |
1441 |
if (LOWORD(wParam)==IDC_BITRATE_SSELECT) { |
if (LOWORD(wParam)==IDC_BITRATE_SSELECT) { |
1442 |
ofn.lpstrFilter = "Subtitle files (*.sub, *.ssa)\0*.sub;*.ssa\0All files (*.*)\0*.*\0\0"; |
ofn.lpstrFilter = "Subtitle files (*.sub, *.ssa, *.txt, *.dat)\0*.sub;*.ssa;*.txt;*.dat\0All files (*.*)\0*.*\0\0"; |
1443 |
}else{ |
}else{ |
1444 |
ofn.lpstrFilter = "Audio files (*.mp3, *.ac3)\0*.mp3; *.ac3\0All files (*.*)\0*.*\0\0"; |
ofn.lpstrFilter = "Audio files (*.mp3, *.ac3, *.aac, *.ogg, *.wav)\0*.mp3; *.ac3; *.aac; *.ogg; *.wav\0All files (*.*)\0*.*\0\0"; |
1445 |
} |
} |
1446 |
|
|
1447 |
ofn.lpstrFile = filename; |
ofn.lpstrFile = filename; |
2031 |
|
|
2032 |
case IDC_DEFAULTS : |
case IDC_DEFAULTS : |
2033 |
config_reg_default(config); |
config_reg_default(config); |
2034 |
|
SendDlgItemMessage(hDlg, IDC_PROFILE, CB_SETCURSEL, config->profile, 0); |
2035 |
|
SendDlgItemMessage(hDlg, IDC_MODE, CB_SETCURSEL, config->mode, 0); |
2036 |
main_mode(hDlg, config); |
main_mode(hDlg, config); |
2037 |
main_upload(hDlg, config); |
main_upload(hDlg, config); |
2038 |
break; |
break; |
2100 |
} |
} |
2101 |
|
|
2102 |
|
|
2103 |
|
/* ===================================================================================== */ |
2104 |
|
/* LICENSE DIALOG ====================================================================== */ |
2105 |
|
/* ===================================================================================== */ |
2106 |
|
|
2107 |
|
static BOOL CALLBACK license_proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) |
2108 |
|
{ |
2109 |
|
switch (uMsg) |
2110 |
|
{ |
2111 |
|
case WM_INITDIALOG : |
2112 |
|
{ |
2113 |
|
HRSRC hRSRC; |
2114 |
|
HGLOBAL hGlobal = NULL; |
2115 |
|
if ((hRSRC = FindResource(g_hInst, MAKEINTRESOURCE(IDR_GPL), "TEXT"))) { |
2116 |
|
if ((hGlobal = LoadResource(g_hInst, hRSRC))) { |
2117 |
|
LPVOID lpData; |
2118 |
|
if ((lpData = LockResource(hGlobal))) { |
2119 |
|
SendDlgItemMessage(hDlg, IDC_LICENSE_TEXT, WM_SETFONT, (WPARAM)GetStockObject(ANSI_FIXED_FONT), MAKELPARAM(TRUE, 0)); |
2120 |
|
SetDlgItemText(hDlg, IDC_LICENSE_TEXT, lpData); |
2121 |
|
SendDlgItemMessage(hDlg, IDC_LICENSE_TEXT, EM_SETSEL, (WPARAM)-1, (LPARAM)0); |
2122 |
|
} |
2123 |
|
} |
2124 |
|
} |
2125 |
|
SetWindowLong(hDlg, GWL_USERDATA, (LONG)hGlobal); |
2126 |
|
} |
2127 |
|
break; |
2128 |
|
|
2129 |
|
case WM_DESTROY : |
2130 |
|
{ |
2131 |
|
HGLOBAL hGlobal = (HGLOBAL)GetWindowLong(hDlg, GWL_USERDATA); |
2132 |
|
if (hGlobal) { |
2133 |
|
FreeResource(hGlobal); |
2134 |
|
} |
2135 |
|
} |
2136 |
|
break; |
2137 |
|
|
2138 |
|
case WM_COMMAND : |
2139 |
|
if (HIWORD(wParam) == BN_CLICKED) { |
2140 |
|
switch(LOWORD(wParam)) { |
2141 |
|
case IDOK : |
2142 |
|
case IDCANCEL : |
2143 |
|
EndDialog(hDlg, 0); |
2144 |
|
break; |
2145 |
|
default : |
2146 |
|
return 0; |
2147 |
|
} |
2148 |
|
break; |
2149 |
|
} |
2150 |
|
break; |
2151 |
|
|
2152 |
|
default : |
2153 |
|
return 0; |
2154 |
|
} |
2155 |
|
|
2156 |
|
return 1; |
2157 |
|
} |
2158 |
|
|
2159 |
/* ===================================================================================== */ |
/* ===================================================================================== */ |
2160 |
/* ABOUT DIALOG ======================================================================== */ |
/* ABOUT DIALOG ======================================================================== */ |
2222 |
return 0; |
return 0; |
2223 |
|
|
2224 |
case WM_COMMAND : |
case WM_COMMAND : |
2225 |
if (LOWORD(wParam) == IDC_WEBSITE && HIWORD(wParam) == STN_CLICKED) |
if (LOWORD(wParam) == IDC_WEBSITE && HIWORD(wParam) == STN_CLICKED) { |
|
{ |
|
2226 |
ShellExecute(hDlg, "open", XVID_WEBSITE, NULL, NULL, SW_SHOWNORMAL); |
ShellExecute(hDlg, "open", XVID_WEBSITE, NULL, NULL, SW_SHOWNORMAL); |
2227 |
} |
}else if (LOWORD(wParam) == IDC_LICENSE) { |
2228 |
else if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) |
DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_LICENSE), hDlg, license_proc, (LPARAM)0); |
2229 |
{ |
} else if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { |
2230 |
EndDialog(hDlg, LOWORD(wParam)); |
EndDialog(hDlg, LOWORD(wParam)); |
2231 |
} |
} |
2232 |
break; |
break; |