osd: simplify AB-loop rendering on progress bar

This adds the stops using the same logic get_play_end_pts() and
handle_loop_file(). It did that before, it just looks slightly different
now. It also won't try to add MP_NOPTS_VALUE as stop value.
This commit is contained in:
wm4 2019-05-25 22:47:39 +02:00
parent 281e998290
commit aebccb8801
1 changed files with 10 additions and 9 deletions

View File

@ -359,19 +359,20 @@ void set_osd_bar_chapters(struct MPContext *mpctx, int type)
mpctx->osd_progbar.num_stops = 0; mpctx->osd_progbar.num_stops = 0;
double len = get_time_length(mpctx); double len = get_time_length(mpctx);
if (len > 0) { if (len > 0) {
double ab_loop_start_time = get_ab_loop_start_time(mpctx);
if (opts->ab_loop[0] != MP_NOPTS_VALUE || if (opts->ab_loop[0] != MP_NOPTS_VALUE ||
(ab_loop_start_time != MP_NOPTS_VALUE && opts->ab_loop[1] != MP_NOPTS_VALUE)
opts->ab_loop[1] != MP_NOPTS_VALUE))
{ {
double ab_loop_start_time = get_ab_loop_start_time(mpctx);
if (ab_loop_start_time == MP_NOPTS_VALUE)
ab_loop_start_time = 0;
MP_TARRAY_APPEND(mpctx, mpctx->osd_progbar.stops, MP_TARRAY_APPEND(mpctx, mpctx->osd_progbar.stops,
mpctx->osd_progbar.num_stops, ab_loop_start_time / len); mpctx->osd_progbar.num_stops, ab_loop_start_time / len);
}
if (opts->ab_loop[1] != MP_NOPTS_VALUE) { if (opts->ab_loop[1] != MP_NOPTS_VALUE) {
MP_TARRAY_APPEND(mpctx, mpctx->osd_progbar.stops, MP_TARRAY_APPEND(mpctx, mpctx->osd_progbar.stops,
mpctx->osd_progbar.num_stops, opts->ab_loop[1] / len); mpctx->osd_progbar.num_stops,
opts->ab_loop[1] / len);
} }
if (mpctx->osd_progbar.num_stops == 0) { } else {
int num = get_chapter_count(mpctx); int num = get_chapter_count(mpctx);
for (int n = 0; n < num; n++) { for (int n = 0; n < num; n++) {
double time = chapter_start_time(mpctx, n); double time = chapter_start_time(mpctx, n);