shithub: aacenc

Download patch

ref: 07a18e8f102dd3d94d93f8f65da5da2f293ca294
parent: dee2a30577c55659b1deaa59078f5f1380e0fbe4
author: flyingfox <flyingfox>
date: Sun Apr 29 02:32:58 EDT 2001

- disabled job list persistence (file format incompatibility)
- disabled job list multiple selection (property merging is not working properly anyway)
- added MPEG version support
- changed AAC profile to AAC object type
- disabled LTP under MPEG version 2 (if LTP selected it will go back to LC)

--- a/wingui/EncoderJob.cpp
+++ b/wingui/EncoderJob.cpp
@@ -25,6 +25,7 @@
 	m_bUseTns(false),
 	m_bUseLtp(false),
 	m_bUseLfe(false),
+	m_eMpegVersion(eMpegVersion2),
 	m_eAacProfile(eAacProfileMain),
 	m_ulBitRate(128000),
 	m_ulBandwidth(22500)
@@ -79,7 +80,14 @@
 CString CEncoderJob::DescribeJob() const
 {
 	CString oToReturn;
-	oToReturn.Format("%s - %s - %.0f kbit/s - %.0f kHz", GetFiles().GetSourceFileName(), TranslateAacProfileToShortString(GetAacProfile()), (double)GetBitRate()/1000, (double)GetBandwidth()/1000);
+	oToReturn.Format(
+		"%s - %s - %s - %.0f kbit/s - %.0f kHz",
+		GetFiles().GetSourceFileName(),
+		TranslateMpegVersionToShortString(GetMpegVersion()),
+		TranslateAacProfileToShortString(GetAacProfile()),
+		(double)GetBitRate()/1000,
+		(double)GetBandwidth()/1000
+	);
 	if (GetAllowMidside())
 	{
 		CString oMidSide;
@@ -92,12 +100,12 @@
 		oTns.LoadString(IDS_UseTns);
 		oToReturn+=CString(" - ")+oTns;
 	}
-	if (GetUseLtp())
-	{
-		CString oLtp;
-		oLtp.LoadString(IDS_UseLtp);
-		oToReturn+=CString(" - ")+oLtp;
-	}
+//	if (GetUseLtp())
+//	{
+//		CString oLtp;
+//		oLtp.LoadString(IDS_UseLtp);
+//		oToReturn+=CString(" - ")+oLtp;
+//	}
 	if (GetUseLfe())
 	{
 		CString oLfe;
@@ -328,7 +336,15 @@
 CString CEncoderJob::GetDetailedDescriptionForStatusDialog() const
 {
 	CString oToReturn;
-	oToReturn.Format(IDS_DetailedEncoderJobDescriptionString, GetFiles().GetCompleteSourceFilePath(), GetFiles().GetCompleteTargetFilePath(), TranslateAacProfileToShortString(GetAacProfile()), GetBitRate(), GetBandwidth());
+	oToReturn.Format(
+		IDS_DetailedEncoderJobDescriptionString,
+		GetFiles().GetCompleteSourceFilePath(),
+		GetFiles().GetCompleteTargetFilePath(),
+		TranslateMpegVersionToShortString(GetMpegVersion()),
+		TranslateAacProfileToShortString(GetAacProfile()),
+		GetBitRate(),
+		GetBandwidth()
+	);
 	if (GetAllowMidside())
 	{
 		CString oMidSide;
@@ -341,12 +357,12 @@
 		oTns.LoadString(IDS_UseTns);
 		oToReturn+=CString(" - ")+oTns;
 	}
-	if (GetUseLtp())
-	{
-		CString oLtp;
-		oLtp.LoadString(IDS_UseLtp);
-		oToReturn+=CString(" - ")+oLtp;
-	}
+//	if (GetUseLtp())
+//	{
+//		CString oLtp;
+//		oLtp.LoadString(IDS_UseLtp);
+//		oToReturn+=CString(" - ")+oLtp;
+//	}
 	if (GetUseLfe())
 	{
 		CString oLfe;
@@ -429,6 +445,11 @@
 			iStringId=IDS_AacProfileSsr;
 			break;
 		}
+	case eAacProfileLtp:
+		{
+			iStringId=IDS_AacProfileLtp;
+			break;
+		}
 	default:
 		{
 			// unknown aac profile
@@ -443,6 +464,35 @@
 	return oToReturn;
 }
 
+CString CEncoderJob::TranslateMpegVersionToShortString(EMpegVersion eMpegVersion)
+{
+	int iStringId;
+	switch (eMpegVersion)
+	{
+	case eMpegVersion2:
+		{
+			iStringId=IDS_MpegVersion2;
+			break;
+		}
+	case eMpegVersion4:
+		{
+			iStringId=IDS_MpegVersion4;
+			break;
+		}
+	default:
+		{
+			// unknown mpeg version
+			ASSERT(false);
+			iStringId=0;
+			break;
+		}
+	}
+
+	CString oToReturn;
+	oToReturn.LoadString(iStringId);
+	return oToReturn;
+}
+
 bool CEncoderJob::ExpandFilterJob(CJobList &oTarget, long &lNumberOfErrorJobs, bool bCreateDirectories) const
 {
 	if (!CFilePathCalc::IsValidFileMask(GetFiles().GetSourceFileName()))
@@ -609,6 +659,7 @@
 	oToReturn.m_oUseLtp.SetCheckMark(GetUseLtp());
 	oToReturn.m_oUseLfe.SetCheckMark(GetUseLfe());
 	oToReturn.m_oAacProfile.SetContent(GetAacProfileL(), true);
+	oToReturn.m_oMpegVersion.SetContent(GetMpegVersionL(), true);
 
 	return oToReturn;
 }
@@ -627,6 +678,9 @@
 	long lTemp=GetAacProfileL();
 	bModified=bModified || oPageContents.m_oAacProfile.ApplyToJob(lTemp);
 	SetAacProfile(lTemp);
+	lTemp=GetMpegVersionL();
+	bModified=bModified || oPageContents.m_oMpegVersion.ApplyToJob(lTemp);
+	SetMpegVersion(lTemp);
 
 	// when the job has been modified reset it to "unprocessed" state
 	if (bModified)
--- a/wingui/EncoderJob.h
+++ b/wingui/EncoderJob.h
@@ -28,11 +28,18 @@
 	CEncoderJob(const CEncoderJob &oSource);		// copy constructor
 	virtual ~CEncoderJob();
 
+	enum EMpegVersion
+	{
+		eMpegVersion2=0,
+		eMpegVersion4=1
+	};
+
 	enum EAacProfile
 	{
-		eAacProfileLc=0,			// the values of the enumerated constants
-		eAacProfileMain=1,			// must reflect the order of the radio
+		eAacProfileMain=0,			// the values of the enumerated constants
+		eAacProfileLc=1,			// must reflect the order of the radio
 		eAacProfileSsr=2,			// controls on the property page, starting with 0
+		eAacProfileLtp=3
 	};
 
 	// property getters
@@ -53,6 +60,8 @@
 	long GetBitRateL() const											{ return (long)m_ulBitRate; }
 	unsigned long GetBandwidth() const									{ return m_ulBandwidth; }
 	long GetBandwidthL() const											{ return (long)m_ulBandwidth; }
+	EMpegVersion GetMpegVersion() const									{ return m_eMpegVersion; }
+	long GetMpegVersionL() const										{ return m_eMpegVersion; }
 					
 	// property setters
 	void SetFiles(const CSourceTargetFilePair &oFiles)					{ m_oFiles=oFiles; }
@@ -68,6 +77,8 @@
 	void SetBitRate(long lBitRate)										{ ASSERT(lBitRate>=0); m_ulBitRate=(unsigned long)lBitRate; }
 	void SetBandwidth(unsigned long ulBandwidth)						{ m_ulBandwidth=ulBandwidth; }
 	void SetBandwidth(long lBandwidth)									{ ASSERT(lBandwidth>=0); m_ulBandwidth=lBandwidth; }
+	void SetMpegVersion(EMpegVersion eMpegVersion)						{ m_eMpegVersion = eMpegVersion; }
+	void SetMpegVersion(long lMpegVersion)								{ m_eMpegVersion = (EMpegVersion)lMpegVersion; }
 
 	// no more up to date (also had to call base class version at least)
 	// CEncoderJob& operator=(const CEncoderJob &oRight);
@@ -95,6 +106,7 @@
 	virtual bool GetFromArchive(CArchive &oArchive);
 
 	static CString TranslateAacProfileToShortString(EAacProfile eAacProfile);
+	static CString TranslateMpegVersionToShortString(EMpegVersion eMpegVersion);
 
 	// when <this> is an encoder job with a filter as source file this method expands
 	// this job to a list of single jobs to process;
@@ -110,6 +122,9 @@
 	CSourceTargetFilePair m_oFiles;
 	bool m_bSourceFileFilterIsRecursive;
 	CId3TagInfo m_oTargetFileId3Info;
+
+	// MPEG version
+	EMpegVersion m_eMpegVersion;
 
 	/* AAC profile */
 	EAacProfile m_eAacProfile;
--- a/wingui/EncoderJobProcessingManager.cpp
+++ b/wingui/EncoderJobProcessingManager.cpp
@@ -267,11 +267,12 @@
 			pEncConfig->useLfe = poJob->GetUseLfe() ? 1 : 0;
 			pEncConfig->bitRate = poJob->GetBitRate();
 			pEncConfig->bandWidth = poJob->GetBandwidth();
+			pEncConfig->mpegVersion = GetMpegVersionConstant(poJob->GetMpegVersion());
 			pEncConfig->aacObjectType = GetAacProfileConstant(poJob->GetAacProfile());
 
 			/* temp fix for MPEG4 LTP object type */
-			if (pEncConfig->aacObjectType == 1)
-				pEncConfig->aacObjectType = 3;
+//			if (pEncConfig->aacObjectType == 1)
+//				pEncConfig->aacObjectType = 3;
 
 			if (!faacEncSetConfiguration(hEncoder, pEncConfig))
 			{
@@ -419,18 +420,35 @@
 		{
 			return LOW;
 		}
-	default:
-		{
-			ASSERT(false);
-		}
 	case CEncoderJob::eAacProfileMain:
 		{
-			return LTP;
+			return MAIN;
 		}
 	case CEncoderJob::eAacProfileSsr:
 		{
 			return SSR;
 		}
+	case CEncoderJob::eAacProfileLtp:
+		{
+			return LTP;
+		}
+	default:
+		{
+			ASSERT(false);
+		}
+	}
+}
+
+int CEncoderJobProcessingManager::GetMpegVersionConstant(CEncoderJob::EMpegVersion eMpegVersion)
+{
+	switch (eMpegVersion)
+	{
+	case CEncoderJob::eMpegVersion2:
+		return MPEG2;
+	case CEncoderJob::eMpegVersion4:
+		return MPEG4;
+	default:
+		ASSERT(false);
 	}
 }
 
--- a/wingui/EncoderJobProcessingManager.h
+++ b/wingui/EncoderJobProcessingManager.h
@@ -54,6 +54,7 @@
 	void WriteProgress(long lOperationStartTickCount, long lMaxSteps, long lCurSteps);
 
 	static int GetAacProfileConstant(CEncoderJob::EAacProfile eAacProfile);
+	static int GetMpegVersionConstant(CEncoderJob::EMpegVersion eMpegVersion);
 
 	// opens an archive that writes in the specified file, 0 in
 	// case of errors;
--- a/wingui/EncoderQualityPageDialog.cpp
+++ b/wingui/EncoderQualityPageDialog.cpp
@@ -29,7 +29,8 @@
 	//{{AFX_DATA_INIT(CEncoderQualityPageDialog)
 	m_oEditBandwidth = _T("");
 	m_oEditBitRate = _T("");
-	m_iRadioAacProfile = -1;
+	m_iRadioAacProfile = 1;
+	m_iRadioMpegVersion = 0;
 	//}}AFX_DATA_INIT
 
 	Create(CEncoderQualityPageDialog::IDD, pParent);
@@ -53,7 +54,8 @@
 	DDX_Control(pDX, IDC_CHECKMIDSIDE, m_ctrlCheckMidSide);
 	DDX_Text(pDX, IDC_EDITBANDWIDTH, m_oEditBandwidth);
 	DDX_Text(pDX, IDC_EDITBITRATE, m_oEditBitRate);
-	DDX_Radio(pDX, IDC_RADIOAACPROFILELC, m_iRadioAacProfile);
+	DDX_Radio(pDX, IDC_RADIOMPEGVERSION2, m_iRadioMpegVersion);
+	DDX_Radio(pDX, IDC_RADIOAACPROFILEMAIN, m_iRadioAacProfile);
 	//}}AFX_DATA_MAP
 }
 
@@ -71,6 +73,9 @@
 	ON_BN_CLICKED(IDC_RADIOAACPROFILELC, OnRadioAacProfileLc)
 	ON_BN_CLICKED(IDC_RADIOAACPROFILEMAIN, OnRadioAacProfileMain)
 	ON_BN_CLICKED(IDC_RADIOAACPROFILESSR, OnRadioAacProfileSsr)
+	ON_BN_CLICKED(IDC_RADIOAACPROFILELTP, OnRadioAacProfileLtp)
+	ON_BN_CLICKED(IDC_RADIOMPEGVERSION2, OnRadioMpegVersion2)
+	ON_BN_CLICKED(IDC_RADIOMPEGVERSION4, OnRadioMpegVersion4)
 	//}}AFX_MSG_MAP
 END_MESSAGE_MAP()
 
@@ -86,7 +91,10 @@
 
 	// show our contents
 	ApplyPageContents(ParseJobs());
-	
+
+	if (IsDlgButtonChecked(IDC_RADIOMPEGVERSION2) == BST_CHECKED)
+		::EnableWindow(::GetDlgItem(m_hWnd, IDC_RADIOAACPROFILELTP), FALSE);
+
 	return TRUE;  // return TRUE unless you set the focus to a control
 	              // EXCEPTION: OCX Property Pages should return FALSE
 }
@@ -124,7 +132,8 @@
 	oTarget.m_oUseTns.SetCheckCode(m_ctrlCheckUseTns.GetCheck());
 	oTarget.m_oUseLtp.SetCheckCode(m_ctrlCheckUseLtp.GetCheck());
 	oTarget.m_oUseLfe.SetCheckCode(m_ctrlCheckUseLfe.GetCheck());
-	oTarget.m_oAacProfile.GetFromRadioGroupVariable(m_iRadioAacProfile, 3);
+	oTarget.m_oAacProfile.GetFromRadioGroupVariable(m_iRadioAacProfile, 4);
+	oTarget.m_oMpegVersion.GetFromRadioGroupVariable(m_iRadioMpegVersion, 2);
 
 	return true;
 }
@@ -141,6 +150,7 @@
 	oPageContents.m_oUseLtp.ApplyCheckCodeToButton(&m_ctrlCheckUseLtp);
 	oPageContents.m_oUseLfe.ApplyCheckCodeToButton(&m_ctrlCheckUseLfe);
 	oPageContents.m_oAacProfile.ApplyToRadioGroupVariable(m_iRadioAacProfile);
+	oPageContents.m_oMpegVersion.ApplyToRadioGroupVariable(m_iRadioMpegVersion);
 
 	if (m_bInitialized)
 	{
@@ -352,3 +362,27 @@
 	UpdateJobs();
 }
 
+void CEncoderQualityPageDialog::OnRadioAacProfileLtp() 
+{
+	// TODO: Add your control notification handler code here
+	UpdateJobs();
+}
+
+void CEncoderQualityPageDialog::OnRadioMpegVersion2() 
+{
+	// LTP option is unavailable
+	if (IsDlgButtonChecked(IDC_RADIOAACPROFILELTP) == BST_CHECKED)
+	{
+		CheckDlgButton(IDC_RADIOAACPROFILELTP, BST_UNCHECKED);
+		CheckDlgButton(IDC_RADIOAACPROFILELC, BST_CHECKED);
+	}
+	::EnableWindow(::GetDlgItem(m_hWnd, IDC_RADIOAACPROFILELTP), FALSE);
+	UpdateJobs();
+}
+
+void CEncoderQualityPageDialog::OnRadioMpegVersion4()
+{
+	// LTP option is available
+	::EnableWindow(::GetDlgItem(m_hWnd, IDC_RADIOAACPROFILELTP), TRUE);
+	UpdateJobs();
+}
--- a/wingui/EncoderQualityPageDialog.h
+++ b/wingui/EncoderQualityPageDialog.h
@@ -36,6 +36,7 @@
 	CString	m_oEditBandwidth;
 	CString	m_oEditBitRate;
 	int		m_iRadioAacProfile;
+	int		m_iRadioMpegVersion;
 	//}}AFX_DATA
 
 
@@ -68,6 +69,9 @@
 	afx_msg void OnRadioAacProfileLc();
 	afx_msg void OnRadioAacProfileMain();
 	afx_msg void OnRadioAacProfileSsr();
+	afx_msg void OnRadioAacProfileLtp();
+	afx_msg void OnRadioMpegVersion2();
+	afx_msg void OnRadioMpegVersion4();
 	//}}AFX_MSG
 	DECLARE_MESSAGE_MAP()
 
--- a/wingui/EncoderQualityPropertyPageContents.cpp
+++ b/wingui/EncoderQualityPropertyPageContents.cpp
@@ -39,6 +39,7 @@
 	m_oUseLtp*=oRight.m_oUseLtp;
 	m_oUseLfe*=oRight.m_oUseLfe;
 	m_oAacProfile*=oRight.m_oAacProfile;
+	m_oMpegVersion*=oRight.m_oMpegVersion;
 
 	return *this;
 }
\ No newline at end of file
--- a/wingui/EncoderQualityPropertyPageContents.h
+++ b/wingui/EncoderQualityPropertyPageContents.h
@@ -32,6 +32,7 @@
 	CPageCheckboxCtrlContent m_oUseLtp;
 	CPageCheckboxCtrlContent m_oUseLfe;
 	CPageRadioGroupCtrlContent m_oAacProfile;
+	CPageRadioGroupCtrlContent m_oMpegVersion;
 
 	// with this operator pages for several jobs can be "merged"
 	CEncoderQualityPropertyPageContents& operator*=(const CEncoderQualityPropertyPageContents &oRight);
--- a/wingui/faac_wingui.rc
+++ b/wingui/faac_wingui.rc
@@ -67,8 +67,20 @@
 // Icon with lowest ID value placed first to ensure application icon
 // remains consistent on all systems.
 IDR_MAINFRAME           ICON    DISCARDABLE     "res\\faac_wingui.ico"
+#endif    // German (Germany) resources
+/////////////////////////////////////////////////////////////////////////////
 
+
 /////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
 //
 // Dialog
 //
@@ -98,72 +110,28 @@
                     BS_AUTOCHECKBOX | WS_TABSTOP,24,49,63,10
     CONTROL         "Use TNS",IDC_CHECKUSETNS,"Button",BS_AUTOCHECKBOX | 
                     WS_TABSTOP,24,60,45,10
-    CONTROL         "Use LTP",IDC_CHECKUSELTP,"Button",BS_AUTOCHECKBOX | 
-                    WS_TABSTOP,24,72,44,10
+    CONTROL         "Use LTP",IDC_CHECKUSELTP,"Button",BS_AUTOCHECKBOX | NOT 
+                    WS_VISIBLE | WS_DISABLED | WS_TABSTOP,24,72,44,10
     CONTROL         "Use LFE",IDC_CHECKUSELFE,"Button",BS_AUTOCHECKBOX | 
                     WS_DISABLED | WS_TABSTOP,24,83,43,10
-    GROUPBOX        "AAC Profile",IDC_STATIC,133,46,59,48
-    CONTROL         "LC",IDC_RADIOAACPROFILELC,"Button",BS_AUTORADIOBUTTON | 
-                    WS_GROUP | WS_TABSTOP,142,58,25,10
-    CONTROL         "Main LTP",IDC_RADIOAACPROFILEMAIN,"Button",
-                    BS_AUTORADIOBUTTON,142,69,47,10
+    GROUPBOX        "MPEG",IDC_STATIC,142,5,68,35
+    CONTROL         "Version 2",IDC_RADIOMPEGVERSION2,"Button",
+                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,152,15,45,10
+    CONTROL         "Version 4",IDC_RADIOMPEGVERSION4,"Button",
+                    BS_AUTORADIOBUTTON,152,26,45,10
+    GROUPBOX        "AAC Object Type",IDC_STATIC,142,45,68,59,WS_GROUP
+    CONTROL         "Main",IDC_RADIOAACPROFILEMAIN,"Button",
+                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,152,57,31,10
+    CONTROL         "LC",IDC_RADIOAACPROFILELC,"Button",BS_AUTORADIOBUTTON,
+                    152,68,25,10
     CONTROL         "SSR",IDC_RADIOAACPROFILESSR,"Button",BS_AUTORADIOBUTTON | 
-                    WS_DISABLED,142,79,31,10
+                    WS_DISABLED,152,79,31,10
+    CONTROL         "LTP",IDC_RADIOAACPROFILELTP,"Button",BS_AUTORADIOBUTTON,
+                    152,89,29,10
     DEFPUSHBUTTON   "Enter Attractor",IDC_BUTTON1,198,112,50,14,NOT 
                     WS_VISIBLE
 END
 
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE 
-BEGIN
-    IDD_PROPERTIESDUMMYPARENTDIALOG, DIALOG
-    BEGIN
-        VERTGUIDE, 10
-        VERTGUIDE, 169
-    END
-
-    IDD_ENCODERQUALITYPAGEDIALOG, DIALOG
-    BEGIN
-        LEFTMARGIN, 5
-        RIGHTMARGIN, 248
-        VERTGUIDE, 24
-        VERTGUIDE, 64
-        VERTGUIDE, 116
-        VERTGUIDE, 119
-        VERTGUIDE, 142
-        TOPMARGIN, 5
-        BOTTOMMARGIN, 126
-        HORZGUIDE, 14
-        HORZGUIDE, 32
-        HORZGUIDE, 49
-    END
-END
-#endif    // APSTUDIO_INVOKED
-
-#endif    // German (Germany) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
 IDD_ABOUTBOX DIALOG DISCARDABLE  0, 0, 244, 66
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "About faac_wingui"
@@ -185,12 +153,12 @@
     WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "winfaac"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Sans Serif"
 BEGIN
     DEFPUSHBUTTON   "Bye",IDOK,422,216,50,14
     CONTROL         "List1",IDC_LISTJOBS,"SysListView32",LVS_REPORT | 
-                    LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | 
-                    WS_TABSTOP,7,7,465,167
+                    LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | 
+                    WS_BORDER | WS_TABSTOP,7,7,465,167
     PUSHBUTTON      "&Add File Encoder Jobs...",IDC_BUTTONADDENCODERJOB,7,
                     180,104,14
     PUSHBUTTON      "&Delete Selection",IDC_BUTTONDELETEJOBS,117,198,63,14
@@ -199,8 +167,10 @@
     CONTROL         "Remove Processed Jobs From List",
                     IDC_CHECKREMOVEPROCESSEDJOBS,"Button",BS_AUTOCHECKBOX | 
                     WS_TABSTOP,249,215,125,10
-    PUSHBUTTON      "&Save Joblist...",IDC_BUTTONSAVEJOBLIST,359,180,54,14
-    PUSHBUTTON      "&Load Joblist...",IDC_BUTTONLOADJOBLIST,418,180,54,14
+    PUSHBUTTON      "&Save Joblist...",IDC_BUTTONSAVEJOBLIST,359,180,54,14,
+                    WS_DISABLED
+    PUSHBUTTON      "&Load Joblist...",IDC_BUTTONLOADJOBLIST,418,180,54,14,
+                    WS_DISABLED
     PUSHBUTTON      "D&uplicate Selection",IDC_BUTTONDUPLICATESELECTED,117,
                     216,69,14
     PUSHBUTTON      "Pro&cess All",IDC_BUTTONPROCESSALL,249,180,50,14
@@ -329,6 +299,28 @@
 #ifdef APSTUDIO_INVOKED
 GUIDELINES DESIGNINFO DISCARDABLE 
 BEGIN
+    IDD_PROPERTIESDUMMYPARENTDIALOG, DIALOG
+    BEGIN
+        VERTGUIDE, 10
+        VERTGUIDE, 169
+    END
+
+    IDD_ENCODERQUALITYPAGEDIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 5
+        RIGHTMARGIN, 248
+        VERTGUIDE, 24
+        VERTGUIDE, 64
+        VERTGUIDE, 116
+        VERTGUIDE, 119
+        VERTGUIDE, 142
+        TOPMARGIN, 5
+        BOTTOMMARGIN, 126
+        HORZGUIDE, 14
+        HORZGUIDE, 32
+        HORZGUIDE, 49
+    END
+
     IDD_ABOUTBOX, DIALOG
     BEGIN
         LEFTMARGIN, 7
@@ -838,10 +830,10 @@
 STRINGTABLE DISCARDABLE 
 BEGIN
     IDS_AacProfileLc        "LC"
-    IDS_AacProfileMain      "Main LTP"
+    IDS_AacProfileMain      "Main"
     IDS_AacProfileSsr       "Ssr"
     IDS_DetailedEncoderJobDescriptionString 
-                            "%s -> %s\nProfile: %s\nParameters: %d bit/s - %d Hz"
+                            "%s -> %s\nProfile: %s - %s\nParameters: %d bit/s - %d Hz"
     IDS_JobListFileFilter   "Job List File (*.jbl)|*.jbl"
     IDS_JobListStandardExtension "jbl"
     IDS_ErrorWhileSavingJobList "Error while saving joblist."
@@ -878,6 +870,13 @@
     IDS_ErrorCreatingTargetDiretory "Error creating target directory"
     IDS_InvalidTargetDirectory "Invalid target directory!"
     IDS_HadUnsuccessfulJobs "There have been problems during job list processing. Refer to list column ""Last Processed"" for further information."
+    IDS_AacProfileLtp       "LTP"
+    IDS_MpegVersion2        "MPEG-2"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_MpegVersion4        "MPEG-4"
 END
 
 #endif    // English (U.S.) resources
--- a/wingui/resource.h
+++ b/wingui/resource.h
@@ -71,6 +71,9 @@
 #define IDS_ErrorCreatingTargetDiretory 155
 #define IDS_InvalidTargetDirectory      156
 #define IDS_HadUnsuccessfulJobs         157
+#define IDS_AacProfileLtp               158
+#define IDS_MpegVersion2                159
+#define IDS_MpegVersion4                160
 #define IDC_LISTJOBS                    1000
 #define IDC_BUTTONADDENCODERJOB         1001
 #define IDC_TAB1                        1002
@@ -116,6 +119,7 @@
 #define IDC_RADIOAACPROFILESSR          1047
 #define IDC_BUTTON1                     1048
 #define IDC_BUTTONSAVEJOBLIST           1049
+#define IDC_RADIOAACPROFILELTP          1049
 #define IDC_BUTTONLOADJOBLIST           1050
 #define IDC_BUTTONDUPLICATESELECTED     1051
 #define IDC_CHECKRECURSIVE              1052
@@ -130,6 +134,8 @@
 #define IDC_BUTTONNEVER                 1061
 #define IDC_BUTTONADDFILTERENCODERJOB   1062
 #define IDC_BUTTONADDEMPTYENCODERJOB    1063
+#define IDC_RADIOMPEGVERSION2           1064
+#define IDC_RADIOMPEGVERSION4           1065
 #define ID_BUTTON32771                  32771
 #define ID_BUTTON32772                  32772
 #define ID_BUTTON32773                  32773
@@ -141,7 +147,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        140
 #define _APS_NEXT_COMMAND_VALUE         32775
-#define _APS_NEXT_CONTROL_VALUE         1064
+#define _APS_NEXT_CONTROL_VALUE         1065
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif