]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/frame_thread_encoder.c
Merge commit '984e3398662d460e15904f9e4a6df9ef759070cb'
[ffmpeg] / libavcodec / frame_thread_encoder.c
index 786599679decaaf4eb0cd1e1468655b8decf82d7..3ab5b91038b77741dcacee9d7c63f70f3131e1a5 100644 (file)
@@ -139,6 +139,17 @@ int ff_frame_thread_encoder_init(AVCodecContext *avctx, AVDictionary *options){
         av_log(avctx, AV_LOG_WARNING,
                "MJPEG CBR encoding works badly with frame multi-threading, consider "
                "using -threads 1, -thread_type slice or a constant quantizer.\n");
+
+    if (avctx->codec_id == AV_CODEC_ID_HUFFYUV ||
+        avctx->codec_id == AV_CODEC_ID_FFVHUFF) {
+        // huffyuv doesnt support these with multiple frame threads currently
+        if (avctx->context_model > 0 || (avctx->flags & CODEC_FLAG_PASS1)) {
+            av_log(avctx, AV_LOG_WARNING,
+               "Forcing thread count to 1 for huffyuv encoding with first pass or context 1\n");
+            avctx->thread_count = 1;
+        }
+    }
+
     if(!avctx->thread_count) {
         avctx->thread_count = av_cpu_count();
         avctx->thread_count = FFMIN(avctx->thread_count, MAX_THREADS);
@@ -147,13 +158,6 @@ int ff_frame_thread_encoder_init(AVCodecContext *avctx, AVDictionary *options){
     if(avctx->thread_count <= 1)
         return 0;
 
-    if (avctx->codec_id == AV_CODEC_ID_HUFFYUV ||
-        avctx->codec_id == AV_CODEC_ID_FFVHUFF) {
-        // huffyuv doesnt support these with multiple frame threads currently
-        if (avctx->context_model > 0 || (avctx->flags & CODEC_FLAG_PASS1))
-            return 0;
-    }
-
     if(avctx->thread_count > MAX_THREADS)
         return AVERROR(EINVAL);