tests: add tests for OpenH264 params and prefered H264 encoder
(cherry picked from commit 92bd0812a398bc8d966e978cac32d3f80ffb1df2)
This commit is contained in:
@@ -22,12 +22,17 @@ EXTRA_DIST = \
|
||||
test1.jpg \
|
||||
test_alpha_blend.png \
|
||||
gfx/gfx.toml \
|
||||
gfx/gfx_codec_order_undefined.toml \
|
||||
gfx/gfx_codec_h264_preferred.toml \
|
||||
gfx/gfx_codec_h264_only.toml \
|
||||
gfx/gfx_codec_rfx_preferred.toml \
|
||||
gfx/gfx_codec_h264_preferred.toml \
|
||||
gfx/gfx_codec_order_undefined.toml \
|
||||
gfx/gfx_codec_rfx_only.toml \
|
||||
gfx/gfx_codec_rfx_preferred_odd.toml \
|
||||
gfx/gfx_codec_rfx_only.toml
|
||||
gfx/gfx_codec_rfx_preferred.toml \
|
||||
gfx/gfx_h264_encoder_invalid.toml \
|
||||
gfx/gfx_h264_encoder_openh264.toml \
|
||||
gfx/gfx_h264_encoder_undefined.toml \
|
||||
gfx/gfx_h264_encoder_x264.toml \
|
||||
gfx/gfx_missing_h264.toml
|
||||
|
||||
TESTS = test_xrdp
|
||||
check_PROGRAMS = test_xrdp
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
[codec]
|
||||
order = [ "H.264", "RFX" ]
|
||||
|
||||
# Specify a preferred H.264 encoder, "x264" or "OpenH264".
|
||||
# This parameter takes effect only when more than one encoder is
|
||||
# enabled at compile time. If only one encoder is enabled, the encoder
|
||||
# will be used regardless the value of this parameter.
|
||||
h264_encoder = "FreeH264"
|
||||
|
||||
#
|
||||
# Configurations for x264
|
||||
#
|
||||
[x264.default]
|
||||
# NOTE: x264 specifies bitrate in unit of kbps.
|
||||
preset = "ultrafast"
|
||||
tune = "zerolatency"
|
||||
profile = "main" # profile is forced to baseline if preset == ultrafast
|
||||
vbv_max_bitrate = 0
|
||||
vbv_buffer_size = 0
|
||||
fps_num = 60
|
||||
fps_den = 1
|
||||
|
||||
[x264.lan]
|
||||
# inherits default
|
||||
|
||||
[x264.wan]
|
||||
vbv_max_bitrate = 15_000
|
||||
vbv_buffer_size = 1_500
|
||||
|
||||
[x264.broadband_high]
|
||||
preset = "superfast"
|
||||
vbv_max_bitrate = 8_000
|
||||
vbv_buffer_Size = 800
|
||||
|
||||
[x264.satellite]
|
||||
preset = "superfast"
|
||||
vbv_max_bitrate = 5_000
|
||||
vbv_buffer_size = 500
|
||||
|
||||
[x264.broadband_low]
|
||||
preset = "veryfast"
|
||||
vbv_max_bitrate = 1_600
|
||||
vbv_buffer_size = 66
|
||||
|
||||
[x264.modem]
|
||||
preset = "fast"
|
||||
vbv_max_bitrate = 1_200
|
||||
vbv_buffer_size = 50
|
||||
|
||||
#
|
||||
# Configurations for OpenH264
|
||||
#
|
||||
[OpenH264.default]
|
||||
# NOTE: OpenH264 specifies bitrate in unit of bps, not kbps.
|
||||
EnableFrameSkip = false
|
||||
TargetBitrate = 20_000_000
|
||||
MaxBitrate = 0 # unspecified
|
||||
MaxFrameRate = 60.0
|
||||
|
||||
[OpenH264.lan]
|
||||
# inherits default
|
||||
|
||||
[OpenH264.wan]
|
||||
TargetBitrate = 10_000_000
|
||||
MaxBitrate = 12_000_000
|
||||
|
||||
[OpenH264.broadband_high]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 8_000_000
|
||||
MaxBitrate = 10_000_000
|
||||
|
||||
[OpenH264.satellite]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 4_000_000
|
||||
MaxBitrate = 6_000_000
|
||||
|
||||
[OpenH264.broadband_low]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 1_600_000
|
||||
MaxBitrate = 1_800_000
|
||||
|
||||
[OpenH264.modem]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 600_000
|
||||
MaxBitrate = 1_200_000
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
[codec]
|
||||
order = [ "H.264", "RFX" ]
|
||||
|
||||
# Specify a preferred H.264 encoder, "x264" or "OpenH264".
|
||||
# This parameter takes effect only when more than one encoder is
|
||||
# enabled at compile time. If only one encoder is enabled, the encoder
|
||||
# will be used regardless the value of this parameter.
|
||||
h264_encoder = "OpenH264"
|
||||
|
||||
#
|
||||
# Configurations for x264
|
||||
#
|
||||
[x264.default]
|
||||
# NOTE: x264 specifies bitrate in unit of kbps.
|
||||
preset = "ultrafast"
|
||||
tune = "zerolatency"
|
||||
profile = "main" # profile is forced to baseline if preset == ultrafast
|
||||
vbv_max_bitrate = 0
|
||||
vbv_buffer_size = 0
|
||||
fps_num = 60
|
||||
fps_den = 1
|
||||
|
||||
[x264.lan]
|
||||
# inherits default
|
||||
|
||||
[x264.wan]
|
||||
vbv_max_bitrate = 15_000
|
||||
vbv_buffer_size = 1_500
|
||||
|
||||
[x264.broadband_high]
|
||||
preset = "superfast"
|
||||
vbv_max_bitrate = 8_000
|
||||
vbv_buffer_Size = 800
|
||||
|
||||
[x264.satellite]
|
||||
preset = "superfast"
|
||||
vbv_max_bitrate = 5_000
|
||||
vbv_buffer_size = 500
|
||||
|
||||
[x264.broadband_low]
|
||||
preset = "veryfast"
|
||||
vbv_max_bitrate = 1_600
|
||||
vbv_buffer_size = 66
|
||||
|
||||
[x264.modem]
|
||||
preset = "fast"
|
||||
vbv_max_bitrate = 1_200
|
||||
vbv_buffer_size = 50
|
||||
|
||||
#
|
||||
# Configurations for OpenH264
|
||||
#
|
||||
[OpenH264.default]
|
||||
# NOTE: OpenH264 specifies bitrate in unit of bps, not kbps.
|
||||
EnableFrameSkip = false
|
||||
TargetBitrate = 20_000_000
|
||||
MaxBitrate = 0 # unspecified
|
||||
MaxFrameRate = 60.0
|
||||
|
||||
[OpenH264.lan]
|
||||
# inherits default
|
||||
|
||||
[OpenH264.wan]
|
||||
TargetBitrate = 10_000_000
|
||||
MaxBitrate = 12_000_000
|
||||
|
||||
[OpenH264.broadband_high]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 8_000_000
|
||||
MaxBitrate = 10_000_000
|
||||
|
||||
[OpenH264.satellite]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 4_000_000
|
||||
MaxBitrate = 6_000_000
|
||||
|
||||
[OpenH264.broadband_low]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 1_600_000
|
||||
MaxBitrate = 1_800_000
|
||||
|
||||
[OpenH264.modem]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 600_000
|
||||
MaxBitrate = 1_200_000
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
[codec]
|
||||
order = [ "H.264", "RFX" ]
|
||||
|
||||
# Specify a preferred H.264 encoder, "x264" or "OpenH264".
|
||||
# This parameter takes effect only when more than one encoder is
|
||||
# enabled at compile time. If only one encoder is enabled, the encoder
|
||||
# will be used regardless the value of this parameter.
|
||||
#h264_encoder = "OpenH264"
|
||||
|
||||
#
|
||||
# Configurations for x264
|
||||
#
|
||||
[x264.default]
|
||||
# NOTE: x264 specifies bitrate in unit of kbps.
|
||||
preset = "ultrafast"
|
||||
tune = "zerolatency"
|
||||
profile = "main" # profile is forced to baseline if preset == ultrafast
|
||||
vbv_max_bitrate = 0
|
||||
vbv_buffer_size = 0
|
||||
fps_num = 60
|
||||
fps_den = 1
|
||||
|
||||
[x264.lan]
|
||||
# inherits default
|
||||
|
||||
[x264.wan]
|
||||
vbv_max_bitrate = 15_000
|
||||
vbv_buffer_size = 1_500
|
||||
|
||||
[x264.broadband_high]
|
||||
preset = "superfast"
|
||||
vbv_max_bitrate = 8_000
|
||||
vbv_buffer_Size = 800
|
||||
|
||||
[x264.satellite]
|
||||
preset = "superfast"
|
||||
vbv_max_bitrate = 5_000
|
||||
vbv_buffer_size = 500
|
||||
|
||||
[x264.broadband_low]
|
||||
preset = "veryfast"
|
||||
vbv_max_bitrate = 1_600
|
||||
vbv_buffer_size = 66
|
||||
|
||||
[x264.modem]
|
||||
preset = "fast"
|
||||
vbv_max_bitrate = 1_200
|
||||
vbv_buffer_size = 50
|
||||
|
||||
#
|
||||
# Configurations for OpenH264
|
||||
#
|
||||
[OpenH264.default]
|
||||
# NOTE: OpenH264 specifies bitrate in unit of bps, not kbps.
|
||||
EnableFrameSkip = false
|
||||
TargetBitrate = 20_000_000
|
||||
MaxBitrate = 0 # unspecified
|
||||
MaxFrameRate = 60.0
|
||||
|
||||
[OpenH264.lan]
|
||||
# inherits default
|
||||
|
||||
[OpenH264.wan]
|
||||
TargetBitrate = 10_000_000
|
||||
MaxBitrate = 12_000_000
|
||||
|
||||
[OpenH264.broadband_high]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 8_000_000
|
||||
MaxBitrate = 10_000_000
|
||||
|
||||
[OpenH264.satellite]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 4_000_000
|
||||
MaxBitrate = 6_000_000
|
||||
|
||||
[OpenH264.broadband_low]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 1_600_000
|
||||
MaxBitrate = 1_800_000
|
||||
|
||||
[OpenH264.modem]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 600_000
|
||||
MaxBitrate = 1_200_000
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
[codec]
|
||||
order = [ "H.264", "RFX" ]
|
||||
|
||||
# Specify a preferred H.264 encoder, "x264" or "OpenH264".
|
||||
# This parameter takes effect only when more than one encoder is
|
||||
# enabled at compile time. If only one encoder is enabled, the encoder
|
||||
# will be used regardless the value of this parameter.
|
||||
h264_encoder = "x264"
|
||||
|
||||
#
|
||||
# Configurations for x264
|
||||
#
|
||||
[x264.default]
|
||||
# NOTE: x264 specifies bitrate in unit of kbps.
|
||||
preset = "ultrafast"
|
||||
tune = "zerolatency"
|
||||
profile = "main" # profile is forced to baseline if preset == ultrafast
|
||||
vbv_max_bitrate = 0
|
||||
vbv_buffer_size = 0
|
||||
fps_num = 60
|
||||
fps_den = 1
|
||||
|
||||
[x264.lan]
|
||||
# inherits default
|
||||
|
||||
[x264.wan]
|
||||
vbv_max_bitrate = 15_000
|
||||
vbv_buffer_size = 1_500
|
||||
|
||||
[x264.broadband_high]
|
||||
preset = "superfast"
|
||||
vbv_max_bitrate = 8_000
|
||||
vbv_buffer_Size = 800
|
||||
|
||||
[x264.satellite]
|
||||
preset = "superfast"
|
||||
vbv_max_bitrate = 5_000
|
||||
vbv_buffer_size = 500
|
||||
|
||||
[x264.broadband_low]
|
||||
preset = "veryfast"
|
||||
vbv_max_bitrate = 1_600
|
||||
vbv_buffer_size = 66
|
||||
|
||||
[x264.modem]
|
||||
preset = "fast"
|
||||
vbv_max_bitrate = 1_200
|
||||
vbv_buffer_size = 50
|
||||
|
||||
#
|
||||
# Configurations for OpenH264
|
||||
#
|
||||
[OpenH264.default]
|
||||
# NOTE: OpenH264 specifies bitrate in unit of bps, not kbps.
|
||||
EnableFrameSkip = false
|
||||
TargetBitrate = 20_000_000
|
||||
MaxBitrate = 0 # unspecified
|
||||
MaxFrameRate = 60.0
|
||||
|
||||
[OpenH264.lan]
|
||||
# inherits default
|
||||
|
||||
[OpenH264.wan]
|
||||
TargetBitrate = 10_000_000
|
||||
MaxBitrate = 12_000_000
|
||||
|
||||
[OpenH264.broadband_high]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 8_000_000
|
||||
MaxBitrate = 10_000_000
|
||||
|
||||
[OpenH264.satellite]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 4_000_000
|
||||
MaxBitrate = 6_000_000
|
||||
|
||||
[OpenH264.broadband_low]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 1_600_000
|
||||
MaxBitrate = 1_800_000
|
||||
|
||||
[OpenH264.modem]
|
||||
EnableFrameSkip = true
|
||||
TargetBitrate = 600_000
|
||||
MaxBitrate = 1_200_000
|
||||
|
||||
@@ -14,6 +14,56 @@ START_TEST(test_tconfig_gfx_always_success)
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_tconfig_gfx_h264_oh264)
|
||||
{
|
||||
struct xrdp_tconfig_gfx gfxconfig;
|
||||
tconfig_load_gfx(GFXCONF_STUBDIR "/gfx_h264_encoder_openh264.toml", &gfxconfig);
|
||||
|
||||
/* H.264 encoder is OpenH264 */
|
||||
ck_assert_int_eq(gfxconfig.h264_encoder, XTC_H264_OPENH264);
|
||||
}
|
||||
|
||||
START_TEST(test_tconfig_gfx_h264_x264)
|
||||
{
|
||||
struct xrdp_tconfig_gfx gfxconfig;
|
||||
tconfig_load_gfx(GFXCONF_STUBDIR "/gfx_h264_encoder_x264.toml", &gfxconfig);
|
||||
|
||||
/* H.264 encoder is x264 */
|
||||
ck_assert_int_eq(gfxconfig.h264_encoder, XTC_H264_X264);
|
||||
}
|
||||
|
||||
START_TEST(test_tconfig_gfx_h264_undefined)
|
||||
{
|
||||
struct xrdp_tconfig_gfx gfxconfig;
|
||||
tconfig_load_gfx(GFXCONF_STUBDIR "/gfx_h264_encoder_undefined.toml", &gfxconfig);
|
||||
|
||||
/* H.264 encoder is x264 if undefined */
|
||||
ck_assert_int_eq(gfxconfig.h264_encoder, XTC_H264_X264);
|
||||
}
|
||||
|
||||
START_TEST(test_tconfig_gfx_h264_invalid)
|
||||
{
|
||||
struct xrdp_tconfig_gfx gfxconfig;
|
||||
tconfig_load_gfx(GFXCONF_STUBDIR "/gfx_h264_encoder_invalid.toml", &gfxconfig);
|
||||
|
||||
/* H.264 encoder is x264 if invalid, unknown encoder specified */
|
||||
ck_assert_int_eq(gfxconfig.h264_encoder, XTC_H264_X264);
|
||||
}
|
||||
|
||||
START_TEST(test_tconfig_gfx_oh264_load_basic)
|
||||
{
|
||||
struct xrdp_tconfig_gfx gfxconfig;
|
||||
int rv = tconfig_load_gfx(GFXCONF_STUBDIR "/gfx.toml", &gfxconfig);
|
||||
|
||||
ck_assert_int_eq(rv, 0);
|
||||
|
||||
/* default */
|
||||
ck_assert_int_eq(gfxconfig.openh264_param[0].EnableFrameSkip, 0);
|
||||
ck_assert_int_eq(gfxconfig.openh264_param[0].TargetBitrate, 20000000);
|
||||
ck_assert_int_eq(gfxconfig.openh264_param[0].MaxBitrate, 0);
|
||||
ck_assert_float_eq(gfxconfig.openh264_param[0].MaxFrameRate, 60.0);
|
||||
}
|
||||
|
||||
START_TEST(test_tconfig_gfx_x264_load_basic)
|
||||
{
|
||||
struct xrdp_tconfig_gfx gfxconfig;
|
||||
@@ -111,6 +161,15 @@ make_suite_tconfig_load_gfx(void)
|
||||
tcase_add_test(tc_tconfig_load_gfx, test_tconfig_gfx_missing_file);
|
||||
tcase_add_test(tc_tconfig_load_gfx, test_tconfig_gfx_missing_h264);
|
||||
|
||||
/* OpenH264 */
|
||||
tcase_add_test(tc_tconfig_load_gfx, test_tconfig_gfx_oh264_load_basic);
|
||||
|
||||
/* H.264 encoder */
|
||||
tcase_add_test(tc_tconfig_load_gfx, test_tconfig_gfx_h264_oh264);
|
||||
tcase_add_test(tc_tconfig_load_gfx, test_tconfig_gfx_h264_x264);
|
||||
tcase_add_test(tc_tconfig_load_gfx, test_tconfig_gfx_h264_undefined);
|
||||
tcase_add_test(tc_tconfig_load_gfx, test_tconfig_gfx_h264_invalid);
|
||||
|
||||
suite_add_tcase(s, tc_tconfig_load_gfx);
|
||||
|
||||
return s;
|
||||
|
||||
Reference in New Issue
Block a user