13
0
Commit Graph

9026 Commits

Author SHA1 Message Date
d76fe212b7 Move MMCSS related utility functions into PBD namespace
In preparation for moving to libpbd
2015-09-16 11:22:16 +10:00
f58e3abdbe Perform QPC timer check on windows in PBD::init when PBD_TEST_TIMERS env is defined 2015-09-16 11:22:16 +10:00
f4cb4e479d Rename PBD::QPC::get_timer_valid to check_timer_valid and perform timer test
I'm not sure if this test is going to be effective as I don't have hardware to
test on at the moment. As noted in the documentation, Windows XP should be the
only OS where QPC uses a timer source that is non-monotonic(multi-core with
non-syncronized TSC).
2015-09-16 11:22:16 +10:00
cd05d46c00 Add windows specific test for pbd/windows_timer_utils.h API 2015-09-16 11:22:16 +10:00
a88b2da6a9 Fix PBD::MMTIMER::reset_resolution and add some documentation
timeEndPeriod must be called with the same timer resolution value used in
timeBeginPeriod. When the process exits the timer resolution is restored anyway
so this is not very important.
2015-09-16 11:22:16 +10:00
62f75b8b16 Remove glib timer test from pbd testsuite
There are no test assertions and it takes a long time to execute the test so
just leave it disabled for now.
2015-09-16 11:22:16 +10:00
3f5c01e4eb Move Windows timer utility functions from PA backend into libpbd 2015-09-16 11:22:16 +10:00
4ffe8ffc0f Put Windows timer functions into PBD namespace in preparation for moving them to libpbd
Add functions for get/set the Multimedia timer resolution, although we are
really only interested in the minimum, this will facilitate testing

Put timer utility functions inside nested namespaces as they are platform
specific
2015-09-16 11:22:16 +10:00
4330db1aa7 Update timestamp types in CycleTimer class to be signed 2015-09-16 11:22:16 +10:00
08e18a0cb4 Move implementation for DSPLoadCalculator back into header
It can be inline now that it is much simpler
2015-09-16 11:22:16 +10:00
f5e7aa11f9 Use same algorithm as CA and ALSA backends in DSPLoadCalculation
Stop using an averaging of the values until we can establish whether it is
really necessary.
2015-09-16 11:22:16 +10:00
cf88bbc472 Add check for invalid timer values from the DummyBackend
Needed for systems where the Windows QPC timer returns erratic values
2015-09-16 11:22:16 +10:00
b2a7393553 Change types in DSPLoadCalculator to signed integer after change in utils::get_microsecond 2015-09-16 11:22:16 +10:00
a974659504 Check return value of windows timer functions and handle errors
Change return type of utils::get_microseconds to signed int and return -1 when
failing to read timer
2015-09-16 11:22:16 +10:00
50a6487e77 move speed quietning code into Delivery, where it belongs.
Note: I find the -12dB reduction too much of a reduction.
2015-09-15 17:01:12 -04:00
601a34521c add an Amp to Delivery, remove it from Send, make use of this in various ::run() methods
Delivery::_amp now will handle monitor-related delicks assuming the Session::config.get_use_monitor_fades() is
true.
2015-09-15 16:35:37 -04:00
fc74894def another note-off fix.
For nearly coincident note-on the sequence does not matter,
but note-off must be sent before a new note-on in strict
order (could be the same note).
2015-09-15 17:50:27 +02:00
4b20e719a8 prepare displaying peakfile queue-len 2015-09-15 17:50:27 +02:00
bed85f98d1 logic rearrangement to avoid unnecessary call to Route::monitoring_state() in instrument/generator tracks 2015-09-15 09:08:38 -04:00
392836a7d2 NO-OP: comment clarification 2015-09-15 09:06:16 -04:00
952443a4b7 NO-OP: parenthesis and brace style 2015-09-15 09:05:08 -04:00
2b1a30ca96 only apply transport declicking if requested to do so (default is to do so) 2015-09-15 09:00:50 -04:00
563d9dfb65 add 2 new session properties related to implicit fades/gain ramps 2015-09-15 09:00:50 -04:00
d92fceabb0 use an explicit black list of route names that require numbering.
This replaces an attempt to check port names which fails for a number of reasons.
2015-09-15 09:00:50 -04:00
04e7cfabbe prepare peak-file cleanup/recreate. 2015-09-15 14:44:05 +02:00
551e20b926 Remove ifstream / ofstream when accessing session template files (or creating a new session from a template file)
On Windows, the above classes don't support UTF-8 so let's get rid of them and use g_fopen / stringstream / fwrite() etc.
2015-09-15 13:17:22 +01:00
8a4bf386a4 amend previous commit. 2015-09-14 21:25:57 +02:00
9a533c925b fix short x-fade rendering 2015-09-14 21:18:56 +02:00
e63c3d028a note-off ordering - fixes #6340
Evoral::Beats::operator>() rounds to (1.0 / PPQN), hardcoded 1/1920.0.

If the time difference between two events is smaller than 1/PPQN,
Beats::operator>()  and  Beats::operator<()  produce ambiguous results.
The same pair of values is both "less than" and "greater than" depending
which operator is used.

While it's fine for some cases to ignore the order of nearly concurent
events, the std::priority_queue must be strictly ordered.
2015-09-14 04:55:01 +02:00
d83889079b hack around a bug in cppunit/mingw/windows. 2015-09-13 20:23:12 +02:00
e45db26d97 adjust precision to specified value, avoid "0". 2015-09-13 20:12:10 +02:00
8e8f8d92c2 allow to run unit-test under wine from srcdir. 2015-09-13 15:30:00 +02:00
69ff6d0507 fix mismatched delete/free 2015-09-13 04:09:24 +02:00
6f6dde4f06 Fix typo in DSPLoadCalculator causing assertions on Windows debug builds 2015-09-13 09:01:26 +10:00
eb998b3264 plug some memory leaks in libs 2015-09-12 20:05:25 +02:00
cb6c975417 remove cruft 2015-09-12 17:55:04 +02:00
a5e3371b80 Event Pool usage debugging, see also 6ade16b38 2015-09-12 02:18:38 +02:00
ec06f2c49f spelling error fixes (notably "overriden" => "overidden") from IOhannes m zmölnig 2015-09-11 09:23:43 -04:00
9fcc48d140 fail to create Monitor section if port-names are not unique
We should still prevent a user from naming a route "Monitor", but
since "Monitor" is a translatable string, this is an i18n safeguard. eg.
 - create a session with a mon-section and a track Монитор.
 - send the session to a friend in Russia.
2015-09-11 13:14:27 +02:00
def273ea71 queue disk buffer overwrite when playlist layering changes.
This is a first approximation. Doing this 100% efficiently is quite hard because it would require comparing the range
currently in the disk buffer and the range impacted by the layer change. I suspect this will work fine for the
foreseeable future
2015-09-10 16:49:15 -04:00
bfd66b2ea0 use PortManager::port_name_prefix_is_unique to check for new route names 2015-09-10 16:41:34 -04:00
c7e755b25c add PortManager::port_name_prefix_is_unique() 2015-09-10 16:41:34 -04:00
8d54a2472d fix recent session loading.
std::stringstream::operator<< calls strlen(), but the string in the
temp buffer may not [yet] be NULL terminated.
2015-09-10 17:39:31 +02:00
0ef8175b5a when removing routes, don't do potentially expensive work once for each route.
We can update solo state and tell interested parties about the removal once the actual removal is done
2015-09-10 11:35:57 -04:00
cb85080ca8 fix deadlock when removing routes and using JACK1.
graph reorder callback needed an early exit if we were deleting routes, is all.
2015-09-10 11:35:57 -04:00
a86aa9e5bc use FileSource::within_session() for peak-files 2015-09-10 16:47:26 +02:00
b3e8495662 remove duplicate enum registration 2015-09-10 08:15:11 -04:00
1a6c08dcfc Make sure that the DSPLoadCalculator class is exportable 2015-09-10 10:24:04 +01:00
d2e083397c Add support for newly introduced class ARDOUR::DSPLoadCalculator (when building with MSVC) 2015-09-10 10:22:38 +01:00
28803fface Remove DSPLoadCalculator class in portaudio backend source 2015-09-10 12:12:56 +10:00
c2e5bdedff Use ARDOUR::DSPLoadCalculator in PortAudioBackend 2015-09-10 12:12:56 +10:00
8625362cac Add DSPLoadCalculator class to libardour
This is similar to the class in the PortaudioBackend but uses an average of the
values if raw load is under 80%
2015-09-10 12:12:56 +10:00
09caf8336f allow LV2 plugins to query current block-size.
This is akin to VST2's audioMasterGetBlockSize.
It returns the current nominal block size (think jack-buffersize).

It's not the only block size that may be used when calling run(), it's
just the normal one. The actual block sizes used may be larger or smaller
and may vary between successive calls of run().

This change became neccesary after 53e969e9. Some plugins expected 
maxBlockLength to be the /current/ buffer-size and not all-time maxiumum.
Those plugins can now use nominalBlockLength.
2015-09-10 00:55:59 +02:00
390ea007c5 rework peakfile handling:
- copy old peak-files to new (do not require re-calc)
- keep old peak-files (for now, backwards compat)
- fix cleanup-sources to remove *new* peak-file
- include channel-number in hash (like it was done before)

see also 624f76b

TODO: add Session > Cleanup > remove/re-create peaks
2015-09-10 00:55:58 +02:00
78ff3c05a3 remove Ardour broken peak-file support
Ardour-2.0 put peak-files in a "broken" location for several months.
Since then Ardour renamed those files. No more. When loading ancient
sessions peak-files are now re-created (in the background).
2015-09-10 00:55:58 +02:00
48579d42b0 update libltc to v1.1.4-4-gb034a23 (endianess issue) 2015-09-09 16:54:26 +02:00
f8912b8b57 Made master fader touch and jog go to _master_surface instead of first surface. 2015-09-08 20:47:16 -07:00
bbfb53e881 RF64, RF64 (WAV) and MBWF native file header formats 2015-09-08 17:40:28 -04:00
f1c0f587ca new enums required for RF64 => RIFF and MBWF support 2015-09-08 17:40:28 -04:00
Guy Sherman
036ebab8a0 Replaced broken code in recent_sessions.cc
The original broken code was intended to stop using ifstream
and ofstream to open files, but it used a very old MSVCism to
open streams from FILE*.

In the case for reading, this patch replaces that code by using
standard c file manipulation to read the data into a stringstream,
and then it uses the existing stream-based code to read from there.

Similarly the ofstream in the code for writing the recent files list
is replaced by a stringstream, and then a c-string is extracted
from it and written using standard c file manipulation.

Also tweaked a couple of typos from rgareus :)
2015-09-08 22:29:20 +02:00
dee324cc36 Use glib to open our 'recent file' list, rather than opening directly with ifstream / ofstream
(on Windows, ifstream & ofstream don't support UTF8)
2015-09-08 15:45:34 +01:00
d11b15fbca dummy, allow 8k buffer-size. 2015-09-08 15:14:02 +02:00
fcbf359dd6 properly clean up meter-pattern cache 2015-09-07 13:35:48 +02:00
d6a5e6fc2e fix some more uninitialized vars 2015-09-07 00:00:44 +02:00
1e404da10d libardour: initialize some uninitialized vars.. 2015-09-06 21:55:12 +02:00
57321bef35 consistent pango-text layout size - fixes #6490
Use gdk_pango_layout() for all text-size calculations.
In Canvas::Text always use the same context (local image surface)
for layouting (prior to this, local and window-context mix resulted in 
different sizes).
2015-09-06 16:39:08 +02:00
ef3a42faed terminate peak-file creation on session-close 2015-09-06 11:49:47 +02:00
f5f11158aa another hint for clang static analysis. 2015-09-06 10:42:58 +02:00
788234e317 fix dummy-backend driver state
When loading previous state, set_driver() is called before
enumerate_drivers(). 
The available driver list must be available early on.
2015-09-06 10:42:29 +02:00
3fc5bf617a mode dummy speeds 2015-09-06 00:46:05 +02:00
4ef62a0d6d add dummy-backend speed-selection 2015-09-06 00:33:24 +02:00
7f00c70f9f create peak files in background when loading session 2015-09-05 23:28:34 +02:00
bea9bf5387 initialize private variable (unit-test) 2015-09-05 19:16:50 +02:00
482bd4b51c leave a hint for clang scan-build 2015-09-05 19:16:50 +02:00
c6272812e2 Add a newly introduced source to our MSVC project (libardour) 2015-09-05 18:05:10 +01:00
7e589dcda2 Add some newly introduced sources to our MSVC project (portaudio_backend) 2015-09-05 18:04:29 +01:00
42f0142bb9 remove a float loop counter 2015-09-05 15:47:00 +02:00
56eae394cc provide details about session-creation failure. 2015-09-05 15:44:41 +02:00
ebfd0782e1 add missing include 2015-09-05 11:36:16 +02:00
d84bc9123f unit-test: set instance name to pre-configure dummy engine 2015-09-05 01:16:10 +02:00
d6df63ed91 Dummy-Backend: special case unit-test 2015-09-05 01:15:28 +02:00
b66bf67030 fix bitwise enum parsing 2015-09-05 00:00:16 +02:00
015b588d65 print insanity-check message only in debug builds 2015-09-04 22:36:14 +02:00
ad6c71e1fd Fix invalid error message when selecting directories/folders in Import dialog
On linux SndFileSource::get_soundfile_info was being called with an empty path
value when clicking on a folder in the left side part of the file browser which
resulted in an unnecessary error message.

On Windows every time a directory was selected in the Import dialog,
SndFileSource::get_soundfile_info would fail to open the directory in read only
mode and produce an error, but as we don't want to query/open soundfile info
for directories anyway just test and return if the path is a directory.
2015-09-04 11:50:08 +10:00
Mathias Buhr
cfb10eba35 Review changes 2015-09-03 10:05:36 +02:00
Mathias Buhr
624f76b229 Fixes case where audiofiles used wrong peakfiles 2015-09-03 09:54:23 +02:00
Mathias Buhr
95b144ee58 Use const reference and renames variable 2015-09-03 09:54:23 +02:00
30af404def another -Wabsolute-value fix 2015-09-02 22:57:16 +02:00
c7b64803d9 rework AudioUnit variable input port count. 2015-09-02 21:05:09 +02:00
2f69ee8ec8 a couple of debug output statements to help diagnose a crash, part 2 2015-09-02 12:58:07 -04:00
e91a0f7e11 a couple of debug output statements to help diagnose a crash 2015-09-02 12:24:37 -04:00
93aa8d3734 waveform, mutex for _current_image
may be used in render-thread while invalidate_image_cache() is called.
possible fix for #6478
2015-09-02 14:28:26 +02:00
fa32fa1abe replace "None" with DeviceNone in ALSA/Coreaudio
TODO: separate MidiSystemNone
2015-09-02 13:33:40 +02:00
7521028831 Add debug output for errors when setting MMCSS thread characteristics 2015-09-02 12:07:59 +10:00
3618689103 Use MMCSS utility functions in PortaudioBackend 2015-09-02 12:07:59 +10:00
b288a40220 Add utility functions in PortaudioBackend for re/setting MMCSS thread characteristics 2015-09-02 12:07:59 +10:00
77ce989dfa Pass input and output audio buffers into PortaudioBackend blocking process function
This makes it possible to reuse the method for callback based processing
2015-09-02 12:07:59 +10:00
a6fb71022f Add audio_utils.h header in PortaudioBackend for de/interleaving audio data 2015-09-02 12:07:59 +10:00
23a490c906 Add two utility methods to abstract PortAudioBackend state
These may change as support for callback API is added
2015-09-02 12:07:58 +10:00
f143d76523 Extract MIDI input/output processing in PortAudioBackend into new methods 2015-09-02 12:07:58 +10:00