On 24.11.2014 01:17, Lukasz Marek wrote:
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
I created a patch for xvid, but I have problem to contact them. But I
will eventually.
Code to reproduce:
...
AVCodec *selected = NULL;
int main(void)
{
avcodec_register_all();
AVCodec *codec = NULL;
AVCodecContext *ctx;
av_log_set_level(AV_LOG_ERROR);
selected = avcodec_find_encoder_by_name("libxvid");
while (codec = av_codec_next(codec)) {
if (av_codec_is_decoder(codec))
continue;
if (selected && strcmp(selected->name, codec->name))
continue;
if (codec->type == AVMEDIA_TYPE_AUDIO)
continue;
ctx = avcodec_alloc_context3(NULL);
if (codec->type == AVMEDIA_TYPE_VIDEO) {
ctx->pix_fmt = AV_PIX_FMT_NONE;
if (codec->pix_fmts)
ctx->pix_fmt = codec->pix_fmts[0];
if (ctx->pix_fmt == AV_PIX_FMT_NONE)
ctx->pix_fmt = AV_PIX_FMT_RGB24;
ctx->width = 2;
ctx->height = 2;
}
if (avcodec_open2(ctx, codec, NULL) < 0)
printf("%s failed\n", codec->name);
avcodec_close(ctx);
avcodec_free_context(&ctx);
}
}
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel