add most common hardware encoders:
- nvh264enc: for NVidia hardware
- vaapih264enc: for common AMD and Intel cards
Signed-off-by: Dietmar Maurer <dietmar@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