Xpra: Ticket #2152: svt-vp9 / svt-hevc encoder

The SVT-VP9 Encoder development is a work-in-progress targeting performance levels applicable to both VOD and Live encoding/transcoding video applications.

It's a lot faster than the libvpx reference implementation (#2132). See SVT-VP9 Is Intel's Latest Open-Source Video Encoder Yielding High Performance VP9 Encoding tracker ticket: #1793



Mon, 18 Feb 2019 03:01:04 GMT - Antoine Martin: status, description changed


Wed, 20 Mar 2019 05:06:15 GMT - Antoine Martin: milestone changed

Milestone renamed


Thu, 21 Mar 2019 04:30:38 GMT - Antoine Martin:

The AV1 encoder is getting faster: SVT-AV1 Can Now Achieve 1080p @ 60 FPS AV1 Video Encoding On Select Configurations


Sun, 07 Apr 2019 06:22:52 GMT - Antoine Martin: attachment set

stub encoder


Mon, 08 Apr 2019 10:09:37 GMT - Antoine Martin: attachment set

updated patch


Mon, 08 Apr 2019 10:10:42 GMT - Antoine Martin: milestone changed

The patch above actually does compress something now, but there is too much buffering happening inside the svt-vp9 library: SVT-VP9 issue 26: low latency usage.


Tue, 09 Apr 2019 11:10:22 GMT - Antoine Martin:

With the latest patch (see below), I can at least try to use it:

LD_LIBRARY_PATH=/usr/local/lib/ gdb --args /usr/bin/python3 /usr/bin/xpra \
    start --no-daemon :20 --start=glxgears --video-encoders=svt_vp9

Since svt uses threads and signals, we need to tell gdb to ignore SIG32:

handle SIG32 pass nostop noprint

Then, we can attach a client:

xpra attach --no-mmap --encodings="rgb,vp9"

The server crashes pretty quickly:

python3: /SVT-VP9/Source/Lib/VPX/vp9_loopfilter.c:871: vp9_adjust_mask: Assertion `!(lfm->above_y[TX_16X16] & lfm->above_y[TX_8X8])' failed.
Thread 117 "python3" received signal SIGABRT, Aborted.
(gdb) bt
#0  0x00007ffff78c557f in raise () at /lib64/libc.so.6
#1  0x00007ffff78af895 in abort () at /lib64/libc.so.6
#2  0x00007ffff78af769 in _nl_load_domain.cold.0 () at /lib64/libc.so.6
#3  0x00007ffff78bda26 in .annobin_assert.c_end () at /lib64/libc.so.6
#4  0x00007fffe83b97a5 in enc_dec_kernel () at /usr/local/lib/libSvtVp9Enc.so.1
#5  0x00007ffff7bea58e in start_thread () at /lib64/libpthread.so.0
#6  0x00007ffff798a683 in clone () at /lib64/libc.so.6

We can't turn off threading, and I have no idea what causes this corruption..


Tue, 09 Apr 2019 11:13:07 GMT - Antoine Martin: attachment set

patch with image leak


Tue, 09 Apr 2019 14:07:40 GMT - Antoine Martin:

Got a different backtrace after forcing the image wrapper to freeze the pixel data before calling the encoder (just adding image.freeze() in compress_image()):

Thread 99 "python3" received signal SIGSEGV, Segmentation fault.
bt
#0  0x00007fffe83f903b in tokenize_b.lto_priv () at /usr/local/lib/libSvtVp9Enc.so.1
#1  0x00007fffe843168f in entropy_coding_kernel () at /usr/local/lib/libSvtVp9Enc.so.1
#2  0x00007ffff7bea58e in start_thread () at /lib64/libpthread.so.0
#3  0x00007ffff798a683 in clone () at /lib64/libc.so.6

Thu, 30 May 2019 15:06:09 GMT - Antoine Martin: milestone changed

As per the answer here: low latency usage, this isn't ready yet.


Sat, 21 Sep 2019 12:24:53 GMT - Antoine Martin: milestone changed


Sun, 04 Oct 2020 13:03:55 GMT - Antoine Martin: milestone changed

Still not ready.


Sat, 23 Jan 2021 05:43:35 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/2152