[Mplayer-cvslog] CVS: main mencoder.c,1.83,1.84 cfg-mencoder.h,1.26,1.27
Richard Felker CVS
rfelker at mplayer.dev.hu
Sun Feb 10 01:07:42 CET 2002
Update of /cvsroot/mplayer/main
In directory mplayer:/var/tmp.root/cvs-serv11814
Modified Files:
mencoder.c cfg-mencoder.h
Log Message:
initial seeking (-ss) support in mencoder
make mplayer's default video encoder fallback to libavcodec or raw if divx4 isn't supported
Index: mencoder.c
===================================================================
RCS file: /cvsroot/mplayer/main/mencoder.c,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -r1.83 -r1.84
--- mencoder.c 7 Feb 2002 20:22:03 -0000 1.83
+++ mencoder.c 10 Feb 2002 00:07:34 -0000 1.84
@@ -125,7 +125,17 @@
int out_audio_codec=ACODEC_PCM;
#endif
-int out_video_codec=VCODEC_DIVX4;
+int out_video_codec=
+#ifdef HAVE_DIVX4ENCORE
+ VCODEC_DIVX4;
+#else
+#ifdef USE_LIBAVCODEC
+ VCODEC_LIBAVCODEC;
+#else
+ VCODEC_RAW;
+#endif
+#endif
+
// audio stream skip/resync functions requires only for seeking.
// (they should be implemented in the audio codec layer)
@@ -198,6 +208,9 @@
return m_config_parse_config_file(mconfig, filename);
}
+static char *seek_to_sec=NULL;
+static off_t seek_to_byte=0;
+
static int parse_end_at(struct config *conf, const char* param);
static uint8_t* flip_upside_down(uint8_t* dst, const uint8_t* src, int width, int height);
@@ -597,7 +610,7 @@
} // if(out_video_codec)
-if(sh_audio && (out_audio_codec || !sh_audio->wf)){
+if(sh_audio && (out_audio_codec || seek_to_sec || !sh_audio->wf)){
// Go through the codec.conf and find the best codec...
sh_audio->codec=NULL;
if(audio_family!=-1) mp_msg(MSGT_MENCODER,MSGL_INFO,MSGTR_TryForceAudioFmt,audio_family);
@@ -622,7 +635,7 @@
}
}
-if(sh_audio && (out_audio_codec || !sh_audio->wf)){
+if(sh_audio && (out_audio_codec || seek_to_sec || !sh_audio->wf)){
mp_msg(MSGT_MENCODER,MSGL_V,"Initializing audio codec...\n");
if(!init_audio(sh_audio)){
mp_msg(MSGT_MENCODER,MSGL_ERR,MSGTR_CouldntInitAudioCodec);
@@ -1193,6 +1206,19 @@
signal(SIGTERM,exit_sighandler); // kill
timer_start=GetTimerMS();
+
+if (seek_to_sec) {
+ int a,b; float d;
+
+ if (sscanf(seek_to_sec, "%d:%d:%f", &a,&b,&d)==3)
+ d += 3600*a + 60*b;
+ else if (sscanf(seek_to_sec, "%d:%f", &a, &d)==2)
+ d += 60*a;
+ else
+ sscanf(seek_to_sec, "%f", &d);
+
+ demux_seek(demuxer, d, 1);
+}
while(!eof){
Index: cfg-mencoder.h
===================================================================
RCS file: /cvsroot/mplayer/main/cfg-mencoder.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- cfg-mencoder.h 7 Feb 2002 20:22:03 -0000 1.26
+++ cfg-mencoder.h 10 Feb 2002 00:07:34 -0000 1.27
@@ -96,6 +96,8 @@
/* name, pointer, type, flags, min, max */
{"include", cfg_include, CONF_TYPE_FUNC_PARAM, CONF_NOSAVE, 0, 0, NULL}, /* this must be the first!!! */
+// {"sb", &seek_to_byte, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL},
+ {"ss", &seek_to_sec, CONF_TYPE_STRING, CONF_MIN, 0, 0, NULL},
{"endpos", parse_end_at, CONF_TYPE_FUNC_PARAM, 0, 0, 0, NULL},
{"ofps", &force_ofps, CONF_TYPE_FLOAT, CONF_MIN, 0, 0, NULL},
More information about the MPlayer-cvslog
mailing list