From e0f2ddeb575f2093f217caeece2dee0c88f42373 Mon Sep 17 00:00:00 2001 From: Martin Pulec Date: Wed, 24 Nov 2021 18:45:13 +0100 Subject: [PATCH] lavc JPEG: fixed broken JPEG if threads=no Fixed broken JPEG produced by current FFmpeg if slices > 1 and threads = 1. --- src/video_compress/libavcodec.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/video_compress/libavcodec.cpp b/src/video_compress/libavcodec.cpp index bd4177e46..7e840de6a 100644 --- a/src/video_compress/libavcodec.cpp +++ b/src/video_compress/libavcodec.cpp @@ -781,7 +781,8 @@ bool set_codec_ctx_params(struct state_video_compress_libav *s, AVPixelFormat pi codec_params[ug_codec].set_param(s->codec_ctx, &s->params); set_thread_mode(s->codec_ctx, &s->params); - s->codec_ctx->slices = max(s->params.thread_count, MIN_SLICE_COUNT); + // currently FFmpeg JPEG encoder produces broken JPEGs if not using encoding threads and slices > 1 + s->codec_ctx->slices = s->codec_ctx->codec_id != AV_CODEC_ID_MJPEG || s->codec_ctx->thread_count > 1 ? max(s->params.thread_count, MIN_SLICE_COUNT) : 1; if (!s->params.have_preset) { string preset{};