mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
profiler: use doubles in profiler.log
Don't truncate the measurements when we convert to usec but keep the fractional part to get a more accurate graph.
This commit is contained in:
parent
4f53136891
commit
b47d28bad6
1 changed files with 12 additions and 12 deletions
|
|
@ -307,24 +307,24 @@ static int process_follower_clock(struct data *d, const struct spa_pod *pod, str
|
|||
static void dump_point(struct data *d, struct point *point)
|
||||
{
|
||||
int i;
|
||||
int64_t d1, d2;
|
||||
int64_t delay, period_usecs;
|
||||
double d1, d2;
|
||||
double delay, period_usecs;
|
||||
|
||||
#define CLOCK_AS_USEC(cl,val) (int64_t)(val * (float)SPA_USEC_PER_SEC / (cl)->rate.denom)
|
||||
#define CLOCK_AS_SUSEC(cl,val) (int64_t)(val * (float)SPA_USEC_PER_SEC / ((cl)->rate.denom * (cl)->rate_diff))
|
||||
#define CLOCK_AS_USEC(cl,val) (double)(val * (double)SPA_USEC_PER_SEC / (cl)->rate.denom)
|
||||
#define CLOCK_AS_SUSEC(cl,val) (double)(val * (double)SPA_USEC_PER_SEC / ((cl)->rate.denom * (cl)->rate_diff))
|
||||
|
||||
delay = CLOCK_AS_USEC(&point->clock, point->clock.delay);
|
||||
period_usecs = CLOCK_AS_SUSEC(&point->clock, point->clock.duration);
|
||||
|
||||
d1 = (point->driver.signal - point->driver.prev_signal) / 1000;
|
||||
d2 = (point->driver.finish - point->driver.signal) / 1000;
|
||||
d1 = (point->driver.signal - point->driver.prev_signal) / 1000.0;
|
||||
d2 = (point->driver.finish - point->driver.signal) / 1000.0;
|
||||
|
||||
if (d1 > period_usecs * 1.3 ||
|
||||
d2 > period_usecs * 1.3)
|
||||
d1 = d2 = (int64_t)(period_usecs * 1.4);
|
||||
d1 = d2 = (double)(period_usecs * 1.4);
|
||||
|
||||
/* 4 columns for the driver */
|
||||
fprintf(d->output, "%"PRIi64"\t%"PRIi64"\t%"PRIi64"\t%"PRIi64"\t",
|
||||
fprintf(d->output, "%.3f\t%.3f\t%.3f\t%.3f\t",
|
||||
d1 > 0 ? d1 : 0, d2 > 0 ? d2 : 0, delay, period_usecs);
|
||||
|
||||
for (i = 0; i < MAX_FOLLOWERS; i++) {
|
||||
|
|
@ -332,11 +332,11 @@ static void dump_point(struct data *d, struct point *point)
|
|||
if (point->follower[i].status == 0) {
|
||||
fprintf(d->output, " \t \t \t \t \t \t \t \t");
|
||||
} else {
|
||||
int64_t d4 = (point->follower[i].signal - point->driver.signal) / 1000;
|
||||
int64_t d5 = (point->follower[i].awake - point->driver.signal) / 1000;
|
||||
int64_t d6 = (point->follower[i].finish - point->driver.signal) / 1000;
|
||||
double d4 = (point->follower[i].signal - point->driver.signal) / 1000.0;
|
||||
double d5 = (point->follower[i].awake - point->driver.signal) / 1000.0;
|
||||
double d6 = (point->follower[i].finish - point->driver.signal) / 1000.0;
|
||||
|
||||
fprintf(d->output, "%u\t%"PRIi64"\t%"PRIi64"\t%"PRIi64"\t%"PRIi64"\t%"PRIi64"\t%d\t0\t",
|
||||
fprintf(d->output, "%u\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%d\t0\t",
|
||||
d->followers[i].id,
|
||||
d4 > 0 ? d4 : 0,
|
||||
d5 > 0 ? d5 : 0,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue