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 |
|
|
203 |
{"tff", ®.tff, 0}, |
{"tff", ®.tff, 0}, |
204 |
{"qpel", ®.qpel, 0}, |
{"qpel", ®.qpel, 0}, |
205 |
{"gmc", ®.gmc, 0}, |
{"gmc", ®.gmc, 0}, |
|
{"reduced_resolution", ®.reduced_resolution, 0}, |
|
206 |
{"use_bvop", ®.use_bvop, 1}, |
{"use_bvop", ®.use_bvop, 1}, |
207 |
{"max_bframes", ®.max_bframes, 2}, |
{"max_bframes", ®.max_bframes, 2}, |
208 |
{"bquant_ratio", ®.bquant_ratio, 150}, /* 100-base float */ |
{"bquant_ratio", ®.bquant_ratio, 150}, /* 100-base float */ |
209 |
{"bquant_offset", ®.bquant_offset, 100}, /* 100-base float */ |
{"bquant_offset", ®.bquant_offset, 100}, /* 100-base float */ |
210 |
{"packed", ®.packed, 1}, |
{"packed", ®.packed, 1}, |
|
{"closed_gov", ®.closed_gov, 1}, |
|
211 |
|
|
212 |
/* aspect ratio */ |
/* aspect ratio */ |
213 |
{"ar_mode", ®.ar_mode, 0}, |
{"ar_mode", ®.ar_mode, 0}, |
257 |
{"vhq_mode", ®.vhq_mode, 1}, |
{"vhq_mode", ®.vhq_mode, 1}, |
258 |
{"vhq_bframe", ®.vhq_bframe, 0}, |
{"vhq_bframe", ®.vhq_bframe, 0}, |
259 |
{"chromame", ®.chromame, 1}, |
{"chromame", ®.chromame, 1}, |
|
{"cartoon_mode", ®.cartoon_mode, 0}, |
|
260 |
{"turbo", ®.turbo, 0}, |
{"turbo", ®.turbo, 0}, |
261 |
{"max_key_interval", ®.max_key_interval, 300}, |
{"max_key_interval", ®.max_key_interval, 300}, |
262 |
{"frame_drop_ratio", ®.frame_drop_ratio, 0}, |
{"frame_drop_ratio", ®.frame_drop_ratio, 0}, |
268 |
{"max_pquant", ®.max_pquant, 31}, |
{"max_pquant", ®.max_pquant, 31}, |
269 |
{"min_bquant", ®.min_bquant, 1}, |
{"min_bquant", ®.min_bquant, 1}, |
270 |
{"max_bquant", ®.max_bquant, 31}, |
{"max_bquant", ®.max_bquant, 31}, |
271 |
{"trellis_quant", ®.trellis_quant, 0}, |
{"trellis_quant", ®.trellis_quant, 1}, |
272 |
|
|
273 |
/* debug */ |
/* debug */ |
274 |
{"fourcc_used", ®.fourcc_used, 0}, |
{"fourcc_used", ®.fourcc_used, 0}, |
287 |
}; |
}; |
288 |
|
|
289 |
static const REG_STR reg_strs[] = { |
static const REG_STR reg_strs[] = { |
290 |
{"profile", reg.profile_name, "AS @ L5"}, |
{"profile", reg.profile_name, "(unrestricted)"}, |
291 |
{"stats", reg.stats, CONFIG_2PASS_FILE}, |
{"stats", reg.stats, CONFIG_2PASS_FILE}, |
292 |
}; |
}; |
293 |
|
|
302 |
{"zone%i_greyscale", &stmp.greyscale, 0}, |
{"zone%i_greyscale", &stmp.greyscale, 0}, |
303 |
{"zone%i_chroma_opt", &stmp.chroma_opt, 0}, |
{"zone%i_chroma_opt", &stmp.chroma_opt, 0}, |
304 |
{"zone%i_bvop_threshold", &stmp.bvop_threshold, 0}, |
{"zone%i_bvop_threshold", &stmp.bvop_threshold, 0}, |
305 |
|
{"zone%i_cartoon_mode", &stmp.cartoon_mode, 0}, |
306 |
}; |
}; |
307 |
|
|
308 |
static const BYTE default_qmatrix_intra[] = { |
static const BYTE default_qmatrix_intra[] = { |
844 |
EnableDlgWindow(hDlg, IDC_TFF, IsDlgChecked(hDlg, IDC_INTERLACING)); |
EnableDlgWindow(hDlg, IDC_TFF, IsDlgChecked(hDlg, IDC_INTERLACING)); |
845 |
EnableDlgWindow(hDlg, IDC_QPEL, profiles[profile].flags&PROFILE_QPEL); |
EnableDlgWindow(hDlg, IDC_QPEL, profiles[profile].flags&PROFILE_QPEL); |
846 |
EnableDlgWindow(hDlg, IDC_GMC, profiles[profile].flags&PROFILE_GMC); |
EnableDlgWindow(hDlg, IDC_GMC, profiles[profile].flags&PROFILE_GMC); |
|
EnableDlgWindow(hDlg, IDC_REDUCED, profiles[profile].flags&PROFILE_REDUCED); |
|
847 |
|
|
848 |
bvops = (profiles[profile].flags&PROFILE_BVOP) && IsDlgChecked(hDlg, IDC_BVOP); |
bvops = (profiles[profile].flags&PROFILE_BVOP) && IsDlgChecked(hDlg, IDC_BVOP); |
849 |
EnableDlgWindow(hDlg, IDC_MAXBFRAMES, bvops); |
EnableDlgWindow(hDlg, IDC_MAXBFRAMES, bvops); |
853 |
EnableDlgWindow(hDlg, IDC_BQUANTRATIO_S, bvops); |
EnableDlgWindow(hDlg, IDC_BQUANTRATIO_S, bvops); |
854 |
EnableDlgWindow(hDlg, IDC_BQUANTOFFSET_S, bvops); |
EnableDlgWindow(hDlg, IDC_BQUANTOFFSET_S, bvops); |
855 |
EnableDlgWindow(hDlg, IDC_PACKED, bvops); |
EnableDlgWindow(hDlg, IDC_PACKED, bvops); |
|
EnableDlgWindow(hDlg, IDC_CLOSEDGOV, bvops); |
|
856 |
break; |
break; |
857 |
|
|
858 |
case IDD_AR: |
case IDD_AR: |
936 |
/* step 2: calculate audio_size (kbytes)*/ |
/* step 2: calculate audio_size (kbytes)*/ |
937 |
if (audio_type!=NO_AUDIO) { |
if (audio_type!=NO_AUDIO) { |
938 |
if (audio_mode==0) { |
if (audio_mode==0) { |
939 |
audio_size = (int)( (1000.0 * duration * audio_rate) / (8.0*1024) ); |
int new_audio_size = (int)( (1000.0 * duration * audio_rate) / (8.0*1024) ); |
940 |
SetDlgItemInt(hDlg, IDC_BITRATE_ASIZE, audio_size, TRUE); |
|
941 |
|
/* this check is needed to avoid a loop */ |
942 |
|
if (new_audio_size!=audio_size) { |
943 |
|
audio_size = new_audio_size; |
944 |
|
SetDlgItemInt(hDlg, IDC_BITRATE_ASIZE, new_audio_size, TRUE); |
945 |
|
} |
946 |
}else{ |
}else{ |
947 |
int tmp_rate = (int)( (audio_size * 8.0 * 1024) / (1000.0 * duration) ); |
int tmp_rate = (int)( (audio_size * 8.0 * 1024) / (1000.0 * duration) ); |
948 |
SetDlgItemInt(hDlg, IDC_BITRATE_ARATE, tmp_rate, TRUE); |
SetDlgItemInt(hDlg, IDC_BITRATE_ARATE, tmp_rate, TRUE); |
1001 |
if (vsize > 0) { |
if (vsize > 0) { |
1002 |
SetDlgItemInt(hDlg, IDC_BITRATE_VSIZE, vsize, TRUE); |
SetDlgItemInt(hDlg, IDC_BITRATE_VSIZE, vsize, TRUE); |
1003 |
/* convert from kbytes to kbits-per-second */ |
/* convert from kbytes to kbits-per-second */ |
1004 |
SetDlgItemInt(hDlg, IDC_BITRATE_VRATE, (vsize * 8 * 128) / (duration * 125), TRUE); |
SetDlgItemInt(hDlg, IDC_BITRATE_VRATE, (int)(((__int64)vsize * 8 * 128) / (duration * 125)), TRUE); |
1005 |
}else{ |
}else{ |
1006 |
SetDlgItemText(hDlg, IDC_BITRATE_VSIZE, "Overflow"); |
SetDlgItemText(hDlg, IDC_BITRATE_VSIZE, "Overflow"); |
1007 |
SetDlgItemText(hDlg, IDC_BITRATE_VRATE, "Overflow"); |
SetDlgItemText(hDlg, IDC_BITRATE_VRATE, "Overflow"); |
1061 |
CheckDlg(hDlg, IDC_TFF, config->tff); |
CheckDlg(hDlg, IDC_TFF, config->tff); |
1062 |
CheckDlg(hDlg, IDC_QPEL, config->qpel); |
CheckDlg(hDlg, IDC_QPEL, config->qpel); |
1063 |
CheckDlg(hDlg, IDC_GMC, config->gmc); |
CheckDlg(hDlg, IDC_GMC, config->gmc); |
|
CheckDlg(hDlg, IDC_REDUCED, config->reduced_resolution); |
|
1064 |
CheckDlg(hDlg, IDC_BVOP, config->use_bvop); |
CheckDlg(hDlg, IDC_BVOP, config->use_bvop); |
1065 |
|
|
1066 |
SetDlgItemInt(hDlg, IDC_MAXBFRAMES, config->max_bframes, FALSE); |
SetDlgItemInt(hDlg, IDC_MAXBFRAMES, config->max_bframes, FALSE); |
1067 |
set_dlgitem_float(hDlg, IDC_BQUANTRATIO, config->bquant_ratio); |
set_dlgitem_float(hDlg, IDC_BQUANTRATIO, config->bquant_ratio); |
1068 |
set_dlgitem_float(hDlg, IDC_BQUANTOFFSET, config->bquant_offset); |
set_dlgitem_float(hDlg, IDC_BQUANTOFFSET, config->bquant_offset); |
1069 |
CheckDlg(hDlg, IDC_PACKED, config->packed); |
CheckDlg(hDlg, IDC_PACKED, config->packed); |
|
CheckDlg(hDlg, IDC_CLOSEDGOV, config->closed_gov); |
|
1070 |
|
|
1071 |
break; |
break; |
1072 |
case IDD_AR: |
case IDD_AR: |
1135 |
CheckDlgButton(hDlg, IDC_ZONE_GREYSCALE, config->zones[config->cur_zone].greyscale); |
CheckDlgButton(hDlg, IDC_ZONE_GREYSCALE, config->zones[config->cur_zone].greyscale); |
1136 |
CheckDlgButton(hDlg, IDC_ZONE_CHROMAOPT, config->zones[config->cur_zone].chroma_opt); |
CheckDlgButton(hDlg, IDC_ZONE_CHROMAOPT, config->zones[config->cur_zone].chroma_opt); |
1137 |
|
|
1138 |
|
CheckDlg(hDlg, IDC_CARTOON, config->zones[config->cur_zone].cartoon_mode); |
1139 |
|
|
1140 |
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); |
1141 |
break; |
break; |
1142 |
|
|
1145 |
SendDlgItemMessage(hDlg, IDC_VHQ, CB_SETCURSEL, config->vhq_mode, 0); |
SendDlgItemMessage(hDlg, IDC_VHQ, CB_SETCURSEL, config->vhq_mode, 0); |
1146 |
CheckDlg(hDlg, IDC_VHQ_BFRAME, config->vhq_bframe); |
CheckDlg(hDlg, IDC_VHQ_BFRAME, config->vhq_bframe); |
1147 |
CheckDlg(hDlg, IDC_CHROMAME, config->chromame); |
CheckDlg(hDlg, IDC_CHROMAME, config->chromame); |
|
CheckDlg(hDlg, IDC_CARTOON, config->cartoon_mode); |
|
1148 |
CheckDlg(hDlg, IDC_TURBO, config->turbo); |
CheckDlg(hDlg, IDC_TURBO, config->turbo); |
1149 |
SetDlgItemInt(hDlg, IDC_FRAMEDROP, config->frame_drop_ratio, FALSE); |
SetDlgItemInt(hDlg, IDC_FRAMEDROP, config->frame_drop_ratio, FALSE); |
1150 |
SetDlgItemInt(hDlg, IDC_MAXKEY, config->max_key_interval, FALSE); |
SetDlgItemInt(hDlg, IDC_MAXKEY, config->max_key_interval, FALSE); |
1208 |
config->tff = IsDlgChecked(hDlg, IDC_TFF); |
config->tff = IsDlgChecked(hDlg, IDC_TFF); |
1209 |
config->qpel = IsDlgChecked(hDlg, IDC_QPEL); |
config->qpel = IsDlgChecked(hDlg, IDC_QPEL); |
1210 |
config->gmc = IsDlgChecked(hDlg, IDC_GMC); |
config->gmc = IsDlgChecked(hDlg, IDC_GMC); |
|
config->reduced_resolution = IsDlgChecked(hDlg, IDC_REDUCED); |
|
1211 |
|
|
1212 |
config->use_bvop = IsDlgChecked(hDlg, IDC_BVOP); |
config->use_bvop = IsDlgChecked(hDlg, IDC_BVOP); |
1213 |
config->max_bframes = config_get_uint(hDlg, IDC_MAXBFRAMES, config->max_bframes); |
config->max_bframes = config_get_uint(hDlg, IDC_MAXBFRAMES, config->max_bframes); |
1214 |
config->bquant_ratio = get_dlgitem_float(hDlg, IDC_BQUANTRATIO, config->bquant_ratio); |
config->bquant_ratio = get_dlgitem_float(hDlg, IDC_BQUANTRATIO, config->bquant_ratio); |
1215 |
config->bquant_offset = get_dlgitem_float(hDlg, IDC_BQUANTOFFSET, config->bquant_offset); |
config->bquant_offset = get_dlgitem_float(hDlg, IDC_BQUANTOFFSET, config->bquant_offset); |
1216 |
config->packed = IsDlgChecked(hDlg, IDC_PACKED); |
config->packed = IsDlgChecked(hDlg, IDC_PACKED); |
|
config->closed_gov = IsDlgChecked(hDlg, IDC_CLOSEDGOV); |
|
1217 |
break; |
break; |
1218 |
|
|
1219 |
case IDD_AR: |
case IDD_AR: |
1318 |
config->zones[config->cur_zone].chroma_opt = IsDlgButtonChecked(hDlg, IDC_ZONE_CHROMAOPT); |
config->zones[config->cur_zone].chroma_opt = IsDlgButtonChecked(hDlg, IDC_ZONE_CHROMAOPT); |
1319 |
|
|
1320 |
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); |
1321 |
|
config->zones[config->cur_zone].cartoon_mode = IsDlgChecked(hDlg, IDC_CARTOON); |
1322 |
break; |
break; |
1323 |
|
|
1324 |
case IDD_MOTION : |
case IDD_MOTION : |
1326 |
config->vhq_mode = SendDlgItemMessage(hDlg, IDC_VHQ, CB_GETCURSEL, 0, 0); |
config->vhq_mode = SendDlgItemMessage(hDlg, IDC_VHQ, CB_GETCURSEL, 0, 0); |
1327 |
config->vhq_bframe = IsDlgButtonChecked(hDlg, IDC_VHQ_BFRAME); |
config->vhq_bframe = IsDlgButtonChecked(hDlg, IDC_VHQ_BFRAME); |
1328 |
config->chromame = IsDlgChecked(hDlg, IDC_CHROMAME); |
config->chromame = IsDlgChecked(hDlg, IDC_CHROMAME); |
|
config->cartoon_mode = IsDlgChecked(hDlg, IDC_CARTOON); |
|
1329 |
config->turbo = IsDlgChecked(hDlg, IDC_TURBO); |
config->turbo = IsDlgChecked(hDlg, IDC_TURBO); |
1330 |
|
|
1331 |
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); |
1705 |
strcat(tmp, "G "); |
strcat(tmp, "G "); |
1706 |
|
|
1707 |
if (s->chroma_opt) |
if (s->chroma_opt) |
1708 |
|
strcat(tmp, "O "); |
1709 |
|
|
1710 |
|
if (s->chroma_opt) |
1711 |
strcat(tmp, "C "); |
strcat(tmp, "C "); |
1712 |
|
|
1713 |
ListView_SetItemText(hDlg, i, 2, tmp); |
ListView_SetItemText(hDlg, i, 2, tmp); |
2097 |
} |
} |
2098 |
|
|
2099 |
|
|
2100 |
|
/* ===================================================================================== */ |
2101 |
|
/* LICENSE DIALOG ====================================================================== */ |
2102 |
|
/* ===================================================================================== */ |
2103 |
|
|
2104 |
|
static BOOL CALLBACK license_proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) |
2105 |
|
{ |
2106 |
|
switch (uMsg) |
2107 |
|
{ |
2108 |
|
case WM_INITDIALOG : |
2109 |
|
{ |
2110 |
|
HRSRC hRSRC; |
2111 |
|
HGLOBAL hGlobal = NULL; |
2112 |
|
if ((hRSRC = FindResource(g_hInst, MAKEINTRESOURCE(IDR_GPL), "TEXT"))) { |
2113 |
|
if ((hGlobal = LoadResource(g_hInst, hRSRC))) { |
2114 |
|
LPVOID lpData; |
2115 |
|
if ((lpData = LockResource(hGlobal))) { |
2116 |
|
SendDlgItemMessage(hDlg, IDC_LICENSE_TEXT, WM_SETFONT, (WPARAM)GetStockObject(ANSI_FIXED_FONT), MAKELPARAM(TRUE, 0)); |
2117 |
|
SetDlgItemText(hDlg, IDC_LICENSE_TEXT, lpData); |
2118 |
|
SendDlgItemMessage(hDlg, IDC_LICENSE_TEXT, EM_SETSEL, (WPARAM)-1, (LPARAM)0); |
2119 |
|
} |
2120 |
|
} |
2121 |
|
} |
2122 |
|
SetWindowLong(hDlg, GWL_USERDATA, (LONG)hGlobal); |
2123 |
|
} |
2124 |
|
break; |
2125 |
|
|
2126 |
|
case WM_DESTROY : |
2127 |
|
{ |
2128 |
|
HGLOBAL hGlobal = (HGLOBAL)GetWindowLong(hDlg, GWL_USERDATA); |
2129 |
|
if (hGlobal) { |
2130 |
|
FreeResource(hGlobal); |
2131 |
|
} |
2132 |
|
} |
2133 |
|
break; |
2134 |
|
|
2135 |
|
case WM_COMMAND : |
2136 |
|
if (HIWORD(wParam) == BN_CLICKED) { |
2137 |
|
switch(LOWORD(wParam)) { |
2138 |
|
case IDOK : |
2139 |
|
case IDCANCEL : |
2140 |
|
EndDialog(hDlg, 0); |
2141 |
|
break; |
2142 |
|
default : |
2143 |
|
return 0; |
2144 |
|
} |
2145 |
|
break; |
2146 |
|
} |
2147 |
|
break; |
2148 |
|
|
2149 |
|
default : |
2150 |
|
return 0; |
2151 |
|
} |
2152 |
|
|
2153 |
|
return 1; |
2154 |
|
} |
2155 |
|
|
2156 |
/* ===================================================================================== */ |
/* ===================================================================================== */ |
2157 |
/* ABOUT DIALOG ======================================================================== */ |
/* ABOUT DIALOG ======================================================================== */ |
2219 |
return 0; |
return 0; |
2220 |
|
|
2221 |
case WM_COMMAND : |
case WM_COMMAND : |
2222 |
if (LOWORD(wParam) == IDC_WEBSITE && HIWORD(wParam) == STN_CLICKED) |
if (LOWORD(wParam) == IDC_WEBSITE && HIWORD(wParam) == STN_CLICKED) { |
|
{ |
|
2223 |
ShellExecute(hDlg, "open", XVID_WEBSITE, NULL, NULL, SW_SHOWNORMAL); |
ShellExecute(hDlg, "open", XVID_WEBSITE, NULL, NULL, SW_SHOWNORMAL); |
2224 |
} |
}else if (LOWORD(wParam) == IDC_LICENSE) { |
2225 |
else if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) |
DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_LICENSE), hDlg, license_proc, (LPARAM)0); |
2226 |
{ |
} else if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { |
2227 |
EndDialog(hDlg, LOWORD(wParam)); |
EndDialog(hDlg, LOWORD(wParam)); |
2228 |
} |
} |
2229 |
break; |
break; |