ref: 50b2defc006b0eb062e183527d09cd3c1744ab7a
dir: /plugins/cooledit/DecDialog.cpp/
#include <windows.h> #include "resource.h" #include "Defines.h" // my defines #include "Cfaad.h" #include "DecDialog.h" #include "EncDialog.h" // ********************************************************************************************* extern HINSTANCE hInstance; extern HBITMAP hBmBrowse; // ----------------------------------------------------------------------------------------------- #ifndef FAAD_FMT_64BIT #define FAAD_FMT_64BIT 5 #endif // ********************************************************************************************* int ShowDlg4RawAAC() { return DialogBoxParam((HINSTANCE)hInstance,(LPCSTR)MAKEINTRESOURCE(IDD_DECODER),(HWND)NULL, (DLGPROC)DialogMsgProcDec, 0); // return DialogBoxParam((HINSTANCE)hInstance,(LPCSTR)MAKEINTRESOURCE(IDD_DECODER),(HWND)hWnd, (DLGPROC)DialogMsgProcDec, (DWORD)&cfg); } // ********************************************************************************************* #define INIT_CB(hWnd,nID,list,IdSelected) \ { \ 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); \ } // ----------------------------------------------------------------------------------------------- // EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_SSR), Enabled); #define DISABLE_CTRLS_DEC(Enabled) \ { \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_MAIN), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LOW), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_RADIO_LTP), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CHK_DOWNMATRIX), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CHK_OLDADTS), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CB_SAMPLERATE), Enabled); \ EnableWindow(GetDlgItem(hWndDlg, IDC_CB_BITSPERSAMPLE), Enabled); \ } // ----------------------------------------------------------------------------------------------- BOOL DialogMsgProcDec(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { case WM_INITDIALOG: { /* if(!lParam) { MessageBox(hWndDlg,"Pointer==NULL",0,MB_OK|MB_ICONSTOP); EndDialog(hWndDlg, 0); return TRUE; } */ char buf[50]; char *SampleRate[]={"6000","8000","16000","22050","32000","44100","48000","64000","88200","96000","192000",0}, *BitsPerSample[]={"16","24","32","32 bit FLOAT","64 bit FLOAT",0}; CMyDecCfg cfg(false); SetWindowPos(GetDlgItem(hWndDlg,IDC_CHK_DEFAULTCFG),GetDlgItem(hWndDlg,IDC_GRP_DEFAULT),0,0,0,0,SWP_NOMOVE | SWP_NOSIZE); INIT_CB(hWndDlg,IDC_CB_BITSPERSAMPLE,BitsPerSample,0); INIT_CB(hWndDlg,IDC_CB_SAMPLERATE,SampleRate,5); sprintf(buf,"%lu",cfg.DecCfg.defSampleRate); SetDlgItemText(hWndDlg, IDC_CB_SAMPLERATE, buf); switch(cfg.DecCfg.defObjectType) { case MAIN: CheckDlgButton(hWndDlg,IDC_RADIO_MAIN,TRUE); break; case LC: CheckDlgButton(hWndDlg,IDC_RADIO_LOW,TRUE); break; case SSR: CheckDlgButton(hWndDlg,IDC_RADIO_SSR,TRUE); break; case LTP: CheckDlgButton(hWndDlg,IDC_RADIO_LTP,TRUE); break; case HE_AAC: CheckDlgButton(hWndDlg,IDC_RADIO_HE,TRUE); break; } switch(cfg.DecCfg.outputFormat) { case FAAD_FMT_16BIT: SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITSPERSAMPLE), CB_SETCURSEL, 0, 0); break; case FAAD_FMT_24BIT: SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITSPERSAMPLE), CB_SETCURSEL, 1, 0); break; case FAAD_FMT_32BIT: SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITSPERSAMPLE), CB_SETCURSEL, 2, 0); break; case FAAD_FMT_FLOAT: SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITSPERSAMPLE), CB_SETCURSEL, 3, 0); break; case FAAD_FMT_64BIT: SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITSPERSAMPLE), CB_SETCURSEL, 4, 0); break; } CheckDlgButton(hWndDlg,IDC_CHK_DOWNMATRIX, cfg.DecCfg.downMatrix); CheckDlgButton(hWndDlg,IDC_CHK_OLDADTS, cfg.DecCfg.useOldADTSFormat); CheckDlgButton(hWndDlg,IDC_CHK_DEFAULTCFG, cfg.DefaultCfg); DISABLE_CTRLS_DEC(!cfg.DefaultCfg); } break; // End of WM_INITDIALOG case WM_CLOSE: // Closing the Dialog behaves the same as Cancel PostMessage(hWndDlg, WM_COMMAND, IDCANCEL, 0); break; // End of WM_CLOSE case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_CHK_DEFAULTCFG: { char Enabled=!IsDlgButtonChecked(hWndDlg,IDC_CHK_DEFAULTCFG); DISABLE_CTRLS_DEC(Enabled); } break; case IDOK: { CMyDecCfg cfg; if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_MAIN)) cfg.DecCfg.defObjectType=MAIN; if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LOW)) cfg.DecCfg.defObjectType=LC; if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_SSR)) cfg.DecCfg.defObjectType=SSR; if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_LTP)) cfg.DecCfg.defObjectType=LTP; if(IsDlgButtonChecked(hWndDlg,IDC_RADIO_HE)) cfg.DecCfg.defObjectType=HE_AAC; switch(SendMessage(GetDlgItem(hWndDlg, IDC_CB_BITSPERSAMPLE), CB_GETCURSEL, 0, 0)) { case 0: cfg.DecCfg.outputFormat=FAAD_FMT_16BIT; break; case 1: cfg.DecCfg.outputFormat=FAAD_FMT_24BIT; break; case 2: cfg.DecCfg.outputFormat=FAAD_FMT_32BIT; break; case 3: cfg.DecCfg.outputFormat=FAAD_FMT_FLOAT; break; case 4: cfg.DecCfg.outputFormat=FAAD_FMT_64BIT; break; } cfg.DecCfg.defSampleRate=GetDlgItemInt(hWndDlg, IDC_CB_SAMPLERATE, 0, FALSE); cfg.DecCfg.downMatrix=IsDlgButtonChecked(hWndDlg,IDC_CHK_DOWNMATRIX) ? TRUE : FALSE; cfg.DecCfg.useOldADTSFormat=IsDlgButtonChecked(hWndDlg,IDC_CHK_OLDADTS) ? TRUE : FALSE; cfg.DefaultCfg=IsDlgButtonChecked(hWndDlg,IDC_CHK_DEFAULTCFG) ? TRUE : FALSE; EndDialog(hWndDlg, (DWORD)TRUE); } break; case IDCANCEL: // Ignore data values entered into the controls // and dismiss the dialog window returning FALSE EndDialog(hWndDlg, (DWORD)FALSE); break; case IDC_BTN_ABOUT: DialogBox((HINSTANCE)hInstance,(LPCSTR)MAKEINTRESOURCE(IDD_ABOUT), (HWND)hWndDlg, (DLGPROC)DialogMsgProcAbout); break; } break; // End of WM_COMMAND default: return FALSE; } return TRUE; }