csync_vio_method_t *vio_module_init(const char *method_name, const char *args, csync_auth_callback cb, void *userdata) { DEBUG_DUMMY(("csync_dummy - method_name: %s\n", method_name)); DEBUG_DUMMY(("csync_dummy - args: %s\n", args)); (void) method_name; (void) args; (void) cb; (void) userdata; mh = (void *) method_name; fs.mtime = 42; return &dummy_method; }
virtual unsigned framePos() const { // Not much choice but to do this: const unsigned int facs = framesAtCycleStart(); const unsigned int fscs = framesSinceCycleStart(); DEBUG_DUMMY(stderr, "DummyAudioDevice::framePos framesAtCycleStart:%u framesSinceCycleStart:%u\n", facs, fscs); return facs + fscs; }
virtual unsigned framesSinceCycleStart() const { const uint64_t ct = systemTimeUS(); DEBUG_DUMMY(stderr, "DummyAudioDevice::framesSinceCycleStart systemTimeUS:%lu timeUSAtCycleStart:%lu\n", ct, _timeUSAtCycleStart[_criticalVariablesIdx]); // Do not round up here since time resolution is higher than (audio) frame resolution. unsigned f = muse_multiply_64_div_64_to_64(ct - _timeUSAtCycleStart[_criticalVariablesIdx], MusEGlobal::sampleRate, 1000000UL); // Safety due to inaccuracies. It cannot be after the segment, right? if(f >= MusEGlobal::segmentSize) f = MusEGlobal::segmentSize - 1; return f; }