summaryrefslogtreecommitdiffstats
path: root/player/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/misc.c')
-rw-r--r--player/misc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/player/misc.c b/player/misc.c
index 6eae646242..6aa58863e8 100644
--- a/player/misc.c
+++ b/player/misc.c
@@ -53,12 +53,17 @@ double get_relative_time(struct MPContext *mpctx)
double rel_time_to_abs(struct MPContext *mpctx, struct m_rel_time t)
{
double length = get_time_length(mpctx);
+ double start = get_start_time(mpctx);
switch (t.type) {
case REL_TIME_ABSOLUTE:
return t.pos;
- case REL_TIME_NEGATIVE:
- if (length != 0)
- return MPMAX(length - t.pos, 0.0);
+ case REL_TIME_RELATIVE:
+ if (t.pos >= 0) {
+ return start + t.pos;
+ } else {
+ if (length != 0)
+ return MPMAX(start + length + t.pos, 0.0);
+ }
break;
case REL_TIME_PERCENT:
if (length != 0)