⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.c

📁 这是一个压缩解压包,用C语言进行编程的,里面有详细的源代码.
💻 C
📖 第 1 页 / 共 5 页
字号:
		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].cartoon_mode = IsDlgChecked(hDlg, IDC_CARTOON);		break;	case IDD_MOTION :    if (config->quality==quality_table_num) {      config->quality_user.motion_search = SendDlgItemMessage(hDlg, IDC_MOTION, CB_GETCURSEL, 0, 0);		  config->quality_user.vhq_mode = SendDlgItemMessage(hDlg, IDC_VHQ, CB_GETCURSEL, 0, 0);		  config->quality_user.vhq_bframe = IsDlgButtonChecked(hDlg, IDC_VHQ_BFRAME);		  config->quality_user.chromame = IsDlgChecked(hDlg, IDC_CHROMAME);		  config->quality_user.turbo = IsDlgChecked(hDlg, IDC_TURBO);		  config->quality_user.frame_drop_ratio = config_get_uint(hDlg, IDC_FRAMEDROP, config->quality_user.frame_drop_ratio);		  config->quality_user.max_key_interval = config_get_uint(hDlg, IDC_MAXKEY, config->quality_user.max_key_interval);    }		break;	case IDD_QUANT :    if (config->quality==quality_table_num) {		  config->quality_user.min_iquant = config_get_uint(hDlg, IDC_MINIQUANT, config->quality_user.min_iquant);		  config->quality_user.max_iquant = config_get_uint(hDlg, IDC_MAXIQUANT, config->quality_user.max_iquant);		  config->quality_user.min_pquant = config_get_uint(hDlg, IDC_MINPQUANT, config->quality_user.min_pquant);		  config->quality_user.max_pquant = config_get_uint(hDlg, IDC_MAXPQUANT, config->quality_user.max_pquant);		  config->quality_user.min_bquant = config_get_uint(hDlg, IDC_MINBQUANT, config->quality_user.min_bquant);		  config->quality_user.max_bquant = config_get_uint(hDlg, IDC_MAXBQUANT, config->quality_user.max_bquant);		  CONSTRAINVAL(config->quality_user.min_iquant, 1, 31);		  CONSTRAINVAL(config->quality_user.max_iquant, config->quality_user.min_iquant, 31);		  CONSTRAINVAL(config->quality_user.min_pquant, 1, 31);		  CONSTRAINVAL(config->quality_user.max_pquant, config->quality_user.min_pquant, 31);		  CONSTRAINVAL(config->quality_user.min_bquant, 1, 31);		  CONSTRAINVAL(config->quality_user.max_bquant, config->quality_user.min_bquant, 31);		  config->quality_user.trellis_quant = IsDlgChecked(hDlg, IDC_TRELLISQUANT);    }		break;	case IDD_COMMON :		config->cpu = 0;		config->cpu |= IsDlgChecked(hDlg, IDC_CPU_MMX)	  ? XVID_CPU_MMX : 0;		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_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);    break;  case IDD_ENC :		config->num_threads = config_get_uint(hDlg, IDC_NUMTHREADS, config->num_threads);		config->fourcc_used = SendDlgItemMessage(hDlg, IDC_FOURCC, CB_GETCURSEL, 0, 0);		config->vop_debug = IsDlgChecked(hDlg, IDC_VOPDEBUG);		config->display_status = IsDlgChecked(hDlg, IDC_DISPLAY_STATUS);		break;	case IDD_DEC :		pp_brightness = SendDlgItemMessage(hDlg, IDC_DEC_BRIGHTNESS, TBM_GETPOS, (WPARAM)NULL, (LPARAM)NULL);		pp_dy = IsDlgChecked(hDlg, IDC_DEC_DY);		pp_duv = IsDlgChecked(hDlg, IDC_DEC_DUV);		pp_dry = IsDlgChecked(hDlg, IDC_DEC_DRY);		pp_druv = IsDlgChecked(hDlg, IDC_DEC_DRUV);		pp_fe = IsDlgChecked(hDlg, IDC_DEC_FE);		break;	}}/* advanced dialog proc */static BOOL CALLBACK adv_proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){	PROPSHEETINFO *psi;	psi = (PROPSHEETINFO*)GetWindowLong(hDlg, GWL_USERDATA);	switch (uMsg)	{	case WM_INITDIALOG :		psi = (PROPSHEETINFO*) ((LPPROPSHEETPAGE)lParam)->lParam;		SetWindowLong(hDlg, GWL_USERDATA, (LPARAM)psi);		if (g_hTooltip)			EnumChildWindows(hDlg, enum_tooltips, 0);		adv_init(hDlg, psi->idd, psi->config);		break;	case WM_COMMAND :		if (HIWORD(wParam) == BN_CLICKED)		{			switch (LOWORD(wParam))			{			case IDC_INTERLACING :			case IDC_VHQ_BFRAME :			case IDC_BVOP :			case IDC_ZONE_MODE_WEIGHT :			case IDC_ZONE_MODE_QUANT :			case IDC_ZONE_BVOPTHRESHOLD_ENABLE :			case IDC_CPU_AUTO :			case IDC_CPU_FORCE :			case IDC_AR :			case IDC_PAR :			case IDC_BITRATE_AMODE_RATE :			case IDC_BITRATE_AMODE_SIZE :				adv_mode(hDlg, psi->idd, psi->config);				break;			case IDC_BITRATE_SSELECT :			case IDC_BITRATE_ASELECT :				{				OPENFILENAME ofn;				char filename[MAX_PATH] = "";				memset(&ofn, 0, sizeof(OPENFILENAME));				ofn.lStructSize = sizeof(OPENFILENAME);				ofn.hwndOwner = hDlg;				if (LOWORD(wParam)==IDC_BITRATE_SSELECT) {					ofn.lpstrFilter = "Subtitle files (*.sub, *.ssa, *.txt, *.dat)\0*.sub;*.ssa;*.txt;*.dat\0All files (*.*)\0*.*\0\0";				}else{					ofn.lpstrFilter = "Audio files (*.mp3, *.ac3, *.aac, *.ogg, *.wav)\0*.mp3; *.ac3; *.aac; *.ogg; *.wav\0All files (*.*)\0*.*\0\0";				}								ofn.lpstrFile = filename;				ofn.nMaxFile = MAX_PATH;				ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;				if (GetOpenFileName(&ofn)) {					HANDLE hFile;					DWORD filesize;									if ((hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)) == INVALID_HANDLE_VALUE ||						(filesize = GetFileSize(hFile, NULL)) == INVALID_FILE_SIZE) {						MessageBox(hDlg, "Could not get file size", "Error", 0);					}else{						SetDlgItemInt(hDlg,								LOWORD(wParam)==IDC_BITRATE_SSELECT? IDC_BITRATE_SSIZE : IDC_BITRATE_ASIZE, 								filesize / 1024, FALSE);						CloseHandle(hFile);					}				}				}				break;			case IDC_QUANTMATRIX :				DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_QUANTMATRIX), hDlg, quantmatrix_proc, (LPARAM)psi->config);				break;			case IDC_STATS_BROWSE :			{				OPENFILENAME ofn;				char tmp[MAX_PATH];				GetDlgItemText(hDlg, IDC_STATS, tmp, MAX_PATH);				memset(&ofn, 0, sizeof(OPENFILENAME));				ofn.lStructSize = sizeof(OPENFILENAME);				ofn.hwndOwner = hDlg;				ofn.lpstrFilter = "bitrate curve (*.pass)\0*.pass\0All files (*.*)\0*.*\0\0";				ofn.lpstrFile = tmp;				ofn.nMaxFile = MAX_PATH;				ofn.Flags = OFN_PATHMUSTEXIST;				if (psi->idd == IDD_RC_2PASS1) {					ofn.Flags |= OFN_OVERWRITEPROMPT;				}else{					ofn.Flags |= OFN_FILEMUSTEXIST;				}				if ((psi->idd==IDD_RC_2PASS1 && GetSaveFileName(&ofn)) || 					(psi->idd==IDD_RC_2PASS2 && GetOpenFileName(&ofn))) {					SetDlgItemText(hDlg, IDC_STATS, tmp);				}				}				break;			case IDC_ZONE_FETCH :				SetDlgItemInt(hDlg, IDC_ZONE_FRAME, psi->config->ci.ciActiveFrame, FALSE);				break;			case IDC_AR_DEFAULT:				CheckRadioButton(hDlg, IDC_AR, IDC_PAR, IDC_PAR);				SendDlgItemMessage(hDlg, IDC_ASPECT_RATIO, CB_SETCURSEL, 0, 0);				adv_mode(hDlg, psi->idd, psi->config);				break;			case IDC_AR_4_3:				SetDlgItemInt(hDlg, IDC_ARX, 4, FALSE);				SetDlgItemInt(hDlg, IDC_ARY, 3, FALSE);				CheckRadioButton(hDlg, IDC_AR, IDC_PAR, IDC_AR);				adv_mode(hDlg, psi->idd, psi->config);				break;			case IDC_AR_16_9:				SetDlgItemInt(hDlg, IDC_ARX, 16, FALSE);				SetDlgItemInt(hDlg, IDC_ARY, 9, FALSE);				CheckRadioButton(hDlg, IDC_AR, IDC_PAR, IDC_AR);				adv_mode(hDlg, psi->idd, psi->config);				break;			case IDC_AR_235_100:				SetDlgItemInt(hDlg, IDC_ARX, 235, FALSE);				SetDlgItemInt(hDlg, IDC_ARY, 100, FALSE);				CheckRadioButton(hDlg, IDC_AR, IDC_PAR, IDC_AR);				adv_mode(hDlg, psi->idd, psi->config);				break;			case IDC_DEC_DY:			case IDC_DEC_DUV:				EnableDlgWindow(hDlg, IDC_DEC_DRY, IsDlgChecked(hDlg, IDC_DEC_DY));				EnableDlgWindow(hDlg, IDC_DEC_DRUV, IsDlgChecked(hDlg, IDC_DEC_DUV));				break;			default :				return TRUE;			}		}else if ((HIWORD(wParam) == CBN_EDITCHANGE || HIWORD(wParam)==CBN_SELCHANGE) &&			(LOWORD(wParam)==IDC_BITRATE_TSIZE ||			 LOWORD(wParam)==IDC_BITRATE_ARATE )) {			adv_mode(hDlg, psi->idd, psi->config);		}else if (HIWORD(wParam) == LBN_SELCHANGE &&			(LOWORD(wParam) == IDC_PROFILE_PROFILE ||			 LOWORD(wParam) == IDC_LEVEL_PROFILE ||			 LOWORD(wParam) == IDC_QUANTTYPE ||			 LOWORD(wParam) == IDC_ASPECT_RATIO ||			 LOWORD(wParam) == IDC_BITRATE_CFORMAT ||			 LOWORD(wParam) == IDC_BITRATE_AFORMAT ||			 LOWORD(wParam) == IDC_BITRATE_FPS)) {			adv_mode(hDlg, psi->idd, psi->config);		}else if (HIWORD(wParam) == EN_UPDATE && (LOWORD(wParam)==IDC_ZONE_WEIGHT || LOWORD(wParam)==IDC_ZONE_QUANT)) {			SendDlgItemMessage(hDlg, IDC_ZONE_SLIDER, TBM_SETPOS, TRUE,					get_dlgitem_float(hDlg, LOWORD(wParam), 100));		} else if (HIWORD(wParam) == EN_UPDATE && (LOWORD(wParam)==IDC_PARX || LOWORD(wParam)==IDC_PARY)) {			if (5 == SendDlgItemMessage(hDlg, IDC_ASPECT_RATIO, CB_GETCURSEL, 0, 0)) {				if(LOWORD(wParam)==IDC_PARX)					psi->config->par_x = config_get_uint(hDlg, LOWORD(wParam), psi->config->par_x);				else					psi->config->par_y = config_get_uint(hDlg, LOWORD(wParam), psi->config->par_y);			}		} else if (HIWORD(wParam) == EN_UPDATE &&			(LOWORD(wParam)==IDC_BITRATE_SSIZE ||			 LOWORD(wParam)==IDC_BITRATE_HOURS ||			 LOWORD(wParam)==IDC_BITRATE_MINUTES ||			 LOWORD(wParam)==IDC_BITRATE_SECONDS ||			 LOWORD(wParam)==IDC_BITRATE_ASIZE)) {			adv_mode(hDlg, psi->idd, psi->config);		} else			return 0;		break;	case WM_HSCROLL :		if((HWND)lParam == GetDlgItem(hDlg, IDC_ZONE_SLIDER)) {			int idc = IsDlgChecked(hDlg, IDC_ZONE_MODE_WEIGHT) ? IDC_ZONE_WEIGHT : IDC_ZONE_QUANT;			set_dlgitem_float(hDlg, idc, SendMessage((HWND)lParam, TBM_GETPOS, 0, 0) );			break;		}		return 0; 	case WM_NOTIFY :		switch (((NMHDR *)lParam)->code)		{		case PSN_SETACTIVE :			DPRINTF("PSN_SET");			adv_upload(hDlg, psi->idd, psi->config);			adv_mode(hDlg, psi->idd, psi->config);			SetWindowLong(hDlg, DWL_MSGRESULT, FALSE);			break;		case PSN_KILLACTIVE :			DPRINTF("PSN_KILL");			adv_download(hDlg, psi->idd, psi->config);			SetWindowLong(hDlg, DWL_MSGRESULT, FALSE);			break;		case PSN_APPLY :			DPRINTF("PSN_APPLY");			psi->config->save = TRUE;			SetWindowLong(hDlg, DWL_MSGRESULT, FALSE);			break;		}		break;	default :		return 0;	}	return 1;}/* load advanced options property sheet  returns true, if the user accepted the changes  or fasle if changes were canceled.  */#ifndef PSH_NOCONTEXTHELP#define PSH_NOCONTEXTHELP 0x02000000#endifstatic BOOL adv_dialog(HWND hParent, CONFIG * config, const int * dlgs, int size){	PROPSHEETINFO psi[6];	PROPSHEETPAGE psp[6];	PROPSHEETHEADER psh;	CONFIG temp;	int i;	config->save = FALSE;	memcpy(&temp, config, sizeof(CONFIG));	for (i=0; i<size; i++)	{		psp[i].dwSize = sizeof(PROPSHEETPAGE);		psp[i].dwFlags = 0;		psp[i].hInstance = g_hInst;		psp[i].pfnDlgProc = adv_proc;		psp[i].lParam = (LPARAM)&psi[i];		psp[i].pfnCallback = NULL;		psp[i].pszTemplate = MAKEINTRESOURCE(dlgs[i]);		psi[i].idd = dlgs[i];		psi[i].config = &temp;	}	psh.dwSize = sizeof(PROPSHEETHEADER);	psh.dwFlags = PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW | PSH_NOCONTEXTHELP;	psh.hwndParent = hParent;	psh.hInstance = g_hInst;	psh.pszCaption = (LPSTR) "Xvid Configuration";	psh.nPages = size;	psh.nStartPage = 0;	psh.ppsp = (LPCPROPSHEETPAGE)&psp;	psh.pfnCallback = NULL;	PropertySheet(&psh);	if (temp.save)		memcpy(config, &temp, sizeof(CONFIG));	return temp.save;}/* ===================================================================================== *//* MAIN DIALOG =======================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -