summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlaaz <laaz@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-01 22:48:50 +0000
committerlaaz <laaz@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-01 22:48:50 +0000
commitd2291f791c60433ca329a0f8a3a4b663ecc717df (patch)
tree3ff9253e1eacb8d825f2c8985d91ead352b54ce2
parentd1e5e3c58beba7dbf6ad683d85a06d1d0250565d (diff)
downloadmpv-d2291f791c60433ca329a0f8a3a4b663ecc717df.tar.bz2
mpv-d2291f791c60433ca329a0f8a3a4b663ecc717df.tar.xz
when using -ss:
"seek seconds" -> "super seek" now it understands 1:22:41.4 2:13 style time git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@938 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--cfg-mplayer.h2
-rw-r--r--mplayer.c17
-rw-r--r--mplayer.h4
3 files changed, 16 insertions, 7 deletions
diff --git a/cfg-mplayer.h b/cfg-mplayer.h
index c548283d8e..47ffdf468f 100644
--- a/cfg-mplayer.h
+++ b/cfg-mplayer.h
@@ -71,7 +71,7 @@ struct config conf[]={
{"bg", &play_in_bg, CONF_TYPE_FLAG, 0, 0, 1},
{"nobg", &play_in_bg, CONF_TYPE_FLAG, 0, 1, 0},
{"sb", &seek_to_byte, CONF_TYPE_INT, CONF_MIN, 0, 0},
- {"ss", &seek_to_sec, CONF_TYPE_INT, CONF_MIN, 0, 0},
+ {"ss", &seek_to_sec, CONF_TYPE_STRING, CONF_MIN, 0, 0},
{"sound", &has_audio, CONF_TYPE_FLAG, 0, 0, 1},
{"nosound", &has_audio, CONF_TYPE_FLAG, 0, 1, 0},
{"abs", &audio_buffer_size, CONF_TYPE_INT, CONF_MIN, 0, 0},
diff --git a/mplayer.c b/mplayer.c
index 682b9e125f..5e6d752410 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -445,7 +445,7 @@ extern int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int m
char* filename=NULL; //"MI2-Trailer.avi";
int i;
-int seek_to_sec=0;
+char *seek_to_sec=NULL;
int seek_to_byte=0;
int f; // filedes
stream_t* stream=NULL;
@@ -513,7 +513,7 @@ int osd_visible=100;
int osd_function=OSD_PLAY;
int osd_last_pts=-303;
-int rel_seek_secs=0;
+float rel_seek_secs=0;
#include "mixer.h"
#include "cfg-mplayer.h"
@@ -2155,9 +2155,18 @@ switch(sh_video->codec->driver){
break;
}
if (seek_to_sec) {
- rel_seek_secs += seek_to_sec;
- seek_to_sec = 0;
+ int a,b; float d;
+
+ if (sscanf(seek_to_sec, "%d:%d:%f", &a,&b,&d)==3)
+ rel_seek_secs += 3600*a +60*b +d ;
+ else if (sscanf(seek_to_sec, "%d:%f", &a, &d)==2)
+ rel_seek_secs += 60*a +d;
+ else if (sscanf(seek_to_sec, "%f", &d)==1)
+ rel_seek_secs += d;
+
+ seek_to_sec = NULL;
}
+
if(rel_seek_secs)
if(file_format==DEMUXER_TYPE_AVI && demuxer->idx_size<=0){
printf("Can't seek in raw .AVI streams! (index required, try with the -idx switch!) \n");
diff --git a/mplayer.h b/mplayer.h
index cc2e79fd53..239dd2428b 100644
--- a/mplayer.h
+++ b/mplayer.h
@@ -6,7 +6,7 @@ extern int divx_quality;
extern char* filename;
extern int i;
-extern int seek_to_sec;
+extern char *seek_to_sec;
extern int seek_to_byte;
extern int f; // filedes
extern int stream_type;
@@ -70,7 +70,7 @@ extern int verbose;
extern int osd_level;
extern int nogui;
-extern int rel_seek_secs;
+extern float rel_seek_secs;
extern int osd_visible;
extern int osd_function;