From feda25476bbceebe0eb63a14e9a198bafadd8843 Mon Sep 17 00:00:00 2001 From: totaam Date: Sat, 15 Apr 2023 16:44:06 +0700 Subject: [PATCH] #3706 my Intel laptop's libva can't do 'I420' despite showing it in the caps options for vaapih264enc --- xpra/codecs/gstreamer/decoder.py | 1 + xpra/codecs/gstreamer/encoder.py | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/xpra/codecs/gstreamer/decoder.py b/xpra/codecs/gstreamer/decoder.py index 321664406b..9542619574 100644 --- a/xpra/codecs/gstreamer/decoder.py +++ b/xpra/codecs/gstreamer/decoder.py @@ -50,6 +50,7 @@ def find_codecs(options): if has_plugins(element): codecs[encoding] = element break + log(f"find_codecs({options})={codecs}") return codecs CODECS = find_codecs(get_codecs_options()) diff --git a/xpra/codecs/gstreamer/encoder.py b/xpra/codecs/gstreamer/encoder.py index 932d60b902..8cd8d24016 100755 --- a/xpra/codecs/gstreamer/encoder.py +++ b/xpra/codecs/gstreamer/encoder.py @@ -33,8 +33,8 @@ assert get_version and init_module and cleanup_module DEFAULT_ENCODER_OPTIONS = { "vaapih264enc" : { - "max-bframes" : 0, - "tune" : 1, #low-power + "max-bframes" : 0, #int(options.boolget("b-frames", False)) + "tune" : 3, #low-power #"rate-control" : 8, #qvbr "compliance-mode" : 0, #restrict-buf-alloc (1) – Restrict the allocation size of coded-buffer #"keyframe-period" : 9999, @@ -42,6 +42,9 @@ #"quality-factor" : 10, #"quality-level" : 50, #"bitrate" : 2000, + #"prediction-type" : 1, #Hierarchical P frame encode + #"keyframe-period" : 4294967295, + "aud" : True, }, "x264enc" : { "speed-preset" : "ultrafast", @@ -206,7 +209,7 @@ def add(element, encoding, cs_in, css_out, *args): pass log(f"init_all_specs try vaapi? {vaapi}") if vaapi: - add("vaapih264enc", "h264", "YUV420P", ("YUV420P", ), 20, 100) + #add("vaapih264enc", "h264", "YUV420P", ("YUV420P", ), 20, 100) add("vaapih264enc", "h264", "NV12", ("YUV420P", ), 20, 100) if WIN32: add("nvd3d11h264enc", "h264", "YUV420P", ("YUV420P", ), 20, 100) @@ -287,6 +290,7 @@ def get_encoder_options(self, options:typedict): } default_profile = { #"x264enc" : "constrained-baseline", + #"vaapih264enc" : "constrained-baseline", #"nvh264enc" : "main", "vp8enc" : None, #0-4 "vp9enc" : None, #0-4