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
|
double
|
||||||
player_progress(struct player *player)
|
player_progress(struct player *player)
|
||||||
{
|
{
|
||||||
int64_t n = 0;
|
|
||||||
double done = 0.0;
|
|
||||||
struct trace *trace = player->trace;
|
struct trace *trace = player->trace;
|
||||||
struct stream *stream;
|
struct stream *stream;
|
||||||
|
int64_t sum_done = 0;
|
||||||
|
int64_t sum_total = 0;
|
||||||
DL_FOREACH(trace->streams, stream) {
|
DL_FOREACH(trace->streams, stream) {
|
||||||
done += stream_progress(stream);
|
int64_t done, total;
|
||||||
n++;
|
stream_progress(stream, &done, &total);
|
||||||
|
sum_done += done;
|
||||||
|
sum_total += total;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n == 0)
|
if (sum_total == 0)
|
||||||
return 1.0;
|
return 1.0;
|
||||||
|
|
||||||
done /= (double) n;
|
return (double) sum_done / (double) sum_total;
|
||||||
|
|
||||||
return done;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t
|
int64_t
|
||||||
|
|||||||
@ -236,15 +236,11 @@ stream_step(struct stream *stream)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
double
|
void
|
||||||
stream_progress(struct stream *stream)
|
stream_progress(struct stream *stream, int64_t *done, int64_t *total)
|
||||||
{
|
{
|
||||||
if (stream->usize == 0)
|
*done = stream->offset - sizeof(struct ovni_stream_header);
|
||||||
return 1.0;
|
*total = stream->usize;
|
||||||
|
|
||||||
int64_t uoffset = stream->offset - sizeof(struct ovni_stream_header);
|
|
||||||
double prog = (double) uoffset / (double) stream->usize;
|
|
||||||
return prog;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@ -41,7 +41,7 @@ int stream_load(struct stream *stream,
|
|||||||
|
|
||||||
int stream_clkoff_set(struct stream *stream, int64_t clock_offset);
|
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);
|
int stream_step(struct stream *stream);
|
||||||
struct ovni_ev *stream_ev(struct stream *stream);
|
struct ovni_ev *stream_ev(struct stream *stream);
|
||||||
int64_t stream_evclock(struct stream *stream, struct ovni_ev *ev);
|
int64_t stream_evclock(struct stream *stream, struct ovni_ev *ev);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user