Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
90
Src/Plugins/Input/in_mod-openmpt/ExtendedInfo.cpp
Normal file
90
Src/Plugins/Input/in_mod-openmpt/ExtendedInfo.cpp
Normal file
|
@ -0,0 +1,90 @@
|
|||
#include <bfc/platform/types.h>
|
||||
#include <windows.h>
|
||||
#include <strsafe.h>
|
||||
#include "api__in_mod.h"
|
||||
#include "resource.h"
|
||||
#include <libopenmpt/libopenmpt.h>
|
||||
#include "../nu/AutoChar.h"
|
||||
#include "../nu/ns_wc.h"
|
||||
#include <libopenmpt/libopenmpt_stream_callbacks_file.h>
|
||||
|
||||
static wchar_t *open_filename = 0;
|
||||
static openmpt_module *info_mod = 0;
|
||||
openmpt_module *OpenMod(const wchar_t *filename);
|
||||
|
||||
extern "C" __declspec(dllexport)
|
||||
int winampGetExtendedFileInfoW(const wchar_t *fn, const char *data, wchar_t *dest, size_t destlen)
|
||||
{
|
||||
if (!_stricmp(data, "type"))
|
||||
{
|
||||
dest[0]='0';
|
||||
dest[1]=0;
|
||||
return 1;
|
||||
}
|
||||
else if (!_stricmp(data, "family"))
|
||||
{
|
||||
size_t len;
|
||||
const wchar_t *p;
|
||||
if (!fn || !fn[0]) {
|
||||
return 0;
|
||||
}
|
||||
len = wcslen(fn);
|
||||
if (len < 4 || L'.' != fn[len - 4]) {
|
||||
return 0;
|
||||
}
|
||||
p = &fn[len - 3];
|
||||
const char *tracker = openmpt_get_tracker_name(AutoChar(p));
|
||||
if (tracker && *tracker) {
|
||||
*dest = 0;
|
||||
MultiByteToWideCharSZ(CP_UTF8, 0, tracker, -1, dest, (int)destlen);
|
||||
openmpt_free_string(tracker);
|
||||
return 1;
|
||||
}
|
||||
openmpt_free_string(tracker);
|
||||
return 0;
|
||||
} else {
|
||||
if (!open_filename || _wcsicmp(open_filename,fn)) {
|
||||
free(open_filename);
|
||||
open_filename = _wcsdup(fn);
|
||||
openmpt_module_destroy(info_mod);
|
||||
info_mod = 0;
|
||||
info_mod = OpenMod(fn);
|
||||
}
|
||||
int retval = 0;
|
||||
|
||||
if (!_stricmp(data, "length")) {
|
||||
double seconds = openmpt_module_get_duration_seconds(info_mod);
|
||||
StringCchPrintf(dest, destlen, L"%.0f", seconds*1000.0);
|
||||
retval = 1;
|
||||
} else if (!_stricmp(data, "artist")) {
|
||||
const char *value = openmpt_module_get_metadata(info_mod, "artist");
|
||||
MultiByteToWideCharSZ(CP_UTF8, 0, value, -1, dest, (int)destlen);
|
||||
openmpt_free_string(value);
|
||||
retval = 1;
|
||||
} else if (!_stricmp(data, "tool")) {
|
||||
const char *value = openmpt_module_get_metadata(info_mod, "tracker");
|
||||
MultiByteToWideCharSZ(CP_UTF8, 0, value, -1, dest, (int)destlen);
|
||||
openmpt_free_string(value);
|
||||
retval = 1;
|
||||
} else if (!_stricmp(data, "title")) {
|
||||
const char *value = openmpt_module_get_metadata(info_mod, "title");
|
||||
MultiByteToWideCharSZ(CP_UTF8, 0, value, -1, dest, (int)destlen);
|
||||
openmpt_free_string(value);
|
||||
retval = 1;
|
||||
} else if (!_stricmp(data, "year")) {
|
||||
const char *value = openmpt_module_get_metadata(info_mod, "date");
|
||||
MultiByteToWideCharSZ(CP_UTF8, 0, value, -1, dest, (int)destlen);
|
||||
openmpt_free_string(value);
|
||||
retval = 1;
|
||||
} else if (!_stricmp(data, "comment")) {
|
||||
const char *value = openmpt_module_get_metadata(info_mod, "message");
|
||||
MultiByteToWideCharSZ(CP_UTF8, 0, value, -1, dest, (int)destlen);
|
||||
openmpt_free_string(value);
|
||||
retval = 1;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
139
Src/Plugins/Input/in_mod-openmpt/ExtendedRead.cpp
Normal file
139
Src/Plugins/Input/in_mod-openmpt/ExtendedRead.cpp
Normal file
|
@ -0,0 +1,139 @@
|
|||
#include "api__in_mod.h"
|
||||
#include <libopenmpt/libopenmpt.h>
|
||||
#include "../nsutil/pcm.h"
|
||||
|
||||
static const size_t kModBufferSize = 512;
|
||||
static const unsigned int kModSampleRate = 44100; // TODO(benski) configurable!
|
||||
|
||||
openmpt_module *OpenMod(const wchar_t *filename);
|
||||
|
||||
class PlayParams
|
||||
{
|
||||
public:
|
||||
PlayParams();
|
||||
~PlayParams();
|
||||
openmpt_module *mod;
|
||||
float *buffer;
|
||||
int bps;
|
||||
int channels;
|
||||
int sample_rate;
|
||||
bool use_float;
|
||||
size_t (*openmpt_read)(openmpt_module * mod, int32_t samplerate, size_t count, float *interleaved_stereo);
|
||||
};
|
||||
|
||||
PlayParams::PlayParams()
|
||||
{
|
||||
mod = 0;
|
||||
buffer = 0;
|
||||
}
|
||||
|
||||
PlayParams::~PlayParams()
|
||||
{
|
||||
openmpt_module_destroy(mod);
|
||||
free(buffer);
|
||||
|
||||
}
|
||||
|
||||
static PlayParams *ExtendedOpen(const wchar_t *fn, int *size, int *bps, int *nch, int *srate, bool use_float)
|
||||
{
|
||||
float *float_buffer = 0;
|
||||
size_t (*openmpt_read)(openmpt_module * mod, int32_t samplerate, size_t count, float *interleaved_stereo)=openmpt_module_read_interleaved_float_stereo;
|
||||
|
||||
openmpt_module *mod = OpenMod(fn);
|
||||
if (!mod) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int requested_channels = *nch;
|
||||
int requested_bits = *bps;
|
||||
int requested_srate = *srate;
|
||||
|
||||
if (!requested_channels) {
|
||||
requested_channels=2;
|
||||
}
|
||||
|
||||
if (!requested_bits) {
|
||||
if (use_float) {
|
||||
requested_bits=32;
|
||||
} else {
|
||||
requested_bits=16;
|
||||
}
|
||||
}
|
||||
|
||||
if (!requested_srate) {
|
||||
requested_srate = kModSampleRate;
|
||||
}
|
||||
|
||||
if (requested_channels == 1) {
|
||||
openmpt_read = openmpt_module_read_float_mono;
|
||||
} else if (requested_channels < 4) {
|
||||
requested_channels = 2;
|
||||
openmpt_read = openmpt_module_read_interleaved_float_stereo;
|
||||
} else if (requested_channels) {
|
||||
requested_channels = 4;
|
||||
openmpt_read = openmpt_module_read_interleaved_float_quad;
|
||||
}
|
||||
|
||||
if (!use_float) {
|
||||
float_buffer = (float *)malloc(sizeof(float) * kModBufferSize * requested_channels);
|
||||
if (!float_buffer) {
|
||||
openmpt_module_destroy(mod);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
PlayParams *play_params = new PlayParams;
|
||||
if (!play_params) {
|
||||
openmpt_module_destroy(mod);
|
||||
free(float_buffer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
play_params->mod = mod;
|
||||
play_params->buffer = float_buffer;
|
||||
play_params->bps = requested_bits;
|
||||
play_params->channels = requested_channels;
|
||||
play_params->use_float = use_float;
|
||||
play_params->openmpt_read = openmpt_read;
|
||||
play_params->sample_rate = requested_srate;
|
||||
|
||||
*nch = requested_channels;
|
||||
*srate = requested_srate;
|
||||
*bps = requested_bits;
|
||||
|
||||
*size = (int)(openmpt_module_get_duration_seconds(mod) * (double)requested_bits * (double)requested_srate * (double)requested_channels / 8.0);
|
||||
|
||||
return play_params;
|
||||
}
|
||||
extern "C" __declspec(dllexport) intptr_t winampGetExtendedRead_openW_float(const wchar_t *fn, int *size, int *bps, int *nch, int *srate)
|
||||
{
|
||||
return (intptr_t)ExtendedOpen(fn, size, bps, nch, srate, true);
|
||||
}
|
||||
|
||||
extern "C" __declspec(dllexport) intptr_t winampGetExtendedRead_openW(const wchar_t *fn, int *size, int *bps, int *nch, int *srate)
|
||||
{
|
||||
return (intptr_t)ExtendedOpen(fn, size, bps, nch, srate, false);
|
||||
}
|
||||
|
||||
extern "C" __declspec(dllexport) size_t winampGetExtendedRead_getData(intptr_t handle, char *dest, size_t len, int *killswitch)
|
||||
{
|
||||
PlayParams *play_params = (PlayParams *)handle;
|
||||
size_t requested_samples = len / (play_params->channels * play_params->bps/8);
|
||||
|
||||
if (play_params->use_float) {
|
||||
return play_params->openmpt_read(play_params->mod, play_params->sample_rate, requested_samples, (float *)dest) * sizeof(float) * play_params->channels;
|
||||
} else {
|
||||
if (requested_samples > kModBufferSize) {
|
||||
requested_samples = kModBufferSize;
|
||||
}
|
||||
size_t count = play_params->openmpt_read(play_params->mod, play_params->sample_rate, requested_samples, play_params->buffer);
|
||||
nsutil_pcm_FloatToInt_Interleaved(dest, play_params->buffer, play_params->bps, play_params->channels*count);
|
||||
return count * play_params->bps * play_params->channels / 8;
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" __declspec(dllexport) void winampGetExtendedRead_close(intptr_t handle)
|
||||
{
|
||||
PlayParams *play_params = (PlayParams *)handle;
|
||||
delete play_params;
|
||||
}
|
44
Src/Plugins/Input/in_mod-openmpt/MODPlayer.h
Normal file
44
Src/Plugins/Input/in_mod-openmpt/MODPlayer.h
Normal file
|
@ -0,0 +1,44 @@
|
|||
#pragma once
|
||||
#include <bfc/platform/types.h>
|
||||
#include <libopenmpt/libopenmpt.h>
|
||||
#include "../nu/AudioOutput.h"
|
||||
|
||||
class MODPlayer
|
||||
{
|
||||
public:
|
||||
MODPlayer(const wchar_t *_filename);
|
||||
~MODPlayer();
|
||||
DWORD CALLBACK ThreadFunction();
|
||||
|
||||
void Kill();
|
||||
void Seek(int seek_pos);
|
||||
int GetOutputTime() const;
|
||||
private:
|
||||
enum
|
||||
{
|
||||
// values that you can return from OnXXXX()
|
||||
MOD_CONTINUE = 0, // continue processing
|
||||
MOD_ABORT = 1, // abort parsing gracefully (maybe 'stop' was pressed)
|
||||
MOD_STOP = 2, // stop parsing completely - usually returned when mkv version is too new or codecs not supported
|
||||
|
||||
// values returned from errors within the Step() function itself
|
||||
MOD_EOF = 3, // end of file
|
||||
MOD_ERROR = 4, // parsing error
|
||||
};
|
||||
|
||||
HANDLE killswitch, seek_event;
|
||||
wchar_t *filename;
|
||||
volatile int m_needseek;
|
||||
|
||||
/* AudioOutput implementation */
|
||||
class MODWait
|
||||
{
|
||||
public:
|
||||
void Wait_SetEvents(HANDLE killswitch, HANDLE seek_event);
|
||||
protected:
|
||||
int WaitOrAbort(int time_in_ms);
|
||||
private:
|
||||
HANDLE handles[2];
|
||||
};
|
||||
nu::AudioOutput<MODWait> audio_output;
|
||||
};
|
166
Src/Plugins/Input/in_mod-openmpt/MODThread.cpp
Normal file
166
Src/Plugins/Input/in_mod-openmpt/MODThread.cpp
Normal file
|
@ -0,0 +1,166 @@
|
|||
#include "api__in_mod.h"
|
||||
#include "../Winamp/wa_ipc.h"
|
||||
#include "MODPlayer.h"
|
||||
#include <libopenmpt/libopenmpt_stream_callbacks_file.h>
|
||||
#include <nx/nxuri.h>
|
||||
#include <nx/nxstring.h>
|
||||
#include <nx/nxfile.h>
|
||||
#include "../nsutil/pcm.h"
|
||||
|
||||
openmpt_module *OpenMod(const wchar_t *filename);
|
||||
|
||||
extern int g_duration;
|
||||
extern In_Module plugin;
|
||||
// {B6CB4A7C-A8D0-4c55-8E60-9F7A7A23DA0F}
|
||||
static const GUID playbackConfigGroupGUID =
|
||||
{
|
||||
0xb6cb4a7c, 0xa8d0, 0x4c55, { 0x8e, 0x60, 0x9f, 0x7a, 0x7a, 0x23, 0xda, 0xf }
|
||||
};
|
||||
|
||||
static const size_t kModBufferSize = 512;
|
||||
static const unsigned int kModSampleRate = 44100; // TODO(benski) configurable!
|
||||
|
||||
void MODPlayer::MODWait::Wait_SetEvents(HANDLE killswitch, HANDLE seek_event)
|
||||
{
|
||||
handles[0]=killswitch;
|
||||
handles[1]=seek_event;
|
||||
}
|
||||
|
||||
int MODPlayer::MODWait::WaitOrAbort(int time_in_ms)
|
||||
{
|
||||
switch(WaitForMultipleObjects(2, handles, FALSE, time_in_ms))
|
||||
{
|
||||
case WAIT_TIMEOUT: // all good, wait successful
|
||||
return 0;
|
||||
case WAIT_OBJECT_0: // killswitch
|
||||
return MODPlayer::MOD_STOP;
|
||||
case WAIT_OBJECT_0+1: // seek event
|
||||
return MODPlayer::MOD_ABORT;
|
||||
default: // some OS error?
|
||||
return MODPlayer::MOD_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
MODPlayer::MODPlayer(const wchar_t *_filename) : audio_output(&plugin)
|
||||
{
|
||||
filename = _wcsdup(_filename);
|
||||
m_needseek = -1;
|
||||
|
||||
killswitch = CreateEvent(NULL, TRUE, FALSE, NULL);
|
||||
seek_event = CreateEvent(NULL, TRUE, FALSE, NULL);
|
||||
|
||||
audio_output.Wait_SetEvents(killswitch, seek_event);
|
||||
}
|
||||
|
||||
MODPlayer::~MODPlayer()
|
||||
{
|
||||
CloseHandle(killswitch);
|
||||
CloseHandle(seek_event);
|
||||
free(filename);
|
||||
}
|
||||
|
||||
void MODPlayer::Kill()
|
||||
{
|
||||
SetEvent(killswitch);
|
||||
}
|
||||
|
||||
void MODPlayer::Seek(int seek_pos)
|
||||
{
|
||||
m_needseek = seek_pos;
|
||||
SetEvent(seek_event);
|
||||
}
|
||||
|
||||
int MODPlayer::GetOutputTime() const
|
||||
{
|
||||
if (m_needseek != -1)
|
||||
return m_needseek;
|
||||
else
|
||||
return plugin.outMod->GetOutputTime();
|
||||
}
|
||||
|
||||
DWORD CALLBACK MODThread(LPVOID param)
|
||||
{
|
||||
MODPlayer *player = (MODPlayer *)param;
|
||||
DWORD ret = player->ThreadFunction();
|
||||
return ret;
|
||||
}
|
||||
|
||||
DWORD CALLBACK MODPlayer::ThreadFunction()
|
||||
{
|
||||
float *float_buffer = 0;
|
||||
void *int_buffer = 0;
|
||||
|
||||
HANDLE handles[] = {killswitch, seek_event};
|
||||
size_t count = 0;
|
||||
size_t (*openmpt_read)(openmpt_module * mod, int32_t samplerate, size_t count, float *interleaved_stereo)=openmpt_module_read_interleaved_float_stereo;
|
||||
|
||||
int channels = 2;
|
||||
bool force_mono = AGAVE_API_CONFIG->GetBool(playbackConfigGroupGUID, L"mono", false);
|
||||
bool surround = AGAVE_API_CONFIG->GetBool(playbackConfigGroupGUID, L"surround", true);
|
||||
int bits = (int)AGAVE_API_CONFIG->GetUnsigned(playbackConfigGroupGUID, L"bits", 16);
|
||||
if (force_mono) {
|
||||
channels = 1;
|
||||
openmpt_read = openmpt_module_read_float_mono;
|
||||
} else if (surround) {
|
||||
channels = 4;
|
||||
openmpt_read = openmpt_module_read_interleaved_float_quad;
|
||||
}
|
||||
|
||||
// ===== tell audio output helper object about the output plugin =====
|
||||
audio_output.Init(plugin.outMod);
|
||||
|
||||
openmpt_module * mod = OpenMod(filename);
|
||||
if (!mod) {
|
||||
goto btfo;
|
||||
}
|
||||
openmpt_module_ctl_set(mod, "seek.sync_sample", "1");
|
||||
g_duration = (int)(openmpt_module_get_duration_seconds(mod) * 1000);
|
||||
audio_output.Open(0, channels, kModSampleRate, bits);
|
||||
|
||||
float_buffer = (float *)malloc(sizeof(float) * kModBufferSize * channels);
|
||||
int_buffer = malloc(kModBufferSize * channels * bits/8);
|
||||
|
||||
while (WaitForMultipleObjects(2, handles, FALSE, 0) != WAIT_OBJECT_0) {
|
||||
count = openmpt_read(mod, kModSampleRate, kModBufferSize, float_buffer);
|
||||
if (count == 0) {
|
||||
break;
|
||||
}
|
||||
nsutil_pcm_FloatToInt_Interleaved(int_buffer, float_buffer, bits, channels*count);
|
||||
int ret = audio_output.Write((char *)int_buffer, channels*count*bits/8);
|
||||
|
||||
if (ret == MOD_STOP) {
|
||||
break;
|
||||
} else if (ret == MOD_ABORT) {
|
||||
ResetEvent(seek_event);
|
||||
openmpt_module_set_position_seconds(mod, m_needseek/1000.0);
|
||||
audio_output.Flush(m_needseek);
|
||||
m_needseek = -1;
|
||||
} else if (ret != MOD_CONTINUE) {
|
||||
ret = ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (WaitForSingleObject(killswitch, 0) != WAIT_OBJECT_0) {
|
||||
audio_output.Write(0,0);
|
||||
audio_output.WaitWhilePlaying();
|
||||
|
||||
if (WaitForSingleObject(killswitch, 0) != WAIT_OBJECT_0) {
|
||||
PostMessage(plugin.hMainWindow, WM_WA_MPEG_EOF, 0, 0);
|
||||
}
|
||||
}
|
||||
audio_output.Close();
|
||||
openmpt_module_destroy(mod);
|
||||
free(float_buffer);
|
||||
free(int_buffer);
|
||||
return 0;
|
||||
|
||||
btfo: // bail the fuck out
|
||||
if (WaitForSingleObject(killswitch, 0) != WAIT_OBJECT_0) {
|
||||
PostMessage(plugin.hMainWindow, WM_WA_MPEG_EOF, 0, 0);
|
||||
}
|
||||
audio_output.Close();
|
||||
openmpt_module_destroy(mod);
|
||||
free(float_buffer);
|
||||
free(int_buffer);
|
||||
return 1;
|
||||
}
|
8
Src/Plugins/Input/in_mod-openmpt/api__in_mod.h
Normal file
8
Src/Plugins/Input/in_mod-openmpt/api__in_mod.h
Normal file
|
@ -0,0 +1,8 @@
|
|||
#pragma once
|
||||
|
||||
#include "../Agave/Config/api_config.h"
|
||||
|
||||
#include "api/application/api_application.h"
|
||||
#define WASABI_API_APP applicationApi
|
||||
|
||||
#include "../Agave/Language/api_language.h"
|
81
Src/Plugins/Input/in_mod-openmpt/in_mod-openmpt.rc
Normal file
81
Src/Plugins/Input/in_mod-openmpt/in_mod-openmpt.rc
Normal file
|
@ -0,0 +1,81 @@
|
|||
// 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_MOD "Nullsoft Module Decoder v%s"
|
||||
65535 "{B5691276-95DB-4b5c-BA73-B904A38EFFBF}"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_NULLSOFT_MOD_OLD "Nullsoft Module Decoder"
|
||||
IDS_ABOUT_TEXT "%s\nWritten by Ben Allison\n© 2015-2023 Ben Allison\nBuild date: %s\n\nUses libopenmpt v%S\n\n%S"
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#include "version.rc2"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
182
Src/Plugins/Input/in_mod-openmpt/in_mod-openmpt.sln
Normal file
182
Src/Plugins/Input/in_mod-openmpt/in_mod-openmpt.sln
Normal file
|
@ -0,0 +1,182 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29709.97
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "in_mod-openmpt", "in_mod-openmpt.vcxproj", "{C4CF3B23-75B1-410D-83B9-0C74C02BE13F}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{57C90706-B25D-4ACA-9B33-95CDB2427C27} = {57C90706-B25D-4ACA-9B33-95CDB2427C27}
|
||||
{DABE6307-F8DD-416D-9DAC-673E2DECB73F} = {DABE6307-F8DD-416D-9DAC-673E2DECB73F}
|
||||
{1654FB18-FDE6-406F-9D84-BA12BFBD67B2} = {1654FB18-FDE6-406F-9D84-BA12BFBD67B2}
|
||||
{D8D5E11C-F959-49EF-B741-B3F6DE52DED8} = {D8D5E11C-F959-49EF-B741-B3F6DE52DED8}
|
||||
{F1397660-35F6-4734-837E-88DCE80E4837} = {F1397660-35F6-4734-837E-88DCE80E4837}
|
||||
{F1F5CD60-0D5B-4CEA-9EEB-2F87FF9AA915} = {F1F5CD60-0D5B-4CEA-9EEB-2F87FF9AA915}
|
||||
{189B867F-FF4B-45A1-B741-A97492EE69AF} = {189B867F-FF4B-45A1-B741-A97492EE69AF}
|
||||
{627CF18A-C8CA-451E-AFD0-8679CADFDA6B} = {627CF18A-C8CA-451E-AFD0-8679CADFDA6B}
|
||||
{E105A0A2-7391-47C5-86AC-718003524C3D} = {E105A0A2-7391-47C5-86AC-718003524C3D}
|
||||
{B544DCB7-16E5-41BC-B51B-7EAD8CFDFA05} = {B544DCB7-16E5-41BC-B51B-7EAD8CFDFA05}
|
||||
{7ADFAFB9-0A83-4D35-9891-FB24FDF30B53} = {7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}
|
||||
{0F9730E4-45DA-4BD2-A50A-403A4BC9751A} = {0F9730E4-45DA-4BD2-A50A-403A4BC9751A}
|
||||
{9C5101EF-3E20-4558-809B-277FDD50E878} = {9C5101EF-3E20-4558-809B-277FDD50E878}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nsutil", "..\nsutil\nsutil.vcxproj", "{DABE6307-F8DD-416D-9DAC-673E2DECB73F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nx", "..\replicant\nx\nx.vcxproj", "{57C90706-B25D-4ACA-9B33-95CDB2427C27}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0F9730E4-45DA-4BD2-A50A-403A4BC9751A} = {0F9730E4-45DA-4BD2-A50A-403A4BC9751A}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nu", "..\replicant\nu\nu.vcxproj", "{F1F5CD60-0D5B-4CEA-9EEB-2F87FF9AA915}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jnetlib", "..\replicant\jnetlib\jnetlib.vcxproj", "{E105A0A2-7391-47C5-86AC-718003524C3D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{0F9730E4-45DA-4BD2-A50A-403A4BC9751A} = {0F9730E4-45DA-4BD2-A50A-403A4BC9751A}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "..\replicant\zlib\zlib.vcxproj", "{0F9730E4-45DA-4BD2-A50A-403A4BC9751A}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libopenmpt", "..\libopenmpt\libopenmpt.vcxproj", "{9C5101EF-3E20-4558-809B-277FDD50E878}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libopenmpt_modplug", "..\libopenmpt\libopenmpt_modplug.vcxproj", "{F1397660-35F6-4734-837E-88DCE80E4837}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openmpt-mpg123", "..\libopenmpt\openmpt-mpg123.vcxproj", "{7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openmpt-ogg", "..\libopenmpt\openmpt-ogg.vcxproj", "{D8D5E11C-F959-49EF-B741-B3F6DE52DED8}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openmpt-portaudio", "..\libopenmpt\openmpt-portaudio.vcxproj", "{189B867F-FF4B-45A1-B741-A97492EE69AF}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openmpt-portaudiocpp", "..\libopenmpt\openmpt-portaudiocpp.vcxproj", "{627CF18A-C8CA-451E-AFD0-8679CADFDA6B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openmpt-vorbis", "..\libopenmpt\openmpt-vorbis.vcxproj", "{B544DCB7-16E5-41BC-B51B-7EAD8CFDFA05}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openmpt-zlib", "..\libopenmpt\openmpt-zlib.vcxproj", "{1654FB18-FDE6-406F-9D84-BA12BFBD67B2}"
|
||||
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
|
||||
{C4CF3B23-75B1-410D-83B9-0C74C02BE13F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C4CF3B23-75B1-410D-83B9-0C74C02BE13F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C4CF3B23-75B1-410D-83B9-0C74C02BE13F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C4CF3B23-75B1-410D-83B9-0C74C02BE13F}.Debug|x64.Build.0 = Debug|x64
|
||||
{C4CF3B23-75B1-410D-83B9-0C74C02BE13F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C4CF3B23-75B1-410D-83B9-0C74C02BE13F}.Release|Win32.Build.0 = Release|Win32
|
||||
{C4CF3B23-75B1-410D-83B9-0C74C02BE13F}.Release|x64.ActiveCfg = Release|x64
|
||||
{C4CF3B23-75B1-410D-83B9-0C74C02BE13F}.Release|x64.Build.0 = Release|x64
|
||||
{DABE6307-F8DD-416D-9DAC-673E2DECB73F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{DABE6307-F8DD-416D-9DAC-673E2DECB73F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{DABE6307-F8DD-416D-9DAC-673E2DECB73F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{DABE6307-F8DD-416D-9DAC-673E2DECB73F}.Debug|x64.Build.0 = Debug|x64
|
||||
{DABE6307-F8DD-416D-9DAC-673E2DECB73F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{DABE6307-F8DD-416D-9DAC-673E2DECB73F}.Release|Win32.Build.0 = Release|Win32
|
||||
{DABE6307-F8DD-416D-9DAC-673E2DECB73F}.Release|x64.ActiveCfg = Release|x64
|
||||
{DABE6307-F8DD-416D-9DAC-673E2DECB73F}.Release|x64.Build.0 = Release|x64
|
||||
{57C90706-B25D-4ACA-9B33-95CDB2427C27}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{57C90706-B25D-4ACA-9B33-95CDB2427C27}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{57C90706-B25D-4ACA-9B33-95CDB2427C27}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{57C90706-B25D-4ACA-9B33-95CDB2427C27}.Debug|x64.Build.0 = Debug|x64
|
||||
{57C90706-B25D-4ACA-9B33-95CDB2427C27}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{57C90706-B25D-4ACA-9B33-95CDB2427C27}.Release|Win32.Build.0 = Release|Win32
|
||||
{57C90706-B25D-4ACA-9B33-95CDB2427C27}.Release|x64.ActiveCfg = Release|x64
|
||||
{57C90706-B25D-4ACA-9B33-95CDB2427C27}.Release|x64.Build.0 = Release|x64
|
||||
{F1F5CD60-0D5B-4CEA-9EEB-2F87FF9AA915}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F1F5CD60-0D5B-4CEA-9EEB-2F87FF9AA915}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F1F5CD60-0D5B-4CEA-9EEB-2F87FF9AA915}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F1F5CD60-0D5B-4CEA-9EEB-2F87FF9AA915}.Debug|x64.Build.0 = Debug|x64
|
||||
{F1F5CD60-0D5B-4CEA-9EEB-2F87FF9AA915}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F1F5CD60-0D5B-4CEA-9EEB-2F87FF9AA915}.Release|Win32.Build.0 = Release|Win32
|
||||
{F1F5CD60-0D5B-4CEA-9EEB-2F87FF9AA915}.Release|x64.ActiveCfg = Release|x64
|
||||
{F1F5CD60-0D5B-4CEA-9EEB-2F87FF9AA915}.Release|x64.Build.0 = Release|x64
|
||||
{E105A0A2-7391-47C5-86AC-718003524C3D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{E105A0A2-7391-47C5-86AC-718003524C3D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{E105A0A2-7391-47C5-86AC-718003524C3D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E105A0A2-7391-47C5-86AC-718003524C3D}.Debug|x64.Build.0 = Debug|x64
|
||||
{E105A0A2-7391-47C5-86AC-718003524C3D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{E105A0A2-7391-47C5-86AC-718003524C3D}.Release|Win32.Build.0 = Release|Win32
|
||||
{E105A0A2-7391-47C5-86AC-718003524C3D}.Release|x64.ActiveCfg = Release|x64
|
||||
{E105A0A2-7391-47C5-86AC-718003524C3D}.Release|x64.Build.0 = Release|x64
|
||||
{0F9730E4-45DA-4BD2-A50A-403A4BC9751A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0F9730E4-45DA-4BD2-A50A-403A4BC9751A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0F9730E4-45DA-4BD2-A50A-403A4BC9751A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0F9730E4-45DA-4BD2-A50A-403A4BC9751A}.Debug|x64.Build.0 = Debug|x64
|
||||
{0F9730E4-45DA-4BD2-A50A-403A4BC9751A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0F9730E4-45DA-4BD2-A50A-403A4BC9751A}.Release|Win32.Build.0 = Release|Win32
|
||||
{0F9730E4-45DA-4BD2-A50A-403A4BC9751A}.Release|x64.ActiveCfg = Release|x64
|
||||
{0F9730E4-45DA-4BD2-A50A-403A4BC9751A}.Release|x64.Build.0 = Release|x64
|
||||
{9C5101EF-3E20-4558-809B-277FDD50E878}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{9C5101EF-3E20-4558-809B-277FDD50E878}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{9C5101EF-3E20-4558-809B-277FDD50E878}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{9C5101EF-3E20-4558-809B-277FDD50E878}.Debug|x64.Build.0 = Debug|x64
|
||||
{9C5101EF-3E20-4558-809B-277FDD50E878}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{9C5101EF-3E20-4558-809B-277FDD50E878}.Release|Win32.Build.0 = Release|Win32
|
||||
{9C5101EF-3E20-4558-809B-277FDD50E878}.Release|x64.ActiveCfg = Release|x64
|
||||
{9C5101EF-3E20-4558-809B-277FDD50E878}.Release|x64.Build.0 = Release|x64
|
||||
{F1397660-35F6-4734-837E-88DCE80E4837}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{F1397660-35F6-4734-837E-88DCE80E4837}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{F1397660-35F6-4734-837E-88DCE80E4837}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{F1397660-35F6-4734-837E-88DCE80E4837}.Debug|x64.Build.0 = Debug|x64
|
||||
{F1397660-35F6-4734-837E-88DCE80E4837}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{F1397660-35F6-4734-837E-88DCE80E4837}.Release|Win32.Build.0 = Release|Win32
|
||||
{F1397660-35F6-4734-837E-88DCE80E4837}.Release|x64.ActiveCfg = Release|x64
|
||||
{F1397660-35F6-4734-837E-88DCE80E4837}.Release|x64.Build.0 = Release|x64
|
||||
{7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Debug|x64.Build.0 = Debug|x64
|
||||
{7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|Win32.Build.0 = Release|Win32
|
||||
{7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|x64.ActiveCfg = Release|x64
|
||||
{7ADFAFB9-0A83-4D35-9891-FB24FDF30B53}.Release|x64.Build.0 = Release|x64
|
||||
{D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Debug|x64.Build.0 = Debug|x64
|
||||
{D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|Win32.Build.0 = Release|Win32
|
||||
{D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|x64.ActiveCfg = Release|x64
|
||||
{D8D5E11C-F959-49EF-B741-B3F6DE52DED8}.Release|x64.Build.0 = Release|x64
|
||||
{189B867F-FF4B-45A1-B741-A97492EE69AF}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{189B867F-FF4B-45A1-B741-A97492EE69AF}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{189B867F-FF4B-45A1-B741-A97492EE69AF}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{189B867F-FF4B-45A1-B741-A97492EE69AF}.Debug|x64.Build.0 = Debug|x64
|
||||
{189B867F-FF4B-45A1-B741-A97492EE69AF}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{189B867F-FF4B-45A1-B741-A97492EE69AF}.Release|Win32.Build.0 = Release|Win32
|
||||
{189B867F-FF4B-45A1-B741-A97492EE69AF}.Release|x64.ActiveCfg = Release|x64
|
||||
{189B867F-FF4B-45A1-B741-A97492EE69AF}.Release|x64.Build.0 = Release|x64
|
||||
{627CF18A-C8CA-451E-AFD0-8679CADFDA6B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{627CF18A-C8CA-451E-AFD0-8679CADFDA6B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{627CF18A-C8CA-451E-AFD0-8679CADFDA6B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{627CF18A-C8CA-451E-AFD0-8679CADFDA6B}.Debug|x64.Build.0 = Debug|x64
|
||||
{627CF18A-C8CA-451E-AFD0-8679CADFDA6B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{627CF18A-C8CA-451E-AFD0-8679CADFDA6B}.Release|Win32.Build.0 = Release|Win32
|
||||
{627CF18A-C8CA-451E-AFD0-8679CADFDA6B}.Release|x64.ActiveCfg = Release|x64
|
||||
{627CF18A-C8CA-451E-AFD0-8679CADFDA6B}.Release|x64.Build.0 = Release|x64
|
||||
{B544DCB7-16E5-41BC-B51B-7EAD8CFDFA05}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B544DCB7-16E5-41BC-B51B-7EAD8CFDFA05}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{B544DCB7-16E5-41BC-B51B-7EAD8CFDFA05}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{B544DCB7-16E5-41BC-B51B-7EAD8CFDFA05}.Debug|x64.Build.0 = Debug|x64
|
||||
{B544DCB7-16E5-41BC-B51B-7EAD8CFDFA05}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B544DCB7-16E5-41BC-B51B-7EAD8CFDFA05}.Release|Win32.Build.0 = Release|Win32
|
||||
{B544DCB7-16E5-41BC-B51B-7EAD8CFDFA05}.Release|x64.ActiveCfg = Release|x64
|
||||
{B544DCB7-16E5-41BC-B51B-7EAD8CFDFA05}.Release|x64.Build.0 = Release|x64
|
||||
{1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Debug|x64.Build.0 = Debug|x64
|
||||
{1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Release|Win32.Build.0 = Release|Win32
|
||||
{1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Release|x64.ActiveCfg = Release|x64
|
||||
{1654FB18-FDE6-406F-9D84-BA12BFBD67B2}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {B33DB141-83E8-409F-A02B-22328B6EAD6E}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
271
Src/Plugins/Input/in_mod-openmpt/in_mod-openmpt.vcxproj
Normal file
271
Src/Plugins/Input/in_mod-openmpt/in_mod-openmpt.vcxproj
Normal file
|
@ -0,0 +1,271 @@
|
|||
<?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>{C4CF3B23-75B1-410D-83B9-0C74C02BE13F}</ProjectGuid>
|
||||
<RootNamespace>in_modopenmpt</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<TargetName>in_mod</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<TargetName>in_mod</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<TargetName>in_mod</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<TargetName>in_mod</TargetName>
|
||||
</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">
|
||||
<VcpkgEnableManifest>false</VcpkgEnableManifest>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<VcpkgInstalledDir>
|
||||
</VcpkgInstalledDir>
|
||||
<VcpkgUseStatic>false</VcpkgUseStatic>
|
||||
<VcpkgConfiguration>Debug</VcpkgConfiguration>
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<VcpkgInstalledDir>
|
||||
</VcpkgInstalledDir>
|
||||
<VcpkgUseStatic>false</VcpkgUseStatic>
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<VcpkgInstalledDir>
|
||||
</VcpkgInstalledDir>
|
||||
<VcpkgUseStatic>false</VcpkgUseStatic>
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
<VcpkgConfiguration>Debug</VcpkgConfiguration>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Vcpkg" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<VcpkgInstalledDir>
|
||||
</VcpkgInstalledDir>
|
||||
<VcpkgUseStatic>false</VcpkgUseStatic>
|
||||
<VcpkgTriplet>x86-windows-static-md</VcpkgTriplet>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\..\..\replicant;..\..\..\Wasabi;..\..\..\external_dependencies\openmpt-trunk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;IN_MODOPENMPT_EXPORTS;UNICODE_INPUT_PLUGIN;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>nsutil.lib;nx.lib;libopenmpt.lib;openmpt-vorbis.lib;openmpt-ogg.lib;openmpt-mpg123.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<AdditionalLibraryDirectories>..\..\..\external_dependencies\openmpt-trunk\build\lib\$(PlatformShortName)_$(Configuration);..\..\..\replicant\nx\$(PlatformShortName)_$(Configuration);..\..\..\nsutil\$(PlatformShortName)_$(Configuration);%(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>..\..\..\replicant;..\..\..\Wasabi;..\..\..\external_dependencies\openmpt-trunk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;_USRDLL;IN_MODOPENMPT_EXPORTS;UNICODE_INPUT_PLUGIN;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>nsutil.lib;nx.lib;libopenmpt.lib;openmpt-vorbis.lib;openmpt-ogg.lib;openmpt-mpg123.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<AdditionalLibraryDirectories>..\..\..\external_dependencies\openmpt-trunk\build\lib\$(PlatformShortName)_$(Configuration);..\..\..\replicant\nx\$(PlatformShortName)_$(Configuration);..\..\..\nsutil\$(PlatformShortName)_$(Configuration);%(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>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>..\..\..\replicant;..\..\..\Wasabi;..\..\..\external_dependencies\openmpt-trunk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;IN_MODOPENMPT_EXPORTS;WIN32_LEAN_AND_MEAN;UNICODE_INPUT_PLUGIN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>nsutil.lib;nx.lib;libopenmpt.lib;openmpt-vorbis.lib;openmpt-ogg.lib;openmpt-mpg123.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalLibraryDirectories>..\..\..\external_dependencies\openmpt-trunk\build\lib\$(PlatformShortName)_$(Configuration);..\..\..\replicant\nx\$(PlatformShortName)_$(Configuration);..\..\..\nsutil\$(PlatformShortName)_$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
</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>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>..\..\..\replicant;..\..\..\Wasabi;..\..\..\external_dependencies\openmpt-trunk;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;_USRDLL;IN_MODOPENMPT_EXPORTS;WIN32_LEAN_AND_MEAN;UNICODE_INPUT_PLUGIN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>None</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4244;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>nsutil.lib;nx.lib;libopenmpt.lib;openmpt-vorbis.lib;openmpt-ogg.lib;openmpt-mpg123.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
|
||||
<AdditionalLibraryDirectories>..\..\..\external_dependencies\openmpt-trunk\build\lib\$(PlatformShortName)_$(Configuration);..\..\..\replicant\nx\$(PlatformShortName)_$(Configuration);..\..\..\nsutil\$(PlatformShortName)_$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
</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="..\..\..\nu\SpillBuffer.cpp" />
|
||||
<ClCompile Include="ExtendedInfo.cpp" />
|
||||
<ClCompile Include="ExtendedRead.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="MODThread.cpp" />
|
||||
<ClCompile Include="nxfile-callbacks.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\nu\SpillBuffer.h" />
|
||||
<ClInclude Include="api__in_mod.h" />
|
||||
<ClInclude Include="MODPlayer.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="in_mod-openmpt.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>
|
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<ClCompile Include="nxfile-callbacks.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MODThread.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ExtendedRead.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ExtendedInfo.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\nu\SpillBuffer.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="api__in_mod.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MODPlayer.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\nu\SpillBuffer.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{cc05d482-8e29-4ae1-abbf-739eacb1be71}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Ressource Files">
|
||||
<UniqueIdentifier>{908a3b0b-d02c-47ab-a57c-3c2777135350}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{b548883b-d979-442d-b28f-b5e52a90d483}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="in_mod-openmpt.rc">
|
||||
<Filter>Ressource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
258
Src/Plugins/Input/in_mod-openmpt/main.cpp
Normal file
258
Src/Plugins/Input/in_mod-openmpt/main.cpp
Normal file
|
@ -0,0 +1,258 @@
|
|||
#include "../Winamp/IN2.h"
|
||||
#include "api__in_mod.h"
|
||||
#include "../nu/ServiceBuilder.h"
|
||||
#include "resource.h"
|
||||
#include <strsafe.h>
|
||||
#include "MODPlayer.h"
|
||||
#include "../nu/AutoWide.h"
|
||||
#include <libopenmpt/libopenmpt.h>
|
||||
|
||||
static MODPlayer *player;
|
||||
DWORD CALLBACK MODThread(LPVOID param);
|
||||
extern In_Module plugin;
|
||||
|
||||
HINSTANCE WASABI_API_LNG_HINST = 0, WASABI_API_ORIG_HINST = 0;
|
||||
int g_duration=0;
|
||||
int paused = 0;
|
||||
static HANDLE play_thread = 0;
|
||||
|
||||
static const wchar_t *MOD_PLUGIN_VERSION = L"3.05";
|
||||
|
||||
// {B6CB4A7C-A8D0-4c55-8E60-9F7A7A23DA0F}
|
||||
static const GUID playbackConfigGroupGUID =
|
||||
{
|
||||
0xb6cb4a7c, 0xa8d0, 0x4c55, { 0x8e, 0x60, 0x9f, 0x7a, 0x7a, 0x23, 0xda, 0xf }
|
||||
};
|
||||
|
||||
static wchar_t plugin_name[256];
|
||||
|
||||
/* Wasabi services */
|
||||
api_application *WASABI_API_APP=0;
|
||||
api_config *AGAVE_API_CONFIG=0;
|
||||
api_language *WASABI_API_LNG = 0;
|
||||
|
||||
static int Init()
|
||||
{
|
||||
if (!IsWindow(plugin.hMainWindow)) {
|
||||
return IN_INIT_FAILURE;
|
||||
}
|
||||
|
||||
ServiceBuild(plugin.service, AGAVE_API_CONFIG, AgaveConfigGUID);
|
||||
ServiceBuild(plugin.service, WASABI_API_APP, applicationApiServiceGuid);
|
||||
ServiceBuild(plugin.service, WASABI_API_LNG, languageApiGUID);
|
||||
|
||||
// need to have this initialised before we try to do anything with localisation features
|
||||
WASABI_API_START_LANG(plugin.hDllInstance, InModMPTLangGUID);
|
||||
StringCbPrintfW(plugin_name,sizeof(plugin_name),WASABI_API_LNGSTRINGW(IDS_NULLSOFT_MOD), MOD_PLUGIN_VERSION);
|
||||
plugin.description = (char *)plugin_name;
|
||||
|
||||
|
||||
static char fileExtensionsString[2048] = "";
|
||||
char* end = fileExtensionsString;
|
||||
size_t remaining=sizeof(fileExtensionsString);
|
||||
const char *extensions = openmpt_get_supported_extensions();
|
||||
char *next_token;
|
||||
for (const char *extension = strtok_s((char *)extensions, ";", &next_token); extension; extension = strtok_s(NULL, ";", &next_token)) {
|
||||
StringCbCopyExA(end, remaining, extension, &end, &remaining, 0);
|
||||
const char *tracker = openmpt_get_tracker_name(extension);
|
||||
StringCbCopyExA(end+1, remaining-1, tracker, &end, &remaining, 0);
|
||||
openmpt_free_string(tracker);
|
||||
end++; remaining--;
|
||||
|
||||
}
|
||||
plugin.FileExtensions = fileExtensionsString;
|
||||
*end = 0;
|
||||
|
||||
openmpt_free_string(extensions);
|
||||
return IN_INIT_SUCCESS;
|
||||
}
|
||||
|
||||
static void Quit()
|
||||
{
|
||||
ServiceRelease(plugin.service, AGAVE_API_CONFIG, AgaveConfigGUID);
|
||||
ServiceRelease(plugin.service, WASABI_API_APP, applicationApiServiceGuid);
|
||||
ServiceRelease(plugin.service, WASABI_API_LNG, languageApiGUID);
|
||||
}
|
||||
|
||||
static int InfoBox(const wchar_t *file, HWND hwndParent)
|
||||
{
|
||||
return INFOBOX_UNCHANGED;
|
||||
}
|
||||
|
||||
static int IsOurFile(const wchar_t *file)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void GetFileInfo(const wchar_t *file, wchar_t *title, int *length_in_ms)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int Play(const wchar_t *file)
|
||||
{
|
||||
g_duration=-1000;
|
||||
player = new MODPlayer(file);
|
||||
play_thread = CreateThread(0, 0, MODThread, player, 0, 0);
|
||||
SetThreadPriority(play_thread, (int)AGAVE_API_CONFIG->GetInt(playbackConfigGroupGUID, L"priority", THREAD_PRIORITY_HIGHEST));
|
||||
return 0; // success
|
||||
}
|
||||
|
||||
static void Pause()
|
||||
{
|
||||
paused = 1;
|
||||
plugin.outMod->Pause(1);
|
||||
}
|
||||
|
||||
static void UnPause()
|
||||
{
|
||||
paused = 0;
|
||||
plugin.outMod->Pause(0);
|
||||
}
|
||||
|
||||
static int IsPaused()
|
||||
{
|
||||
return paused;
|
||||
}
|
||||
|
||||
static void Stop()
|
||||
{
|
||||
if (player) {
|
||||
player->Kill();
|
||||
if (play_thread) {
|
||||
WaitForSingleObject(play_thread, INFINITE);
|
||||
}
|
||||
play_thread = 0;
|
||||
delete player;
|
||||
player=0;
|
||||
}
|
||||
}
|
||||
|
||||
static int GetLength()
|
||||
{
|
||||
return g_duration;
|
||||
}
|
||||
|
||||
static int GetOutputTime()
|
||||
{
|
||||
if (plugin.outMod && player) {
|
||||
return player->GetOutputTime();
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void SetOutputTime(int time_in_ms)
|
||||
{
|
||||
if (player) {
|
||||
player->Seek(time_in_ms);
|
||||
}
|
||||
}
|
||||
|
||||
static void SetVolume(int _volume)
|
||||
{
|
||||
plugin.outMod->SetVolume(_volume);
|
||||
}
|
||||
|
||||
static void SetPan(int _pan)
|
||||
{
|
||||
plugin.outMod->SetPan(_pan);
|
||||
}
|
||||
|
||||
static void EQSet(int on, char data[10], int preamp)
|
||||
{
|
||||
}
|
||||
|
||||
static int DoAboutMessageBox(HWND parent, wchar_t* title, wchar_t* message)
|
||||
{
|
||||
MSGBOXPARAMS msgbx = {sizeof(MSGBOXPARAMS),0};
|
||||
msgbx.lpszText = message;
|
||||
msgbx.lpszCaption = title;
|
||||
msgbx.lpszIcon = MAKEINTRESOURCE(102);
|
||||
msgbx.hInstance = GetModuleHandle(0);
|
||||
msgbx.dwStyle = MB_USERICON;
|
||||
msgbx.hwndOwner = parent;
|
||||
return MessageBoxIndirect(&msgbx);
|
||||
}
|
||||
|
||||
static void About(HWND hwndParent)
|
||||
{
|
||||
wchar_t message[1024], text[1024];
|
||||
char license_trim[1024];
|
||||
WASABI_API_LNGSTRINGW_BUF(IDS_NULLSOFT_MOD_OLD,text,1024);
|
||||
const char *library_version = openmpt_get_string("library_version");
|
||||
const char *license = openmpt_get_string("license");
|
||||
|
||||
// trim the license string
|
||||
StringCbCopyA(license_trim, sizeof(license_trim), license);
|
||||
char * trim = license_trim;
|
||||
for (int i=0;i<4;i++) {
|
||||
trim = strchr(trim, '\n');
|
||||
if (trim) {
|
||||
trim++;
|
||||
}
|
||||
}
|
||||
*trim=0;
|
||||
|
||||
StringCchPrintfW(message, 1024,
|
||||
WASABI_API_LNGSTRINGW(IDS_ABOUT_TEXT),
|
||||
plugin.description,
|
||||
TEXT(__DATE__),
|
||||
library_version,
|
||||
license_trim
|
||||
);
|
||||
|
||||
|
||||
DoAboutMessageBox(hwndParent,text,message);
|
||||
}
|
||||
|
||||
|
||||
extern In_Module plugin =
|
||||
{
|
||||
IN_VER_RET, // defined in IN2.H
|
||||
"nullsoft(in_mod.dll)",
|
||||
0, // hMainWindow (filled in by winamp)
|
||||
0, // hDllInstance (filled in by winamp)
|
||||
"S3M\0Scream Tracker\0", // this is a double-null limited list. "EXT\0Description\0EXT\0Description\0" etc.
|
||||
1, // is_seekable
|
||||
1, // uses output plug-in system
|
||||
About, // TODO(benski) config
|
||||
About,
|
||||
Init,
|
||||
Quit,
|
||||
GetFileInfo,
|
||||
InfoBox,
|
||||
IsOurFile,
|
||||
Play,
|
||||
Pause,
|
||||
UnPause,
|
||||
IsPaused,
|
||||
Stop,
|
||||
|
||||
GetLength,
|
||||
GetOutputTime,
|
||||
SetOutputTime,
|
||||
|
||||
SetVolume,
|
||||
SetPan,
|
||||
|
||||
0,0,0,0,0,0,0,0,0, // visualization calls filled in by winamp
|
||||
|
||||
0,0, // dsp calls filled in by winamp
|
||||
|
||||
EQSet,
|
||||
|
||||
NULL, // setinfo call filled in by winamp
|
||||
|
||||
0, // out_mod filled in by winamp
|
||||
};
|
||||
|
||||
// exported symbol. Returns output module.
|
||||
extern "C"
|
||||
{
|
||||
__declspec(dllexport) In_Module * winampGetInModule2()
|
||||
{
|
||||
return &plugin;
|
||||
}
|
||||
}
|
87
Src/Plugins/Input/in_mod-openmpt/nxfile-callbacks.cpp
Normal file
87
Src/Plugins/Input/in_mod-openmpt/nxfile-callbacks.cpp
Normal file
|
@ -0,0 +1,87 @@
|
|||
#include <nx/nxfile.h>
|
||||
#include <libopenmpt/libopenmpt.h>
|
||||
#include <assert.h>
|
||||
|
||||
static size_t openmpt_nxfile_read(void *stream, void *dst, size_t bytes)
|
||||
{
|
||||
nx_file_t f = (nx_file_t)stream;
|
||||
size_t bytes_read;
|
||||
ns_error_t err = NXFileRead(f, dst, bytes, &bytes_read);
|
||||
if (err != NErr_Success) {
|
||||
return 0;
|
||||
}
|
||||
return bytes_read;
|
||||
}
|
||||
|
||||
static int openmpt_nxfile_seek(void *stream, int64_t offset, int whence)
|
||||
{
|
||||
nx_file_t f = (nx_file_t)stream;
|
||||
uint64_t position;
|
||||
if (whence == OPENMPT_STREAM_SEEK_SET) {
|
||||
position = offset;
|
||||
} else if (whence == OPENMPT_STREAM_SEEK_CUR) {
|
||||
ns_error_t err = NXFileTell(f, &position);
|
||||
if (err != NErr_Success) {
|
||||
return -1;
|
||||
}
|
||||
position += offset;
|
||||
} else if (whence == OPENMPT_STREAM_SEEK_END) {
|
||||
assert(0);
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
ns_error_t err = NXFileSeek(f, position);
|
||||
if (err = NErr_Success) {
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
static int64_t openmpt_nxfile_tell(void *stream)
|
||||
{
|
||||
nx_file_t f = (nx_file_t)stream;
|
||||
uint64_t position;
|
||||
if (NXFileTell(f, &position) == NErr_Success) {
|
||||
return (int64_t)position;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
openmpt_stream_callbacks openmpt_stream_get_nxfile_callbacks(void)
|
||||
{
|
||||
openmpt_stream_callbacks retval;
|
||||
memset( &retval, 0, sizeof( openmpt_stream_callbacks ) );
|
||||
retval.read = openmpt_nxfile_read;
|
||||
retval.seek = openmpt_nxfile_seek;
|
||||
retval.tell = openmpt_nxfile_tell;
|
||||
return retval;
|
||||
}
|
||||
|
||||
openmpt_module *OpenMod(const wchar_t *filename)
|
||||
{
|
||||
openmpt_module * mod = 0;
|
||||
|
||||
nx_string_t nx_filename=0;
|
||||
nx_uri_t nx_uri=0;
|
||||
NXStringCreateWithUTF16(&nx_filename, filename);
|
||||
NXURICreateWithNXString(&nx_uri, nx_filename);
|
||||
NXStringRelease(nx_filename);
|
||||
|
||||
nx_file_t f=0;
|
||||
ns_error_t nserr;
|
||||
|
||||
nserr = NXFileOpenZip(&f, nx_uri, NULL);
|
||||
if (nserr != NErr_Success) {
|
||||
nserr = NXFileOpenFile(&f, nx_uri, nx_file_FILE_read_binary);
|
||||
}
|
||||
NXURIRelease(nx_uri);
|
||||
if (nserr != NErr_Success) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mod = openmpt_module_create(openmpt_stream_get_nxfile_callbacks(), f, NULL, NULL, NULL);
|
||||
NXFileRelease(f);
|
||||
return mod;
|
||||
}
|
18
Src/Plugins/Input/in_mod-openmpt/resource.h
Normal file
18
Src/Plugins/Input/in_mod-openmpt/resource.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by in_mod-openmpt.rc
|
||||
//
|
||||
#define IDS_NULLSOFT_MOD_OLD 0
|
||||
#define IDS_ABOUT_TEXT 2
|
||||
#define IDS_NULLSOFT_MOD 65534
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 3
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
39
Src/Plugins/Input/in_mod-openmpt/version.rc2
Normal file
39
Src/Plugins/Input/in_mod-openmpt/version.rc2
Normal file
|
@ -0,0 +1,39 @@
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
#include "../../../Winamp/buildType.h"
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 3,05,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,05,0,0"
|
||||
VALUE "InternalName", "Nullsoft Module Decoder"
|
||||
VALUE "LegalCopyright", "Copyright © 2015-2023 Ben Allison, Winamp SA"
|
||||
VALUE "LegalTrademarks", "Nullsoft and Winamp are trademarks of Winamp SA"
|
||||
VALUE "OriginalFilename", "in_mod.dll"
|
||||
VALUE "ProductName", "Winamp"
|
||||
VALUE "ProductVersion", STR_WINAMP_PRODUCTVER
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
Loading…
Add table
Add a link
Reference in a new issue