codec: x265: handle X265_MAX_FRAME_THREADS on newer CPU
authorFrançois Cartegnie <fcvlcdev@free.fr>
Tue, 24 Sep 2024 11:43:08 +0000 (18:43 +0700)
committerSebastian Ramacher <sramacher@debian.org>
Tue, 21 Jan 2025 18:02:47 +0000 (19:02 +0100)
libx265 will bail out when hitting the limit

x265 [error]: frameNumThreads (--frame-threads) must be [0 .. X265_MAX_FRAME_THREADS)

(cherry picked from commit bbd294d1e46b86653873ec88d49e9a15cbaae68f)

Gbp-Pq: Name 0076-codec-x265-handle-X265_MAX_FRAME_THREADS-on-newer-CP.patch

modules/codec/x265.c

index 5585f2cbbb1781394a8c705b1c2ebd6c5013fdc8..2943ea6e9f275df5ed3cee6b548bafda07b1b51c 100644 (file)
 
 #include <x265.h>
 
+#ifndef X265_MAX_FRAME_THREADS
+# define X265_MAX_FRAME_THREADS 16
+#endif
+
 /*****************************************************************************
  * Module descriptor
  *****************************************************************************/
@@ -156,6 +160,8 @@ static int  Open (vlc_object_t *p_this)
     x265_param_default(param);
 
     param->frameNumThreads = vlc_GetCPUCount();
+    if(param->frameNumThreads > X265_MAX_FRAME_THREADS)
+        param->frameNumThreads = X265_MAX_FRAME_THREADS;
     param->bEnableWavefront = 0; // buggy in x265, use frame threading for now
     param->maxCUSize = 16; /* use smaller macroblock */