encdialog.cpp
来自「dsp上用c语言实现的aac音频算法的编解码器代码」· C++ 代码 · 共 945 行 · 第 1/3 页
CPP
945 行
/*CFAAC - set of classes to import/export .aac/.mp4 filesCopyright (C) 2004 Antonio ForannaThis program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation. This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details. You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. The author can be contacted at:ntnfrn_email-temp@yahoo.it*/#include <windows.h>#include <shlobj.h> // Browse#include <shellapi.h> // ShellExecute#include <Commdlg.h>#include "resource.h"#include "Defines.h" // my defines#include "CTag.h"#include "Cfaac.h"#include "EncDialog.h"#include <commctrl.h>#include <id3v2tag.h>#include <..\..\common\id3lib\win32\config.h> // ID3LIB_FULLNAME// *********************************************************************************************#ifdef USE_OUTPUT_FOLDERextern char config_AACoutdir[MAX_PATH];#endifextern HINSTANCE hInstance;extern HBITMAP hBmBrowse;// *********************************************************************************************/*DWORD PackCfg(MY_ENC_CFG *cfg){DWORD dwOptions=0; if(cfg->AutoCfg) dwOptions=1<<31; dwOptions|=(DWORD)cfg->EncCfg.mpegVersion<<30; dwOptions|=(DWORD)cfg->EncCfg.aacObjectType<<28; dwOptions|=(DWORD)cfg->EncCfg.allowMidside<<27; dwOptions|=(DWORD)cfg->EncCfg.useTns<<26; dwOptions|=(DWORD)cfg->EncCfg.useLfe<<25; dwOptions|=(DWORD)cfg->EncCfg.outputFormat<<24; if(cfg->UseQuality) dwOptions|=(((DWORD)cfg->EncCfg.quantqual>>1)&0xff)<<16; // [2,512] else dwOptions|=(((DWORD)cfg->EncCfg.bitRate>>1)&0xff)<<16; // [2,512] if(cfg->UseQuality) dwOptions|=1<<15; dwOptions|=((DWORD)cfg->EncCfg.bandWidth>>1)&&0x7fff; // [0,65536] return dwOptions;}// -----------------------------------------------------------------------------------------------void UnpackCfg(MY_ENC_CFG *cfg, DWORD dwOptions){ cfg->AutoCfg=dwOptions>>31; cfg->EncCfg.mpegVersion=(dwOptions>>30)&1; cfg->EncCfg.aacObjectType=(dwOptions>>28)&3; cfg->EncCfg.allowMidside=(dwOptions>>27)&1; cfg->EncCfg.useTns=(dwOptions>>26)&1; cfg->EncCfg.useLfe=(dwOptions>>25)&1; cfg->EncCfg.outputFormat=(dwOptions>>24)&1; cfg->EncCfg.bitRate=((dwOptions>>16)&0xff)<<1; cfg->UseQuality=(dwOptions>>15)&1; cfg->EncCfg.bandWidth=(dwOptions&0x7fff)<<1;}*/// -----------------------------------------------------------------------------------------------#define INIT_CB(hWnd,nID,list,FillList,IdSelected) \{ \ if(FillList) \ for(int i=0; list[i]; i++) \ SendMessage(GetDlgItem(hWnd, nID), CB_ADDSTRING, 0, (LPARAM)list[i]); \ SendMessage(GetDlgItem(hWnd, nID), CB_SETCURSEL, IdSelected, 0); \}// -----------------------------------------------------------------------------------------------#define INIT_CB_GENRES(hWnd,nID,ID3Genres,IdSelected) \{ \ for(int i=0; i<(sizeof(ID3Genres)/sizeof(ID3Genres[0])); i++) \ SendMessage(GetDlgItem(hWnd, nID), CB_ADDSTRING, 0, (LPARAM)ID3Genres[i].name); \ SendMessage(GetDlgItem(hWnd, nID), CB_SETCURSEL, IdSelected, 0); \}// -----------------------------------------------------------------------------------------------#define DISABLE_LTP \{ \ if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MPEG2) && \ IsDlgButtonChecked(hWndDlg,IDC_RADIO_LTP)) \ { \ CheckDlgButton(hWndDlg,IDC_RADIO_LTP,FALSE); \ CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE); \ } \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), FALSE); \}// -----------------------------------------------------------------------------------------------// EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_SSR), Enabled);// EnableWindow(GetDlgItem(hWndDlg, IDC_CHK_USELFE), Enabled);#define DISABLE_CTRLS_ENC(Enabled) \{ \ CheckDlgButton(hWndDlg,IDC_CHK_AUTOCFG, !Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG4), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MPEG2), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_RAW), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_ADTS), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CHK_ALLOWMIDSIDE), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CHK_USETNS), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CHK_USELFE), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CB_QUALITY), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BITRATE), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BANDWIDTH), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_QUALITY), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_BITRATE), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MAIN), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LOW), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), Enabled); \ if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MPEG4)) \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), Enabled); \ else \ DISABLE_LTP \}// -----------------------------------------------------------------------------------------------#define ENABLE_TAG(Enabled) \{ \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_ARTIST), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_TITLE), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_ALBUM), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_YEAR), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CB_GENRE), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_WRITER), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_COMMENT), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_COMPILATION), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CHK_COMPILATION), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_TRACK), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_NTRACKS), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_DISK), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_NDISKS), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_ARTFILE), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_BTN_ARTFILE), Enabled); \}// -----------------------------------------------------------------------------------------------#define ENABLE_AACTAGS(Enabled) \{ \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_COMPILATION), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CHK_COMPILATION), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_NTRACKS), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_DISK), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_E_NDISKS), Enabled); \}// -----------------------------------------------------------------------------------------------#ifdef USE_OUTPUT_FOLDERstatic int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData){ if (uMsg == BFFM_INITIALIZED) { SetWindowText(hwnd,"Select folder"); SendMessage(hwnd,BFFM_SETSELECTION,(WPARAM)TRUE,(LPARAM)lpData); } return 0;}#else #ifdef USE_IMPORT_TAG static int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData) { if (uMsg == BFFM_INITIALIZED) { SetWindowText(hwnd,"Select folder"); SendMessage(hwnd,BFFM_SETSELECTION,(WPARAM)TRUE,(LPARAM)lpData); } return 0; } #endif#endif// -----------------------------------------------------------------------------------------------BOOL DialogMsgProcAbout(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam){ switch(Message) { case WM_INITDIALOG: { char buf[512]; char *faac_id_string, *faac_copyright_string; sprintf(buf, APP_NAME " plugin " APP_VER " by Antonio Foranna\n\n" "Libraries used:\n" "\tlibfaac v%s\n" "\tFAAD2 v" FAAD2_VERSION "\n" "\t" MPEG4IP_PACKAGE " v" MPEG4IP_VERSION "\n" "\t" ID3LIB_FULLNAME "\n\n" "This code is given with FAAC package and does not contain executables.\n" "This program is free software and can be distributed/modifyed under the terms of the GNU General Public License.\n" "This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.\n\n" "Compiled on %s\n", (faacEncGetVersion(&faac_id_string, &faac_copyright_string)==FAAC_CFG_VERSION) ? faac_id_string : " wrong libfaac version", __DATE__ ); SetDlgItemText(hWndDlg, IDC_L_ABOUT, buf); } break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: EndDialog(hWndDlg, TRUE); break; case IDCANCEL: // Ignore data values entered into the controls and dismiss the dialog window returning FALSE EndDialog(hWndDlg, FALSE); break; case IDC_AUDIOCODING: ShellExecute(hWndDlg, NULL, "http://www.audiocoding.com", NULL, NULL, SW_SHOW); break; case IDC_MPEG4IP: ShellExecute(hWndDlg, NULL, "http://www.mpeg4ip.net", NULL, NULL, SW_SHOW); break; case IDC_ID3: ShellExecute(hWndDlg, NULL, "http://id3lib.sourceforge.net", NULL, NULL, SW_SHOW); break; case IDC_EMAIL: ShellExecute(hWndDlg, NULL, "mailto:ntnfrn_email-temp@yahoo.it", NULL, NULL, SW_SHOW); break; } break; default: return FALSE; } return TRUE;}// -----------------------------------------------------------------------------------------------// ripped from id3v2tag.cID3GENRES ID3Genres[]={ 123, "Acapella", 34, "Acid", 74, "Acid Jazz", 73, "Acid Punk", 99, "Acoustic", 20, "Alternative", 40, "AlternRock", 26, "Ambient", 90, "Avantgarde", 116, "Ballad", 41, "Bass", 85, "Bebob", 96, "Big Band", 89, "Bluegrass", 0, "Blues", 107, "Booty Bass", 65, "Cabaret", 88, "Celtic", 104, "Chamber Music", 102, "Chanson", 97, "Chorus", 61, "Christian Rap", 1, "Classic Rock", 32, "Classical", 112, "Club", 57, "Comedy", 2, "Country", 58, "Cult", 3, "Dance", 125, "Dance Hall", 50, "Darkwave", 254, "Data", 22, "Death Metal", 4, "Disco", 55, "Dream", 122, "Drum Solo", 120, "Duet", 98, "Easy Listening", 52, "Electronic", 48, "Ethnic", 124, "Euro-House", 25, "Euro-Techno", 54, "Eurodance", 84, "Fast Fusion", 80, "Folk", 81, "Folk-Rock", 115, "Folklore", 119, "Freestyle", 5, "Funk", 30, "Fusion", 36, "Game", 59, "Gangsta", 38, "Gospel", 49, "Gothic", 91, "Gothic Rock", 6, "Grunge",
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?