[Mplayer-cvslog] CVS: main mplayer.c,1.235,1.236 dec_video.c,1.29,1.30

Arpi of Ize arpi at mplayer.dev.hu
Thu Aug 23 14:25:05 CEST 2001


Update of /cvsroot/mplayer/main
In directory mplayer:/var/tmp.root/cvs-serv4865

Modified Files:
	mplayer.c dec_video.c 
Log Message:
dec_video uninit

Index: mplayer.c
===================================================================
RCS file: /cvsroot/mplayer/main/mplayer.c,v
retrieving revision 1.235
retrieving revision 1.236
diff -u -r1.235 -r1.236
--- mplayer.c	23 Aug 2001 11:42:21 -0000	1.235
+++ mplayer.c	23 Aug 2001 12:24:59 -0000	1.236
@@ -594,7 +594,12 @@
   }
 #endif
 
-    demuxer=NULL; stream=NULL;
+    stream=NULL;
+    demuxer=NULL;
+    d_audio=NULL;
+    d_video=NULL;
+    sh_audio=NULL;
+    sh_video=NULL;
     
 #ifdef USE_LIBVO2
     current_module="vo2_new";
@@ -1808,6 +1813,9 @@
 goto_next_file:  // don't jump here after ao/vo/getch initialization!
     ++curr_filename;
 if(curr_filename<num_filenames){
+
+  current_module="uninit_vcodec";
+  if(sh_video) uninit_video(sh_video);
 
   current_module="free_demuxer";
   if(demuxer) free_demuxer(demuxer);

Index: dec_video.c
===================================================================
RCS file: /cvsroot/mplayer/main/dec_video.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- dec_video.c	23 Aug 2001 11:54:55 -0000	1.29
+++ dec_video.c	23 Aug 2001 12:24:59 -0000	1.30
@@ -140,6 +140,26 @@
     return 0;
 }
 
+int uninit_video(sh_video_t *sh_video){
+    if(!sh_video->inited) return;
+    printf("uninit video: %d  \n",sh_video->codec->driver);
+    switch(sh_video->codec->driver){
+    case VFM_FFMPEG:
+        if (avcodec_close(&lavc_context) < 0)
+    	    mp_msg(MSGT_DECVIDEO,MSGL_ERR, "could not close codec\n");
+	break;
+
+    case VFM_MPEG:
+	mpeg2_free_image_buffers (picture);
+	break;
+    }
+    if(sh_video->our_out_buffer){
+	free(sh_video->our_out_buffer);
+	sh_video->our_out_buffer=NULL;
+    }
+    sh_video->inited=0;
+}
+
 int init_video(sh_video_t *sh_video){
 unsigned int out_fmt=sh_video->codec->outfmt[sh_video->outfmtidx];
 
@@ -280,9 +300,13 @@
    mp_msg(MSGT_DECVIDEO,MSGL_ERR,"MPlayer was compiled WITHOUT libavcodec support!\n");
    return 0;
 #else
+   static int avcodec_inited=0;
    mp_msg(MSGT_DECVIDEO,MSGL_V,"FFmpeg's libavcodec video codec\n");
-    avcodec_init();
-    avcodec_register_all();
+    if(!avcodec_inited){
+      avcodec_init();
+      avcodec_register_all();
+      avcodec_inited=1;
+    }
     lavc_codec = (AVCodec *)avcodec_find_decoder_by_name(sh_video->codec->dll);
     if(!lavc_codec){
 	mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Can't find codec '%s' in libavcodec...\n",sh_video->codec->dll);
@@ -322,7 +346,7 @@
    break;
  }
 }
-
+  sh_video->inited=1;
   return 1;
 }
 




More information about the MPlayer-cvslog mailing list