Fix CoreAudio systemic latency, implement hw latency report

This commit is contained in:
Robin Gareus 2020-02-24 04:24:50 +01:00
parent 53a6c24147
commit a9c75f9760
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
3 changed files with 25 additions and 2 deletions

View file

@ -440,6 +440,24 @@ CoreAudioBackend::systemic_output_latency () const
return _systemic_audio_output_latency;
}
uint32_t
CoreAudioBackend::systemic_hw_input_latency () const
{
if (name_to_id (_input_audio_device) != UINT32_MAX) {
return _pcmio->get_latency(name_to_id(_input_audio_device, Input), true);
}
return 0;
}
uint32_t
CoreAudioBackend::systemic_hw_output_latency () const
{
if (name_to_id (_output_audio_device) != UINT32_MAX) {
return _pcmio->get_latency(name_to_id(_output_audio_device, Output), false);
}
return 0;
}
/* MIDI */
std::vector<std::string>
@ -1120,7 +1138,7 @@ CoreAudioBackend::register_system_audio_ports()
#endif
/* audio ports */
lr.min = lr.max = coreaudio_reported_input_latency + (_measure_latency ? 0 : _systemic_audio_input_latency);
lr.min = lr.max = _measure_latency ? 0 : _systemic_audio_input_latency;
for (uint32_t i = 0; i < a_ins; ++i) {
char tmp[64];
snprintf(tmp, sizeof(tmp), "system:capture_%d", i+1);
@ -1132,7 +1150,7 @@ CoreAudioBackend::register_system_audio_ports()
_system_inputs.push_back(cp);
}
lr.min = lr.max = coreaudio_reported_output_latency + (_measure_latency ? 0 : _systemic_audio_output_latency);
lr.min = lr.max = _measure_latency ? 0 : _systemic_audio_output_latency;
for (uint32_t i = 0; i < a_out; ++i) {
char tmp[64];
snprintf(tmp, sizeof(tmp), "system:playback_%d", i+1);