Xpra: Ticket #2728: Cannot load NVENC

Sorry, don't know what information is required or helpful.

loader.py output:

2020-04-14 22:02:02,982 CUDA initialization (this may take a few seconds)
2020-04-14 22:02:03,049 CUDA 10.1.0 / PyCUDA 2019.1.2, found 1 device:
2020-04-14 22:02:03,049   + Quadro P1000 @ 0000:65:00.0 (memory: 94% free, compute: 6.1)
2020-04-14 22:02:03,074 NVidia driver version 430.50
2020-04-14 22:02:03,204  cannot load nvenc (nvenc encoder): None missing from xpra.codecs.nvenc.encoder
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/xpra/codecs/loader.py", line 58, in codec_import_check
    init_module()
  File "xpra/codecs/nvenc/encoder.pyx", line 2862, in xpra.codecs.nvenc.encoder.init_module
    test_encoder.open_encode_session()
  File "xpra/codecs/nvenc/encoder.pyx", line 2800, in xpra.codecs.nvenc.encoder.Encoder.open_encode_session
    raise TransientCodecException("cannot open encoding session, context is NULL, %i contexts are in use" % context_counter.get())
xpra.codecs.codec_constants.TransientCodecException: cannot open encoding session, context is NULL, 0 contexts are in use
codecs and csc modules found:
* csc_libyuv           :
* csc_swscale          : /usr/lib/python3/dist-packages/xpra/codecs/csc_swscale/colorspace_converter.cpython-37m-x86_64-linux-gnu.so
* dec_avcodec2         : /usr/lib/python3/dist-packages/xpra/codecs/dec_avcodec2/decoder.cpython-37m-x86_64-linux-gnu.so
* dec_jpeg             : /usr/lib/python3/dist-packages/xpra/codecs/jpeg/decoder.cpython-37m-x86_64-linux-gnu.so
* dec_pillow           : /usr/lib/python3/dist-packages/xpra/codecs/pillow/decoder.py
* dec_vpx              : /usr/lib/python3/dist-packages/xpra/codecs/vpx/decoder.cpython-37m-x86_64-linux-gnu.so
* dec_webp             : /usr/lib/python3/dist-packages/xpra/codecs/webp/decoder.cpython-37m-x86_64-linux-gnu.so
* enc_ffmpeg           : /usr/lib/python3/dist-packages/xpra/codecs/enc_ffmpeg/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_jpeg             : /usr/lib/python3/dist-packages/xpra/codecs/jpeg/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_pillow           : /usr/lib/python3/dist-packages/xpra/codecs/pillow/encoder.py
* enc_vpx              : /usr/lib/python3/dist-packages/xpra/codecs/vpx/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_webp             : /usr/lib/python3/dist-packages/xpra/codecs/webp/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_x264             : /usr/lib/python3/dist-packages/xpra/codecs/enc_x264/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_x265             : /usr/lib/python3/dist-packages/xpra/codecs/enc_x265/encoder.cpython-37m-x86_64-linux-gnu.so
* nvenc                :
codecs versions:
* avcodec2                        : 58.54.100
* ffmpeg                          : 58.54.100
* jpeg                            : 1
* numpy                           : 1.16.5
* pillow                          : 6.2.1
* swscale                         : 5.5.100
* vpx                             : 1.8.2
* webp                            : 0.6.1
* x264                            : 155
* x265                            : 3.2.1+1-b5c86a64bbbe


Tue, 14 Apr 2020 20:42:07 GMT - Andrei K: priority, component changed


Wed, 15 Apr 2020 03:24:43 GMT - Antoine Martin: owner changed

Can you please run it again with loader.py -v, or with XPRA_NVENC_DEBUG=1 loader.py?

I think that the P1000 requires license keys for opening more than 2 sessions, but it should work OK without.

What OS is this on? And what xpra version?


Wed, 15 Apr 2020 08:34:20 GMT - Andrei K:

nvidia-smi encodersessions concurrently shows zero sessions.

Debian 5.2.17-1rodete3 and xpra v3.0.8-r25881 (built from source)

2020-04-15 10:29:52,945 loading codecs
2020-04-15 10:29:52,945 enc_pillow:
2020-04-15 10:29:52,945  codec_import_check('enc_pillow', 'Pillow encoder', 'xpra.codecs.pillow', 'xpra.codecs.pillow.encoder', ('encode',))
2020-04-15 10:29:52,968  xpra.codecs.pillow found, will check for ('encode',) in xpra.codecs.pillow.encoder
2020-04-15 10:29:52,971 xpra.codecs.pillow.encoder: init_module=None
2020-04-15 10:29:52,971 xpra.codecs.pillow.encoder: encode=<function encode at 0x7f6b9deb4e60>
2020-04-15 10:29:52,971 enc_pillow.selftest=<function selftest at 0x7f6b9deb4cb0>
2020-04-15 10:29:52,973 xpra.codecs.pillow.encoder: cleanup_module=None
2020-04-15 10:29:52,973  found enc_pillow : <module 'xpra.codecs.pillow.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/pillow/encoder.py'>
2020-04-15 10:29:52,974  pillow xpra.codecs.pillow.encoder.<function get_info at 0x7f6b9d9a6a70>={'version': '6.2.1', 'encodings': ['png', 'png/L', 'png/P', 'jpeg', 'webp']}
2020-04-15 10:29:52,974 enc_webp:
2020-04-15 10:29:52,974  codec_import_check('enc_webp', 'webp encoder', 'xpra.codecs.webp', 'xpra.codecs.webp.encoder', ('encode',))
2020-04-15 10:29:52,974  xpra.codecs.webp found, will check for ('encode',) in xpra.codecs.webp.encoder
2020-04-15 10:29:52,974 xpra.codecs.webp.encoder: init_module=None
2020-04-15 10:29:52,974 xpra.codecs.webp.encoder: encode=<built-in function encode>
2020-04-15 10:29:52,974 enc_webp.selftest=<built-in function selftest>
2020-04-15 10:29:52,978 xpra.codecs.webp.encoder: cleanup_module=None
2020-04-15 10:29:52,978  found enc_webp : <module 'xpra.codecs.webp.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/webp/encoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:52,978  webp xpra.codecs.webp.encoder.<built-in function get_info>={'version': (0, 6, 1), 'encodings': ['webp'], 'threading': True, 'image-hint': 3, 'image-hints': ('default', 'picture', 'photo', 'graph'), 'preset': 5, 'preset-small': 4, 'presets': ('default', 'picture', 'photo', 'drawing', 'icon', 'text')}
2020-04-15 10:29:52,978 enc_jpeg:
2020-04-15 10:29:52,978  codec_import_check('enc_jpeg', 'JPEG encoder', 'xpra.codecs.jpeg', 'xpra.codecs.jpeg.encoder', ('encode',))
2020-04-15 10:29:52,978  xpra.codecs.jpeg found, will check for ('encode',) in xpra.codecs.jpeg.encoder
2020-04-15 10:29:52,978 xpra.codecs.jpeg.encoder: init_module=None
2020-04-15 10:29:52,978 xpra.codecs.jpeg.encoder: encode=<built-in function encode>
2020-04-15 10:29:52,978 enc_jpeg.selftest=<built-in function selftest>
2020-04-15 10:29:52,978 xpra.codecs.jpeg.encoder: cleanup_module=None
2020-04-15 10:29:52,978  found enc_jpeg : <module 'xpra.codecs.jpeg.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/jpeg/encoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:52,978 enc_vpx:
2020-04-15 10:29:52,978  codec_import_check('enc_vpx', 'vpx encoder', 'xpra.codecs.vpx', 'xpra.codecs.vpx.encoder', ('Encoder',))
2020-04-15 10:29:52,979  xpra.codecs.vpx found, will check for ('Encoder',) in xpra.codecs.vpx.encoder
2020-04-15 10:29:52,979 xpra.codecs.vpx.encoder: init_module=<built-in function init_module>
2020-04-15 10:29:52,979 xpra.codecs.vpx.encoder: Encoder=<class 'xpra.codecs.vpx.encoder.Encoder'>
2020-04-15 10:29:52,979 enc_vpx.selftest=<built-in function selftest>
2020-04-15 10:29:52,986 xpra.codecs.vpx.encoder: cleanup_module=<built-in function cleanup_module>
2020-04-15 10:29:52,986  found enc_vpx : <module 'xpra.codecs.vpx.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/vpx/encoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:52,986  vpx xpra.codecs.vpx.encoder.<built-in function get_info>={'version': 'v1.8.2', 'encodings': ['vp8', 'vp9'], 'abi_version': 23, 'counter': 3, 'build_config': '--prefix=/usr --enable-pic --enable-shared --disable-install-bins --disable-install-srcs --size-limit=16384x16384 --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --target=x86_64-linux-gcc', 'vp8.max-size': (8192, 4096), 'vp9.max-size': (8192, 4096), 'vp8.colorspaces': ('YUV420P',), 'vp9.colorspaces': ('YUV420P', 'YUV444P')}
2020-04-15 10:29:52,986 enc_x264:
2020-04-15 10:29:52,987  codec_import_check('enc_x264', 'x264 encoder', 'xpra.codecs.enc_x264', 'xpra.codecs.enc_x264.encoder', ('Encoder',))
2020-04-15 10:29:52,987  xpra.codecs.enc_x264 found, will check for ('Encoder',) in xpra.codecs.enc_x264.encoder
2020-04-15 10:29:52,987 xpra.codecs.enc_x264.encoder: init_module=<built-in function init_module>
2020-04-15 10:29:52,988 xpra.codecs.enc_x264.encoder: Encoder=<class 'xpra.codecs.enc_x264.encoder.Encoder'>
2020-04-15 10:29:52,988 enc_x264.selftest=<built-in function selftest>
2020-04-15 10:29:53,000 xpra.codecs.enc_x264.encoder: cleanup_module=<built-in function cleanup_module>
2020-04-15 10:29:53,000  found enc_x264 : <module 'xpra.codecs.enc_x264.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/enc_x264/encoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,000  x264 xpra.codecs.enc_x264.encoder.<built-in function get_info>={'version': 155, 'max-size': (8192, 4096), 'generation': 5, 'formats': ('YUV420P', 'YUV422P', 'YUV444P', 'BGRA', 'BGRX')}
2020-04-15 10:29:53,000 enc_x265:
2020-04-15 10:29:53,000  codec_import_check('enc_x265', 'x265 encoder', 'xpra.codecs.enc_x265', 'xpra.codecs.enc_x265.encoder', ('Encoder',))
2020-04-15 10:29:53,000 failed to import x265 encoder (enc_x265)
2020-04-15 10:29:53,000
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/xpra/codecs/loader.py", line 37, in codec_import_check
    __import__(top_module, {}, {}, [])
ModuleNotFoundError: No module named 'xpra.codecs.enc_x265'
2020-04-15 10:29:53,000 nvenc:
2020-04-15 10:29:53,000  codec_import_check('nvenc', 'nvenc encoder', 'xpra.codecs.nvenc', 'xpra.codecs.nvenc.encoder', ('Encoder',))
2020-04-15 10:29:53,000  xpra.codecs.nvenc found, will check for ('Encoder',) in xpra.codecs.nvenc.encoder
2020-04-15 10:29:53,042 c_parseguid bytes(b'CE788D20')=b'\xcex\x8d '
2020-04-15 10:29:53,042 c_parseguid bytes(b'AAA9')=b'\xaa\xa9'
2020-04-15 10:29:53,042 c_parseguid bytes(b'4318')=b'C\x18'
2020-04-15 10:29:53,042 c_parseguid bytes(b'92BB')=b'\x92\xbb'
2020-04-15 10:29:53,042 c_parseguid bytes(b'AC7E858C8D36')=b'\xac~\x85\x8c\x8d6'
2020-04-15 10:29:53,042 c_parseguid(CE788D20-AAA9-4318-92BB-AC7E858C8D36)={'Data1': 3464006944, 'Data2': 43689, 'Data3': 17176, 'Data4': b'\x92\xbb\xac~\x85\x8c\x8d6@\x94\xb3\x91k\x7f'}
2020-04-15 10:29:53,042 xpra.codecs.nvenc.encoder: init_module=<built-in function init_module>
2020-04-15 10:29:53,042 nvenc.init_module()
2020-04-15 10:29:53,042 NVENC encoder API version 9.1
2020-04-15 10:29:53,042 init_nvencode_library() will try to load libcuda.so
2020-04-15 10:29:53,042 init_nvencode_library() <bound method LibraryLoader.LoadLibrary of <ctypes.LibraryLoader object at 0x7f6b9c04e190>>(libcuda.so)=<CDLL 'libcuda.so', handle 1585a30 at 0x7f6b9d630cd0>
2020-04-15 10:29:53,042 init_nvencode_library() libcuda.cuCtxGetCurrent=<_FuncPtr object at 0x7f6b91afd120>
2020-04-15 10:29:53,043 init_nvencode_library() will try to load libnvidia-encode.so.1
2020-04-15 10:29:53,043 init_nvencode_library() <bound method LibraryLoader.LoadLibrary of <ctypes.LibraryLoader object at 0x7f6b9c04e190>>(libnvidia-encode.so.1)=<CDLL 'libnvidia-encode.so.1', handle 15c7360 at 0x7f6b97079dd0>
2020-04-15 10:29:53,043 init_nvencode_library() NvEncodeAPICreateInstance=<_FuncPtr object at 0x7f6b91afd1f0>
2020-04-15 10:29:53,043 CUDA initialization (this may take a few seconds)
2020-04-15 10:29:53,124 CUDA 8.0.0 / PyCUDA 2019.1.2, found 1 device:
2020-04-15 10:29:53,124   + Quadro P1000 @ 0000:65:00.0 (memory: 94% free, compute: 6.1)
2020-04-15 10:29:53,150 NVidia driver version 430.50
2020-04-15 10:29:53,150 init_module() will try keys: [None]
2020-04-15 10:29:53,150 testing encoder with device 0
2020-04-15 10:29:53,212 selected device Quadro P1000 @ 0000:65:00.0
2020-04-15 10:29:53,212 init_cuda() pixel format=None, device_id=0
2020-04-15 10:29:53,212 init_cuda cuda_device=<pycuda._driver.Device object at 0x7f6b97079670> (Quadro P1000 @ 0000:65:00.0)
2020-04-15 10:29:53,247 init_cuda cuda_context=<pycuda._driver.Context object at 0x7f6b91b05630>
2020-04-15 10:29:53,247 init_cuda cuda info={'driver': {'version': (8, 0, 0), 'driver_version': 10010}}
2020-04-15 10:29:53,247 init_cuda pycuda info={'version': {'': (2019, 1, 2), 'text': '2019.1.2'}}
2020-04-15 10:29:53,247 test encoder=nvenc(None/None/None - None -    0x0   )
2020-04-15 10:29:53,248 open_encode_session() cuda_context=<pycuda._driver.Context object at 0x7f6b91b05630>, cuda_context_ptr=0x1cb2300
2020-04-15 10:29:53,248 open_encode_session() functionList=0x1cf1570
2020-04-15 10:29:53,248 clean() cuda_context=<pycuda._driver.Context object at 0x7f6b91b05630>, encoder context=0x0
2020-04-15 10:29:53,273 clean() done
2020-04-15 10:29:53,273 xpra.codecs.nvenc.encoder: cleanup_module=<built-in function cleanup_module>
2020-04-15 10:29:53,273 nvenc.cleanup_module()
2020-04-15 10:29:53,273  cannot load nvenc (nvenc encoder): None missing from xpra.codecs.nvenc.encoder
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/xpra/codecs/loader.py", line 58, in codec_import_check
    init_module()
  File "xpra/codecs/nvenc/encoder.pyx", line 2862, in xpra.codecs.nvenc.encoder.init_module
  File "xpra/codecs/nvenc/encoder.pyx", line 2800, in xpra.codecs.nvenc.encoder.Encoder.open_encode_session
xpra.codecs.codec_constants.TransientCodecException: cannot open encoding session, context is NULL, 0 contexts are in use
2020-04-15 10:29:53,273 enc_ffmpeg:
2020-04-15 10:29:53,273  codec_import_check('enc_ffmpeg', 'ffmpeg encoder', 'xpra.codecs.enc_ffmpeg', 'xpra.codecs.enc_ffmpeg.encoder', ('Encoder',))
2020-04-15 10:29:53,273  xpra.codecs.enc_ffmpeg found, will check for ('Encoder',) in xpra.codecs.enc_ffmpeg.encoder
2020-04-15 10:29:53,296 xpra.codecs.enc_ffmpeg.encoder: init_module=<built-in function init_module>
2020-04-15 10:29:53,296 xpra.codecs.enc_ffmpeg.encoder: Encoder=<class 'xpra.codecs.enc_ffmpeg.encoder.Encoder'>
2020-04-15 10:29:53,296 enc_ffmpeg.selftest=<built-in function selftest>
2020-04-15 10:29:53,305 xpra.codecs.enc_ffmpeg.encoder: cleanup_module=<built-in function cleanup_module>
2020-04-15 10:29:53,305  found enc_ffmpeg : <module 'xpra.codecs.enc_ffmpeg.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/enc_ffmpeg/encoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,305  ffmpeg xpra.codecs.enc_ffmpeg.encoder.<built-in function get_info>={'version': (58, 54, 100), 'encodings': ['h264+mp4', 'vp8+webm', 'mpeg4+mp4', 'mpeg1', 'mpeg2'], 'muxers': {'a64': 'a64 - video for Commodore 64', 'ac3': 'raw AC-3', 'adts': 'ADTS AAC (Advanced Audio Coding)', 'adx': 'CRI ADX', 'aiff': 'Audio IFF', 'amr': '3GPP AMR', 'apng': 'Animated Portable Network Graphics', 'aptx': 'raw aptX (Audio Processing Technology for Bluetooth)', 'aptx_hd': 'raw aptX HD (Audio Processing Technology for Bluetooth)', 'asf': 'ASF (Advanced / Active Streaming Format)', 'ass': 'SSA (SubStation Alpha) subtitle', 'ast': 'AST (Audio Stream)', 'asf_stream': 'ASF (Advanced / Active Streaming Format)', 'au': 'Sun AU', 'avi': 'AVI (Audio Video Interleaved)', 'avm2': 'SWF (ShockWave Flash) (AVM2)', 'avs2': 'raw AVS2-P2/IEEE1857.4 video', 'bit': 'G.729 BIT file format', 'caf': 'Apple CAF (Core Audio Format)', 'cavsvideo': 'raw Chinese AVS (Audio Video Standard) video', 'codec2': 'codec2 .c2 muxer', 'codec2raw': 'raw codec2 muxer', 'crc': 'CRC testing', 'dash': 'DASH Muxer', 'data': 'raw data', 'daud': 'D-Cinema audio', 'dirac': 'raw Dirac', 'dnxhd': 'raw DNxHD (SMPTE VC-3)', 'dts': 'raw DTS', 'dv': 'DV (Digital Video)', 'eac3': 'raw E-AC-3', 'f4v': 'F4V Adobe Flash Video', 'ffmetadata': 'FFmpeg metadata in text', 'fifo': 'FIFO queue pseudo-muxer', 'fifo_test': 'Fifo test muxer', 'filmstrip': 'Adobe Filmstrip', 'fits': 'Flexible Image Transport System', 'flac': 'raw FLAC', 'flv': 'FLV (Flash Video)', 'framecrc': 'framecrc testing', 'framehash': 'Per-frame hash testing', 'framemd5': 'Per-frame MD5 testing', 'g722': 'raw G.722', 'g723_1': 'raw G.723.1', 'g726': 'raw big-endian G.726 ("left-justified")', 'g726le': 'raw little-endian G.726 ("right-justified")', 'gif': 'CompuServe Graphics Interchange Format (GIF)', 'gsm': 'raw GSM', 'gxf': 'GXF (General eXchange Format)', 'h261': 'raw H.261', 'h263': 'raw H.263', 'h264': 'raw H.264 video', 'hash': 'Hash testing', 'hds': 'HDS Muxer', 'hevc': 'raw HEVC video', 'hls': 'Apple HTTP Live Streaming', 'ico': 'Microsoft Windows ICO', 'ilbc': 'iLBC storage', 'image2': 'image2 sequence', 'image2pipe': 'piped image2 sequence', 'ipod': 'iPod H.264 MP4 (MPEG-4 Part 14)', 'ircam': 'Berkeley/IRCAM/CARL Sound Format', 'ismv': 'ISMV/ISMA (Smooth Streaming)', 'ivf': 'On2 IVF', 'jacosub': 'JACOsub subtitle format', 'latm': 'LOAS/LATM', 'lrc': 'LRC lyrics', 'm4v': 'raw MPEG-4 video', 'md5': 'MD5 testing', 'matroska': 'Matroska Audio', 'microdvd': 'MicroDVD subtitle format', 'mjpeg': 'raw MJPEG video', 'mlp': 'raw MLP', 'mmf': 'Yamaha SMAF', 'mov': 'QuickTime / MOV', 'mp2': 'MP2 (MPEG audio layer 2)', 'mp3': 'MP3 (MPEG audio layer 3)', 'mp4': 'MP4 (MPEG-4 Part 14)', 'mpeg': 'MPEG-1 Systems / MPEG program stream', 'vcd': 'MPEG-1 Systems / MPEG program stream (VCD)', 'mpeg1video': 'raw MPEG-1 video', 'dvd': 'MPEG-2 PS (DVD VOB)', 'svcd': 'MPEG-2 PS (SVCD)', 'mpeg2video': 'raw MPEG-2 video', 'vob': 'MPEG-2 PS (VOB)', 'mpegts': 'MPEG-TS (MPEG-2 Transport Stream)', 'mpjpeg': 'MIME multipart JPEG', 'mxf': 'MXF (Material eXchange Format)', 'mxf_d10': 'MXF (Material eXchange Format) D-10 Mapping', 'mxf_opatom': 'MXF (Material eXchange Format) Operational Pattern Atom', 'null': 'raw null video', 'nut': 'NUT', 'oga': 'Ogg Audio', 'ogg': 'Ogg', 'ogv': 'Ogg Video', 'oma': 'Sony OpenMG audio', 'opus': 'Ogg Opus', 'alaw': 'PCM A-law', 'mulaw': 'PCM mu-law', 'vidc': 'PCM Archimedes VIDC', 'f64be': 'PCM 64-bit floating-point big-endian', 'f64le': 'PCM 64-bit floating-point little-endian', 'f32be': 'PCM 32-bit floating-point big-endian', 'f32le': 'PCM 32-bit floating-point little-endian', 's32be': 'PCM signed 32-bit big-endian', 's32le': 'PCM signed 32-bit little-endian', 's24be': 'PCM signed 24-bit big-endian', 's24le': 'PCM signed 24-bit little-endian', 's16be': 'PCM signed 16-bit big-endian', 's16le': 'PCM signed 16-bit little-endian', 's8': 'PCM signed 8-bit', 'u32be': 'PCM unsigned 32-bit big-endian', 'u32le': 'PCM unsigned 32-bit little-endian', 'u24be': 'PCM unsigned 24-bit big-endian', 'u24le': 'PCM unsigned 24-bit little-endian', 'u16be': 'PCM unsigned 16-bit big-endian', 'u16le': 'PCM unsigned 16-bit little-endian', 'u8': 'PCM unsigned 8-bit', 'psp': 'PSP MP4 (MPEG-4 Part 14)', 'rawvideo': 'raw video', 'rm': 'RealMedia', 'roq': 'raw id RoQ', 'rso': 'Lego Mindstorms RSO', 'rtp': 'RTP output', 'rtp_mpegts': 'RTP/mpegts output format', 'rtsp': 'RTSP output', 'sap': 'SAP output', 'sbc': 'raw SBC', 'scc': 'Scenarist Closed Captions', 'film_cpk': 'Sega FILM / CPK', 'segment': 'segment', 'stream_segment,ssegment': 'streaming segment muxer', 'singlejpeg': 'JPEG single image', 'smjpeg': 'Loki SDL MJPEG', 'smoothstreaming': 'Smooth Streaming Muxer', 'sox': 'SoX native', 'spx': 'Ogg Speex', 'spdif': 'IEC 61937 (used on S/PDIF - IEC958)', 'srt': 'SubRip subtitle', 'sup': 'raw HDMV Presentation Graphic Stream subtitles', 'swf': 'SWF (ShockWave Flash)', 'tee': 'Multiple muxer tee', '3g2': '3GP2 (3GPP2 file format)', '3gp': '3GP (3GPP file format)', 'mkvtimestamp_v2': 'extract pts as timecode v2 format, as defined by mkvtoolnix', 'truehd': 'raw TrueHD', 'tta': 'TTA (True Audio)', 'uncodedframecrc': 'uncoded framecrc testing', 'vc1': 'raw VC-1 video', 'vc1test': 'VC-1 test bitstream', 'voc': 'Creative Voice', 'w64': 'Sony Wave64', 'wav': 'WAV / WAVE (Waveform Audio)', 'webm': 'WebM', 'webm_dash_manifest': 'WebM DASH Manifest', 'webm_chunk': 'WebM Chunk Muxer', 'webp': 'WebP', 'webvtt': 'WebVTT subtitle', 'wtv': 'Windows Television (WTV)', 'wv': 'raw WavPack', 'yuv4mpegpipe': 'YUV4MPEG pipe', 'chromaprint': 'Chromaprint'}, 'formats': {'h264+mp4': ['YUV420P'], 'vp8+webm': ['YUV420P'], 'mpeg4+mp4': ['YUV420P'], 'mpeg1': ['YUV420P'], 'mpeg2': ['YUV420P']}, 'generation': 5}
2020-04-15 10:29:53,305 csc_swscale:
2020-04-15 10:29:53,305  codec_import_check('csc_swscale', 'swscale colorspace conversion', 'xpra.codecs.csc_swscale', 'xpra.codecs.csc_swscale.colorspace_converter', ('ColorspaceConverter',))
2020-04-15 10:29:53,305  xpra.codecs.csc_swscale found, will check for ('ColorspaceConverter',) in xpra.codecs.csc_swscale.colorspace_converter
2020-04-15 10:29:53,306 xpra.codecs.csc_swscale.colorspace_converter: init_module=<built-in function init_module>
2020-04-15 10:29:53,306 xpra.codecs.csc_swscale.colorspace_converter: ColorspaceConverter=<class 'xpra.codecs.csc_swscale.colorspace_converter.ColorspaceConverter'>
2020-04-15 10:29:53,306 csc_swscale.selftest=<built-in function selftest>
2020-04-15 10:29:53,306 xpra.codecs.csc_swscale.colorspace_converter: cleanup_module=<built-in function cleanup_module>
2020-04-15 10:29:53,306  found csc_swscale : <module 'xpra.codecs.csc_swscale.colorspace_converter' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/csc_swscale/colorspace_converter.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,307  swscale xpra.codecs.csc_swscale.colorspace_converter.<built-in function get_info>={'version': (5, 5, 100), 'formats': ('RGB', 'BGR', 'XRGB', 'BGRX', 'RGBX', 'XBGR', 'YUV420P', 'YUV422P', 'YUV444P', 'GBRP'), 'max-size': (16384, 16384)}
2020-04-15 10:29:53,307 csc_libyuv:
2020-04-15 10:29:53,307  codec_import_check('csc_libyuv', 'libyuv colorspace conversion', 'xpra.codecs.csc_libyuv', 'xpra.codecs.csc_libyuv.colorspace_converter', ('ColorspaceConverter',))
2020-04-15 10:29:53,307 failed to import libyuv colorspace conversion (csc_libyuv)
2020-04-15 10:29:53,307
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/xpra/codecs/loader.py", line 37, in codec_import_check
    __import__(top_module, {}, {}, [])
ModuleNotFoundError: No module named 'xpra.codecs.csc_libyuv'
2020-04-15 10:29:53,307 dec_pillow:
2020-04-15 10:29:53,307  codec_import_check('dec_pillow', 'Pillow decoder', 'xpra.codecs.pillow', 'xpra.codecs.pillow.decoder', ('decompress',))
2020-04-15 10:29:53,307  xpra.codecs.pillow found, will check for ('decompress',) in xpra.codecs.pillow.decoder
2020-04-15 10:29:53,307 xpra.codecs.pillow.decoder: init_module=None
2020-04-15 10:29:53,307 xpra.codecs.pillow.decoder: decompress=<function decompress at 0x7f6b8087f3b0>
2020-04-15 10:29:53,307 dec_pillow.selftest=<function selftest at 0x7f6b8087f440>
2020-04-15 10:29:53,309 xpra.codecs.pillow.decoder: cleanup_module=None
2020-04-15 10:29:53,309  found dec_pillow : <module 'xpra.codecs.pillow.decoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/pillow/decoder.py'>
2020-04-15 10:29:53,309  pillow xpra.codecs.pillow.decoder.<function get_info at 0x7f6b8087f320>={'version': '6.2.1', 'encodings': ['png', 'png/L', 'png/P', 'jpeg', 'webp']}
2020-04-15 10:29:53,309 dec_webp:
2020-04-15 10:29:53,309  codec_import_check('dec_webp', 'webp decoder', 'xpra.codecs.webp', 'xpra.codecs.webp.decoder', ('decompress',))
2020-04-15 10:29:53,309  xpra.codecs.webp found, will check for ('decompress',) in xpra.codecs.webp.decoder
2020-04-15 10:29:53,309 xpra.codecs.webp.decoder: init_module=None
2020-04-15 10:29:53,309 xpra.codecs.webp.decoder: decompress=<built-in function decompress>
2020-04-15 10:29:53,309 dec_webp.selftest=<built-in function selftest>
2020-04-15 10:29:53,310 xpra.codecs.webp.decoder: cleanup_module=None
2020-04-15 10:29:53,310  found dec_webp : <module 'xpra.codecs.webp.decoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/webp/decoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,310  webp xpra.codecs.webp.decoder.<built-in function get_info>={'version': (0, 6, 1), 'encodings': ['webp']}
2020-04-15 10:29:53,310 dec_jpeg:
2020-04-15 10:29:53,310  codec_import_check('dec_jpeg', 'JPEG decoder', 'xpra.codecs.jpeg', 'xpra.codecs.jpeg.decoder', ('decompress_to_rgb', 'decompress_to_yuv'))
2020-04-15 10:29:53,310  xpra.codecs.jpeg found, will check for ('decompress_to_rgb', 'decompress_to_yuv') in xpra.codecs.jpeg.decoder
2020-04-15 10:29:53,310 xpra.codecs.jpeg.decoder: init_module=None
2020-04-15 10:29:53,310 xpra.codecs.jpeg.decoder: decompress_to_rgb=<built-in function decompress_to_rgb>
2020-04-15 10:29:53,310 xpra.codecs.jpeg.decoder: decompress_to_yuv=<built-in function decompress_to_yuv>
2020-04-15 10:29:53,310 dec_jpeg.selftest=<built-in function selftest>
2020-04-15 10:29:53,310 xpra.codecs.jpeg.decoder: cleanup_module=None
2020-04-15 10:29:53,310  found dec_jpeg : <module 'xpra.codecs.jpeg.decoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/jpeg/decoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,310 dec_vpx:
2020-04-15 10:29:53,310  codec_import_check('dec_vpx', 'vpx decoder', 'xpra.codecs.vpx', 'xpra.codecs.vpx.decoder', ('Decoder',))
2020-04-15 10:29:53,310  xpra.codecs.vpx found, will check for ('Decoder',) in xpra.codecs.vpx.decoder
2020-04-15 10:29:53,311 xpra.codecs.vpx.decoder: init_module=<built-in function init_module>
2020-04-15 10:29:53,311 xpra.codecs.vpx.decoder: Decoder=<class 'xpra.codecs.vpx.decoder.Decoder'>
2020-04-15 10:29:53,311 dec_vpx.selftest=<built-in function selftest>
2020-04-15 10:29:53,311 xpra.codecs.vpx.decoder: cleanup_module=<built-in function cleanup_module>
2020-04-15 10:29:53,311  found dec_vpx : <module 'xpra.codecs.vpx.decoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/vpx/decoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,311  vpx xpra.codecs.vpx.decoder.<built-in function get_info>={'version': 'v1.8.2', 'encodings': ['vp8', 'vp9'], 'abi_version': 12, 'build_config': b'--prefix=/usr --enable-pic --enable-shared --disable-install-bins --disable-install-srcs --size-limit=16384x16384 --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --target=x86_64-linux-gcc', 'vp8.colorspaces': ['YUV420P'], 'vp9.colorspaces': ['YUV420P', 'YUV444P']}
2020-04-15 10:29:53,311 dec_avcodec2:
2020-04-15 10:29:53,311  codec_import_check('dec_avcodec2', 'avcodec2 decoder', 'xpra.codecs.dec_avcodec2', 'xpra.codecs.dec_avcodec2.decoder', ('Decoder',))
2020-04-15 10:29:53,311  xpra.codecs.dec_avcodec2 found, will check for ('Decoder',) in xpra.codecs.dec_avcodec2.decoder
2020-04-15 10:29:53,312 xpra.codecs.dec_avcodec2.decoder: init_module=<built-in function init_module>
2020-04-15 10:29:53,312 xpra.codecs.dec_avcodec2.decoder: Decoder=<class 'xpra.codecs.dec_avcodec2.decoder.Decoder'>
2020-04-15 10:29:53,312 dec_avcodec2.selftest=<built-in function selftest>
2020-04-15 10:29:53,313 xpra.codecs.dec_avcodec2.decoder: cleanup_module=<built-in function cleanup_module>
2020-04-15 10:29:53,313  found dec_avcodec2 : <module 'xpra.codecs.dec_avcodec2.decoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/dec_avcodec2/decoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,313  avcodec2 xpra.codecs.dec_avcodec2.decoder.<built-in function get_info>={'version': (58, 54, 100), 'encodings': ['h264', 'vp8', 'h265', 'mpeg4', 'mpeg1', 'mpeg2', 'vp9'], 'formats': {'formats.h264': ('YUV420P', 'YUV422P', 'YUV444P', 'RGB', 'XRGB', 'BGRX', 'ARGB', 'BGRA', 'GBRP'), 'formats.vp8': ['YUV420P'], 'formats.h265': ('YUV420P', 'YUV422P', 'YUV444P', 'RGB', 'XRGB', 'BGRX', 'ARGB', 'BGRA', 'GBRP'), 'formats.mpeg4': ['YUV420P'], 'formats.mpeg1': ['YUV420P'], 'formats.mpeg2': ['YUV420P'], 'formats.vp9': ['YUV420P', 'YUV444P']}}
2020-04-15 10:29:53,313 done loading codecs
2020-04-15 10:29:53,313 found:
2020-04-15 10:29:53,313 * csc_libyuv           : False
2020-04-15 10:29:53,313 * csc_swscale          : True       <module 'xpra.codecs.csc_swscale.colorspace_converter' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/csc_swscale/colorspace_converter.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,313 * dec_avcodec2         : True       <module 'xpra.codecs.dec_avcodec2.decoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/dec_avcodec2/decoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,313 * dec_jpeg             : True       <module 'xpra.codecs.jpeg.decoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/jpeg/decoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,313 * dec_pillow           : True       <module 'xpra.codecs.pillow.decoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/pillow/decoder.py'>
2020-04-15 10:29:53,313 * dec_vpx              : True       <module 'xpra.codecs.vpx.decoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/vpx/decoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,313 * dec_webp             : True       <module 'xpra.codecs.webp.decoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/webp/decoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,313 * enc_ffmpeg           : True       <module 'xpra.codecs.enc_ffmpeg.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/enc_ffmpeg/encoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,313 * enc_jpeg             : True       <module 'xpra.codecs.jpeg.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/jpeg/encoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,313 * enc_pillow           : True       <module 'xpra.codecs.pillow.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/pillow/encoder.py'>
2020-04-15 10:29:53,313 * enc_vpx              : True       <module 'xpra.codecs.vpx.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/vpx/encoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,313 * enc_webp             : True       <module 'xpra.codecs.webp.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/webp/encoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,313 * enc_x264             : True       <module 'xpra.codecs.enc_x264.encoder' from '/usr/local/lib/python3.7/dist-packages/xpra/codecs/enc_x264/encoder.cpython-37m-x86_64-linux-gnu.so'>
2020-04-15 10:29:53,313 * enc_x265             : False
2020-04-15 10:29:53,313 * nvenc                : False
2020-04-15 10:29:53,313 codecs versions:
2020-04-15 10:29:53,313 * pillow               : 6.2.1
2020-04-15 10:29:53,313 * webp                 : (0, 6, 1)
2020-04-15 10:29:53,313 * jpeg                 : 1
2020-04-15 10:29:53,313 * vpx                  : v1.8.2
2020-04-15 10:29:53,313 * x264                 : 155
2020-04-15 10:29:53,313 * ffmpeg               : (58, 54, 100)
2020-04-15 10:29:53,313 * swscale              : (5, 5, 100)
2020-04-15 10:29:53,313 * avcodec2             : (58, 54, 100)
codecs and csc modules found:
* csc_libyuv           :
* csc_swscale          : /usr/local/lib/python3.7/dist-packages/xpra/codecs/csc_swscale/colorspace_converter.cpython-37m-x86_64-linux-gnu.so
                         colorspaces: RGBX, XRGB, YUV420P, BGRX, RGB, YUV444P, BGR, GBRP, XBGR, YUV422P
                         formats = ('RGB', 'BGR', 'XRGB', 'BGRX', 'RGBX', 'XBGR', 'YUV420P', 'YUV422P', 'YUV444P', 'GBRP')
                         max-size = (16384, 16384)
                         version = (5, 5, 100)
* dec_avcodec2         : /usr/local/lib/python3.7/dist-packages/xpra/codecs/dec_avcodec2/decoder.cpython-37m-x86_64-linux-gnu.so
                         encodings: h264, vp8, h265, mpeg4, mpeg1, mpeg2, vp9
                         encodings = ['h264', 'vp8', 'h265', 'mpeg4', 'mpeg1', 'mpeg2', 'vp9']
                         formats = {'formats.h264': ('YUV420P', 'YUV422P', 'YUV444P', 'RGB', 'XRGB', 'BGRX', 'ARGB', 'BGRA', 'GBRP'), 'formats.vp8': ['YUV420P'], 'formats.h265': ('YUV420P', 'YUV422P', 'YUV444P', 'RGB', 'XRGB', 'BGRX', 'ARGB', 'BGRA', 'GBRP'), 'formats.mpeg4': ['YUV420P'], 'formats.mpeg1': ['YUV420P'], 'formats.mpeg2': ['YUV420P'], 'formats.vp9': ['YUV420P', 'YUV444P']}
                         version = (58, 54, 100)
* dec_jpeg             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/jpeg/decoder.cpython-37m-x86_64-linux-gnu.so
                         encodings: jpeg
* dec_pillow           : /usr/local/lib/python3.7/dist-packages/xpra/codecs/pillow/decoder.py
                         encodings: png, png/L, png/P, jpeg, webp
                         encodings = ['png', 'png/L', 'png/P', 'jpeg', 'webp']
                         version = 6.2.1
* dec_vpx              : /usr/local/lib/python3.7/dist-packages/xpra/codecs/vpx/decoder.cpython-37m-x86_64-linux-gnu.so
                         encodings: vp8, vp9
                         abi_version = 12
                         build_config = b'--prefix=/usr --enable-pic --enable-shared --disable-install-bins --disable-install-srcs --size-limit=16384x16384 --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --target=x86_64-linux-gcc'
                         encodings = ['vp8', 'vp9']
                         version = v1.8.2
                         vp8.colorspaces = ['YUV420P']
                         vp9.colorspaces = ['YUV420P', 'YUV444P']
* dec_webp             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/webp/decoder.cpython-37m-x86_64-linux-gnu.so
                         encodings: webp
                         encodings = ['webp']
                         version = (0, 6, 1)
* enc_ffmpeg           : /usr/local/lib/python3.7/dist-packages/xpra/codecs/enc_ffmpeg/encoder.cpython-37m-x86_64-linux-gnu.so
                         encodings: h264+mp4, vp8+webm, mpeg4+mp4, mpeg1, mpeg2
                         encodings = ['h264+mp4', 'vp8+webm', 'mpeg4+mp4', 'mpeg1', 'mpeg2']
                         formats = {'h264+mp4': ['YUV420P'], 'vp8+webm': ['YUV420P'], 'mpeg4+mp4': ['YUV420P'], 'mpeg1': ['YUV420P'], 'mpeg2': ['YUV420P']}
                         generation = 5
                         muxers = {'a64': 'a64 - video for Commodore 64', 'ac3': 'raw AC-3', 'adts': 'ADTS AAC (Advanced Audio Coding)', 'adx': 'CRI ADX', 'aiff': 'Audio IFF', 'amr': '3GPP AMR', 'apng': 'Animated Portable Network Graphics', 'aptx': 'raw aptX (Audio Processing Technology for Bluetooth)', 'aptx_hd': 'raw aptX HD (Audio Processing Technology for Bluetooth)', 'asf': 'ASF (Advanced / Active Streaming Format)', 'ass': 'SSA (SubStation Alpha) subtitle', 'ast': 'AST (Audio Stream)', 'asf_stream': 'ASF (Advanced / Active Streaming Format)', 'au': 'Sun AU', 'avi': 'AVI (Audio Video Interleaved)', 'avm2': 'SWF (ShockWave Flash) (AVM2)', 'avs2': 'raw AVS2-P2/IEEE1857.4 video', 'bit': 'G.729 BIT file format', 'caf': 'Apple CAF (Core Audio Format)', 'cavsvideo': 'raw Chinese AVS (Audio Video Standard) video', 'codec2': 'codec2 .c2 muxer', 'codec2raw': 'raw codec2 muxer', 'crc': 'CRC testing', 'dash': 'DASH Muxer', 'data': 'raw data', 'daud': 'D-Cinema audio', 'dirac': 'raw Dirac', 'dnxhd': 'raw DNxHD (SMPTE VC-3)', 'dts': 'raw DTS', 'dv': 'DV (Digital Video)', 'eac3': 'raw E-AC-3', 'f4v': 'F4V Adobe Flash Video', 'ffmetadata': 'FFmpeg metadata in text', 'fifo': 'FIFO queue pseudo-muxer', 'fifo_test': 'Fifo test muxer', 'filmstrip': 'Adobe Filmstrip', 'fits': 'Flexible Image Transport System', 'flac': 'raw FLAC', 'flv': 'FLV (Flash Video)', 'framecrc': 'framecrc testing', 'framehash': 'Per-frame hash testing', 'framemd5': 'Per-frame MD5 testing', 'g722': 'raw G.722', 'g723_1': 'raw G.723.1', 'g726': 'raw big-endian G.726 ("left-justified")', 'g726le': 'raw little-endian G.726 ("right-justified")', 'gif': 'CompuServe Graphics Interchange Format (GIF)', 'gsm': 'raw GSM', 'gxf': 'GXF (General eXchange Format)', 'h261': 'raw H.261', 'h263': 'raw H.263', 'h264': 'raw H.264 video', 'hash': 'Hash testing', 'hds': 'HDS Muxer', 'hevc': 'raw HEVC video', 'hls': 'Apple HTTP Live Streaming', 'ico': 'Microsoft Windows ICO', 'ilbc': 'iLBC storage', 'image2': 'image2 sequence', 'image2pipe': 'piped image2 sequence', 'ipod': 'iPod H.264 MP4 (MPEG-4 Part 14)', 'ircam': 'Berkeley/IRCAM/CARL Sound Format', 'ismv': 'ISMV/ISMA (Smooth Streaming)', 'ivf': 'On2 IVF', 'jacosub': 'JACOsub subtitle format', 'latm': 'LOAS/LATM', 'lrc': 'LRC lyrics', 'm4v': 'raw MPEG-4 video', 'md5': 'MD5 testing', 'matroska': 'Matroska Audio', 'microdvd': 'MicroDVD subtitle format', 'mjpeg': 'raw MJPEG video', 'mlp': 'raw MLP', 'mmf': 'Yamaha SMAF', 'mov': 'QuickTime / MOV', 'mp2': 'MP2 (MPEG audio layer 2)', 'mp3': 'MP3 (MPEG audio layer 3)', 'mp4': 'MP4 (MPEG-4 Part 14)', 'mpeg': 'MPEG-1 Systems / MPEG program stream', 'vcd': 'MPEG-1 Systems / MPEG program stream (VCD)', 'mpeg1video': 'raw MPEG-1 video', 'dvd': 'MPEG-2 PS (DVD VOB)', 'svcd': 'MPEG-2 PS (SVCD)', 'mpeg2video': 'raw MPEG-2 video', 'vob': 'MPEG-2 PS (VOB)', 'mpegts': 'MPEG-TS (MPEG-2 Transport Stream)', 'mpjpeg': 'MIME multipart JPEG', 'mxf': 'MXF (Material eXchange Format)', 'mxf_d10': 'MXF (Material eXchange Format) D-10 Mapping', 'mxf_opatom': 'MXF (Material eXchange Format) Operational Pattern Atom', 'null': 'raw null video', 'nut': 'NUT', 'oga': 'Ogg Audio', 'ogg': 'Ogg', 'ogv': 'Ogg Video', 'oma': 'Sony OpenMG audio', 'opus': 'Ogg Opus', 'alaw': 'PCM A-law', 'mulaw': 'PCM mu-law', 'vidc': 'PCM Archimedes VIDC', 'f64be': 'PCM 64-bit floating-point big-endian', 'f64le': 'PCM 64-bit floating-point little-endian', 'f32be': 'PCM 32-bit floating-point big-endian', 'f32le': 'PCM 32-bit floating-point little-endian', 's32be': 'PCM signed 32-bit big-endian', 's32le': 'PCM signed 32-bit little-endian', 's24be': 'PCM signed 24-bit big-endian', 's24le': 'PCM signed 24-bit little-endian', 's16be': 'PCM signed 16-bit big-endian', 's16le': 'PCM signed 16-bit little-endian', 's8': 'PCM signed 8-bit', 'u32be': 'PCM unsigned 32-bit big-endian', 'u32le': 'PCM unsigned 32-bit little-endian', 'u24be': 'PCM unsigned 24-bit big-endian', 'u24le': 'PCM unsigned 24-bit little-endian', 'u16be': 'PCM unsigned 16-bit big-endian', 'u16le': 'PCM unsigned 16-bit little-endian', 'u8': 'PCM unsigned 8-bit', 'psp': 'PSP MP4 (MPEG-4 Part 14)', 'rawvideo': 'raw video', 'rm': 'RealMedia', 'roq': 'raw id RoQ', 'rso': 'Lego Mindstorms RSO', 'rtp': 'RTP output', 'rtp_mpegts': 'RTP/mpegts output format', 'rtsp': 'RTSP output', 'sap': 'SAP output', 'sbc': 'raw SBC', 'scc': 'Scenarist Closed Captions', 'film_cpk': 'Sega FILM / CPK', 'segment': 'segment', 'stream_segment,ssegment': 'streaming segment muxer', 'singlejpeg': 'JPEG single image', 'smjpeg': 'Loki SDL MJPEG', 'smoothstreaming': 'Smooth Streaming Muxer', 'sox': 'SoX native', 'spx': 'Ogg Speex', 'spdif': 'IEC 61937 (used on S/PDIF - IEC958)', 'srt': 'SubRip subtitle', 'sup': 'raw HDMV Presentation Graphic Stream subtitles', 'swf': 'SWF (ShockWave Flash)', 'tee': 'Multiple muxer tee', '3g2': '3GP2 (3GPP2 file format)', '3gp': '3GP (3GPP file format)', 'mkvtimestamp_v2': 'extract pts as timecode v2 format, as defined by mkvtoolnix', 'truehd': 'raw TrueHD', 'tta': 'TTA (True Audio)', 'uncodedframecrc': 'uncoded framecrc testing', 'vc1': 'raw VC-1 video', 'vc1test': 'VC-1 test bitstream', 'voc': 'Creative Voice', 'w64': 'Sony Wave64', 'wav': 'WAV / WAVE (Waveform Audio)', 'webm': 'WebM', 'webm_dash_manifest': 'WebM DASH Manifest', 'webm_chunk': 'WebM Chunk Muxer', 'webp': 'WebP', 'webvtt': 'WebVTT subtitle', 'wtv': 'Windows Television (WTV)', 'wv': 'raw WavPack', 'yuv4mpegpipe': 'YUV4MPEG pipe', 'chromaprint': 'Chromaprint'}
                         version = (58, 54, 100)
* enc_jpeg             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/jpeg/encoder.cpython-37m-x86_64-linux-gnu.so
                         encodings: jpeg
* enc_pillow           : /usr/local/lib/python3.7/dist-packages/xpra/codecs/pillow/encoder.py
                         encodings: png, png/L, png/P, jpeg, webp
                         encodings = ['png', 'png/L', 'png/P', 'jpeg', 'webp']
                         version = 6.2.1
* enc_vpx              : /usr/local/lib/python3.7/dist-packages/xpra/codecs/vpx/encoder.cpython-37m-x86_64-linux-gnu.so
                         encodings: vp8, vp9
                         abi_version = 23
                         build_config = --prefix=/usr --enable-pic --enable-shared --disable-install-bins --disable-install-srcs --size-limit=16384x16384 --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --target=x86_64-linux-gcc
                         counter = 3
                         encodings = ['vp8', 'vp9']
                         version = v1.8.2
                         vp8.colorspaces = ('YUV420P',)
                         vp8.max-size = (8192, 4096)
                         vp9.colorspaces = ('YUV420P', 'YUV444P')
                         vp9.max-size = (8192, 4096)
* enc_webp             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/webp/encoder.cpython-37m-x86_64-linux-gnu.so
                         encodings: webp
                         encodings = ['webp']
                         image-hint = 3
                         image-hints = ('default', 'picture', 'photo', 'graph')
                         preset = 5
                         preset-small = 4
                         presets = ('default', 'picture', 'photo', 'drawing', 'icon', 'text')
                         threading = True
                         version = (0, 6, 1)
* enc_x264             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/enc_x264/encoder.cpython-37m-x86_64-linux-gnu.so
                         encodings: h264
                         formats = ('YUV420P', 'YUV422P', 'YUV444P', 'BGRA', 'BGRX')
                         generation = 5
                         max-size = (8192, 4096)
                         version = 155
* enc_x265             :
* nvenc                :
codecs versions:
* avcodec2                        : 58.54.100
* ffmpeg                          : 58.54.100
* jpeg                            : 1
* numpy                           : 1.16.5
* pillow                          : 6.2.1
* swscale                         : 5.5.100
* vpx                             : 1.8.2
* webp                            : 0.6.1
* x264                            : 155

Wed, 15 Apr 2020 08:35:10 GMT - Andrei K: owner changed


Wed, 15 Apr 2020 08:45:40 GMT - Antoine Martin: owner changed

(built from source)

Cool, so you can try with r26133 applied. And then please run with:

XPRA_NVENC_DEBUG_API=1 XPRA_NVENC_DEBUG=1 loader.py

This should tell us the exact error causing nvEncOpenEncodeSessionEx to fail.


Wed, 15 Apr 2020 09:27:16 GMT - Andrei K: owner changed

I noticed Cuda version 8 in logs, while I have installed 10. Not sure if it's the same version meaning.

11:17:05 in ~/Downloads/xpra-3.0.9 » sudo XPRA_NVENC_DEBUG_API=1 XPRA_NVENC_DEBUG=1 python3 /usr/local/lib/python3.7/dist-packages/xpra/codecs/loader.py
2020-04-15 11:17:12,946 c_parseguid bytes(b'CE788D20')=b'\xcex\x8d '
2020-04-15 11:17:12,946 c_parseguid bytes(b'AAA9')=b'\xaa\xa9'
2020-04-15 11:17:12,946 c_parseguid bytes(b'4318')=b'C\x18'
2020-04-15 11:17:12,946 c_parseguid bytes(b'92BB')=b'\x92\xbb'
2020-04-15 11:17:12,946 c_parseguid bytes(b'AC7E858C8D36')=b'\xac~\x85\x8c\x8d6'
2020-04-15 11:17:12,946 c_parseguid(CE788D20-AAA9-4318-92BB-AC7E858C8D36)={'Data1': 3464006944, 'Data2': 43689, 'Data3': 17176, 'Data4': b'\x92\xbb\xac~\x85\x8c\x8d6\xc0\x8b\xc2Dy\x7f'}
2020-04-15 11:17:12,946 nvenc.init_module()
2020-04-15 11:17:12,946 NVENC encoder API version 9.1
2020-04-15 11:17:12,946 init_nvencode_library() will try to load libcuda.so
2020-04-15 11:17:12,946 init_nvencode_library() <bound method LibraryLoader.LoadLibrary of <ctypes.LibraryLoader object at 0x7f7945c0cf10>>(libcuda.so)=<CDLL 'libcuda.so', handle fec300 at 0x7f79478bb350>
2020-04-15 11:17:12,946 init_nvencode_library() libcuda.cuCtxGetCurrent=<_FuncPtr object at 0x7f7944b81120>
2020-04-15 11:17:12,947 init_nvencode_library() will try to load libnvidia-encode.so.1
2020-04-15 11:17:12,947 init_nvencode_library() <bound method LibraryLoader.LoadLibrary of <ctypes.LibraryLoader object at 0x7f7945c0cf10>>(libnvidia-encode.so.1)=<CDLL 'libnvidia-encode.so.1', handle 1030970 at 0x7f7944bfa690>
2020-04-15 11:17:12,947 init_nvencode_library() NvEncodeAPICreateInstance=<_FuncPtr object at 0x7f7944b811f0>
2020-04-15 11:17:12,948 CUDA initialization (this may take a few seconds)
2020-04-15 11:17:13,016 CUDA 8.0.0 / PyCUDA 2019.1.2, found 1 device:
2020-04-15 11:17:13,016   + Quadro P1000 @ 0000:65:00.0 (memory: 94% free, compute: 6.1)
2020-04-15 11:17:13,042 NVidia driver version 430.50
2020-04-15 11:17:13,042 init_module() will try keys: [None]
2020-04-15 11:17:13,042 testing encoder with device 0
2020-04-15 11:17:13,105 selected device Quadro P1000 @ 0000:65:00.0
2020-04-15 11:17:13,105 init_cuda() pixel format=None, device_id=0
2020-04-15 11:17:13,105 init_cuda cuda_device=<pycuda._driver.Device object at 0x7f7944bf22b0> (Quadro P1000 @ 0000:65:00.0)
2020-04-15 11:17:13,141 init_cuda cuda_context=<pycuda._driver.Context object at 0x7f7944b8b330>
2020-04-15 11:17:13,142 init_cuda cuda info={'driver': {'version': (8, 0, 0), 'driver_version': 10010}}
2020-04-15 11:17:13,142 init_cuda pycuda info={'version': {'': (2019, 1, 2), 'text': '2019.1.2'}}
2020-04-15 11:17:13,142 cuCtxGetCurrent() returned SUCCESS, cuda context pointer=0x174b590
2020-04-15 11:17:13,142 test encoder=nvenc(None/None/None - None -    0x0   )
2020-04-15 11:17:13,142 open_encode_session() cuda_context=<pycuda._driver.Context object at 0x7f7944b8b330>, cuda_context_ptr=0x174b590
2020-04-15 11:17:13,142 open_encode_session() functionList=0x1757b20
2020-04-15 11:17:13,142 NvEncodeAPICreateInstance(0x1757b20)
2020-04-15 11:17:13,142 raiseNVENC(0, getting API function list)
2020-04-15 11:17:13,142 calling nvEncOpenEncodeSessionEx @ 0x7f7944957130
2020-04-15 11:17:13,142 clean() cuda_context=<pycuda._driver.Context object at 0x7f7944b8b330>, encoder context=0x0
2020-04-15 11:17:13,167 clean() done
2020-04-15 11:17:13,167 nvenc.cleanup_module()
2020-04-15 11:17:13,167  cannot load nvenc (nvenc encoder): None missing from xpra.codecs.nvenc.encoder
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/xpra/codecs/loader.py", line 58, in codec_import_check
    init_module()
  File "xpra/codecs/nvenc/encoder.pyx", line 2863, in xpra.codecs.nvenc.encoder.init_module
    test_encoder.open_encode_session()
  File "xpra/codecs/nvenc/encoder.pyx", line 2801, in xpra.codecs.nvenc.encoder.Encoder.open_encode_session
    raise TransientCodecException("cannot open encoding session, context is NULL, %i contexts are in use" % context_counter.get())
xpra.codecs.codec_constants.TransientCodecException: cannot open encoding session, context is NULL, 0 contexts are in use
codecs and csc modules found:
* csc_libyuv           :
* csc_swscale          : /usr/local/lib/python3.7/dist-packages/xpra/codecs/csc_swscale/colorspace_converter.cpython-37m-x86_64-linux-gnu.so
* dec_avcodec2         : /usr/local/lib/python3.7/dist-packages/xpra/codecs/dec_avcodec2/decoder.cpython-37m-x86_64-linux-gnu.so
* dec_jpeg             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/jpeg/decoder.cpython-37m-x86_64-linux-gnu.so
* dec_pillow           : /usr/local/lib/python3.7/dist-packages/xpra/codecs/pillow/decoder.py
* dec_vpx              : /usr/local/lib/python3.7/dist-packages/xpra/codecs/vpx/decoder.cpython-37m-x86_64-linux-gnu.so
* dec_webp             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/webp/decoder.cpython-37m-x86_64-linux-gnu.so
* enc_ffmpeg           : /usr/local/lib/python3.7/dist-packages/xpra/codecs/enc_ffmpeg/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_jpeg             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/jpeg/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_pillow           : /usr/local/lib/python3.7/dist-packages/xpra/codecs/pillow/encoder.py
* enc_vpx              : /usr/local/lib/python3.7/dist-packages/xpra/codecs/vpx/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_webp             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/webp/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_x264             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/enc_x264/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_x265             :
* nvenc                :
codecs versions:
* avcodec2                        : 58.54.100
* ffmpeg                          : 58.54.100
* jpeg                            : 1
* numpy                           : 1.16.5
* pillow                          : 6.2.1
* swscale                         : 5.5.100
* vpx                             : 1.8.2
* webp                            : 0.6.1
* x264                            : 155
11:17:13 in ~/Downloads/xpra-3.0.9 » nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
11:18:29 in ~/Downloads/xpra-3.0.9 » cat /usr/local/cuda/version.txt
CUDA Version 10.1.243
11:18:49 in ~/Downloads/xpra-3.0.9 » nvidia-smi
Wed Apr 15 11:18:59 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50       Driver Version: 430.50       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Quadro P1000        Off  | 00000000:65:00.0  On |                  N/A |
| 34%   31C    P8    N/A /  N/A |    157MiB /  4037MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      3930      G   /usr/lib/xorg/Xorg                           154MiB |
+-----------------------------------------------------------------------------+

Wed, 15 Apr 2020 09:36:44 GMT - Antoine Martin: owner changed

CUDA 8.0.0 / PyCUDA 2019.1.2, found 1 device:

That's the CUDA version that was used for building pycuda.

From that log output, you haven't applied the patch yet, right?


Wed, 15 Apr 2020 10:55:16 GMT - Andrei K:

12:51:42 in ~/Downloads/xpra-3.0.9 took 2m 18s » sudo XPRA_NVENC_DEBUG_API=1 XPRA_NVENC_DEBUG=1 python3 /usr/local/lib/python3.7/dist-packages/xpra/codecs/loader.py
2020-04-15 12:52:15,948 c_parseguid bytes(b'CE788D20')=b'\xcex\x8d '
2020-04-15 12:52:15,948 c_parseguid bytes(b'AAA9')=b'\xaa\xa9'
2020-04-15 12:52:15,948 c_parseguid bytes(b'4318')=b'C\x18'
2020-04-15 12:52:15,948 c_parseguid bytes(b'92BB')=b'\x92\xbb'
2020-04-15 12:52:15,948 c_parseguid bytes(b'AC7E858C8D36')=b'\xac~\x85\x8c\x8d6'
2020-04-15 12:52:15,948 c_parseguid(CE788D20-AAA9-4318-92BB-AC7E858C8D36)={'Data1': 3464006944, 'Data2': 43689, 'Data3': 17176, 'Data4': b'\x92\xbb\xac~\x85\x8c\x8d60Z\xab\xec\xfa\x7f'}
2020-04-15 12:52:15,948 nvenc.init_module()
2020-04-15 12:52:15,948 NVENC encoder API version 9.1
2020-04-15 12:52:15,948 init_nvencode_library() will try to load libcuda.so
2020-04-15 12:52:15,948 init_nvencode_library() <bound method LibraryLoader.LoadLibrary of <ctypes.LibraryLoader object at 0x7ffaedb18cd0>>(libcuda.so)=<CDLL 'libcuda.so', handle 1c3a300 at 0x7ffaef7c71d0>
2020-04-15 12:52:15,948 init_nvencode_library() libcuda.cuCtxGetCurrent=<_FuncPtr object at 0x7ffaeca8d120>
2020-04-15 12:52:15,948 init_nvencode_library() will try to load libnvidia-encode.so.1
2020-04-15 12:52:15,949 init_nvencode_library() <bound method LibraryLoader.LoadLibrary of <ctypes.LibraryLoader object at 0x7ffaedb18cd0>>(libnvidia-encode.so.1)=<CDLL 'libnvidia-encode.so.1', handle 1c7e970 at 0x7ffaecafb690>
2020-04-15 12:52:15,949 init_nvencode_library() NvEncodeAPICreateInstance=<_FuncPtr object at 0x7ffaeca8d1f0>
2020-04-15 12:52:15,949 CUDA initialization (this may take a few seconds)
2020-04-15 12:52:16,014 CUDA 8.0.0 / PyCUDA 2019.1.2, found 1 device:
2020-04-15 12:52:16,014   + Quadro P1000 @ 0000:65:00.0 (memory: 94% free, compute: 6.1)
2020-04-15 12:52:16,040 NVidia driver version 430.50
2020-04-15 12:52:16,040 init_module() will try keys: [None]
2020-04-15 12:52:16,040 testing encoder with device 0
2020-04-15 12:52:16,102 selected device Quadro P1000 @ 0000:65:00.0
2020-04-15 12:52:16,102 init_cuda() pixel format=None, device_id=0
2020-04-15 12:52:16,102 init_cuda cuda_device=<pycuda._driver.Device object at 0x7ffaecb12070> (Quadro P1000 @ 0000:65:00.0)
2020-04-15 12:52:16,138 init_cuda cuda_context=<pycuda._driver.Context object at 0x7ffaeca97330>
2020-04-15 12:52:16,138 init_cuda cuda info={'driver': {'version': (8, 0, 0), 'driver_version': 10010}}
2020-04-15 12:52:16,138 init_cuda pycuda info={'version': {'': (2019, 1, 2), 'text': '2019.1.2'}}
2020-04-15 12:52:16,139 cuCtxGetCurrent() returned SUCCESS, cuda context pointer=0x2399590
2020-04-15 12:52:16,139 test encoder=nvenc(None/None/None - None -    0x0   )
2020-04-15 12:52:16,139 open_encode_session() cuda_context=<pycuda._driver.Context object at 0x7ffaeca97330>, cuda_context_ptr=0x2399590
2020-04-15 12:52:16,139 open_encode_session() functionList=0x23a5ba0
2020-04-15 12:52:16,139 NvEncodeAPICreateInstance(0x23a5ba0)
2020-04-15 12:52:16,139 raiseNVENC(0, getting API function list)
2020-04-15 12:52:16,139 calling nvEncOpenEncodeSessionEx @ 0x7ffaec863130
2020-04-15 12:52:16,139 nvEncOpenEncodeSessionEx(..)=15
2020-04-15 12:52:16,139 clean() cuda_context=<pycuda._driver.Context object at 0x7ffaeca97330>, encoder context=0x0
2020-04-15 12:52:16,164 clean() done
2020-04-15 12:52:16,164 nvenc.cleanup_module()
2020-04-15 12:52:16,165  cannot load nvenc (nvenc encoder): None missing from xpra.codecs.nvenc.encoder
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/xpra/codecs/loader.py", line 58, in codec_import_check
    init_module()
  File "xpra/codecs/nvenc/encoder.pyx", line 2869, in xpra.codecs.nvenc.encoder.init_module
    test_encoder.open_encode_session()
  File "xpra/codecs/nvenc/encoder.pyx", line 2807, in xpra.codecs.nvenc.encoder.Encoder.open_encode_session
    raise TransientCodecException("cannot open encoding session: %s, %i contexts are in use" % (msg, context_counter.get()))
xpra.codecs.codec_constants.TransientCodecException: cannot open encoding session: 15: This indicates that an invalid struct version was used by the client., 0 contexts are in use
codecs and csc modules found:
* csc_libyuv           :
* csc_swscale          : /usr/local/lib/python3.7/dist-packages/xpra/codecs/csc_swscale/colorspace_converter.cpython-37m-x86_64-linux-gnu.so
* dec_avcodec2         : /usr/local/lib/python3.7/dist-packages/xpra/codecs/dec_avcodec2/decoder.cpython-37m-x86_64-linux-gnu.so
* dec_jpeg             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/jpeg/decoder.cpython-37m-x86_64-linux-gnu.so
* dec_pillow           : /usr/local/lib/python3.7/dist-packages/xpra/codecs/pillow/decoder.py
* dec_vpx              : /usr/local/lib/python3.7/dist-packages/xpra/codecs/vpx/decoder.cpython-37m-x86_64-linux-gnu.so
* dec_webp             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/webp/decoder.cpython-37m-x86_64-linux-gnu.so
* enc_ffmpeg           : /usr/local/lib/python3.7/dist-packages/xpra/codecs/enc_ffmpeg/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_jpeg             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/jpeg/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_pillow           : /usr/local/lib/python3.7/dist-packages/xpra/codecs/pillow/encoder.py
* enc_vpx              : /usr/local/lib/python3.7/dist-packages/xpra/codecs/vpx/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_webp             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/webp/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_x264             : /usr/local/lib/python3.7/dist-packages/xpra/codecs/enc_x264/encoder.cpython-37m-x86_64-linux-gnu.so
* enc_x265             :
* nvenc                :
codecs versions:
* avcodec2                        : 58.54.100
* ffmpeg                          : 58.54.100
* jpeg                            : 1
* numpy                           : 1.16.5
* pillow                          : 6.2.1
* swscale                         : 5.5.100
* vpx                             : 1.8.2
* webp                            : 0.6.1
* x264                            : 155

I use NVENC v9.1.23 with pkg-config:

prefix=/usr/local/nvenc9
exec_prefix=${prefix}
core_includedir=${prefix}/include
api_includedir=${prefix}/include
libdir=/usr/lib/nvidia
Name: nvenc
Description: NVENC
Version: 9.1.23
Libs: -L${libdir} -lnvidia-encode
Cflags: -I${core_includedir} -I${api_includedir}

Wed, 15 Apr 2020 10:55:49 GMT - Andrei K: owner changed


Wed, 15 Apr 2020 12:33:50 GMT - Antoine Martin: owner changed

TransientCodecException: cannot open encoding session: 15: This indicates that an invalid struct version was used by the client

Because your driver is not the latest, you may want to rebuild against an older SDK version to see if that helps.


Wed, 15 Apr 2020 13:31:57 GMT - Andrei K: status changed; resolution set

v9.1.23 indeed requires 4.34 drivers. Everything works with v9.0.20.

Thanks a lot! And sorry for bothering, in the end it's my inattention.


Sat, 23 Jan 2021 05:59:10 GMT - migration script:

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