adding DSP stats to coreaudio backend (uncompiled)

This commit is contained in:
Paul Davis 2021-06-26 11:04:03 -06:00
parent 995137aeb3
commit c7bed1320e
3 changed files with 16 additions and 5 deletions

View file

@ -548,7 +548,7 @@ CoreAudioBackend::_start (bool for_latency_measurement)
_pcmio->set_buffer_size_callback (buffer_size_callback_ptr, this); _pcmio->set_buffer_size_callback (buffer_size_callback_ptr, this);
_pcmio->set_sample_rate_callback (sample_rate_callback_ptr, this); _pcmio->set_sample_rate_callback (sample_rate_callback_ptr, this);
_pcmio->pcm_start (device1, device2, _samplerate, _samples_per_period, process_callback_ptr, this); _pcmio->pcm_start (device1, device2, _samplerate, _samples_per_period, process_callback_ptr, this, dsp_stats[AudioBackend::DeviceWait]);
#ifndef NDEBUG #ifndef NDEBUG
printf("STATE: %d\n", _pcmio->state ()); printf("STATE: %d\n", _pcmio->state ());
#endif #endif
@ -1366,6 +1366,7 @@ CoreAudioBackend::process_callback (const uint32_t n_samples, const uint64_t hos
{ {
uint32_t i = 0; uint32_t i = 0;
uint64_t clock1; uint64_t clock1;
PBD::TimerRAII tr (dsp_stats[RunLoop]);
_active_ca = true; _active_ca = true;

View file

@ -792,9 +792,10 @@ CoreAudioPCM::set_samples_per_period (uint32_t n_samples)
int int
CoreAudioPCM::pcm_start ( CoreAudioPCM::pcm_start (
uint32_t device_id_in, uint32_t device_id_out, uint32_t device_id_in, uint32_t device_id_out,
uint32_t sample_rate, uint32_t samples_per_period, uint32_t sample_rate, uint32_t samples_per_period,
int (process_callback (void*, const uint32_t, const uint64_t)), void *process_arg) int (process_callback (void*, const uint32_t, const uint64_t)), void *process_arg,
PBD::Timing& dsp_timer)
{ {
assert(_device_ids); assert(_device_ids);
@ -812,6 +813,7 @@ CoreAudioPCM::pcm_start (
_process_arg = process_arg; _process_arg = process_arg;
_samples_per_period = samples_per_period; _samples_per_period = samples_per_period;
_cur_samples_per_period = 0; _cur_samples_per_period = 0;
_dsp_timer = &dsp_timer;
_active_device_id = 0; _active_device_id = 0;
_capture_channels = 0; _capture_channels = 0;
_playback_channels = 0; _playback_channels = 0;
@ -1119,6 +1121,7 @@ CoreAudioPCM::render_callback (
UInt32 inNumberSamples, UInt32 inNumberSamples,
AudioBufferList* ioData) AudioBufferList* ioData)
{ {
PBD::WaitTimerRAII tr (*_dsp_timer);
OSStatus retVal = kAudioHardwareNoError; OSStatus retVal = kAudioHardwareNoError;
if (_samples_per_period < inNumberSamples) { if (_samples_per_period < inNumberSamples) {

View file

@ -36,6 +36,10 @@
#define AUHAL_INPUT_ELEMENT 1 #define AUHAL_INPUT_ELEMENT 1
namespace PBD {
class Timing;
}
namespace ARDOUR { namespace ARDOUR {
class CoreAudioPCM { class CoreAudioPCM {
@ -78,7 +82,8 @@ public:
uint32_t samples_per_period, uint32_t samples_per_period,
int (process_callback (void*, const uint32_t, const uint64_t)), int (process_callback (void*, const uint32_t, const uint64_t)),
void * process_arg void * process_arg
); PBD::Timing& dsp_timer,
);
void set_error_callback ( void set_error_callback (
void ( error_callback (void*)), void ( error_callback (void*)),
@ -174,6 +179,8 @@ private:
int (* _process_callback) (void*, const uint32_t, const uint64_t); int (* _process_callback) (void*, const uint32_t, const uint64_t);
void * _process_arg; void * _process_arg;
PBD::Timing* _dsp_timer;
void (* _error_callback) (void*); void (* _error_callback) (void*);
void * _error_arg; void * _error_arg;