x264: make threads configurable

Closes: #3366
(cherry picked from commit e6f5e3b0b59feaa08873c0406f85e5a8632881c7)
This commit is contained in:
Koichiro Iwao
2024-12-27 00:05:00 +09:00
parent 4c8c7731f2
commit ad5b76dd36
14 changed files with 41 additions and 1 deletions
+1
View File
@@ -9,6 +9,7 @@ vbv_max_bitrate = 0
vbv_buffer_size = 0
fps_num = 24
fps_den = 1
threads = 1
[x264.lan]
[x264.wan]
@@ -9,6 +9,7 @@ vbv_max_bitrate = 0
vbv_buffer_size = 0
fps_num = 24
fps_den = 1
threads = 1
[x264.lan]
[x264.wan]
@@ -9,6 +9,7 @@ vbv_max_bitrate = 0
vbv_buffer_size = 0
fps_num = 24
fps_den = 1
threads = 1
[x264.lan]
[x264.wan]
+1
View File
@@ -9,6 +9,7 @@ vbv_max_bitrate = 0
vbv_buffer_size = 0
fps_num = 24
fps_den = 1
threads = 1
[x264.lan]
[x264.wan]
@@ -9,6 +9,7 @@ vbv_max_bitrate = 0
vbv_buffer_size = 0
fps_num = 24
fps_den = 1
threads = 1
[x264.lan]
[x264.wan]
@@ -9,6 +9,7 @@ vbv_max_bitrate = 0
vbv_buffer_size = 0
fps_num = 24
fps_den = 1
threads = 1
[x264.lan]
[x264.wan]
@@ -19,6 +19,7 @@ vbv_max_bitrate = 0
vbv_buffer_size = 0
fps_num = 60
fps_den = 1
threads = 1
[x264.lan]
# inherits default
@@ -19,6 +19,7 @@ vbv_max_bitrate = 0
vbv_buffer_size = 0
fps_num = 60
fps_den = 1
threads = 1
[x264.lan]
# inherits default
@@ -19,6 +19,7 @@ vbv_max_bitrate = 0
vbv_buffer_size = 0
fps_num = 60
fps_den = 1
threads = 1
[x264.lan]
# inherits default
@@ -19,6 +19,7 @@ vbv_max_bitrate = 0
vbv_buffer_size = 0
fps_num = 60
fps_den = 1
threads = 1
[x264.lan]
# inherits default
+1
View File
@@ -19,6 +19,7 @@ vbv_max_bitrate = 0
vbv_buffer_size = 0
fps_num = 60
fps_den = 1
threads = 1 # recommended: 1 or 2, see `man gfx.toml` for details
[x264.lan]
# inherits default
+1 -1
View File
@@ -153,7 +153,7 @@ xrdp_encoder_x264_encode(void *handle, int session, int left, int top,
x264_param_default_preset(&(xe->x264_params),
xg->x264_param[ct].preset,
xg->x264_param[ct].tune);
xe->x264_params.i_threads = 1;
xe->x264_params.i_threads = xg->x264_param[ct].threads;
xe->x264_params.i_width = (width + 15) & ~15;
xe->x264_params.i_height = (height + 15) & ~15;
xe->x264_params.i_fps_num = xg->x264_param[ct].fps_num;
+28
View File
@@ -47,6 +47,7 @@
#define X264_DEFAULT_PROFILE "main"
#define X264_DEFAULT_FPS_NUM 24
#define X264_DEFAULT_FPS_DEN 1
#define X264_DEFAULT_THREADS 1 /* not to exhaust CPU threads for 1 user */
const char *
tconfig_codec_order_to_str(
@@ -334,6 +335,33 @@ tconfig_load_gfx_x264_ct(toml_table_t *tfile, const int connection_type,
param[connection_type].fps_den = X264_DEFAULT_FPS_DEN;
}
/* threads */
datum = toml_int_in(x264_ct, "threads");
if (datum.ok)
{
if (datum.u.i >= 0)
{
param[connection_type].threads = datum.u.i;
}
else
{
TCLOG(LOG_LEVEL_WARNING,
"[x264.%s] an invalid value (< 0) is specified for threads, "
"adopting the default value [%d]",
rdpbcgr_connection_type_names[connection_type],
X264_DEFAULT_THREADS);
param[connection_type].threads = X264_DEFAULT_THREADS;
}
}
else if (connection_type == 0)
{
TCLOG(LOG_LEVEL_WARNING,
"[x264.%s] threads is not set, adopting the default value [%d]",
rdpbcgr_connection_type_names[connection_type],
X264_DEFAULT_THREADS);
param[connection_type].threads = X264_DEFAULT_THREADS;
}
return 0;
}
+1
View File
@@ -42,6 +42,7 @@ struct xrdp_tconfig_gfx_x264_param
int vbv_buffer_size;
int fps_num;
int fps_den;
int threads;
};
struct xrdp_tconfig_gfx_openh264_param