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

📄 encdialog.cpp

📁 dsp上用c语言实现的aac音频算法的编解码器代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    79,     "Hard Rock",    7,      "Hip-Hop",    35,     "House",    100,    "Humour",    19,     "Industrial",    33,     "Instrumental",    46,     "Instrumental Pop",    47,     "Instrumental Rock",    8,      "Jazz",    29,     "Jazz+Funk",    63,     "Jungle",    86,     "Latin",    71,     "Lo-Fi",    45,     "Meditative",    9,      "Metal",    77,     "Musical",    82,     "National Folk",    64,     "Native American",    10,     "New Age",    66,     "New Wave",    39,     "Noise",    255,    "Not Set",    11,     "Oldies",    103,    "Opera",    12,     "Other",    75,     "Polka",    13,     "Pop",    62,     "Pop/Funk",    53,     "Pop-Folk",    109,    "Porn Groove",    117,    "Power Ballad",    23,     "Pranks",    108,    "Primus",    92,     "Progressive Rock",    67,     "Psychadelic",    93,     "Psychedelic Rock",    43,     "Punk",    121,    "Punk Rock",    14,     "R&B",    15,     "Rap",    68,     "Rave",    16,     "Reggae",    76,     "Retro",    87,     "Revival",    118,    "Rhythmic Soul",    17,     "Rock",    78,     "Rock & Roll",    114,    "Samba",    110,    "Satire",    69,     "Showtunes",    21,     "Ska",    111,    "Slow Jam",    95,     "Slow Rock",    105,    "Sonata",    42,     "Soul",    37,     "Sound Clip",    24,     "Soundtrack",    56,     "Southern Rock",    44,     "Space",    101,    "Speech",    83,     "Swing",    94,     "Symphonic Rock",    106,    "Symphony",    113,    "Tango",    18,     "Techno",    51,     "Techno-Industrial",    60,     "Top 40",    70,     "Trailer",    31,     "Trance",    72,     "Tribal",    27,     "Trip-Hop",    28,     "Vocal"};BOOL CALLBACK DIALOGMsgProcEnc(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam){	switch(Message)	{	case WM_INITDIALOG:		{		char buf[50];		char FillList=wParam||lParam ? 1 : 0;		char *Quality[]={"Default (100)","10","20","30","40","50","60","70","80","90","100","110","120","130","140","150","200","300","400","500",0};		char *BitRate[]={"Auto","8","16","18","20","24","32","40","48","56","64","80","96","112","128","160","192","224","256","320","384",0};		char *BandWidth[]={"Auto","Full","4000","8000","11025","16000","22050","24000","32000","44100","48000",0};		char *Ext[]={".aac",".mp4",".m4a",".m4b",0};		CMyEncCfg cfg(false);			//			sprintf(Quality[0]+8,"%3d",3);			SetWindowPos(GetDlgItem(hWndDlg,IDC_CHK_TAG),GetDlgItem(hWndDlg,IDC_GRP_TAG),0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);			INIT_CB(hWndDlg,IDC_CB_QUALITY,Quality,FillList,0);			INIT_CB(hWndDlg,IDC_CB_BITRATE,BitRate,FillList,0);			INIT_CB(hWndDlg,IDC_CB_BANDWIDTH,BandWidth,FillList,0);			INIT_CB(hWndDlg,IDC_CB_EXT,Ext,FillList,0);			INIT_CB_GENRES(hWndDlg,IDC_CB_GENRE,ID3Genres,0);			SendMessage(GetDlgItem(hWndDlg, IDC_BTN_ARTFILE), BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hBmBrowse);#ifdef USE_OUTPUT_FOLDER						SendMessage(GetDlgItem(hWndDlg, IDC_BTN_BROWSE), BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hBmBrowse);			if(!cfg.OutDir || !*cfg.OutDir)			{				GetCurrentDirectory(MAX_PATH,config_AACoutdir);				FREE_ARRAY(cfg.OutDir);				cfg.OutDir=strdup(config_AACoutdir);			}			else				strcpy(config_AACoutdir,cfg.OutDir);			SetDlgItemText(hWndDlg, IDC_E_BROWSE, cfg.OutDir);#else			ShowWindow(GetDlgItem(hWndDlg, IDC_BTN_BROWSE),SW_HIDE);			ShowWindow(GetDlgItem(hWndDlg, IDC_E_BROWSE),SW_HIDE);			ShowWindow(GetDlgItem(hWndDlg, IDC_L_BROWSE),SW_HIDE);#endif			CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,FALSE);			CheckDlgButton(hWndDlg,IDC_RADIO_MPEG2,FALSE);			if(cfg.EncCfg.mpegVersion==MPEG4)				CheckDlgButton(hWndDlg,IDC_RADIO_MPEG4,TRUE);			else				CheckDlgButton(hWndDlg,IDC_RADIO_MPEG2,TRUE);						CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,FALSE);			CheckDlgButton(hWndDlg,IDC_RADIO_LOW,FALSE);			CheckDlgButton(hWndDlg,IDC_RADIO_SSR,FALSE);			CheckDlgButton(hWndDlg,IDC_RADIO_LTP,FALSE);			switch(cfg.EncCfg.aacObjectType)			{			case MAIN:				CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE);				break;			case LOW:				CheckDlgButton(hWndDlg,IDC_RADIO_LOW,TRUE);				break;			case SSR:				CheckDlgButton(hWndDlg,IDC_RADIO_SSR,TRUE);				break;			case LTP:				CheckDlgButton(hWndDlg,IDC_RADIO_LTP,TRUE);				DISABLE_LTP				break;			}						CheckDlgButton(hWndDlg,IDC_RADIO_RAW,FALSE);			CheckDlgButton(hWndDlg,IDC_RADIO_ADTS,FALSE);			switch(cfg.EncCfg.outputFormat)			{			case RAW:				CheckDlgButton(hWndDlg,IDC_RADIO_RAW,TRUE);				break;			case ADTS:				CheckDlgButton(hWndDlg,IDC_RADIO_ADTS,TRUE);				break;			}						CheckDlgButton(hWndDlg, IDC_CHK_ALLOWMIDSIDE, cfg.EncCfg.allowMidside);			CheckDlgButton(hWndDlg, IDC_CHK_USETNS, cfg.EncCfg.useTns);			CheckDlgButton(hWndDlg, IDC_CHK_USELFE, cfg.EncCfg.useLfe);			if(cfg.UseQuality)				CheckDlgButton(hWndDlg,IDC_RADIO_QUALITY,TRUE);			else				CheckDlgButton(hWndDlg,IDC_RADIO_BITRATE,TRUE);			switch(cfg.EncCfg.quantqual)			{			case 100:				SendMessage(GetDlgItem(hWndDlg, IDC_CB_QUALITY), CB_SETCURSEL, 0, 0);				break;			default:				if(cfg.EncCfg.quantqual<10)					cfg.EncCfg.quantqual=10;				if(cfg.EncCfg.quantqual>500)					cfg.EncCfg.quantqual=500;				sprintf(buf,"%lu",cfg.EncCfg.quantqual);				SetDlgItemText(hWndDlg, IDC_CB_QUALITY, buf);				break;			}			switch(cfg.EncCfg.bitRate)			{			case 0:				SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITRATE), CB_SETCURSEL, 0, 0);				break;			default:				sprintf(buf,"%lu",cfg.EncCfg.bitRate);				SetDlgItemText(hWndDlg, IDC_CB_BITRATE, buf);				break;			}			switch(cfg.EncCfg.bandWidth)			{			case 0:				SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_SETCURSEL, 0, 0);				break;			case 0xffffffff:				SendMessage(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), CB_SETCURSEL, 1, 0);				break;			default:				sprintf(buf,"%lu",cfg.EncCfg.bandWidth);				SetDlgItemText(hWndDlg, IDC_CB_BANDWIDTH, buf);				break;			}						SendMessage(GetDlgItem(hWndDlg, IDC_CB_EXT), CB_SETCURSEL, cfg.SaveMP4, 0);			if(wParam|lParam)			{				CheckDlgButton(hWndDlg,IDC_CHK_AUTOCFG, cfg.AutoCfg);				DISABLE_CTRLS_ENC(!cfg.AutoCfg);			}#ifdef USE_IMPORT_TAG			CheckDlgButton(hWndDlg,IDC_CHK_IMPORTTAG, cfg.TagImport);			cfg.TagImport=IsDlgButtonChecked(hWndDlg,IDC_CHK_IMPORTTAG) ? 1 : 0;			ShowWindow(GetDlgItem(hWndDlg, IDC_CHK_IMPORTTAG),SW_SHOW);	#ifdef USE_PATHEXT			SetDlgItemText(hWndDlg, IDC_E_SOURCEPATH, cfg.TagSrcPath);			SetDlgItemText(hWndDlg, IDC_E_SOURCEEXT, cfg.TagSrcExt);			SendMessage(GetDlgItem(hWndDlg, IDC_BTN_BROWSEIMPORT), BM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hBmBrowse);			ShowWindow(GetDlgItem(hWndDlg, IDC_E_SOURCEEXT),SW_SHOW);			ShowWindow(GetDlgItem(hWndDlg, IDC_E_SOURCEPATH),SW_SHOW);			ShowWindow(GetDlgItem(hWndDlg, IDC_BTN_BROWSEIMPORT),SW_SHOW);	#endif#endif			CheckDlgButton(hWndDlg,IDC_CHK_TAG, cfg.TagOn);			ENABLE_TAG(cfg.TagOn && !cfg.TagImport);			ENABLE_AACTAGS(cfg.TagOn && !cfg.TagImport && cfg.SaveMP4);			SetDlgItemText(hWndDlg, IDC_E_ARTIST, cfg.Tag.artist);			SetDlgItemText(hWndDlg, IDC_E_TITLE, cfg.Tag.title);			SetDlgItemText(hWndDlg, IDC_E_ALBUM, cfg.Tag.album);			SetDlgItemText(hWndDlg, IDC_E_YEAR, cfg.Tag.year);			SetDlgItemText(hWndDlg, IDC_CB_GENRE, cfg.Tag.genre);			SetDlgItemText(hWndDlg, IDC_E_WRITER, cfg.Tag.writer);			SetDlgItemText(hWndDlg, IDC_E_COMMENT, cfg.Tag.comment);			SetDlgItemText(hWndDlg, IDC_E_ARTFILE, cfg.Tag.artFilename);			SetDlgItemInt(hWndDlg, IDC_E_TRACK, cfg.Tag.trackno, FALSE);			SetDlgItemInt(hWndDlg, IDC_E_NTRACKS, cfg.Tag.ntracks, FALSE);			SetDlgItemInt(hWndDlg, IDC_E_DISK, cfg.Tag.discno, FALSE);			SetDlgItemInt(hWndDlg, IDC_E_NDISKS, cfg.Tag.ndiscs, FALSE);			SetDlgItemInt(hWndDlg, IDC_E_COMPILATION, cfg.Tag.compilation, FALSE);			CheckDlgButton(hWndDlg, IDC_CHK_COMPILATION, cfg.Tag.compilation);		}		break; // End of WM_INITDIALOG                                 			case WM_CLOSE:		// Closing the Dialog behaves the same as Cancel               		PostMessage(hWndDlg, WM_COMMAND, IDCANCEL, 0L);		break; // End of WM_CLOSE                                      			case WM_COMMAND:		switch(LOWORD(wParam))		{		case IDOK:			{//			HANDLE hCfg=(HANDLE)lParam;			char buf[50];			CMyEncCfg cfg;				cfg.AutoCfg=IsDlgButtonChecked(hWndDlg,IDC_CHK_AUTOCFG) ? TRUE : FALSE;				if(!cfg.AutoCfg)				{					cfg.EncCfg.mpegVersion=IsDlgButtonChecked(hWndDlg,IDC_RADIO_MPEG4) ? MPEG4 : MPEG2;					if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MAIN))						cfg.EncCfg.aacObjectType=MAIN;					if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LOW))						cfg.EncCfg.aacObjectType=LOW;					if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_SSR))						cfg.EncCfg.aacObjectType=SSR;					if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LTP))						cfg.EncCfg.aacObjectType=LTP;					cfg.EncCfg.allowMidside=IsDlgButtonChecked(hWndDlg, IDC_CHK_ALLOWMIDSIDE);					cfg.EncCfg.useTns=IsDlgButtonChecked(hWndDlg, IDC_CHK_USETNS);					cfg.EncCfg.useLfe=IsDlgButtonChecked(hWndDlg, IDC_CHK_USELFE);										GetDlgItemText(hWndDlg, IDC_CB_BITRATE, buf, 50);					switch(*buf)					{					case 'A': // Auto						cfg.EncCfg.bitRate=0;						break;					default:						cfg.EncCfg.bitRate=GetDlgItemInt(hWndDlg, IDC_CB_BITRATE, 0, FALSE);					}					GetDlgItemText(hWndDlg, IDC_CB_BANDWIDTH, buf, 50);					switch(*buf)					{					case 'A': // Auto						cfg.EncCfg.bandWidth=0;						break;					case 'F': // Full						cfg.EncCfg.bandWidth=0xffffffff;						break;					default:						cfg.EncCfg.bandWidth=GetDlgItemInt(hWndDlg, IDC_CB_BANDWIDTH, 0, FALSE);					}					cfg.UseQuality=IsDlgButtonChecked(hWndDlg,IDC_RADIO_QUALITY) ? TRUE : FALSE;					GetDlgItemText(hWndDlg, IDC_CB_QUALITY, buf, 50);					switch(*buf)					{					case 'D': // Default						cfg.EncCfg.quantqual=100;						break;					default:						cfg.EncCfg.quantqual=GetDlgItemInt(hWndDlg, IDC_CB_QUALITY, 0, FALSE);					}				}				cfg.EncCfg.outputFormat=IsDlgButtonChecked(hWndDlg,IDC_RADIO_RAW) ? RAW : ADTS;#ifdef USE_OUTPUT_FOLDER				GetDlgItemText(hWndDlg, IDC_E_BROWSE, config_AACoutdir, MAX_PATH);				FREE_ARRAY(cfg.OutDir);				cfg.OutDir=strdup(config_AACoutdir);#endif				cfg.SaveMP4=(BYTE)SendMessage(GetDlgItem(hWndDlg, IDC_CB_EXT), CB_GETCURSEL, 0, 0);				cfg.TagOn=IsDlgButtonChecked(hWndDlg,IDC_CHK_TAG) ? 1 : 0;

⌨️ 快捷键说明

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