Fix progress computation
Cannot use stream progress individually as their sizes are different.
This commit is contained in:
parent
c709938206
commit
b9cc81fc52
@ -219,21 +219,21 @@ player_stream(struct player *player)
|
||||
double
|
||||
player_progress(struct player *player)
|
||||
{
|
||||
int64_t n = 0;
|
||||
double done = 0.0;
|
||||
struct trace *trace = player->trace;
|
||||
struct stream *stream;
|
||||
int64_t sum_done = 0;
|
||||
int64_t sum_total = 0;
|
||||
DL_FOREACH(trace->streams, stream) {
|
||||
done += stream_progress(stream);
|
||||
n++;
|
||||
int64_t done, total;
|
||||
stream_progress(stream, &done, &total);
|
||||
sum_done += done;
|
||||
sum_total += total;
|
||||
}
|
||||
|
||||
if (n == 0)
|
||||
if (sum_total == 0)
|
||||
return 1.0;
|
||||
|
||||
done /= (double) n;
|
||||
|
||||
return done;
|
||||
return (double) sum_done / (double) sum_total;
|
||||
}
|
||||
|
||||
int64_t
|
||||
|
@ -236,15 +236,11 @@ stream_step(struct stream *stream)
|
||||
return 0;
|
||||
}
|
||||
|
||||
double
|
||||
stream_progress(struct stream *stream)
|
||||
void
|
||||
stream_progress(struct stream *stream, int64_t *done, int64_t *total)
|
||||
{
|
||||
if (stream->usize == 0)
|
||||
return 1.0;
|
||||
|
||||
int64_t uoffset = stream->offset - sizeof(struct ovni_stream_header);
|
||||
double prog = (double) uoffset / (double) stream->usize;
|
||||
return prog;
|
||||
*done = stream->offset - sizeof(struct ovni_stream_header);
|
||||
*total = stream->usize;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -41,7 +41,7 @@ int stream_load(struct stream *stream,
|
||||
|
||||
int stream_clkoff_set(struct stream *stream, int64_t clock_offset);
|
||||
|
||||
double stream_progress(struct stream *stream);
|
||||
void stream_progress(struct stream *stream, int64_t *done, int64_t *total);
|
||||
int stream_step(struct stream *stream);
|
||||
struct ovni_ev *stream_ev(struct stream *stream);
|
||||
int64_t stream_evclock(struct stream *stream, struct ovni_ev *ev);
|
||||
|
Loading…
Reference in New Issue
Block a user