encdialog.cpp
来自「faac-1.25.rar音频编解码器demo」· C++ 代码 · 共 945 行 · 第 1/3 页
CPP
945 行
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 + =
减小字号Ctrl + -
显示快捷键?