libxvidcore calculate number of threads basing on video height. If height is small enough it allocates 0 bytes long memory and writes to it. Setting thread_count to 0 uses 1 thread and skips bugged code.
Signed-off-by: Lukasz Marek <lukasz.m.lu...@gmail.com> --- libavcodec/libxvid.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libavcodec/libxvid.c b/libavcodec/libxvid.c index 70d52b9..efe7b8a 100644 --- a/libavcodec/libxvid.c +++ b/libavcodec/libxvid.c @@ -471,6 +471,17 @@ static av_cold int xvid_encode_init(AVCodecContext *avctx) xvid_enc_create.num_zones = 0; xvid_enc_create.num_threads = avctx->thread_count; + /* workaround for a bug in libxvidcore */ + if (avctx->height < 18) { + if (avctx->thread_count < 2) { + xvid_enc_create.num_threads = 0; + } else { + av_log(avctx, AV_LOG_ERROR, + "Too small height for threads > 1."); + ret = AVERROR(EINVAL); + goto fail; + } + } xvid_enc_create.plugins = plugins; xvid_enc_create.num_plugins = 0; -- 1.9.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel