add most common hardware encoders: - nvh264enc: for NVidia hardware - vaapih264enc: for common AMD and Intel cards
Signed-off-by: Dietmar Maurer <diet...@proxmox.com> --- ui/vnc-enc-h264.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/ui/vnc-enc-h264.c b/ui/vnc-enc-h264.c index 09b974a787..98055c095f 100644 --- a/ui/vnc-enc-h264.c +++ b/ui/vnc-enc-h264.c @@ -20,7 +20,7 @@ static char *get_available_encoder(const char *encoder_list) if (!strcmp(encoder_list, "")) { /* use default list */ - encoder_list = "x264enc:openh264enc"; + encoder_list = "nvh264enc:vaapih264enc:x264enc:openh264enc"; } encoder_array = g_strsplit(encoder_list, ":", -1); @@ -50,7 +50,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