diff options
Diffstat (limited to 'Src/Plugins/Input/in_linein')
-rw-r--r-- | Src/Plugins/Input/in_linein/LineIn.cpp | 50 | ||||
-rw-r--r-- | Src/Plugins/Input/in_linein/LineIn.h | 25 | ||||
-rw-r--r-- | Src/Plugins/Input/in_linein/audio.cpp | 113 | ||||
-rw-r--r-- | Src/Plugins/Input/in_linein/audio.h | 11 | ||||
-rw-r--r-- | Src/Plugins/Input/in_linein/in_linein.cpp | 191 | ||||
-rw-r--r-- | Src/Plugins/Input/in_linein/in_linein.rc | 82 | ||||
-rw-r--r-- | Src/Plugins/Input/in_linein/in_linein.sln | 30 | ||||
-rw-r--r-- | Src/Plugins/Input/in_linein/in_linein.vcxproj | 248 | ||||
-rw-r--r-- | Src/Plugins/Input/in_linein/in_linein.vcxproj.filters | 44 | ||||
-rw-r--r-- | Src/Plugins/Input/in_linein/main.h | 7 | ||||
-rw-r--r-- | Src/Plugins/Input/in_linein/resource.h | 22 | ||||
-rw-r--r-- | Src/Plugins/Input/in_linein/version.rc2 | 39 |
12 files changed, 862 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_linein/LineIn.cpp b/Src/Plugins/Input/in_linein/LineIn.cpp new file mode 100644 index 00000000..073761af --- /dev/null +++ b/Src/Plugins/Input/in_linein/LineIn.cpp @@ -0,0 +1,50 @@ +#include "LineIn.h" +#include "main.h" +#include "audio.h" +int LineIn::Play() +{ + paused = false; + posinms = 0; + line.is_seekable = 0; + line.SetInfo(44*4*8, 44, 2, 1); + line.SAVSAInit(0, 44100); + line.VSASetInfo(2, 44100); + { + short dta[576*2] = {0, }; + line.VSAAddPCMData(dta, 2, 16, 0); + line.SAAddPCMData(dta, 2, 16, 0); + } + if (audioInit(1)) + {} + return 0; +} + +void LineIn::Stop() +{ + audioQuit(); +} + +void LineIn::Pause() +{ + posinms = audioGetPos(); + audioPause(1); + paused = true; +} + +void LineIn::Unpause() +{ + audioPause(0); + paused = false; +} + +int LineIn::GetLength() +{ + return -1000; +} + +int LineIn::GetOutputTime() +{ + if (paused) + return posinms; + return audioGetPos(); +} diff --git a/Src/Plugins/Input/in_linein/LineIn.h b/Src/Plugins/Input/in_linein/LineIn.h new file mode 100644 index 00000000..febf7934 --- /dev/null +++ b/Src/Plugins/Input/in_linein/LineIn.h @@ -0,0 +1,25 @@ +#ifndef NULLSOFT_LINEINH +#define NULLSOFT_LINEINH + +class LineIn +{ +public: + LineIn() : posinms(0), paused(false) + {} + int Play(); + void Stop(); + void Pause(); + void Unpause(); + int GetLength(); + int GetOutputTime(); + bool IsPaused() { return paused; } + void SetOutputTime(int time_in_ms) +{} + void SetVolume(int a_v, int a_p) + {} +private: + int posinms; + bool paused; +}; + +#endif
\ No newline at end of file diff --git a/Src/Plugins/Input/in_linein/audio.cpp b/Src/Plugins/Input/in_linein/audio.cpp new file mode 100644 index 00000000..4ab2472c --- /dev/null +++ b/Src/Plugins/Input/in_linein/audio.cpp @@ -0,0 +1,113 @@ +#include <windows.h> +#include "Audio.h" +#include "main.h" +#pragma intrinsic(memcpy, memset) +static int start_clock,paused; +static HWAVEIN hWaveIn; +static unsigned short data_latest[576*2]; +static unsigned short data_buffers[2][576*2]; +static WAVEHDR wave_hdrs[2]; +static HANDLE hThread; +static int done; +static int Thread(int *a); +static int a_v=128, a_p=0; +int initted; + +int audioInit(int sample) +{ + int x; + WAVEFORMATEX wft; + int threadid; + start_clock=GetTickCount(); + paused=0; + if (!sample) return initted=0; + wft.wFormatTag = WAVE_FORMAT_PCM; + wft.nChannels = 2; + wft.nSamplesPerSec = 44100; + wft.nBlockAlign = 2*2; + wft.nAvgBytesPerSec = wft.nSamplesPerSec*wft.nBlockAlign; + wft.wBitsPerSample = 16; + wft.cbSize = 0; + if (waveInOpen(&hWaveIn,WAVE_MAPPER,&wft,0,0,0) != MMSYSERR_NOERROR) + { + return 1; + } + for (x = 0; x < 2; x ++) + { + memset(&wave_hdrs[x],0,sizeof(wave_hdrs[x])); + wave_hdrs[x].lpData = (char *) data_buffers[x]; + wave_hdrs[x].dwBufferLength = 576*2*sizeof(short); + waveInPrepareHeader(hWaveIn,&wave_hdrs[x],sizeof(wave_hdrs[0])); + waveInAddBuffer(hWaveIn,&wave_hdrs[x],sizeof(wave_hdrs[0])); + } + initted=1; + done=0; + waveInStart(hWaveIn); + hThread = CreateThread(NULL,0,(unsigned long (__stdcall *)(void*)) Thread,&done,0,(unsigned long *)&threadid); + //SetThreadPriority(hThread,THREAD_PRIORITY_HIGHEST); + return 0; +} + +void audioPause(int s) +{ + if (s) + { + if (!paused) + { + paused=1; + if (initted) waveInStop(hWaveIn); + start_clock = GetTickCount()-start_clock; + } + } + else + { + if (paused) + { + if (initted) waveInStart(hWaveIn); + start_clock=GetTickCount()-start_clock; + paused=0; + } + } +} + +void audioQuit() +{ + if (!initted) return; + done=1; + WaitForSingleObject(hThread,INFINITE); + waveInStop(hWaveIn); + waveInReset(hWaveIn); + while (waveInClose(hWaveIn) == WAVERR_STILLPLAYING) Sleep(10); + CloseHandle(hThread); +} + +int audioGetPos() +{ + if (paused) return start_clock; + return GetTickCount()-start_clock; +} + + +void audioSetPos(int ms) +{ + start_clock = GetTickCount()-ms; +} + +static int Thread(int *a) +{ + int w; + while (!*a) + { + Sleep(10); + if (wave_hdrs[0].dwFlags & WHDR_DONE) w=0; + else if (wave_hdrs[1].dwFlags & WHDR_DONE) w=1; + else continue; + memcpy(data_latest,wave_hdrs[w].lpData,576*2*sizeof(short)); + wave_hdrs[w].dwFlags=WHDR_PREPARED; + waveInAddBuffer(hWaveIn,&wave_hdrs[w],sizeof(wave_hdrs[0])); +// memset(data_latest,0,576*2*sizeof(short)); + line.VSAAddPCMData(data_latest,2,16,0); + line.SAAddPCMData(data_latest,2,16,0); + } + return 0; +} diff --git a/Src/Plugins/Input/in_linein/audio.h b/Src/Plugins/Input/in_linein/audio.h new file mode 100644 index 00000000..7c7213e6 --- /dev/null +++ b/Src/Plugins/Input/in_linein/audio.h @@ -0,0 +1,11 @@ +#ifndef NULLSOFT_AUDIOH +#define NULLSOFT_AUDIOH + +int audioInit(int); +int audioGetPos(); +void audioSetPos(int ms); +void audioGetWaveform(unsigned short data[576*2]); +void audioQuit(); +void audioPause(int s); + +#endif
\ No newline at end of file diff --git a/Src/Plugins/Input/in_linein/in_linein.cpp b/Src/Plugins/Input/in_linein/in_linein.cpp new file mode 100644 index 00000000..1b2eda2b --- /dev/null +++ b/Src/Plugins/Input/in_linein/in_linein.cpp @@ -0,0 +1,191 @@ +#define PLUGIN_NAME "Nullsoft LineIn Plug-in" +#define PLUGIN_VERSION L"3.16" + +#include "main.h" +#include <windows.h> +#include "LineIn.h" +#include <api/service/waServiceFactory.h> +#include "../Agave/Language/api_language.h" +#include "../winamp/wa_ipc.h" +#include "resource.h" + +// wasabi based services for localisation support +api_language *WASABI_API_LNG = 0; +HINSTANCE WASABI_API_LNG_HINST = 0, WASABI_API_ORIG_HINST = 0; + +int lstrcmpni(const char *a, const char *b, int count) +{ + if (!a || !b) return -1; + + switch (CompareStringA(LOCALE_USER_DEFAULT, NORM_IGNORECASE, a, min(lstrlenA(a),count), b, min(lstrlenA(b),count))) + { + case CSTR_LESS_THAN: return -1; + case CSTR_GREATER_THAN: return 1; + case CSTR_EQUAL: return 0; + } + return -1; +} +LineIn lineIn; + +int DoAboutMessageBox(HWND parent, wchar_t* title, wchar_t* message) +{ + MSGBOXPARAMSW msgbx = {sizeof(MSGBOXPARAMSW),0}; + msgbx.lpszText = message; + msgbx.lpszCaption = title; + msgbx.lpszIcon = MAKEINTRESOURCEW(102); + msgbx.hInstance = GetModuleHandle(0); + msgbx.dwStyle = MB_USERICON; + msgbx.hwndOwner = parent; + return MessageBoxIndirectW(&msgbx); +} + +void about(HWND hwndParent) +{ + wchar_t message[1024] = {0}, text[1024] = {0}; + WASABI_API_LNGSTRINGW_BUF(IDS_NULLSOFT_LINEIN_PLUGIN_OLD,text,1024); + wsprintfW(message, WASABI_API_LNGSTRINGW(IDS_ABOUT_TEXT), + line.description, __DATE__); + DoAboutMessageBox(hwndParent,text,message); +} + +int init() +{ + if (!IsWindow(line.hMainWindow)) + return IN_INIT_FAILURE; + + waServiceFactory *sf = line.service->service_getServiceByGuid(languageApiGUID); + if (sf) WASABI_API_LNG = reinterpret_cast<api_language*>(sf->getInterface()); + + // need to have this initialised before we try to do anything with localisation features + WASABI_API_START_LANG(line.hDllInstance,InLineInLangGUID); + + static wchar_t szDescription[256]; + swprintf(szDescription,256,WASABI_API_LNGSTRINGW(IDS_NULLSOFT_LINEIN_PLUGIN),PLUGIN_VERSION); + line.description = (char*)szDescription; + return IN_INIT_SUCCESS; +} + +void quit() {} + +int play(const char *fn) +{ + line.is_seekable=0; + if (!lstrcmpni(fn, "linein://", 9)) + { + lineIn.Play(); + return 0; + } + return 1; +} + +int isourfile(const char *fn) +{ + if (!lstrcmpni(fn, "linein://", 9)) return 1; + return 0; +} + +void pause() +{ + lineIn.Pause(); +} + +void unpause() +{ + lineIn.Unpause(); +} + +int ispaused() +{ + return lineIn.IsPaused(); +} + +void stop() +{ + lineIn.Stop(); + line.SAVSADeInit(); +} + +int getlength() +{ + return lineIn.GetLength(); +} + +int getoutputtime() +{ + return lineIn.GetOutputTime(); +} +void setoutputtime(int time_in_ms) +{} + +void setvolume(int volume) +{ + line.outMod->SetVolume(volume); +} + +void setpan(int pan) +{ + line.outMod->SetPan(pan); +} + +int infoDlg(const char *fn, HWND hwnd) +{ + return 0; +} + +void getfileinfo(const char *filename, char *title, int *length_in_ms) +{ + if (length_in_ms) + *length_in_ms = -1000; + if (title) + WASABI_API_LNGSTRING_BUF(IDS_LINE_INPUT,title,GETFILEINFO_TITLE_LENGTH); +} + +void eq_set(int on, char data[10], int preamp) +{} + +In_Module line = + { + IN_VER_RET, + "nullsoft(in_line.dll)", + 0, // hMainWindow + 0, // hDllInstance + "", + 0, // is_seekable + //0, // uses output plugins + 1, // uses output plugins + about, + about, + init, + quit, + getfileinfo, + infoDlg, + isourfile, + play, + pause, + unpause, + ispaused, + stop, + getlength, + getoutputtime, + setoutputtime, + setvolume, + setpan, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, // dsp shit + eq_set, + NULL, // setinfo + NULL // out_mod + }; + +BOOL APIENTRY DllMain(HANDLE hMod, DWORD r, void*) +{ + if (r == DLL_PROCESS_ATTACH) + DisableThreadLibraryCalls((HMODULE)hMod); + + return TRUE; +} + +extern "C" __declspec( dllexport ) In_Module * winampGetInModule2() +{ + return &line; +}
\ No newline at end of file diff --git a/Src/Plugins/Input/in_linein/in_linein.rc b/Src/Plugins/Input/in_linein/in_linein.rc new file mode 100644 index 00000000..c9d5b3b1 --- /dev/null +++ b/Src/Plugins/Input/in_linein/in_linein.rc @@ -0,0 +1,82 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// 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 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#include ""version.rc2""\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_NULLSOFT_LINEIN_PLUGIN "Nullsoft LineIn Plug-in v%s" + 65535 "{EA1C197A-D227-474c-A9FD-1C79DE722BDD}" +END + +STRINGTABLE +BEGIN + IDS_NULLSOFT_LINEIN_PLUGIN_OLD "Nullsoft LineIn Plug-in" + IDS_LINE_INPUT "Line Input" + IDS_ABOUT_TEXT "%s\nCopyright © 1997-2023 Winamp SA\n\nBuild date: %hs\n\nHow to use:\n For line input, open 'linein://'\n in the open location box." +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#include "version.rc2" + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Src/Plugins/Input/in_linein/in_linein.sln b/Src/Plugins/Input/in_linein/in_linein.sln new file mode 100644 index 00000000..dd89a609 --- /dev/null +++ b/Src/Plugins/Input/in_linein/in_linein.sln @@ -0,0 +1,30 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29609.76 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "in_linein", "in_linein.vcxproj", "{0B5E2B59-BD34-4675-987E-6752A6F9D77D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0B5E2B59-BD34-4675-987E-6752A6F9D77D}.Debug|Win32.ActiveCfg = Debug|Win32 + {0B5E2B59-BD34-4675-987E-6752A6F9D77D}.Debug|Win32.Build.0 = Debug|Win32 + {0B5E2B59-BD34-4675-987E-6752A6F9D77D}.Debug|x64.ActiveCfg = Debug|x64 + {0B5E2B59-BD34-4675-987E-6752A6F9D77D}.Debug|x64.Build.0 = Debug|x64 + {0B5E2B59-BD34-4675-987E-6752A6F9D77D}.Release|Win32.ActiveCfg = Release|Win32 + {0B5E2B59-BD34-4675-987E-6752A6F9D77D}.Release|Win32.Build.0 = Release|Win32 + {0B5E2B59-BD34-4675-987E-6752A6F9D77D}.Release|x64.ActiveCfg = Release|x64 + {0B5E2B59-BD34-4675-987E-6752A6F9D77D}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {88B3FE0C-E6C6-43C1-9A78-25F6398E17D5} + EndGlobalSection +EndGlobal diff --git a/Src/Plugins/Input/in_linein/in_linein.vcxproj b/Src/Plugins/Input/in_linein/in_linein.vcxproj new file mode 100644 index 00000000..c5df7304 --- /dev/null +++ b/Src/Plugins/Input/in_linein/in_linein.vcxproj @@ -0,0 +1,248 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{0B5E2B59-BD34-4675-987E-6752A6F9D77D}</ProjectGuid> + <RootNamespace>in_linein</RootNamespace> + <WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <LinkIncremental>false</LinkIncremental> + <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir> + <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir> + <IncludePath>$(IncludePath)</IncludePath> + <LibraryPath>$(LibraryPath)</LibraryPath> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <LinkIncremental>false</LinkIncremental> + <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir> + <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <LinkIncremental>false</LinkIncremental> + <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir> + <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir> + <IncludePath>$(IncludePath)</IncludePath> + <LibraryPath>$(LibraryPath)</LibraryPath> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <LinkIncremental>false</LinkIncremental> + <OutDir>$(PlatformShortName)_$(Configuration)\</OutDir> + <IntDir>$(PlatformShortName)_$(Configuration)\</IntDir> + </PropertyGroup> + <PropertyGroup Label="Vcpkg"> + <VcpkgEnabled>false</VcpkgEnabled> + </PropertyGroup> + <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <VcpkgConfiguration>Debug</VcpkgConfiguration> + </PropertyGroup> + <PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <VcpkgConfiguration>Debug</VcpkgConfiguration> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>..\..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;IN_LINEIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>false</MinimalRebuild> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName> + </ClCompile> + <Link> + <AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile> + <GenerateDebugInformation>true</GenerateDebugInformation> + <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile> + <SubSystem>Windows</SubSystem> + <RandomizedBaseAddress>false</RandomizedBaseAddress> + <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary> + <TargetMachine>MachineX86</TargetMachine> + <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers> + <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + <PostBuildEvent> + <Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ +xcopy /Y /D $(IntDir)$(TargetName).pdb ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command> + <Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message> + </PostBuildEvent> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>..\..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;IN_LINEIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>false</MinimalRebuild> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName> + </ClCompile> + <Link> + <AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile> + <GenerateDebugInformation>true</GenerateDebugInformation> + <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile> + <SubSystem>Windows</SubSystem> + <RandomizedBaseAddress>false</RandomizedBaseAddress> + <ImportLibrary>$(IntDir)$(ProjectName).lib</ImportLibrary> + <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers> + <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + <PostBuildEvent> + <Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ +xcopy /Y /D $(IntDir)$(TargetName).pdb ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command> + <Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message> + </PostBuildEvent> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <Optimization>MinSpace</Optimization> + <IntrinsicFunctions>true</IntrinsicFunctions> + <FavorSizeOrSpeed>Size</FavorSizeOrSpeed> + <AdditionalIncludeDirectories>..\..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;IN_LINEIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <StringPooling>true</StringPooling> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> + <BufferSecurityCheck>true</BufferSecurityCheck> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>None</DebugInformationFormat> + <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName> + </ClCompile> + <Link> + <AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile> + <DelayLoadDLLs>winmm.dll;%(DelayLoadDLLs)</DelayLoadDLLs> + <GenerateDebugInformation>false</GenerateDebugInformation> + <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile> + <SubSystem>Windows</SubSystem> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <RandomizedBaseAddress>true</RandomizedBaseAddress> + <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary> + <TargetMachine>MachineX86</TargetMachine> + <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers> + <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + <PostBuildEvent> + <Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command> + <Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message> + </PostBuildEvent> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <Optimization>MinSpace</Optimization> + <IntrinsicFunctions>true</IntrinsicFunctions> + <FavorSizeOrSpeed>Size</FavorSizeOrSpeed> + <AdditionalIncludeDirectories>..\..\..\Wasabi;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;_USRDLL;IN_LINEIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <StringPooling>true</StringPooling> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> + <BufferSecurityCheck>true</BufferSecurityCheck> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>None</DebugInformationFormat> + <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName> + </ClCompile> + <Link> + <AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile> + <DelayLoadDLLs>winmm.dll;%(DelayLoadDLLs)</DelayLoadDLLs> + <GenerateDebugInformation>false</GenerateDebugInformation> + <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile> + <SubSystem>Windows</SubSystem> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <RandomizedBaseAddress>true</RandomizedBaseAddress> + <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary> + <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers> + <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + </Link> + <PostBuildEvent> + <Command>xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\ </Command> + <Message>Post build event: 'xcopy /Y /D $(OutDir)$(TargetName)$(TargetExt) ..\..\..\..\Build\Winamp_$(PlatformShortName)_$(Configuration)\Plugins\'</Message> + </PostBuildEvent> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="audio.cpp" /> + <ClCompile Include="in_linein.cpp" /> + <ClCompile Include="LineIn.cpp" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="audio.h" /> + <ClInclude Include="LineIn.h" /> + <ClInclude Include="main.h" /> + <ClInclude Include="resource.h" /> + </ItemGroup> + <ItemGroup> + <ResourceCompile Include="in_linein.rc" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\Wasabi\Wasabi.vcxproj"> + <Project>{3e0bfa8a-b86a-42e9-a33f-ec294f823f7f}</Project> + </ProjectReference> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/Src/Plugins/Input/in_linein/in_linein.vcxproj.filters b/Src/Plugins/Input/in_linein/in_linein.vcxproj.filters new file mode 100644 index 00000000..04181cd8 --- /dev/null +++ b/Src/Plugins/Input/in_linein/in_linein.vcxproj.filters @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <ClCompile Include="audio.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="in_linein.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="LineIn.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="audio.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="LineIn.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="main.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="resource.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <Filter Include="Header Files"> + <UniqueIdentifier>{0d321d64-ec0a-44a6-a09d-35003a2ea058}</UniqueIdentifier> + </Filter> + <Filter Include="Ressource Files"> + <UniqueIdentifier>{7da33fde-69de-427a-8046-46e6f4846f14}</UniqueIdentifier> + </Filter> + <Filter Include="Source Files"> + <UniqueIdentifier>{012164b1-deee-45fb-a608-b2353dd37d5b}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ResourceCompile Include="in_linein.rc"> + <Filter>Ressource Files</Filter> + </ResourceCompile> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/Src/Plugins/Input/in_linein/main.h b/Src/Plugins/Input/in_linein/main.h new file mode 100644 index 00000000..8e30eeec --- /dev/null +++ b/Src/Plugins/Input/in_linein/main.h @@ -0,0 +1,7 @@ +#ifndef NULLSOFT_MAINH +#define NULLSOFT_MAINH + +#include "../winamp/in2.h" +extern In_Module line; + +#endif
\ No newline at end of file diff --git a/Src/Plugins/Input/in_linein/resource.h b/Src/Plugins/Input/in_linein/resource.h new file mode 100644 index 00000000..c163119a --- /dev/null +++ b/Src/Plugins/Input/in_linein/resource.h @@ -0,0 +1,22 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by in_linein.rc +// +#define IDS_NULLSOFT_LINEIN_PLUGIN_OLD 0 +#define IDS_ABOUT_STR 1 +#define IDS_ABOUT 2 +#define IDS_STRING3 3 +#define IDS_LINE_INPUT 3 +#define IDS_ABOUT_TEXT 4 +#define IDS_NULLSOFT_LINEIN_PLUGIN 65534 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 104 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Src/Plugins/Input/in_linein/version.rc2 b/Src/Plugins/Input/in_linein/version.rc2 new file mode 100644 index 00000000..0626529d --- /dev/null +++ b/Src/Plugins/Input/in_linein/version.rc2 @@ -0,0 +1,39 @@ + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// +#include "../../../Winamp/buildType.h" +VS_VERSION_INFO VERSIONINFO + FILEVERSION 3,16,0,0 + PRODUCTVERSION WINAMP_PRODUCTVER + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Winamp SA" + VALUE "FileDescription", "Winamp Input Plug-in" + VALUE "FileVersion", "3,16,0,0" + VALUE "InternalName", "Nullsoft LineIn Plug-in" + VALUE "LegalCopyright", "Copyright © 1997-2023 Winamp SA" + VALUE "LegalTrademarks", "Nullsoft and Winamp are trademarks of Winamp SA" + VALUE "OriginalFilename", "in_linein.dll" + VALUE "ProductName", "Winamp" + VALUE "ProductVersion", STR_WINAMP_PRODUCTVER + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END |