encdialog.cpp
来自「faac-1.25.rar音频编解码器demo」· C++ 代码 · 共 945 行 · 第 1/3 页
CPP
945 行
/*
CFAAC - set of classes to import/export .aac/.mp4 files
Copyright (C) 2004 Antonio Foranna
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 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_FOLDER
extern char config_AACoutdir[MAX_PATH];
#endif
extern 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_FOLDER
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;
}
#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.c
ID3GENRES 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 + -
显示快捷键?