changeset 17080:b3ef98ca8677

multithreaded decoding
author michael
date Fri, 02 Dec 2005 22:00:50 +0000
parents c3893e949327
children f612d2cdb262
files libmpcodecs/vd_ffmpeg.c
diffstat 1 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/vd_ffmpeg.c	Fri Dec 02 19:43:36 2005 +0000
+++ b/libmpcodecs/vd_ffmpeg.c	Fri Dec 02 22:00:50 2005 +0000
@@ -111,6 +111,7 @@
 static char *lavc_param_skip_idct_str = NULL;
 static char *lavc_param_skip_frame_str = NULL;
 #endif
+static int lavc_param_threads=1;
 
 m_option_t lavc_decode_opts_conf[]={
 	{"bug", &lavc_param_workaround_bugs, CONF_TYPE_INT, CONF_RANGE, -1, 999999, NULL},
@@ -132,6 +133,7 @@
 	{"skipidct", &lavc_param_skip_idct_str, CONF_TYPE_STRING, 0, 0, 0, NULL},
 	{"skipframe", &lavc_param_skip_frame_str, CONF_TYPE_STRING, 0, 0, 0, NULL},
 #endif
+        {"threads", &lavc_param_threads, CONF_TYPE_INT, CONF_RANGE, 1, 8, NULL},
 	{NULL, NULL, 0, 0, 0, 0, NULL}
 };
 
@@ -407,6 +409,10 @@
     if(sh->bih)
 	avctx->bits_per_sample= sh->bih->biBitCount;
 
+#if LIBAVCODEC_BUILD >= 4716
+    if(lavc_param_threads > 1)
+        avcodec_thread_init(avctx, lavc_param_threads);
+#endif
     /* open it */
     if (avcodec_open(avctx, lavc_codec) < 0) {
         mp_msg(MSGT_DECVIDEO,MSGL_ERR, MSGTR_CantOpenCodec);