summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
Diffstat (limited to 'player')
-rw-r--r--player/command.c3
-rw-r--r--player/misc.c3
-rw-r--r--player/playloop.c4
3 files changed, 9 insertions, 1 deletions
diff --git a/player/command.c b/player/command.c
index 3f13c39a02..21c595ce57 100644
--- a/player/command.c
+++ b/player/command.c
@@ -3731,7 +3731,8 @@ static const struct property_osd_display {
{"vf", "Video filters", .msg = "Video filters:\n${vf}"},
{"af", "Audio filters", .msg = "Audio filters:\n${af}"},
{"ab-loop-a", "A-B loop start"},
- {"ab-loop-b", .msg = "A-B loop: ${ab-loop-a} - ${ab-loop-b}"},
+ {"ab-loop-b", .msg = "A-B loop: ${ab-loop-a} - ${ab-loop-b}"
+ "${?=ab-loop-count==0: (disabled)}"},
{"audio-device", "Audio device"},
{"hwdec", .msg = "Hardware decoding: ${hwdec-current}"},
{"video-aspect-override", "Aspect ratio override"},
diff --git a/player/misc.c b/player/misc.c
index c3765e5055..f6a63ec7ef 100644
--- a/player/misc.c
+++ b/player/misc.c
@@ -123,6 +123,9 @@ bool get_ab_loop_times(struct MPContext *mpctx, double t[2])
t[0] = opts->ab_loop[0];
t[1] = opts->ab_loop[1];
+ if (!opts->ab_loop_count)
+ return false;
+
if (t[0] == MP_NOPTS_VALUE || t[1] == MP_NOPTS_VALUE || t[0] == t[1])
return false;
diff --git a/player/playloop.c b/player/playloop.c
index 86f19fd79f..4f0efad275 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -885,6 +885,10 @@ static void handle_loop_file(struct MPContext *mpctx)
double ab[2];
if (get_ab_loop_times(mpctx, ab) && mpctx->ab_loop_clip) {
+ if (opts->ab_loop_count > 0) {
+ opts->ab_loop_count--;
+ m_config_notify_change_opt_ptr(mpctx->mconfig, &opts->ab_loop_count);
+ }
target = ab[0];
prec = MPSEEK_EXACT;
} else if (opts->loop_file) {