'libs/ardour' - Main body of changes required for building with MSVC
This commit is contained in:
parent
07d94b9b48
commit
490311bc08
@ -29,7 +29,6 @@
|
||||
namespace ARDOUR {
|
||||
|
||||
class Session;
|
||||
class Region;
|
||||
class AudioRegion;
|
||||
class Source;
|
||||
|
||||
|
@ -29,6 +29,8 @@
|
||||
#include "ardour/worker.h"
|
||||
#include "pbd/ringbuffer.h"
|
||||
|
||||
typedef struct LV2_Evbuf_Impl LV2_Evbuf;
|
||||
|
||||
namespace ARDOUR {
|
||||
|
||||
// a callback function for lilv_state_new_from_instance(). friend of LV2Plugin
|
||||
|
@ -32,7 +32,6 @@ namespace ARDOUR
|
||||
{
|
||||
|
||||
class Session;
|
||||
class Region;
|
||||
class MidiRegion;
|
||||
class Source;
|
||||
template<typename T> class MidiRingBuffer;
|
||||
|
@ -41,13 +41,13 @@
|
||||
#include "evoral/types.hpp"
|
||||
|
||||
#include "ardour/ardour.h"
|
||||
#include "ardour/region.h"
|
||||
#include "ardour/session_object.h"
|
||||
#include "ardour/data_type.h"
|
||||
|
||||
namespace ARDOUR {
|
||||
|
||||
class Session;
|
||||
class Region;
|
||||
class Playlist;
|
||||
class Crossfade;
|
||||
|
||||
|
@ -180,7 +180,7 @@ AudioSource::peaks_ready (boost::function<void()> doThisWhenReady, ScopedConnect
|
||||
void
|
||||
AudioSource::touch_peakfile ()
|
||||
{
|
||||
struct stat statbuf;
|
||||
GStatBuf statbuf;
|
||||
|
||||
if (g_stat (peakpath.c_str(), &statbuf) != 0 || statbuf.st_size == 0) {
|
||||
return;
|
||||
@ -216,7 +216,7 @@ AudioSource::rename_peakfile (string newpath)
|
||||
int
|
||||
AudioSource::initialize_peakfile (string audio_path)
|
||||
{
|
||||
struct stat statbuf;
|
||||
GStatBuf statbuf;
|
||||
|
||||
peakpath = peak_path (audio_path);
|
||||
|
||||
|
@ -136,7 +136,7 @@ void
|
||||
AutomationWatch::thread ()
|
||||
{
|
||||
while (_run_thread) {
|
||||
Glib::usleep ((useconds_t) floor (Config->get_automation_interval_msecs() * 1000));
|
||||
Glib::usleep ((gulong) floor (Config->get_automation_interval_msecs() * 1000));
|
||||
timer ();
|
||||
}
|
||||
}
|
||||
|
@ -600,7 +600,7 @@ Diskstream::check_record_status (framepos_t transport_frame, bool can_record)
|
||||
*/
|
||||
|
||||
rolling = _session.transport_speed() != 0.0f;
|
||||
possibly_recording = (rolling << 2) | (record_enabled() << 1) | can_record;
|
||||
possibly_recording = (rolling << 2) | ((int)record_enabled() << 1) | (int)can_record;
|
||||
change = possibly_recording ^ last_possibly_recording;
|
||||
|
||||
if (possibly_recording == last_possibly_recording) {
|
||||
|
@ -185,7 +185,7 @@ ExportFormatBase::nearest_sample_rate (framecnt_t sample_rate)
|
||||
SampleRate best_match = SR_None;
|
||||
|
||||
#define DO_SR_COMPARISON(rate) \
|
||||
diff = std::fabs((rate) - sample_rate); \
|
||||
diff = std::fabs((double)((rate) - sample_rate)); \
|
||||
if(diff < smallest_diff) { \
|
||||
smallest_diff = diff; \
|
||||
best_match = (rate); \
|
||||
|
@ -20,6 +20,10 @@
|
||||
#include "libardour-config.h"
|
||||
#endif
|
||||
|
||||
#ifdef interface
|
||||
#undef interface
|
||||
#endif
|
||||
|
||||
#include <cstdio> // Needed so that libraptor (included in lrdf) won't complain
|
||||
#include <cstdlib>
|
||||
#include <sys/stat.h>
|
||||
@ -44,7 +48,7 @@
|
||||
#include "ardour/audio_unit.h"
|
||||
#endif
|
||||
|
||||
#ifdef __SSE__
|
||||
#if defined(__SSE__) || defined(USE_XMMINTRIN)
|
||||
#include <xmmintrin.h>
|
||||
#endif
|
||||
|
||||
|
@ -584,12 +584,10 @@ Graph::process_one_route (Route* route)
|
||||
bool
|
||||
Graph::in_process_thread () const
|
||||
{
|
||||
#ifndef WIN32
|
||||
for (list<pthread_t>::const_iterator i = _thread_list.begin (); i != _thread_list.end(); ++i) {
|
||||
if (*i == pthread_self()) {
|
||||
if (pthread_equal(*i, pthread_self())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
@ -150,7 +150,7 @@ LTC_Slave::reset()
|
||||
}
|
||||
|
||||
void
|
||||
LTC_Slave::parse_ltc(const jack_nframes_t nframes, const jack_default_audio_sample_t * const in, const framecnt_t posinfo)
|
||||
LTC_Slave::parse_ltc(const jack_nframes_t nframes, const jack_default_audio_sample_t * const in, const ARDOUR::framecnt_t posinfo)
|
||||
{
|
||||
jack_nframes_t i;
|
||||
unsigned char sound[8192];
|
||||
@ -591,7 +591,7 @@ LTC_Slave::approximate_current_delta() const
|
||||
snprintf(delta, sizeof(delta), _("flywheel"));
|
||||
} else {
|
||||
snprintf(delta, sizeof(delta), "\u0394<span foreground=\"green\" face=\"monospace\" >%s%s%" PRIi64 "</span>sm",
|
||||
LEADINGZERO(abs(current_delta)), PLUSMINUS(-current_delta), abs(current_delta));
|
||||
LEADINGZERO(llabs(current_delta)), PLUSMINUS(-current_delta), llabs(current_delta));
|
||||
}
|
||||
return std::string(delta);
|
||||
}
|
||||
|
@ -219,7 +219,7 @@ lv2_evbuf_get(LV2_Evbuf_Iterator iter,
|
||||
*subframes = 0;
|
||||
*type = aev->body.type;
|
||||
*size = aev->body.size;
|
||||
*data = LV2_ATOM_BODY(&aev->body);
|
||||
*data = (uint8_t*)LV2_ATOM_BODY(&aev->body);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -332,7 +332,7 @@ PeakMeter::meter ()
|
||||
} else {
|
||||
// do falloff
|
||||
new_peak = _visible_peak_power[n] - (audio_meter_falloff);
|
||||
_visible_peak_power[n] = std::max (new_peak, -INFINITY);
|
||||
_visible_peak_power[n] = std::max ((double)new_peak, -INFINITY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -251,7 +251,7 @@ MIDIClock_Slave::stop (Parser& /*parser*/, framepos_t /*timestamp*/)
|
||||
}
|
||||
|
||||
void
|
||||
MIDIClock_Slave::position (Parser& /*parser*/, byte* message, size_t size)
|
||||
MIDIClock_Slave::position (Parser& /*parser*/, MIDI::byte* message, size_t size)
|
||||
{
|
||||
// we are note supposed to get position messages while we are running
|
||||
// so lets be robust and ignore those
|
||||
@ -260,8 +260,8 @@ MIDIClock_Slave::position (Parser& /*parser*/, byte* message, size_t size)
|
||||
}
|
||||
|
||||
assert(size == 3);
|
||||
byte lsb = message[1];
|
||||
byte msb = message[2];
|
||||
MIDI::byte lsb = message[1];
|
||||
MIDI::byte msb = message[2];
|
||||
assert((lsb <= 0x7f) && (msb <= 0x7f));
|
||||
|
||||
uint16_t position_in_sixteenth_notes = (uint16_t(msb) << 7) | uint16_t(lsb);
|
||||
|
@ -626,9 +626,9 @@ void
|
||||
MidiTrack::MidiControl::set_value(double val)
|
||||
{
|
||||
bool valid = false;
|
||||
if (std::isinf(val)) {
|
||||
if (isinf(val)) {
|
||||
cerr << "MIDIControl value is infinity" << endl;
|
||||
} else if (std::isnan(val)) {
|
||||
} else if (isnan(val)) {
|
||||
cerr << "MIDIControl value is NaN" << endl;
|
||||
} else if (val < _list->parameter().min()) {
|
||||
cerr << "MIDIControl value is < " << _list->parameter().min() << endl;
|
||||
|
@ -24,6 +24,8 @@
|
||||
#include "ardour/runtime_functions.h"
|
||||
#include <stdint.h>
|
||||
|
||||
using std::min;
|
||||
using std::max;
|
||||
using namespace ARDOUR;
|
||||
|
||||
#if defined (ARCH_X86) && defined (BUILD_SSE_OPTIMIZATIONS)
|
||||
@ -93,22 +95,22 @@ default_compute_peak (const ARDOUR::Sample * buf, pframes_t nsamples, float curr
|
||||
}
|
||||
|
||||
void
|
||||
default_find_peaks (const ARDOUR::Sample * buf, pframes_t nframes, float *min, float *max)
|
||||
default_find_peaks (const ARDOUR::Sample * buf, pframes_t nframes, float *minf, float *maxf)
|
||||
{
|
||||
pframes_t i;
|
||||
float a, b;
|
||||
|
||||
a = *max;
|
||||
b = *min;
|
||||
a = *maxf;
|
||||
b = *minf;
|
||||
|
||||
for (i = 0; i < nframes; i++)
|
||||
{
|
||||
a = fmax (buf[i], a);
|
||||
b = fmin (buf[i], b);
|
||||
a = max (buf[i], a);
|
||||
b = min (buf[i], b);
|
||||
}
|
||||
|
||||
*max = a;
|
||||
*min = b;
|
||||
*maxf = a;
|
||||
*minf = b;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -31,6 +31,8 @@
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/audioengine.h"
|
||||
|
||||
#include <glibmm/timer.h>
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
using namespace std;
|
||||
@ -233,7 +235,7 @@ MTC_Slave::read_current (SafeTime *st) const
|
||||
do {
|
||||
if (tries == 10) {
|
||||
error << _("MTC Slave: atomic read of current time failed, sleeping!") << endmsg;
|
||||
usleep (20);
|
||||
Glib::usleep (20);
|
||||
tries = 0;
|
||||
}
|
||||
*st = current;
|
||||
@ -297,7 +299,7 @@ MTC_Slave::update_mtc_qtr (Parser& /*p*/, int which_qtr, framepos_t now)
|
||||
* when a full TC has been received
|
||||
* OR on locate */
|
||||
void
|
||||
MTC_Slave::update_mtc_time (const byte *msg, bool was_full, framepos_t now)
|
||||
MTC_Slave::update_mtc_time (const MIDI::byte *msg, bool was_full, framepos_t now)
|
||||
{
|
||||
busy_guard1++;
|
||||
|
||||
|
@ -56,7 +56,7 @@ static bool sort_ports_by_name (boost::shared_ptr<Port> a, boost::shared_ptr<Por
|
||||
|
||||
// if some of the names don't have a number as posfix, compare as strings
|
||||
|
||||
if (last_digit_position_a == aname.size() or last_digit_position_b == bname.size()) {
|
||||
if (last_digit_position_a == aname.size() || last_digit_position_b == bname.size()) {
|
||||
return aname < bname;
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,7 @@ int
|
||||
RCConfiguration::load_state ()
|
||||
{
|
||||
std::string rcfile;
|
||||
struct stat statbuf;
|
||||
GStatBuf statbuf;
|
||||
|
||||
/* load system configuration first */
|
||||
|
||||
|
@ -31,7 +31,6 @@
|
||||
|
||||
using namespace std;
|
||||
using namespace ARDOUR;
|
||||
using namespace MIDI;
|
||||
using namespace PBD;
|
||||
using namespace Timecode;
|
||||
|
||||
|
@ -440,7 +440,7 @@ Session::send_full_time_code (framepos_t const t)
|
||||
* earlier already this cycle by send_full_time_code)
|
||||
*/
|
||||
int
|
||||
Session::send_midi_time_code_for_cycle (framepos_t start_frame, framepos_t end_frame, pframes_t nframes)
|
||||
Session::send_midi_time_code_for_cycle (framepos_t start_frame, framepos_t end_frame, ARDOUR::pframes_t nframes)
|
||||
{
|
||||
if (_engine.freewheeling() || !_send_qf_mtc || transmitting_timecode_time.negative || (next_quarter_frame_to_send < 0)) {
|
||||
// cerr << "(MTC) Not sending MTC\n";
|
||||
@ -512,7 +512,7 @@ Session::send_midi_time_code_for_cycle (framepos_t start_frame, framepos_t end_f
|
||||
assert (msg_time < end_frame);
|
||||
|
||||
/* convert from session frames back to JACK frames using the transport speed */
|
||||
pframes_t const out_stamp = (msg_time - start_frame) / _transport_speed;
|
||||
ARDOUR::pframes_t const out_stamp = (msg_time - start_frame) / _transport_speed;
|
||||
assert (out_stamp < nframes);
|
||||
|
||||
if (MIDI::Manager::instance()->mtc_output_port()->midimsg (mtc_msg, 2, out_stamp)) {
|
||||
|
@ -70,7 +70,7 @@ user_route_template_directory ()
|
||||
}
|
||||
|
||||
static bool
|
||||
template_filter (const string &str, void */*arg*/)
|
||||
template_filter (const string &str, void* /*arg*/)
|
||||
{
|
||||
if (!Glib::file_test (str, Glib::FILE_TEST_IS_DIR)) {
|
||||
return false;
|
||||
@ -80,7 +80,7 @@ template_filter (const string &str, void */*arg*/)
|
||||
}
|
||||
|
||||
static bool
|
||||
route_template_filter (const string &str, void */*arg*/)
|
||||
route_template_filter (const string &str, void* /*arg*/)
|
||||
{
|
||||
if (str.find (template_suffix) == str.length() - strlen (template_suffix)) {
|
||||
return true;
|
||||
|
@ -528,8 +528,9 @@ VSTPlugin::connect_and_run (BufferSet& bufs,
|
||||
{
|
||||
Plugin::connect_and_run (bufs, in_map, out_map, nframes, offset);
|
||||
|
||||
float *ins[_plugin->numInputs];
|
||||
float *outs[_plugin->numOutputs];
|
||||
// VC++ doesn't support this C99 extension. Use alloca instead of dynamic array (rather than std::vector which allocs on the heap)
|
||||
float** ins = (float**)alloca(_plugin->numInputs*sizeof(float*));
|
||||
float** outs = (float**)alloca(_plugin->numInputs*sizeof(float*));
|
||||
int32_t i;
|
||||
|
||||
const uint32_t nbufs = bufs.count().n_audio();
|
||||
@ -552,7 +553,7 @@ VSTPlugin::connect_and_run (BufferSet& bufs,
|
||||
}
|
||||
|
||||
/* we already know it can support processReplacing */
|
||||
_plugin->processReplacing (_plugin, ins, outs, nframes);
|
||||
_plugin->processReplacing (_plugin, &ins[0], &outs[0], nframes);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -23,6 +23,8 @@
|
||||
#include "ardour/worker.h"
|
||||
#include "pbd/error.h"
|
||||
|
||||
#include <glibmm/timer.h>
|
||||
|
||||
namespace ARDOUR {
|
||||
|
||||
Worker::Worker(Workee* workee, uint32_t ring_size)
|
||||
@ -128,7 +130,7 @@ Worker::run()
|
||||
continue;
|
||||
}
|
||||
while (!verify_message_completeness(_requests)) {
|
||||
::usleep(2000);
|
||||
Glib::usleep(2000);
|
||||
if (_exit) {
|
||||
return;
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ CreateHardLinkA( LPCSTR lpFileName,
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include <io.h>
|
||||
#include <math.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
@ -222,6 +223,24 @@ ssize_t ret;
|
||||
return (ret);
|
||||
}
|
||||
|
||||
//***************************************************************
|
||||
//
|
||||
// round()
|
||||
//
|
||||
// Emulates round() using floor().
|
||||
//
|
||||
// Returns:
|
||||
//
|
||||
// On Success: The largest integer that is less than or
|
||||
// equal to 'x'.
|
||||
// On Failure: None
|
||||
//
|
||||
PBD_API double PBD_APICALLTYPE
|
||||
round(double x)
|
||||
{
|
||||
return (floor(x));
|
||||
}
|
||||
|
||||
namespace PBD {
|
||||
|
||||
//***************************************************************
|
||||
|
@ -220,6 +220,7 @@ PBD_API int PBD_APICALLTYPE gettimeofday(struct timeval *__restrict tv, __tim
|
||||
PBD_API ssize_t PBD_APICALLTYPE pread(int handle, void *buf, size_t nbytes, off_t offset);
|
||||
PBD_API ssize_t PBD_APICALLTYPE pwrite(int handle, const void *buf, size_t nbytes, off_t offset);
|
||||
PBD_API int PBD_APICALLTYPE poll(struct pollfd *fds, nfds_t nfds, int timeout);
|
||||
PBD_API double PBD_APICALLTYPE round(double x);
|
||||
|
||||
namespace PBD {
|
||||
|
||||
|
@ -24,6 +24,9 @@
|
||||
# include <mach/mach.h>
|
||||
#elif defined(PLATFORM_WINDOWS)
|
||||
# include <windows.h>
|
||||
#ifndef INFINITE
|
||||
#define INFINITE 0xffffffffL
|
||||
#endif
|
||||
#else
|
||||
# include <semaphore.h>
|
||||
# include <errno.h>
|
||||
|
@ -68,6 +68,29 @@
|
||||
return intgr ;
|
||||
}
|
||||
|
||||
__inline long long int
|
||||
llrint (double flt)
|
||||
{ long long int intgr;
|
||||
|
||||
_asm
|
||||
{ fld flt
|
||||
fistp intgr
|
||||
} ;
|
||||
|
||||
return intgr ;
|
||||
}
|
||||
|
||||
__inline long long int
|
||||
llrintf (float flt)
|
||||
{ long long int intgr;
|
||||
|
||||
_asm
|
||||
{ fld flt
|
||||
fistp intgr
|
||||
} ;
|
||||
|
||||
return intgr ;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __FLOAT_CAST_H__
|
||||
|
@ -36,10 +36,10 @@
|
||||
#include <ardourext/float_cast.h>
|
||||
|
||||
// 'std::isnan()' is not available in MSVC. Assume '_isnan(double)'
|
||||
#define isnan(val) (bool)_isnan((double)val)
|
||||
#define isnan(val) _isnan((double)val)
|
||||
|
||||
// 'std::isinf()' is not available in MSVC. Assume '!_finite(double)'
|
||||
#define isinf(val) !((bool)_finite((double)val))
|
||||
#define isinf(val) !_finite((double)val)
|
||||
|
||||
// 'INFINITY' is not defined in MSVC. Assume 'HUGE_VAL'
|
||||
#ifndef INFINITY
|
||||
@ -179,7 +179,9 @@ typedef int register_t;
|
||||
// Fortunately, 'round to nearest' seems to be the default action
|
||||
// under Linux, so let's copy that until we find out otherwise.
|
||||
#define rint(value) round(value)
|
||||
#define round(value) floor((value) + 0.5)
|
||||
#if !defined(PBD_API) || defined(PBD_IS_IN_WIN_STATIC_LIB)
|
||||
extern double round(double x);
|
||||
#endif
|
||||
|
||||
// System V compatibility
|
||||
typedef unsigned short ushort;
|
||||
@ -195,6 +197,15 @@ typedef _mode_t mode_t;
|
||||
#endif /* NO_OLDNAMES */
|
||||
#endif /* _MODE_T_ */
|
||||
|
||||
// int64 abs()
|
||||
inline uint64_t abs(int64_t val)
|
||||
{
|
||||
if (val < 0)
|
||||
return val * (-1);
|
||||
else
|
||||
return val;
|
||||
}
|
||||
|
||||
// fmin() and fmax()
|
||||
#define fmin(a, b) min((double)a, (double)b)
|
||||
#define fmax(a, b) max((double)a, (double)b)
|
||||
|
@ -3,9 +3,11 @@
|
||||
|
||||
#pragma warning( disable : 4996 )
|
||||
|
||||
#ifndef HAVE_LV2
|
||||
#define HAVE_SUIL
|
||||
#define HAVE_LV2
|
||||
#ifndef LV2_SUPPORT
|
||||
#define LV2_SUPPORT 1
|
||||
#define HAVE_SUIL 1
|
||||
#define HAVE_LV2 1
|
||||
//#define HAVE_NEW_LV2 1
|
||||
/* Comment out the above lines to build Mixbus without LV2 support */
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user