Signed-off-by: Dietmar Maurer <diet...@proxmox.com> --- ui/vnc-enc-h264.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/ui/vnc-enc-h264.c b/ui/vnc-enc-h264.c index 0f89cafbf6..840674dbdb 100644 --- a/ui/vnc-enc-h264.c +++ b/ui/vnc-enc-h264.c @@ -29,15 +29,17 @@ static char *get_available_encoder(const char *encoder_list) { + char *ret = NULL; + char **encoder_array = NULL; + g_assert(encoder_list != NULL); if (!strcmp(encoder_list, "")) { /* use default list */ - encoder_list = "x264enc openh264enc"; + encoder_list = "nvh264enc vaapih264enc x264enc openh264enc"; } - char *ret = NULL; - char **encoder_array = g_strsplit(encoder_list, " ", -1); + encoder_array = g_strsplit(encoder_list, " ", -1); int i = 0; do { @@ -69,7 +71,19 @@ static GstElement *create_encoder(const char *encoder_name) return NULL; } - if (!strcmp(encoder_name, "x264enc")) { + if (!strcmp(encoder_name, "nvh264enc")) { + g_object_set( + encoder, + "preset", 8, /* p1 - fastest */ + "multi-pass", 1, /* multipass disabled */ + "tune", 2, /* low latency */ + "zerolatency", true, /* low latency */ + /* avoid access unit delimiters (Nal Unit Type 9) - not required */ + "aud", false, + NULL); + } else if (!strcmp(encoder_name, "vaapih264enc")) { + g_object_set(encoder, "tune", 1, NULL); /* high compression */ + } else if (!strcmp(encoder_name, "x264enc")) { g_object_set( encoder, "tune", 4, /* zerolatency */ -- 2.39.5