summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-07-10 12:11:14 +0200
committerwm4 <wm4@nowhere>2015-07-10 12:11:14 +0200
commit4e767826303567f3ccd70c84b462b5dd0c140f6c (patch)
treea304b9bbe8ac708f4d19bfe862ce255cdd9cc649
parenta46de35abb19810fc0587d7857f63de210e06e40 (diff)
downloadmpv-4e767826303567f3ccd70c84b462b5dd0c140f6c.tar.bz2
mpv-4e767826303567f3ccd70c84b462b5dd0c140f6c.tar.xz
player: refactor chapter seek code
mp_seek_chapter() had only 1 caller. Also the code was rather roundabout; the entire function can be compressed to 5 lines of code. (The new code is functionally the same - "mpctx->last_chapter_seek = -2;" was effectively a dead assingment.)
-rw-r--r--player/command.c7
-rw-r--r--player/core.h1
-rw-r--r--player/playloop.c23
3 files changed, 7 insertions, 24 deletions
diff --git a/player/command.c b/player/command.c
index fb06cf1b33..c16f804883 100644
--- a/player/command.c
+++ b/player/command.c
@@ -762,7 +762,12 @@ static int mp_property_chapter(void *ctx, struct m_property *prop,
mpctx->stop_play = PT_NEXT_ENTRY;
}
} else {
- mp_seek_chapter(mpctx, chapter);
+ double pts = chapter_start_time(mpctx, chapter);
+ if (pts != MP_NOPTS_VALUE) {
+ queue_seek(mpctx, MPSEEK_ABSOLUTE, pts, MPSEEK_DEFAULT, true);
+ mpctx->last_chapter_seek = chapter;
+ mpctx->last_chapter_pts = pts;
+ }
}
return M_PROPERTY_OK;
}
diff --git a/player/core.h b/player/core.h
index 885c2d2052..80cf7178dd 100644
--- a/player/core.h
+++ b/player/core.h
@@ -451,7 +451,6 @@ void unpause_player(struct MPContext *mpctx);
void add_step_frame(struct MPContext *mpctx, int dir);
void queue_seek(struct MPContext *mpctx, enum seek_type type, double amount,
enum seek_precision exact, bool immediate);
-bool mp_seek_chapter(struct MPContext *mpctx, int chapter);
double get_time_length(struct MPContext *mpctx);
double get_current_time(struct MPContext *mpctx);
double get_playback_time(struct MPContext *mpctx);
diff --git a/player/playloop.c b/player/playloop.c
index 9cf19630b2..9ffeae6842 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -486,7 +486,7 @@ char *chapter_name(struct MPContext *mpctx, int chapter)
return talloc_strdup(NULL, mpctx->chapters[chapter].name);
}
-// returns the start of the chapter in seconds (-1 if unavailable)
+// returns the start of the chapter in seconds (NOPTS if unavailable)
double chapter_start_time(struct MPContext *mpctx, int chapter)
{
if (chapter == -1)
@@ -501,27 +501,6 @@ int get_chapter_count(struct MPContext *mpctx)
return mpctx->num_chapters;
}
-// Seek to a given chapter. Queues the seek.
-bool mp_seek_chapter(struct MPContext *mpctx, int chapter)
-{
- int num = get_chapter_count(mpctx);
- if (num == 0)
- return false;
- if (chapter < -1 || chapter >= num)
- return false;
-
- mpctx->last_chapter_seek = -2;
-
- double pts = chapter_start_time(mpctx, chapter);
- if (pts == MP_NOPTS_VALUE)
- return false;
-
- queue_seek(mpctx, MPSEEK_ABSOLUTE, pts, MPSEEK_DEFAULT, true);
- mpctx->last_chapter_seek = chapter;
- mpctx->last_chapter_pts = pts;
- return true;
-}
-
static void handle_osd_redraw(struct MPContext *mpctx)
{
if (!mpctx->video_out || !mpctx->video_out->config_ok)