summaryrefslogtreecommitdiffstats
path: root/dec_video.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-23 12:24:59 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-08-23 12:24:59 +0000
commite0840baae9fab20f7d94814abb01f71cc7ad28e1 (patch)
treef657fb4ca97df4233e07e062d1e1494c4e4f99c9 /dec_video.c
parent3ac8704a9fa08c91f86982210430cafbc1e091d4 (diff)
downloadmpv-e0840baae9fab20f7d94814abb01f71cc7ad28e1.tar.bz2
mpv-e0840baae9fab20f7d94814abb01f71cc7ad28e1.tar.xz
dec_video uninit
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1655 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'dec_video.c')
-rw-r--r--dec_video.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/dec_video.c b/dec_video.c
index ebbbc8b09b..93506329c0 100644
--- a/dec_video.c
+++ b/dec_video.c
@@ -140,6 +140,26 @@ int set_video_colors(sh_video_t *sh_video,char *item,int value){
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 @@ switch(sh_video->codec->driver){
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 @@ switch(sh_video->codec->driver){
break;
}
}
-
+ sh_video->inited=1;
return 1;
}