centralized fatica_cpu_meter
This commit is contained in:
parent
01fc0d8430
commit
5cbc630249
@ -203,9 +203,7 @@ static void data_callback(ma_device* pDevice, void* pOutput, const void* pInput,
|
||||
|
||||
#ifdef PARAM_OUT_CPU_INDEX
|
||||
const unsigned long long processTimeEnd = fatica_time_process();
|
||||
const unsigned long long processTime100n = processTimeEnd - processTimeStart;
|
||||
const double processTimeS = ((double) processTime100n) * 1.0e-7;
|
||||
cpu_meter = cpu_meter * 0.9f + ((float) (processTimeS * sample_rate)) * 0.1f;
|
||||
fatica_cpu_meter(&cpu_meter, processTimeStart, processTimeEnd, frameCount, sample_rate);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
|
||||
// unit = 100-nanosecond starting from somewhen
|
||||
unsigned long long fatica_time_process(void);
|
||||
void fatica_cpu_meter(float *value, unsigned long long start, unsigned long long end, uint32_t sample_count, float sample_rate);
|
||||
|
||||
// Implementation
|
||||
|
||||
@ -28,10 +29,12 @@ unsigned long long fatica_time_process(void) {
|
||||
|
||||
#elif defined(__linux__)
|
||||
|
||||
# if __STDC_VERSION__ >= 199901L
|
||||
# define _XOPEN_SOURCE 600
|
||||
# else
|
||||
# define _XOPEN_SOURCE 500
|
||||
# ifndef _XOPEN_SOURCE
|
||||
# if __STDC_VERSION__ >= 199901L
|
||||
# define _XOPEN_SOURCE 600
|
||||
# else
|
||||
# define _XOPEN_SOURCE 500
|
||||
# endif
|
||||
# endif
|
||||
# include <time.h>
|
||||
# include <unistd.h>
|
||||
@ -62,4 +65,11 @@ unsigned long long fatica_time_process(void) {
|
||||
#else
|
||||
# error "System not supported"
|
||||
#endif
|
||||
|
||||
void fatica_cpu_meter(float *value, unsigned long long start, unsigned long long end, uint32_t sample_count, float sample_rate) {
|
||||
const unsigned long long processTime100n = end - start;
|
||||
const double processTimeMs = ((double) processTime100n) * 1.0e-4;
|
||||
*value = *value * 0.99f + ((float) (processTimeMs * sample_count / (sample_rate * 1000))) * 0.01f;
|
||||
}
|
||||
|
||||
#endif // FATICA_H
|
||||
|
@ -173,9 +173,7 @@ static void data_callback(ma_device* pDevice, void* pOutput, const void* pInput,
|
||||
|
||||
#ifdef PARAM_OUT_CPU_INDEX
|
||||
const unsigned long long processTimeEnd = fatica_time_process();
|
||||
const unsigned long long processTime100n = processTimeEnd - processTimeStart;
|
||||
const double processTimeS = ((double) processTime100n) * 1.0e-7;
|
||||
cpu_meter = cpu_meter * 0.9f + ((float) (processTimeS * sample_rate)) * 0.1f;
|
||||
fatica_cpu_meter(&cpu_meter, processTimeStart, processTimeEnd, frameCount, sample_rate);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -323,9 +323,7 @@ static void run(LV2_Handle instance, uint32_t sample_count) {
|
||||
|
||||
#ifdef PARAM_OUT_CPU_INDEX
|
||||
const unsigned long long processTimeEnd = fatica_time_process();
|
||||
const unsigned long long processTime100n = processTimeEnd - processTimeStart;
|
||||
const double processTimeS = ((double) processTime100n) * 1.0e-7;
|
||||
i->cpu_meter = i->cpu_meter * 0.9f + ((float) (processTimeS * i->sample_rate)) * 0.1f;
|
||||
fatica_cpu_meter(&i->cpu_meter, processTimeStart, processTimeEnd, sample_count, i->sample_rate);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
@ -870,9 +870,7 @@ static Steinberg_tresult pluginProcess(void* thisInterface, struct Steinberg_Vst
|
||||
|
||||
#ifdef PARAM_OUT_CPU_INDEX
|
||||
const unsigned long long processTimeEnd = fatica_time_process();
|
||||
const unsigned long long processTime100n = processTimeEnd - processTimeStart;
|
||||
const double processTimeS = ((double) processTime100n) * 1.0e-7;
|
||||
p->cpu_meter = p->cpu_meter * 0.9f + ((float) (processTimeS * p->sampleRate)) * 0.1f;
|
||||
fatica_cpu_meter(&p->cpu_meter, processTimeStart, processTimeEnd, data->numSamples, p->sampleRate);
|
||||
#endif
|
||||
|
||||
return Steinberg_kResultOk;
|
||||
|
Loading…
Reference in New Issue
Block a user