diff -uNrp src/src/core/haalivideo.cpp wrk/src/core/haalivideo.cpp --- src/src/core/haalivideo.cpp 2010-01-24 23:56:05 +0200 +++ wrk/src/core/haalivideo.cpp 2010-04-07 15:25:27 +0300 @@ -107,6 +107,11 @@ FFHaaliVideo::FFHaaliVideo(const char *S CodecContext->extradata = FFMS_GET_VECTOR_PTR(CodecPrivate); CodecContext->extradata_size = CodecPrivateSize; CodecContext->thread_count = Threads; + if (Threads > 1) + if (avcodec_thread_init(CodecContext, Threads)) { + Threads = 1; + CodecContext->thread_count = Threads; + } if (Codec == NULL) throw FFMS_Exception(FFMS_ERROR_DECODING, FFMS_ERROR_CODEC, diff -uNrp src/src/core/lavfvideo.cpp wrk/src/core/lavfvideo.cpp --- src/src/core/lavfvideo.cpp 2010-01-24 23:56:05 +0200 +++ wrk/src/core/lavfvideo.cpp 2010-04-07 15:25:41 +0300 @@ -46,6 +46,11 @@ FFLAVFVideo::FFLAVFVideo(const char *Sou CodecContext = FormatContext->streams[VideoTrack]->codec; CodecContext->thread_count = Threads; + if (Threads > 1) + if (avcodec_thread_init(CodecContext, Threads)) { + Threads = 1; + CodecContext->thread_count = Threads; + } Codec = avcodec_find_decoder(CodecContext->codec_id); if (Codec == NULL) diff -uNrp src/src/core/matroskavideo.cpp wrk/src/core/matroskavideo.cpp --- src/src/core/matroskavideo.cpp 2010-01-24 23:56:05 +0200 +++ wrk/src/core/matroskavideo.cpp 2010-04-07 15:26:14 +0300 @@ -77,6 +77,11 @@ FFMatroskaVideo::FFMatroskaVideo(const c CodecContext = avcodec_alloc_context(); CodecContext->thread_count = Threads; + if (Threads > 1) + if (avcodec_thread_init(CodecContext, Threads)) { + Threads = 1; + CodecContext->thread_count = Threads; + } Codec = avcodec_find_decoder(MatroskaToFFCodecID(TI->CodecID, TI->CodecPrivate)); if (Codec == NULL)