[Mplayer-cvslog] CVS: main mplayer.c,1.232,1.233
Arpi of Ize
arpi at mplayer.dev.hu
Thu Aug 23 01:48:21 CEST 2001
Update of /cvsroot/mplayer/main
In directory mplayer:/var/tmp.root/cvs-serv11762
Modified Files:
mplayer.c
Log Message:
free stream/demuxer. continue playback with next file if error found
Index: mplayer.c
===================================================================
RCS file: /cvsroot/mplayer/main/mplayer.c,v
retrieving revision 1.232
retrieving revision 1.233
diff -u -r1.232 -r1.233
--- mplayer.c 22 Aug 2001 21:35:44 -0000 1.232
+++ mplayer.c 22 Aug 2001 23:48:18 -0000 1.233
@@ -587,7 +587,8 @@
curr_filename=0;
play_next_file:
filename=(num_filenames>0)?filenames[curr_filename]:NULL;
-
+ demuxer=NULL; stream=NULL;
+
#ifdef USE_LIBVO2
current_module="vo2_new";
video_out=vo2_new(video_driver);
@@ -656,7 +657,7 @@
current_module="open_stream";
stream=open_stream(filename,vcd_track,&file_format);
- if(!stream) exit_player(MSGTR_Exit_error); // error...
+ if(!stream) goto goto_next_file;// exit_player(MSGTR_Exit_error); // error...
stream->start_pos+=seek_to_byte;
use_stdin=filename && (!strcmp(filename,"-"));
@@ -687,7 +688,7 @@
current_module="demux_open";
demuxer=demux_open(stream,file_format,audio_id,video_id,dvdsub_id);
-if(!demuxer) exit_player(MSGTR_Exit_error); // ERROR
+if(!demuxer) goto goto_next_file; // exit_player(MSGTR_Exit_error); // ERROR
file_format=demuxer->file_format;
@@ -739,7 +740,7 @@
if(sh_video){
- if(!video_read_properties(sh_video)) exit_player(MSGTR_Exit_error); // couldn't read header?
+ if(!video_read_properties(sh_video)) goto goto_next_file; // exit_player(MSGTR_Exit_error); // couldn't read header?
mp_msg(MSGT_CPLAYER,MSGL_INFO,"[V] filefmt:%d fourcc:0x%X size:%dx%d fps:%5.2f ftime:=%6.4f\n",
file_format,sh_video->format, sh_video->disp_w,sh_video->disp_h,
@@ -748,7 +749,7 @@
if(!sh_video->fps && !force_fps){
mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_FPSnotspecified);
- exit_player(MSGTR_Exit_error);
+ goto goto_next_file; // exit_player(MSGTR_Exit_error);
}
}
@@ -757,7 +758,7 @@
if(!sh_video){
mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_NoVideoStream);
- exit_player(MSGTR_Exit_error);
+ goto goto_next_file; // exit_player(MSGTR_Exit_error);
}
//================== Init AUDIO (codec) ==========================
@@ -819,7 +820,7 @@
}
mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CantFindVideoCodec,sh_video->format);
mp_msg(MSGT_CPLAYER,MSGL_HINT, MSGTR_TryUpgradeCodecsConfOrRTFM,get_path("codecs.conf"));
- exit_player(MSGTR_Exit_error);
+ goto goto_next_file; // exit_player(MSGTR_Exit_error);
}
// is next line needed anymore? - atmos ::
if(!allow_dshow && sh_video->codec->driver==VFM_DSHOW) continue; // skip DShow
@@ -844,7 +845,7 @@
}
if(i>=CODECS_MAX_OUTFMT){
mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_VOincompCodec);
- exit_player(MSGTR_Exit_error);
+ goto goto_next_file; // exit_player(MSGTR_Exit_error);
}
sh_video->outfmtidx=i;
@@ -860,7 +861,7 @@
if(!init_video(sh_video)){
mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_CouldntInitVideoCodec);
- exit_player(MSGTR_Exit_error);
+ goto goto_next_file; // exit_player(MSGTR_Exit_error);
}
if(auto_quality>0){
@@ -967,18 +968,15 @@
if(!vo2_start(video_out,
sh_video->disp_w,sh_video->disp_h,out_fmt,0,
fullscreen|(vidmode<<1)|(softzoom<<2)|(flip<<3) )){
- mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_CannotInitVO );
- exit_player(MSGTR_Exit_error);
- }
#else
if(video_out->init(sh_video->disp_w,sh_video->disp_h,
screen_size_x,screen_size_y,
fullscreen|(vidmode<<1)|(softzoom<<2)|(flip<<3),
title,out_fmt)){
+#endif
mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_CannotInitVO);
- exit_player(MSGTR_Exit_error);
+ goto goto_next_file; // exit_player(MSGTR_Exit_error);
}
-#endif
mp_msg(MSGT_CPLAYER,MSGL_V,"INFO: Video OUT driver init OK!\n");
fflush(stdout);
@@ -1777,8 +1775,8 @@
}
-++curr_filename;
-if(curr_filename<num_filenames){
+
+if(curr_filename+1<num_filenames){
// partial uninit:
// restore terminal:
@@ -1787,17 +1785,33 @@
#endif
getch2_disable();
+ current_module="uninit_vo";
+
#ifdef USE_LIBVO2
if(video_out) vo2_close(video_out);
#else
if(video_out) video_out->uninit();
#endif
- video_out=NULL;
+
+ current_module="uninit_ao";
if(audio_out) audio_out->uninit();
- audio_out=NULL;
// if(encode_name) avi_fixate();
+}
+
+goto_next_file: // don't jump here after ao/vo/getch initialization!
+ ++curr_filename;
+if(curr_filename<num_filenames){
+
+ current_module="free_demuxer";
+ if(demuxer) free_demuxer(demuxer);
+
+ current_module="free_stream";
+ if(stream) free_stream(stream);
+
+ video_out=NULL;
+ audio_out=NULL;
- goto play_next_file;
+ goto play_next_file;
}
exit_player(MSGTR_Exit_eof);
More information about the MPlayer-cvslog
mailing list