i_thread_count = __MIN( i_thread_count, 16 );
msg_Dbg( p_dec, "allowing %d thread(s) for decoding", i_thread_count );
p_sys->p_context->thread_count = i_thread_count;
+
+ if( i_codec_id == AV_CODEC_ID_MPEG4 )
+ p_sys->p_context->thread_count = 1;
+
#endif
char *hw = var_CreateGetString( p_dec, "avcodec-hw" ); /* FIXME */
i_codec_id == AV_CODEC_ID_H264 ||
i_codec_id == AV_CODEC_ID_VC1 || i_codec_id == AV_CODEC_ID_WMV3) )
{
-#if defined(HAVE_AVCODEC_MT) && LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 1, 0)
+#if defined(HAVE_AVCODEC_MT) //&& LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 1, 0)
if( p_sys->p_context->thread_type & FF_THREAD_FRAME )
{
- msg_Warn( p_dec, "threaded frame decoding is not compatible with libavcodec-hw, disabled" );
+ msg_Warn( p_dec, "threaded frame decoding is not compatible with avcodec-hw, disabled" );
p_sys->p_context->thread_type &= ~FF_THREAD_FRAME;
}
if( ( p_sys->p_context->thread_type & FF_THREAD_SLICE ) &&
( i_codec_id == AV_CODEC_ID_MPEG1VIDEO || i_codec_id == AV_CODEC_ID_MPEG2VIDEO ) )
{
- msg_Warn( p_dec, "threaded slice decoding is not compatible with libavcodec-hw, disabled" );
+ msg_Warn( p_dec, "threaded slice decoding is not compatible with avcodec-hw, disabled" );
p_sys->p_context->thread_type &= ~FF_THREAD_SLICE;
}
#endif
if( vlc_va_Get( p_va, p_ff_pic ) )
{
- msg_Err( p_dec, "VaGrabSurface failed" );
+ msg_Err( p_dec, "vlc_va_Get failed" );
return -1;
}
{
decoder_t *p_dec = (decoder_t *)p_context->opaque;
decoder_sys_t *p_sys = p_dec->p_sys;
- vlc_va_t *p_va = p_sys->p_va;
int i_width = p_context->width;
int i_height = p_context->height;
}
p_context->draw_horiz_band = NULL;
+ post_mt( p_sys );
p_ff_pic->opaque = (void*)p_pic;
p_ff_pic->type = FF_BUFFER_TYPE_USER;
p_ff_pic->linesize[2] = p_pic->p[2].i_pitch;
p_ff_pic->linesize[3] = 0;
- post_mt( p_sys );
return 0;
}