shithub: aacdec

Download patch

ref: 2ac355532dc6bd13696bb8b06be924ed1a097d23
parent: 03339bb0a5314887affd3e5b7ececaf3bfa134e4
author: menno <menno>
date: Mon Apr 28 15:04:36 EDT 2003

new QCD plugin

--- a/plugins/QCD/QCDFAAD.c
+++ b/plugins/QCD/QCDFAAD.c
@@ -16,7 +16,7 @@
 ** along with this program; if not, write to the Free Software 
 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 **
-** $Id: QCDFAAD.c,v 1.1 2003/02/09 18:55:19 menno Exp $
+** $Id: QCDFAAD.c,v 1.2 2003/04/28 19:04:35 menno Exp $
 ** based on menno's in_faad.dll plugin for Winamp
 **
 ** The tag function has been removed because QCD supports ID3v1 & ID3v2 very well
@@ -28,6 +28,7 @@
 #include <windows.h>
 #include <mmreg.h>
 #include <commctrl.h>
+#include <shellapi.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include "QCDInputDLL.h"
@@ -47,7 +48,7 @@
 faacDecFrameInfo frameInfo;
 
 HINSTANCE		hInstance;
-HWND			hwndPlayer;
+HWND			hwndPlayer, hwndConfig, hwndAbout;
 QCDModInitIn	sQCDCallbacks, *QCDCallbacks;
 BOOL			oldAPIs = 0;
 static char	lastfn[MAX_PATH]; // currently playing file (used for getting info on the current file)
@@ -74,9 +75,6 @@
 int id3v2_tag(unsigned char *buffer);
 DWORD WINAPI PlayThread(void *b); // the decode thread procedure
 
-BOOL CALLBACK config_dialog_proc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam);
-INT_PTR CALLBACK AboutProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);/* about dialogbox*/
-
 // general funcz
 static void show_error(const char *message,...)
 {
@@ -130,7 +128,7 @@
     char stream_buffer_size[10];
 
     strcpy(variable_bitrate_display, "1");
-    strcpy(priority, "4");
+    strcpy(priority, "5");
     strcpy(memmap_file, "0");
     strcpy(local_buffer_size, "128");
     strcpy(stream_buffer_size, "64");
@@ -195,7 +193,7 @@
 	ModInit->toModule.Configure			= Configure;
 	QCDCallbacks = ModInit;
 
-	ModInfo->moduleString = "FAAD Plugin v1.0";
+	ModInfo->moduleString = "FAAD Plugin v1.0b";
 	/* read config */
 	QCDCallbacks->Service(opGetPluginSettingsFile, INI_FILE, MAX_PATH, 0);
 
@@ -234,13 +232,6 @@
 
 //----------------------------------------------------------------------------
 
-void Configure(int flags)
-{
-	HWND hwndConfig = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_CONFIG), hwndPlayer, config_dialog_proc);
-	if(hwndConfig)
-		ShowWindow(hwndConfig, SW_NORMAL);
-}
-
 BOOL CALLBACK config_dialog_proc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
 {
 	char tmp[10];
@@ -344,13 +335,91 @@
     return FALSE;
 }
 
+
+void Configure(int flags)
+{
+	if(!IsWindow(hwndConfig))
+		hwndConfig = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_CONFIG), hwndPlayer, config_dialog_proc);
+	ShowWindow(hwndConfig, SW_NORMAL);
+}
+
 //-----------------------------------------------------------------------------
+// proc of "About Dialog"
+INT_PTR CALLBACK about_dialog_proc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+	static RECT rcLOGO, rcMail1, rcMail2/*, rcMail3*/;
+	POINT ptMouse;
+	static char szPluginVer[] = "QCD FAAD Input Plug-in v1.0b\nCompiled on " __TIME__ ", " __DATE__;
+	static char szFLACVer[] = "Using: FAAD2 v "FAAD2_VERSION" by";
 
+	switch (uMsg)
+	{
+	case WM_INITDIALOG:
+	case WM_MOVE:
+		GetWindowRect(GetDlgItem(hwndDlg, IDC_LOGO), &rcLOGO);
+		GetWindowRect(GetDlgItem(hwndDlg, IDC_MAIL1), &rcMail1);
+		GetWindowRect(GetDlgItem(hwndDlg, IDC_MAIL2), &rcMail2);
+//		GetWindowRect(GetDlgItem(hwndDlg, IDC_MAIL2), &rcMail3);
+
+		SetDlgItemText(hwndDlg, IDC_PLUGINVER, szPluginVer);
+		SetDlgItemText(hwndDlg, IDC_FAADVER, szFLACVer);
+		
+		return TRUE;
+	case WM_MOUSEMOVE:
+		ptMouse.x = LOWORD(lParam);
+		ptMouse.y = HIWORD(lParam);
+		ClientToScreen(hwndDlg, &ptMouse);
+		if( (ptMouse.x >= rcLOGO.left && ptMouse.x <= rcLOGO.right && 
+			ptMouse.y >= rcLOGO.top && ptMouse.y<= rcLOGO.bottom) 
+			||
+			(ptMouse.x >= rcMail1.left && ptMouse.x <= rcMail1.right && 
+			ptMouse.y >= rcMail1.top && ptMouse.y<= rcMail1.bottom) 
+			||
+			(ptMouse.x >= rcMail2.left && ptMouse.x <= rcMail2.right && 
+			ptMouse.y >= rcMail2.top && ptMouse.y<= rcMail2.bottom) 
+/*			||
+			(ptMouse.x >= rcMail3.left && ptMouse.x <= rcMail3.right && 
+			ptMouse.y >= rcMail3.top && ptMouse.y<= rcMail3.bottom)*/ )
+			SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(32649)));
+		else
+			SetCursor(LoadCursor(NULL, IDC_ARROW));
+
+		return TRUE;
+	case WM_LBUTTONDOWN:
+		ptMouse.x = LOWORD(lParam);
+		ptMouse.y = HIWORD(lParam);
+		ClientToScreen(hwndDlg, &ptMouse);
+		if(ptMouse.x >= rcLOGO.left && ptMouse.x <= rcLOGO.right && 
+			ptMouse.y >= rcLOGO.top && ptMouse.y<= rcLOGO.bottom)
+			ShellExecute(0, NULL, "http://www.audiocoding.com", NULL,NULL, SW_NORMAL);
+		else if(ptMouse.x >= rcMail1.left && ptMouse.x <= rcMail1.right && 
+			ptMouse.y >= rcMail1.top && ptMouse.y<= rcMail1.bottom)
+			ShellExecute(0, NULL, "mailto:[email protected]", NULL,NULL, SW_NORMAL);
+		else if(ptMouse.x >= rcMail2.left && ptMouse.x <= rcMail2.right && 
+			ptMouse.y >= rcMail2.top && ptMouse.y<= rcMail2.bottom)
+			ShellExecute(0, NULL, "mailto:[email protected]", NULL,NULL, SW_NORMAL);
+/*		else if(ptMouse.x >= rcMail3.left && ptMouse.x <= rcMail3.right && 
+			ptMouse.y >= rcMail3.top && ptMouse.y<= rcMail3.bottom)
+			ShellExecute(0, NULL, "I don't know", NULL,NULL, SW_NORMAL);
+*/
+		return TRUE;
+	case WM_COMMAND:
+		switch(LOWORD(wParam))
+		{
+		case IDOK:
+		default:
+			DestroyWindow(hwndDlg);
+			return TRUE;
+		}
+	}
+	return FALSE;
+}
+
 void About(int flags)
 {
-	HWND hwndAbout = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_ABOUT), hwndPlayer, AboutProc); 
-	if(hwndAbout)
-		ShowWindow(hwndAbout, SW_NORMAL);
+	if(!IsWindow(hwndAbout))
+		hwndAbout = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_ABOUT), hwndPlayer, about_dialog_proc); 
+	ShowWindow(hwndAbout, SW_SHOW);
 }
 
 //-----------------------------------------------------------------------------
@@ -368,7 +437,7 @@
 	QCDCallbacks->Service(opGetPluginSettingsFile, INI_FILE, MAX_PATH, 0);
     config_read();
 
-	ModInfo->moduleString = "FAAD Plugin v1.0";
+	ModInfo->moduleString = "FAAD Plugin v1.0b";
 	ModInfo->moduleExtensions = "AAC";
 
     /* Initialize winsock, necessary for streaming */
@@ -375,7 +444,7 @@
     WinsockInit();
 
 	// insert menu item into plugin menu
-	QCDCallbacks->Service(opSetPluginMenuItem, hInstance, IDD_CONFIG, (long)"FAAD Plug-in");
+//	QCDCallbacks->Service(opSetPluginMenuItem, hInstance, IDD_CONFIG, (long)"FAAD Plug-in");
 
 	return TRUE;
 }
@@ -392,15 +461,8 @@
     /* Deallocate winsock */
     WinsockDeInit();
 
-	if(seek_table)
-	{
-		free(seek_table);
-		seek_table = NULL;
-		seek_table_length = 0;
-	}
-
 	// delete the inserted plugin menu
-	QCDCallbacks->Service(opSetPluginMenuItem, hInstance, 0, 0);
+//	QCDCallbacks->Service(opSetPluginMenuItem, hInstance, 0, 0);
 }
 
 //-----------------------------------------------------------------------------
@@ -613,10 +675,9 @@
 		
 		get_AAC_format((char *)medianame, &file_info, &seek_table, &seek_table_length, 0);
 		
-		strcpy(lastfn,medianame);
-		paused = 0;
-		seek_needed = -1;
+		seek_needed = playfrom > 0 ? playfrom : -1;
 		killPlayThread = 0;
+		strcpy(lastfn,medianame);
 
 		/*
 		To RageAmp: This is really needed, because aacinfo isn't very accurate on ADIF files yet.
@@ -625,18 +686,6 @@
 		file_info.sampling_rate = samplerate;
 		file_info.channels = frameInfo.channels;
 
-		// show constant bitrate at first
-		{
-			AudioInfo cai;
-			cai.struct_size = sizeof(AudioInfo);
-			cai.frequency = file_info.sampling_rate;
-			cai.bitrate = file_info.bitrate;
-			cai.mode = (channels == 2) ? 0 : 3;
-			cai.layer = 0;
-			cai.level = 0;
-			QCDCallbacks->Service(opSetAudioInfo, &cai, sizeof(AudioInfo), 0);
-		}
-
 		play_thread_handle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) PlayThread, (void *) &killPlayThread, 0, &thread_id);
 		if(!play_thread_handle)
 			return FALSE;
@@ -673,27 +722,23 @@
 		sQCDCallbacks.toPlayer.OutputStop(flags);
 		
 		killPlayThread = 1;
-		if (WaitForSingleObject(play_thread_handle, INFINITE) == WAIT_TIMEOUT)
-            TerminateThread(play_thread_handle,0);
-        CloseHandle(play_thread_handle);
-        play_thread_handle = INVALID_HANDLE_VALUE;
-		
+		if(play_thread_handle != INVALID_HANDLE_VALUE)
+		{
+			if(WaitForSingleObject(play_thread_handle, INFINITE) == WAIT_TIMEOUT)
+			{
+//				MessageBox(hwndPlayer, "FAAD thread kill timeout", "debug", 0);
+				TerminateThread(play_thread_handle,0);
+			}
+			CloseHandle(play_thread_handle);
+			play_thread_handle = INVALID_HANDLE_VALUE;
+		}
+
 		if (oldAPIs)
 			QCDCallbacks->toPlayer.PlayStopped(lastfn);
 		
 		lastfn[0] = 0;
-		faacDecClose(hDecoder);
-		close_filestream(infile);
-		
-		if (memmap_buffer)
-			LocalFree(memmap_buffer);
-		if(seek_table)
-		{
-			free(seek_table);
-			seek_table = NULL;
-			seek_table_length = 0;
-		}
 	}
+
 	return TRUE;
 }
 
@@ -788,12 +833,12 @@
     {
  		/********************** SEEK ************************/
        if (!done && seek_needed >= 0)
-        {
+	   {
             int seconds;
 
-			QCDCallbacks->toPlayer.OutputFlush(0);
             // Round off to a second
             seconds = seek_needed - (seek_needed%1000);
+			QCDCallbacks->toPlayer.OutputFlush(decode_pos_ms);
             aac_seek(seconds, seek_table);
             decode_pos_ms = seconds;
 			decoded_frames = 0;
@@ -801,9 +846,8 @@
 			br_bytes_consumed = 0;
 
 			seek_needed = -1;
- 			done = FALSE;
 			updatePos = 1;
-       }
+	   }
 
 		/********************* QUIT *************************/
 		if (done)
@@ -810,6 +854,7 @@
 		{
 			if (QCDCallbacks->toPlayer.OutputDrain(0) && !(seek_needed >= 0))
 			{
+				play_thread_handle = INVALID_HANDLE_VALUE;
 				QCDCallbacks->toPlayer.OutputStop(STOPFLAG_PLAYDONE);
 				QCDCallbacks->toPlayer.PlayDone(lastfn);
 			}
@@ -824,17 +869,16 @@
         /******************* DECODE TO BUFFER ****************/
 		else
         {
-            if(last_frame)
-            {
-                done=1;
-            }
-            else
-            {
-                if (current_file_mode)
-                    bytesconsumed = PlayThread_memmap();
-                else
-					bytesconsumed = PlayThread_file();
+			if (current_file_mode)
+				bytesconsumed = PlayThread_memmap();
+			else
+				bytesconsumed = PlayThread_file();
 
+			if(last_frame)
+				done = TRUE;
+			else
+			{
+
 				decoded_frames++;
 				br_calc_frames++;
 				br_bytes_consumed += bytesconsumed;
@@ -848,7 +892,7 @@
 					vai.bitrate = (int)((br_bytes_consumed * 8) / (decoded_frames / 43.07));
 					vai.mode = (channels == 2) ? 0 : 3;
 					vai.layer = 0;
-					vai.level = 0;
+					vai.level = file_info.version;
 					QCDCallbacks->Service(opSetAudioInfo, &vai, sizeof(AudioInfo), 0);
 
 					br_calc_frames = 0;
@@ -866,28 +910,36 @@
 					{
 						WriteDataStruct wd;
 
-						decode_pos_ms += (1024*1000)/file_info.sampling_rate;
-						
 						l = frameInfo.samples * sizeof(short);
 
+						decode_pos_ms += (1024*1000)/file_info.sampling_rate;
+						
 						wd.bytelen = l;
 						wd.data = sample_buffer;
 						wd.markerend = 0;
 						wd.markerstart = decode_pos_ms;
-						wd.bps = 16/*file_info.bitrate / frameInfo.samplerate*/;
+						wd.bps = 16;
 						wd.nch = frameInfo.channels;
-						wd.numsamples = frameInfo.samples/*wd.bytelen / (wd.bps / 8) / wd.nch*/;
+						wd.numsamples =l/file_info.channels/(16/8);
 						wd.srate = file_info.sampling_rate;
 						
 						if (!QCDCallbacks->toPlayer.OutputWrite(&wd))
 							done = TRUE;
 					}
-                }
-            }
-        }
+				}
+			}
+		}
         Sleep(10);
     }
-	
+
+	// close up
+	play_thread_handle = INVALID_HANDLE_VALUE;
+
+	faacDecClose(hDecoder);
+	hDecoder = INVALID_HANDLE_VALUE;
+	close_filestream(infile);
+	infile = NULL;
+
 	if(seek_table)
 	{
 		free(seek_table);
@@ -894,7 +946,18 @@
 		seek_table = NULL;
 		seek_table_length = 0;
 	}
-    
+
+	if(buffer)
+	{
+		LocalFree(buffer);
+		buffer = NULL;
+	}
+	if(memmap_buffer)
+	{
+		LocalFree(memmap_buffer);
+		memmap_buffer = NULL;
+	}
+
     return 0;
 }
 
@@ -905,7 +968,7 @@
         memmap_buffer + memmap_index, fileread - memmap_index - 1);
     if (frameInfo.error)
     {
-        show_error(faacDecGetErrorMessage(frameInfo.error));
+//        show_error(faacDecGetErrorMessage(frameInfo.error));
         last_frame = 1;
     }
 
@@ -920,7 +983,8 @@
 {
     int k;
 
-    if (buffercount > 0) {
+    if (buffercount > 0)
+	{
         for (k = 0; k < (768*2 - buffercount); k++)
             buffer[k] = buffer[k + buffercount];
 
@@ -931,7 +995,7 @@
     sample_buffer = (char*)faacDecDecode(hDecoder, &frameInfo, buffer, 768*2);
     if (frameInfo.error)
     {
-        show_error(faacDecGetErrorMessage(frameInfo.error));
+//        show_error(faacDecGetErrorMessage(frameInfo.error));
         last_frame = 1;
     }
 
@@ -942,23 +1006,6 @@
         last_frame = 1;
 
     return frameInfo.bytesconsumed;
-}
-
-
-// proc of "About Dialog"
-INT_PTR CALLBACK AboutProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
-	switch (uMsg)
-	{
-	case WM_COMMAND:
-		switch(LOWORD(wParam))
-		{
-		case IDOK:
-			DestroyWindow(hwndDlg);
-			return TRUE;
-		}
-	}
-	return FALSE;
 }
 
 // tag
--- a/plugins/QCD/QCDFAAD.dsp
+++ b/plugins/QCD/QCDFAAD.dsp
@@ -69,7 +69,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\common\faad" /I "..\..\plugins\winamp" /I "..\..\common\id3lib\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "ID3LIB_COMPILATION" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\common\faad" /I "..\..\plugins\winamp" /I "..\..\common\id3lib\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "ID3LIB_COMPILATION" /FR /YX /FD /GZ /c
 # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x413 /d "_DEBUG"
@@ -80,6 +80,7 @@
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
 # ADD LINK32 ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# SUBTRACT LINK32 /force
 
 !ENDIF 
 
@@ -134,6 +135,14 @@
 # Begin Group "Resource Files"
 
 # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\hand.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\logo.bmp
+# End Source File
 # Begin Source File
 
 SOURCE=.\plugin_dlg.rc
binary files /dev/null b/plugins/QCD/logo.bmp differ
--- a/plugins/QCD/plugin_dlg.rc
+++ b/plugins/QCD/plugin_dlg.rc
@@ -74,19 +74,21 @@
     PUSHBUTTON      "Reset",RESET_BTN,7,112,50,14
 END
 
-IDD_ABOUT DIALOG DISCARDABLE  0, 0, 187, 114
+IDD_ABOUT DIALOG DISCARDABLE  0, 0, 191, 168
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "About FAAD Plug-in"
 FONT 8, "MS Sans Serif"
 BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,68,93,50,14
-    CTEXT           "FAAD Input Plug-in for QCD v 1.0\nLast Modified Feb. 2003",
-                    IDC_STATIC,13,7,161,19
-    CTEXT           "Using: FAAD2 v1.2 beta by M. Bakker && menno",
-                    IDC_STATIC,7,33,173,8
-    LTEXT           "FAAD: http://www.audiocoding.com",IDC_STATIC,7,50,129,8
-    LTEXT           "Author: Shao Hao\nE-Mail: [email protected]",IDC_STATIC,
-                    9,67,140,20
+    DEFPUSHBUTTON   "OK",IDOK,70,147,50,14
+    CTEXT           "",IDC_PLUGINVER,29,73,133,16
+    CTEXT           "",IDC_FAADVER,40,123,111,8
+    LTEXT           "QCD Input Plug-in by",IDC_STATIC,62,97,67,8
+    CONTROL         107,IDC_LOGO,"Static",SS_BITMAP | SS_CENTERIMAGE | 
+                    SS_REALSIZEIMAGE,7,0,177,68
+    LTEXT           "Shao Hao",IDC_MAIL1,79,111,33,8
+    LTEXT           "M. Bakker",IDC_MAIL3,59,134,34,8
+    LTEXT           "menno",IDC_MAIL2,109,134,22,8
+    LTEXT           "&&",IDC_STATIC,97,134,8,8
 END
 
 
@@ -109,13 +111,19 @@
     IDD_ABOUT, DIALOG
     BEGIN
         LEFTMARGIN, 7
-        RIGHTMARGIN, 180
-        TOPMARGIN, 7
-        BOTTOMMARGIN, 107
+        RIGHTMARGIN, 184
+        BOTTOMMARGIN, 161
     END
 END
 #endif    // APSTUDIO_INVOKED
 
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+IDB_LOGO                BITMAP  DISCARDABLE     "logo.bmp"
 #endif    // English (U.S.) resources
 /////////////////////////////////////////////////////////////////////////////
 
--- a/plugins/QCD/resource.h
+++ b/plugins/QCD/resource.h
@@ -2,64 +2,32 @@
 // Microsoft Developer Studio generated include file.
 // Used by plugin_dlg.rc
 //
-#define PLUGIN_DLG                      101
 #define IDD_CONFIG                      101
-#define IDD_INFO                        102
-#define IDD_EDITTEXTFRAME               103
-#define IDD_ADDFRAME                    104
-#define IDD_ADDSTANDARD                 105
 #define IDD_ABOUT                       106
+#define IDB_LOGO                        107
 #define VARBITRATE_CHK                  1004
-#define BUFFERING_SLIDER                1006
 #define THREAD_PRIORITY_SLIDER          1007
-#define IDC_ID3V2TAG                    1020
-#define IDC_CLOSE                       1021
-#define IDC_CANCEL                      1022
-#define IDC_HEADER                      1025
-#define IDC_PROFILE                     1026
-#define IDC_BITRATE                     1027
-#define IDC_SAMPLERATE                  1028
-#define IDC_CHANNELS                    1029
-#define IDC_VERSION                     1030
-#define IDC_ID3LIST                     1032
 #define IDC_STATIC2                     1034
 #define LOCAL_BUFFER_TXT                1035
 #define STREAM_BUFFER_TXT               1036
-#define IDC_CHECK1                      1037
 #define IDC_MEMMAP                      1037
 #define OK_BTN                          1038
 #define CANCEL_BTN                      1039
-#define IDC_EDITTEXTFRAME               1040
-#define IDC_FRAMETYPE                   1040
-#define IDC_TEXTFRAMENAME               1041
-#define IDC_COL0                        1041
-#define IDC_DELFRAME                    1042
-#define IDC_COL1                        1042
-#define IDC_EDITFRAME                   1043
-#define IDC_ADDFRAME                    1044
-#define IDC_TRACK                       1045
-#define IDC_ADDSTFRAMES                 1045
-#define IDC_TITLE                       1046
-#define IDC_FORMAT                      1046
-#define IDC_ARTIST                      1047
 #define RESET_BTN                       1047
-#define IDC_ALBUM                       1048
-#define IDC_YEAR                        1049
-#define IDC_COMMENT                     1050
-#define IDC_COMPOSER                    1051
-#define IDC_ORIGARTIST                  1052
-#define IDC_COPYRIGHT                   1053
-#define IDC_URL                         1054
-#define IDC_ENCBY                       1055
-#define IDC_GENRE                       1056
+#define IDC_LOGO                        1048
+#define IDC_PLUGINVER                   1050
+#define IDC_FAADVER                     1051
+#define IDC_MAIL1                       1052
+#define IDC_MAIL2                       1053
+#define IDC_MAIL3                       1054
 
 // Next default values for new objects
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        107
+#define _APS_NEXT_RESOURCE_VALUE        109
 #define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1048
+#define _APS_NEXT_CONTROL_VALUE         1055
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif