Skip to content

Commit 9c5ea23

Browse files
committed
- Improve audio clip recording latency compensation.
1 parent 0fdf62c commit 9c5ea23

File tree

10 files changed

+66
-78
lines changed

10 files changed

+66
-78
lines changed

src/qtractorAudioEngine.cpp

Lines changed: 48 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -3286,85 +3286,73 @@ qtractorPluginList *qtractorAudioBus::pluginList_out (void) const
32863286
// Audio I/O port latency accessors.
32873287
unsigned int qtractorAudioBus::latency_in (void) const
32883288
{
3289-
if (m_ppIPorts == nullptr)
3290-
return 0;
3291-
32923289
qtractorAudioEngine *pAudioEngine
32933290
= static_cast<qtractorAudioEngine *> (engine());
32943291
if (pAudioEngine == nullptr)
32953292
return 0;
32963293

3297-
unsigned int iLatencyIn = 0;
3294+
unsigned int iLatencyIn = pAudioEngine->bufferSize();
32983295

3299-
#ifdef CONFIG_JACK_LATENCY
3300-
jack_nframes_t range_max = 0;
3301-
jack_latency_range_t range;
3302-
for (unsigned int i = 0; i < m_iChannels; ++i) {
3303-
if (m_ppIPorts[i] == nullptr)
3304-
continue;
3305-
jack_port_get_latency_range(m_ppIPorts[i], JackCaptureLatency, &range);
3306-
if (range_max > range.max || i == 0)
3307-
range_max = range.max;
3308-
}
3309-
iLatencyIn += range_max;
3310-
#else
3311-
jack_nframes_t lat, lat_min = 0;
3312-
for (unsigned int i = 0; i < m_iChannels; ++i) {
3313-
if (m_ppIPorts[i] == nullptr)
3314-
continue;
3315-
lat = jack_port_get_latency(m_ppIPorts[i]);
3316-
if (lat_max > lat || i == 0)
3317-
lat_max = lat;
3296+
if (m_ppIPorts) {
3297+
#ifdef CONFIG_JACK_LATENCY
3298+
jack_nframes_t range_max = 0;
3299+
jack_latency_range_t range;
3300+
for (unsigned int i = 0; i < m_iChannels; ++i) {
3301+
if (m_ppIPorts[i] == nullptr)
3302+
continue;
3303+
jack_port_get_latency_range(m_ppIPorts[i], JackCaptureLatency, &range);
3304+
if (range_max > range.max || i == 0)
3305+
range_max = range.max;
3306+
}
3307+
iLatencyIn += range_max;
3308+
#else
3309+
jack_nframes_t lat, lat_min = 0;
3310+
for (unsigned int i = 0; i < m_iChannels; ++i) {
3311+
if (m_ppIPorts[i] == nullptr)
3312+
continue;
3313+
lat = jack_port_get_latency(m_ppIPorts[i]);
3314+
if (lat_max > lat || i == 0)
3315+
lat_max = lat;
3316+
}
3317+
iLatencyIn += lat_max;
3318+
#endif
33183319
}
3319-
iLatencyIn += lat_max;
3320-
#endif
3321-
3322-
const unsigned int iBufferSize = pAudioEngine->bufferSize();
3323-
if (iLatencyIn < iBufferSize)
3324-
iLatencyIn += iBufferSize;
3325-
33263320
return iLatencyIn;
33273321
}
33283322

33293323
unsigned int qtractorAudioBus::latency_out (void) const
33303324
{
3331-
if (m_ppOPorts == nullptr)
3332-
return 0;
3333-
33343325
qtractorAudioEngine *pAudioEngine
33353326
= static_cast<qtractorAudioEngine *> (engine());
33363327
if (pAudioEngine == nullptr)
33373328
return 0;
33383329

3339-
unsigned int iLatencyOut = 0;
3330+
unsigned int iLatencyOut = pAudioEngine->bufferSize();
33403331

3341-
#ifdef CONFIG_JACK_LATENCY
3342-
jack_nframes_t range_max = 0;
3343-
jack_latency_range_t range;
3344-
for (unsigned int i = 0; i < m_iChannels; ++i) {
3345-
if (m_ppOPorts[i] == nullptr)
3346-
continue;
3347-
jack_port_get_latency_range(m_ppOPorts[i], JackPlaybackLatency, &range);
3348-
if (range_max > range.max || i == 0)
3349-
range_max = range.max;
3350-
}
3351-
iLatencyOut += range_max;
3352-
#else
3353-
jack_nframes_t lat, lat_max = 0;
3354-
for (unsigned int i = 0; i < m_iChannels; ++i) {
3355-
if (m_ppOPorts[i] == nullptr)
3356-
continue;
3357-
lat = jack_port_get_latency(m_ppOPorts[i]);
3358-
if (lat_max > lat || i == 0)
3359-
lat_max = lat;
3332+
if (m_ppOPorts) {
3333+
#ifdef CONFIG_JACK_LATENCY
3334+
jack_nframes_t range_max = 0;
3335+
jack_latency_range_t range;
3336+
for (unsigned int i = 0; i < m_iChannels; ++i) {
3337+
if (m_ppOPorts[i] == nullptr)
3338+
continue;
3339+
jack_port_get_latency_range(m_ppOPorts[i], JackPlaybackLatency, &range);
3340+
if (range_max > range.max || i == 0)
3341+
range_max = range.max;
3342+
}
3343+
iLatencyOut += range_max;
3344+
#else
3345+
jack_nframes_t lat, lat_max = 0;
3346+
for (unsigned int i = 0; i < m_iChannels; ++i) {
3347+
if (m_ppOPorts[i] == nullptr)
3348+
continue;
3349+
lat = jack_port_get_latency(m_ppOPorts[i]);
3350+
if (lat_max > lat || i == 0)
3351+
lat_max = lat;
3352+
}
3353+
iLatencyOut += lat_max;
3354+
#endif
33603355
}
3361-
iLatencyOut += lat_max;
3362-
#endif
3363-
3364-
const unsigned int iBufferSize = pAudioEngine->bufferSize();
3365-
if (iLatencyOut < iBufferSize)
3366-
iLatencyOut += iBufferSize;
3367-
33683356
return iLatencyOut;
33693357
}
33703358

src/translations/qtractor_cs.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ Zvuk: %1 kanály, %2 Hz</translation>
3636
</message>
3737
<message>
3838
<location filename="../qtractorAudioEngine.cpp" line="3098"/>
39-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
39+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4040
<location filename="../qtractorMidiEngine.cpp" line="4354"/>
4141
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4242
<source>%1 In</source>
4343
<translation>%1 Vstup</translation>
4444
</message>
4545
<message>
4646
<location filename="../qtractorAudioEngine.cpp" line="3107"/>
47-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
47+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4848
<location filename="../qtractorMidiEngine.cpp" line="4363"/>
4949
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
5050
<source>%1 Out</source>

src/translations/qtractor_de.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ Audio: %1 Kanäle, %2 Hz</translation>
3636
</message>
3737
<message>
3838
<location filename="../qtractorAudioEngine.cpp" line="3098"/>
39-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
39+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4040
<location filename="../qtractorMidiEngine.cpp" line="4354"/>
4141
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4242
<source>%1 In</source>
4343
<translation>%1 Ein</translation>
4444
</message>
4545
<message>
4646
<location filename="../qtractorAudioEngine.cpp" line="3107"/>
47-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
47+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4848
<location filename="../qtractorMidiEngine.cpp" line="4363"/>
4949
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
5050
<source>%1 Out</source>

src/translations/qtractor_es.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ Audio: %1 canales, %2 Hz</translation>
3636
</message>
3737
<message>
3838
<location filename="../qtractorAudioEngine.cpp" line="3098"/>
39-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
39+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4040
<location filename="../qtractorMidiEngine.cpp" line="4354"/>
4141
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4242
<source>%1 In</source>
4343
<translation>%1 Entrada</translation>
4444
</message>
4545
<message>
4646
<location filename="../qtractorAudioEngine.cpp" line="3107"/>
47-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
47+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4848
<location filename="../qtractorMidiEngine.cpp" line="4363"/>
4949
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
5050
<source>%1 Out</source>

src/translations/qtractor_fr.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ Audio : %1 canaux, %2 Hz</translation>
3535
</message>
3636
<message>
3737
<location filename="../qtractorAudioEngine.cpp" line="3098"/>
38-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
38+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
3939
<location filename="../qtractorMidiEngine.cpp" line="4354"/>
4040
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4141
<source>%1 In</source>
4242
<translation>%1 Entrée</translation>
4343
</message>
4444
<message>
4545
<location filename="../qtractorAudioEngine.cpp" line="3107"/>
46-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
46+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4747
<location filename="../qtractorMidiEngine.cpp" line="4363"/>
4848
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4949
<source>%1 Out</source>

src/translations/qtractor_it.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ Audio: %1 canali, %2 Hz</translation>
3636
</message>
3737
<message>
3838
<location filename="../qtractorAudioEngine.cpp" line="3098"/>
39-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
39+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4040
<location filename="../qtractorMidiEngine.cpp" line="4354"/>
4141
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4242
<source>%1 In</source>
4343
<translation>%1 Ingressi</translation>
4444
</message>
4545
<message>
4646
<location filename="../qtractorAudioEngine.cpp" line="3107"/>
47-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
47+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4848
<location filename="../qtractorMidiEngine.cpp" line="4363"/>
4949
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
5050
<source>%1 Out</source>

src/translations/qtractor_ja.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ Audio: %1 channels, %2 Hz</source>
3535
</message>
3636
<message>
3737
<location filename="../qtractorAudioEngine.cpp" line="3098"/>
38-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
38+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
3939
<location filename="../qtractorMidiEngine.cpp" line="4354"/>
4040
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4141
<source>%1 In</source>
4242
<translation>%1 入力</translation>
4343
</message>
4444
<message>
4545
<location filename="../qtractorAudioEngine.cpp" line="3107"/>
46-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
46+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4747
<location filename="../qtractorMidiEngine.cpp" line="4363"/>
4848
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4949
<source>%1 Out</source>

src/translations/qtractor_pt_BR.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
</message>
3737
<message>
3838
<location filename="../qtractorAudioEngine.cpp" line="3098"/>
39-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
39+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4040
<location filename="../qtractorMidiEngine.cpp" line="4354"/>
4141
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4242
<source>%1 In</source>
@@ -181,7 +181,7 @@ Fim: %3 Tamanho: %4</translation>
181181
</message>
182182
<message>
183183
<location filename="../qtractorAudioEngine.cpp" line="3107"/>
184-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
184+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
185185
<location filename="../qtractorMidiEngine.cpp" line="4363"/>
186186
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
187187
<source>%1 Out</source>

src/translations/qtractor_ru.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ Audio: %1 channels, %2 Hz</source>
3434
</message>
3535
<message>
3636
<location filename="../qtractorAudioEngine.cpp" line="3098"/>
37-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
37+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
3838
<location filename="../qtractorMidiEngine.cpp" line="4354"/>
3939
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4040
<source>%1 In</source>
4141
<translation>Вход %1</translation>
4242
</message>
4343
<message>
4444
<location filename="../qtractorAudioEngine.cpp" line="3107"/>
45-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
45+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4646
<location filename="../qtractorMidiEngine.cpp" line="4363"/>
4747
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4848
<source>%1 Out</source>

src/translations/qtractor_uk.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Audio: %1 channels, %2 Hz</source>
3636
</message>
3737
<message>
3838
<location filename="../qtractorAudioEngine.cpp" line="3098"/>
39-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
39+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
4040
<location filename="../qtractorMidiEngine.cpp" line="4354"/>
4141
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
4242
<source>%1 In</source>
@@ -60,7 +60,7 @@ Audio: %1 channels, %2 Hz</source>
6060
</message>
6161
<message>
6262
<location filename="../qtractorAudioEngine.cpp" line="3107"/>
63-
<location filename="../qtractorAudioEngine.cpp" line="3390"/>
63+
<location filename="../qtractorAudioEngine.cpp" line="3378"/>
6464
<location filename="../qtractorMidiEngine.cpp" line="4363"/>
6565
<location filename="../qtractorMidiEngine.cpp" line="4936"/>
6666
<source>%1 Out</source>

0 commit comments

Comments
 (0)