From: <man...@us...> - 2013-07-03 18:41:09
|
Revision: 2482 http://sourceforge.net/p/modplug/code/2482 Author: manxorist Date: 2013-07-03 18:40:57 +0000 (Wed, 03 Jul 2013) Log Message: ----------- [Imp] Always enable "Export as MP3" menu entry and display a useful message box when no MP3 codec is found. [Imp] Tiny improvement to program startup time by loading ACM mp3 converters only when needed (when the user clicks "Export as MP3"). [Mod] Remove /nomp3 command line switch. MP3 support is now initialized on demand, so this provides no gain anymore. [Fix] Fix crash when ACM initialization fails. Modified Paths: -------------- trunk/OpenMPT/mptrack/ACMConvert.cpp trunk/OpenMPT/mptrack/ACMConvert.h trunk/OpenMPT/mptrack/Mod2wave.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Mptrack.h trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/TrackerSettings.h trunk/OpenMPT/mptrack/mod2wave.h Modified: trunk/OpenMPT/mptrack/ACMConvert.cpp =================================================================== --- trunk/OpenMPT/mptrack/ACMConvert.cpp 2013-07-03 00:32:07 UTC (rev 2481) +++ trunk/OpenMPT/mptrack/ACMConvert.cpp 2013-07-03 18:40:57 UTC (rev 2482) @@ -31,17 +31,6 @@ BOOL ACMConvert::layer3Present = FALSE; -#define TRAP_ACM_FAULTS - -#ifdef TRAP_ACM_FAULTS -void ACMConvert::AcmExceptionHandler() -//------------------------------------ -{ - theApp.GetACMConvert().m_hACMInst = NULL; - theApp.WriteProfileInt("Settings", "DisableACM", 1); -} -#endif - BOOL ACMConvert::InitializeACM(BOOL bNoAcm) //----------------------------------------- { @@ -57,13 +46,12 @@ } catch(...) {} if (!bNoAcm) { -#ifdef TRAP_ACM_FAULTS try { -#endif m_hACMInst = LoadLibrary(TEXT("MSACM32.DLL")); -#ifdef TRAP_ACM_FAULTS - } catch(...) {} -#endif + } catch(...) + { + m_hACMInst = NULL; + } } SetErrorMode(fuErrorMode); if (m_hBladeEnc != NULL) @@ -97,9 +85,7 @@ m_hACMInst = NULL; return bOk; } -#ifdef TRAP_ACM_FAULTS try { -#endif *(FARPROC *)&pfnAcmGetVersion = GetProcAddress(m_hACMInst, "acmGetVersion"); dwVersion = 0; if (pfnAcmGetVersion) dwVersion = pfnAcmGetVersion(); @@ -131,11 +117,13 @@ pwfx->nBlockAlign = (WORD)((pwfx->nChannels * pwfx->wBitsPerSample) / 8); pwfx->nAvgBytesPerSec = pwfx->nSamplesPerSec * pwfx->nBlockAlign; m_pfnAcmFormatEnum(NULL, &afd, AcmFormatEnumCB, NULL, ACM_FORMATENUMF_CONVERT); + bOk = TRUE; } -#ifdef TRAP_ACM_FAULTS - } catch(...){} -#endif - return TRUE; + } catch(...) + { + // nothing + } + return bOk; } @@ -157,6 +145,7 @@ FreeLibrary(m_hBladeEnc); m_hBladeEnc = NULL; } + layer3Present = FALSE; return TRUE; } Modified: trunk/OpenMPT/mptrack/ACMConvert.h =================================================================== --- trunk/OpenMPT/mptrack/ACMConvert.h 2013-07-03 00:32:07 UTC (rev 2481) +++ trunk/OpenMPT/mptrack/ACMConvert.h 2013-07-03 18:40:57 UTC (rev 2482) @@ -35,10 +35,10 @@ PFNACMFORMATENUM m_pfnAcmFormatEnum; static BOOL layer3Present; -public: +private: BOOL InitializeACM(BOOL bNoAcm = FALSE); BOOL UninitializeACM(); - static void AcmExceptionHandler(); +public: MMRESULT AcmFormatEnum(HACMDRIVER had, LPACMFORMATDETAILSA pafd, ACMFORMATENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum); MMRESULT AcmDriverOpen(LPHACMDRIVER, HACMDRIVERID, DWORD); MMRESULT AcmDriverDetails(HACMDRIVERID hadid, LPACMDRIVERDETAILS padd, DWORD fdwDetails); @@ -51,12 +51,19 @@ MMRESULT AcmStreamConvert(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwConvert); BOOL IsLayer3Present() const { return layer3Present; }; - ACMConvert() + ACMConvert(bool noACM) { + layer3Present = FALSE; m_hBladeEnc = NULL; m_hLameEnc = NULL; m_hACMInst = NULL; + m_pfnAcmFormatEnum = NULL; + InitializeACM(noACM); } + ~ACMConvert() + { + UninitializeACM(); + } protected: static BOOL CALLBACK AcmFormatEnumCB(HACMDRIVERID, LPACMFORMATDETAILS, DWORD, DWORD); Modified: trunk/OpenMPT/mptrack/Mod2wave.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mod2wave.cpp 2013-07-03 00:32:07 UTC (rev 2481) +++ trunk/OpenMPT/mptrack/Mod2wave.cpp 2013-07-03 18:40:57 UTC (rev 2482) @@ -17,6 +17,7 @@ #include "vstplug.h" #include "mod2wave.h" #include "Wav.h" +#include "ACMConvert.h" extern UINT nMixingRates[NUMMIXRATE]; extern LPCSTR gszChnCfgNames[3]; @@ -374,7 +375,7 @@ pwfx->wBitsPerSample = 16; pwfx->nBlockAlign = (pwfx->nChannels * pwfx->wBitsPerSample) / 8; pwfx->nAvgBytesPerSec = pwfx->nSamplesPerSec * pwfx->nBlockAlign; - theApp.GetACMConvert().AcmFormatEnum(NULL, &afd, AcmFormatEnumCB, (DWORD)this, ACM_FORMATENUMF_CONVERT); + acmConvert.AcmFormatEnum(NULL, &afd, AcmFormatEnumCB, (DWORD)this, ACM_FORMATENUMF_CONVERT); m_bDriversEnumerated = TRUE; m_CbnDriver.SetCurSel(m_nDriverIndex); if (m_bSaveInfoField) CheckDlgButton(IDC_CHECK3, MF_CHECKED); @@ -416,7 +417,7 @@ pwfx->wBitsPerSample = 16; pwfx->nBlockAlign = pwfx->nChannels * pwfx->wBitsPerSample / 8; pwfx->nAvgBytesPerSec = pwfx->nSamplesPerSec * pwfx->nBlockAlign; - theApp.GetACMConvert().AcmFormatEnum(NULL, &afd, AcmFormatEnumCB, (DWORD)this, ACM_FORMATENUMF_CONVERT); + acmConvert.AcmFormatEnum(NULL, &afd, AcmFormatEnumCB, (DWORD)this, ACM_FORMATENUMF_CONVERT); m_CbnFormat.SetCurSel(m_nFormatIndex); } @@ -457,7 +458,7 @@ } MemsetZero(add); add.cbStruct = sizeof(add); - if (theApp.GetACMConvert().AcmDriverDetails(hdid, &add, 0L) == MMSYSERR_NOERROR) + if (acmConvert.AcmDriverDetails(hdid, &add, 0L) == MMSYSERR_NOERROR) { Drivers[m_nNumDrivers] = hdid; CHAR *pszName = ((add.szLongName[0]) && (strlen(add.szLongName) < 40)) ? add.szLongName : add.szShortName; @@ -891,9 +892,10 @@ END_MESSAGE_MAP() -CDoAcmConvert::CDoAcmConvert(CSoundFile *sndfile, LPCSTR fname, PWAVEFORMATEX pwfx, HACMDRIVERID hadid, CFileTagging *pTag, CWnd *parent): - CDialog(IDD_PROGRESS, parent) -//-------------------------------------------------------------------------------------------------------------------------------------- +CDoAcmConvert::CDoAcmConvert(CSoundFile *sndfile, LPCSTR fname, PWAVEFORMATEX pwfx, HACMDRIVERID hadid, CFileTagging *pTag, ACMConvert &acmConvert_, CWnd *parent): + CDialog(IDD_PROGRESS, parent), + acmConvert(acmConvert_) +//----------------------------------------------------------------------------------------------------------------------------------------------------------------- { m_pSndFile = sndfile; m_lpszFileName = fname; @@ -956,12 +958,12 @@ wfxSrc.cbSize = 0; dwDstBufSize = WAVECONVERTBUFSIZE; // Open the ACM Driver - if (theApp.GetACMConvert().AcmDriverOpen(&hADriver, m_hadid, 0L) != MMSYSERR_NOERROR) goto OnError; - if (theApp.GetACMConvert().AcmStreamOpen(&hAStream, hADriver, &wfxSrc, m_pwfx, NULL, 0L, 0L, ACM_STREAMOPENF_NONREALTIME) != MMSYSERR_NOERROR) goto OnError; + if (acmConvert.AcmDriverOpen(&hADriver, m_hadid, 0L) != MMSYSERR_NOERROR) goto OnError; + if (acmConvert.AcmStreamOpen(&hAStream, hADriver, &wfxSrc, m_pwfx, NULL, 0L, 0L, ACM_STREAMOPENF_NONREALTIME) != MMSYSERR_NOERROR) goto OnError; // This call is useless for BLADEenc/LAMEenc, but required for ACM codecs! - if (theApp.GetACMConvert().AcmStreamSize(hAStream, WAVECONVERTBUFSIZE, &dwDstBufSize, ACM_STREAMSIZEF_SOURCE) != MMSYSERR_NOERROR) goto OnError; + if (acmConvert.AcmStreamSize(hAStream, WAVECONVERTBUFSIZE, &dwDstBufSize, ACM_STREAMSIZEF_SOURCE) != MMSYSERR_NOERROR) goto OnError; // This call is useless for ACM, but required for BLADEenc/LAMEenc codecs! - if (theApp.GetACMConvert().AcmStreamSize(hAStream, WAVECONVERTBUFSIZE, &dwDstBufSize, ACM_STREAMSIZEF_DESTINATION) != MMSYSERR_NOERROR) goto OnError; + if (acmConvert.AcmStreamSize(hAStream, WAVECONVERTBUFSIZE, &dwDstBufSize, ACM_STREAMSIZEF_DESTINATION) != MMSYSERR_NOERROR) goto OnError; //if (dwDstBufSize > 0x10000) dwDstBufSize = 0x10000; pcmBuffer = new BYTE[WAVECONVERTBUFSIZE]; dstBuffer = new BYTE[dwDstBufSize]; @@ -974,7 +976,7 @@ ash.cbSrcLength = WAVECONVERTBUFSIZE; ash.pbDst = dstBuffer; ash.cbDstLength = dwDstBufSize; - if (theApp.GetACMConvert().AcmStreamPrepareHeader(hAStream, &ash, 0L) != MMSYSERR_NOERROR) goto OnError; + if (acmConvert.AcmStreamPrepareHeader(hAStream, &ash, 0L) != MMSYSERR_NOERROR) goto OnError; bPrepared = true; // Creating the output file while ((f = fopen(m_lpszFileName, "wb")) == NULL) @@ -1049,7 +1051,7 @@ ullSamples += lRead; ash.cbSrcLength = lRead * wfxSrc.nBlockAlign + WAVECONVERTBUFSIZE - pcmBufSize; ash.cbDstLengthUsed = 0; - if (theApp.GetACMConvert().AcmStreamConvert(hAStream, &ash, (lRead) ? ACM_STREAMCONVERTF_BLOCKALIGN : ACM_STREAMCONVERTF_END) != MMSYSERR_NOERROR) break; + if (acmConvert.AcmStreamConvert(hAStream, &ash, (lRead) ? ACM_STREAMCONVERTF_BLOCKALIGN : ACM_STREAMCONVERTF_END) != MMSYSERR_NOERROR) break; do { if (::PeekMessage(&msg, m_hWnd, 0, 0, PM_REMOVE)) @@ -1107,9 +1109,9 @@ fclose(f); if (!m_bAbort) retval = IDOK; OnError: - if (bPrepared) theApp.GetACMConvert().AcmStreamUnprepareHeader(hAStream, &ash, 0L); - if (hAStream != NULL) theApp.GetACMConvert().AcmStreamClose(hAStream, 0L); - if (hADriver != NULL) theApp.GetACMConvert().AcmDriverClose(hADriver, 0L); + if (bPrepared) acmConvert.AcmStreamUnprepareHeader(hAStream, &ash, 0L); + if (hAStream != NULL) acmConvert.AcmStreamClose(hAStream, 0L); + if (hADriver != NULL) acmConvert.AcmDriverClose(hADriver, 0L); if (pcmBuffer) delete[] pcmBuffer; if (dstBuffer) delete[] dstBuffer; EndDialog(retval); Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2013-07-03 00:32:07 UTC (rev 2481) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2013-07-03 18:40:57 UTC (rev 2482) @@ -16,6 +16,7 @@ #include "mpdlgs.h" #include "dlg_misc.h" #include "Dlsbank.h" +#include "ACMConvert.h" #include "mod2wave.h" #include "mod2midi.h" #include "vstplug.h" @@ -94,7 +95,6 @@ ON_UPDATE_COMMAND_UI(ID_VIEW_INSTRUMENTS, OnUpdateXMITMPTOnly) //ON_UPDATE_COMMAND_UI(ID_VIEW_COMMENTS, OnUpdateXMITMPTOnly) ON_UPDATE_COMMAND_UI(ID_VIEW_MIDIMAPPING, OnUpdateHasMIDIMappings) - ON_UPDATE_COMMAND_UI(ID_FILE_SAVEASMP3, OnUpdateMP3Encode) ON_UPDATE_COMMAND_UI(ID_VIEW_EDITHISTORY, OnUpdateITMPTOnly) ON_UPDATE_COMMAND_UI(ID_FILE_SAVECOMPAT, OnUpdateCompatExportableOnly) //}}AFX_MSG_MAP @@ -1861,6 +1861,15 @@ void CModDoc::OnFileMP3Convert() //------------------------------ { + + // Initialize ACM Support + ACMConvert acmConvert(TrackerSettings::Instance().noACM); + if(!acmConvert.IsLayer3Present()) + { + Reporting::Error("No MP3 codec found. Please install an MP3 ACM codec or put lame_enc.dll in OpenMPT's root directory.", "OpenMPT - MP3 Export"); + return; + } + int nFilterIndex = 0; TCHAR sFName[_MAX_FNAME] = ""; CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); @@ -1892,7 +1901,7 @@ strcpy(fext, (nFilterIndex == 2) ? ".wav" : ".mp3"); strcat(s, fext); } - CLayer3Convert wsdlg(&m_SndFile, pMainFrm); + CLayer3Convert wsdlg(&m_SndFile, pMainFrm, acmConvert); if (m_SndFile.m_szNames[0][0]) wsdlg.m_bSaveInfoField = TRUE; if (wsdlg.DoModal() != IDOK) return; wsdlg.GetFormat(&wfx, &hadid); @@ -1907,7 +1916,7 @@ // Saving file CFileTagging *pTag = (wsdlg.m_bSaveInfoField) ? &wsdlg.m_FileTags : NULL; - CDoAcmConvert dwcdlg(&m_SndFile, s, &wfx.wfx, hadid, pTag, pMainFrm); + CDoAcmConvert dwcdlg(&m_SndFile, s, &wfx.wfx, hadid, pTag, acmConvert, pMainFrm); dwcdlg.m_dwFileLimit = wsdlg.m_dwFileLimit; dwcdlg.m_dwSongLimit = wsdlg.m_dwSongLimit; dwcdlg.DoModal(); @@ -2208,14 +2217,6 @@ } -// Enable menu item if MP3 encoder is present -void CModDoc::OnUpdateMP3Encode(CCmdUI *p) -//---------------------------------------- -{ - if (p) p->Enable(theApp.CanEncodeLayer3()); -} - - // Enable menu item if current module type supports compatibility export void CModDoc::OnUpdateCompatExportableOnly(CCmdUI *p) //--------------------------------------------------- Modified: trunk/OpenMPT/mptrack/Moddoc.h =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h 2013-07-03 00:32:07 UTC (rev 2481) +++ trunk/OpenMPT/mptrack/Moddoc.h 2013-07-03 18:40:57 UTC (rev 2482) @@ -432,7 +432,6 @@ afx_msg void OnUpdateXMITMPTOnly(CCmdUI *p); afx_msg void OnUpdateITMPTOnly(CCmdUI *p); afx_msg void OnUpdateHasMIDIMappings(CCmdUI *p); - afx_msg void OnUpdateMP3Encode(CCmdUI *pCmdUI); afx_msg void OnUpdateCompatExportableOnly(CCmdUI *p); afx_msg void OnPatternRestart() { OnPatternRestart(true); } //rewbs.customKeys afx_msg void OnPatternRestart(bool loop); //rewbs.customKeys Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2013-07-03 00:32:07 UTC (rev 2481) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2013-07-03 18:40:57 UTC (rev 2482) @@ -269,13 +269,13 @@ //================================================ { public: - bool m_bNoAcm, m_bNoDls, m_bNoMp3, m_bSafeMode, m_bWavEx, m_bNoPlugins, m_bDebug, + bool m_bNoAcm, m_bNoDls, m_bSafeMode, m_bWavEx, m_bNoPlugins, m_bDebug, m_bPortable, m_bNoSettingsOnNewVersion; public: CMPTCommandLineInfo() { - m_bNoAcm = m_bNoDls = m_bNoMp3 = m_bSafeMode = m_bWavEx = + m_bNoAcm = m_bNoDls = m_bSafeMode = m_bWavEx = m_bNoPlugins = m_bDebug = m_bNoSettingsOnNewVersion = m_bPortable = false; } virtual void ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast); @@ -290,7 +290,6 @@ if (!lstrcmpi(lpszParam, "nologo")) { m_bShowSplash = FALSE; return; } else if (!lstrcmpi(lpszParam, "nodls")) { m_bNoDls = true; return; } else if (!lstrcmpi(lpszParam, "noacm")) { m_bNoAcm = true; return; } else - if (!lstrcmpi(lpszParam, "nomp3")) { m_bNoMp3 = true; return; } else if (!lstrcmpi(lpszParam, "wavex")) { m_bWavEx = true; return; } else if (!lstrcmpi(lpszParam, "noplugs")) { m_bNoPlugins = true; return; } else if (!lstrcmpi(lpszParam, "debug")) { m_bDebug = true; return; } else @@ -841,8 +840,8 @@ CMPTCommandLineInfo cmdInfo; if (GetDSoundVersion() >= 0x0700) cmdInfo.m_bWavEx = true; ParseCommandLine(cmdInfo); + TrackerSettings::Instance().noACM = cmdInfo.m_bNoAcm; - // Set up paths to store configuration in SetupPaths(cmdInfo.m_bPortable); @@ -911,10 +910,6 @@ // Load DLS Banks if (!cmdInfo.m_bNoDls) LoadDefaultDLSBanks(); - // Initialize ACM Support - if (GetProfileInt("Settings", "DisableACM", 0)) cmdInfo.m_bNoAcm = true; - if (!cmdInfo.m_bNoMp3) GetACMConvert().InitializeACM(cmdInfo.m_bNoAcm); - // Initialize Plugins if (!cmdInfo.m_bNoPlugins) InitializeDXPlugins(); @@ -991,9 +986,6 @@ // Uninitialize Plugins UninitializeDXPlugins(); - // Uninitialize ACM - GetACMConvert().UninitializeACM(); - return CWinApp::ExitInstance(); } Modified: trunk/OpenMPT/mptrack/Mptrack.h =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.h 2013-07-03 00:32:07 UTC (rev 2481) +++ trunk/OpenMPT/mptrack/Mptrack.h 2013-07-03 18:40:57 UTC (rev 2482) @@ -11,7 +11,6 @@ #pragma once #include "resource.h" // main symbols -#include "ACMConvert.h" #include <windows.h> #include "../mptrack/MpTrackUtil.h" #include "../mptrack/Reporting.h" @@ -124,7 +123,6 @@ TCHAR m_szPluginCacheFileName[_MAX_PATH]; TCHAR m_szStringsFileName[_MAX_PATH]; bool m_bPortableMode; - ACMConvert acmConvert; public: CTrackApp(); @@ -162,7 +160,6 @@ CVstPluginManager *GetPluginManager() const { return m_pPluginManager; } void GetDefaultMidiMacro(MIDIMacroConfig &cfg) const { cfg = m_MidiCfg; } void SetDefaultMidiMacro(const MIDIMacroConfig &cfg) { m_MidiCfg = cfg; } - BOOL CanEncodeLayer3() const { return acmConvert.IsLayer3Present(); } BOOL IsWaveExEnabled() const { return m_bExWaveSupport; } BOOL IsDebug() const { return m_bDebugMode; } LPCTSTR GetConfigFileName() const { return m_szConfigFileName; } @@ -181,8 +178,6 @@ /// Removes item from MRU-list; most recent item has index zero. void RemoveMruItem(const int nItem); - ACMConvert &GetACMConvert() { return acmConvert; }; - // Splash Screen protected: void StartSplashScreen(); Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp 2013-07-03 00:32:07 UTC (rev 2481) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp 2013-07-03 18:40:57 UTC (rev 2482) @@ -41,6 +41,8 @@ TrackerSettings::TrackerSettings() //-------------------------------- { + noACM = false; + m_ShowSplashScreen = true; gnPatternSpacing = 0; gbPatternRecord = TRUE; @@ -277,6 +279,9 @@ RpcStringFree(&Str); } + // also via command line switch + noACM = noACM || CMainFrame::GetPrivateProfileLong("Settings", "DisableACM", 0, iniFile); + // GUI Stuff m_ShowSplashScreen = CMainFrame::GetPrivateProfileBool("Display", "ShowSplashScreen", m_ShowSplashScreen, iniFile); gbMdiMaximize = CMainFrame::GetPrivateProfileLong("Display", "MDIMaximize", gbMdiMaximize, iniFile); Modified: trunk/OpenMPT/mptrack/TrackerSettings.h =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.h 2013-07-03 00:32:07 UTC (rev 2481) +++ trunk/OpenMPT/mptrack/TrackerSettings.h 2013-07-03 18:40:57 UTC (rev 2482) @@ -156,6 +156,9 @@ public: + // CommandLine switches + bool noACM; + // MIDI recording enum RecordAftertouchOptions { Modified: trunk/OpenMPT/mptrack/mod2wave.h =================================================================== --- trunk/OpenMPT/mptrack/mod2wave.h 2013-07-03 00:32:07 UTC (rev 2481) +++ trunk/OpenMPT/mptrack/mod2wave.h 2013-07-03 18:40:57 UTC (rev 2482) @@ -12,6 +12,8 @@ #include "tagging.h" +class ACMConvert; + /////////////////////////////////////////////////////////////////////////////////////////////////// // Direct To Disk Recording @@ -98,9 +100,10 @@ MPEGLAYER3WAVEFORMAT Formats[MAX_FORMATS]; HACMDRIVERID Drivers[MAX_DRIVERS]; BOOL m_bInitialFound, m_bDriversEnumerated; + ACMConvert &acmConvert; public: - CLayer3Convert(CSoundFile *pSndFile, CWnd *parent):CDialog(IDD_LAYER3CONVERT, parent) + CLayer3Convert(CSoundFile *pSndFile, CWnd *parent, ACMConvert &acmConvert_):CDialog(IDD_LAYER3CONVERT, parent), acmConvert(acmConvert_) { m_dwFileLimit = m_dwSongLimit = m_nFormatIndex = m_nDriverIndex = 0; m_bSaveInfoField = FALSE; m_pSndFile = pSndFile; } void GetFormat(PMPEGLAYER3WAVEFORMAT pwfx, HACMDRIVERID *phadid); @@ -134,9 +137,10 @@ PWAVEFORMATEX m_pwfx; HACMDRIVERID m_hadid; CFileTagging m_FileTags; + ACMConvert &acmConvert; public: - CDoAcmConvert(CSoundFile *sndfile, LPCSTR fname, PWAVEFORMATEX pwfx, HACMDRIVERID hadid, CFileTagging *pInfo, CWnd *parent=NULL); + CDoAcmConvert(CSoundFile *sndfile, LPCSTR fname, PWAVEFORMATEX pwfx, HACMDRIVERID hadid, CFileTagging *pInfo, ACMConvert &acmConvert_, CWnd *parent=NULL); BOOL OnInitDialog(); void OnCancel() { m_bAbort = TRUE; } afx_msg void OnButton1(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |