[MPlayer-cvslog] r19442 - trunk/mplayer.c
nicodvb
subversion at mplayerhq.hu
Fri Aug 18 18:52:23 CEST 2006
Author: nicodvb
Date: Fri Aug 18 18:52:23 2006
New Revision: 19442
Modified:
trunk/mplayer.c
Log:
seek to chapter using newly introduced demux_seek_chapter()
Modified: trunk/mplayer.c
==============================================================================
--- trunk/mplayer.c (original)
+++ trunk/mplayer.c Fri Aug 18 18:52:23 2006
@@ -4820,46 +4820,27 @@
case MP_CMD_SEEK_CHAPTER : {
int seek = cmd->args[0].v.i;
int abs = (cmd->nargs > 1) ? cmd->args[1].v.i : 0;
- int total;
- int current;
+ int chap;
+ float next_pts = 0;
- if (!demuxer->num_chapters || !demuxer->chapters) {
- if (seek > 0) {
- abs_seek_pos = 0;
- rel_seek_secs = 1000000000.;
- } else
- set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, MSGTR_OSDChapter, 0, MSGTR_Unknown);
- break;
- }
-
- total = demuxer->num_chapters;
-
- if (abs) {
- current = seek;
- } else {
- uint64_t now;
- now = (sh_video ? sh_video->pts : (sh_audio ? sh_audio->pts : 0.)) * 1000 + .5;
-
- for (current = total - 1; current >= 0; --current) {
- demux_chapter_t* chapter = demuxer->chapters + current;
- if (chapter->start <= now)
- break;
+ rel_seek_secs = 0;
+ abs_seek_pos = 0;
+ chap = demuxer_seek_chapter(demuxer, seek, abs, &next_pts);
+ if(chap != -1) {
+ if(next_pts > -1.0) {
+ abs_seek_pos = 1;
+ rel_seek_secs = next_pts;
}
- current += seek;
- }
-
- if (current < 0) current = 0;
- if (current >= total) {
- current = total - 1;
- abs_seek_pos = 0;
- rel_seek_secs = 1000000000.;
+ if(demuxer->num_chapters > chap)
+ set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, MSGTR_OSDChapter,
+ chap, demuxer->chapters[chap].name);
} else {
- abs_seek_pos = 1;
- rel_seek_secs = demuxer->chapters[current].start / 1000.;
+ if (seek > 0)
+ rel_seek_secs = 1000000000.;
+ else
+ set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, MSGTR_OSDChapter, 0, MSGTR_Unknown);
}
-
- set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, MSGTR_OSDChapter,
- current, demuxer->chapters[current].name);
+ break;
} break;
default : {
#ifdef HAVE_NEW_GUI
More information about the MPlayer-cvslog
mailing list