xpra icon
Bug tracker and wiki


Picture Encodings Debugging

See encodings.

Initial Checks

The first thing to check is the codec availability and version. On MS Windows, run the Encoding_Info.exe utility, or the bug report tool. On other platforms, run the xpra/codecs/loader.py script, and for debugging video the xpra/codecs/video_helper.py script. (both support a --verbose option).

Encodings Actually Used

When selecting a non-video encoding explicitly, the encoding used for sending the pixels to the client will be the one which has been selected.

The only exception to this rule is when the number of pixels is so small that trying to compress them would be pointless, and they are then usually sent as plain rgb.

With video encodings, things are more complicated: if there is a video region, the non-video areas will use other encodings. Even the video region (which may be the whole window) will get automatically refreshed with a lossless encoding when it stops refreshing rapidly enough to warrant the use of a video encoder.

Debug Encoding Used

To debug encoding selection:

  • the actual encoding used is logged with -d compress in the form:
    make_data_packet: image=XShmImageWrapper(BGRX: 149, 2, 6, 13), damage data: (1, 149, 2, 6, 13, 'rgb24')
    compress:   0.9ms for  499x316  pixels using  mmap with ratio   0.0% (  615KB to     0KB), delta=-1, client_options={'rgb_format': 'BGRX'}
  • the current encoding set is best seen with: xpra info | grep encoding=
  • to see statistics about which encodings are actually used: xpra info | egrep "last_used|total_frames|total_pixels"
  • video region detection can be seen with xpra info | grep region, and its debug logging can be enabled with -d regiondetect

Debug Video Encoder Selection

Xpra supports multiple video encoders and multiple CSC modules. The exact compression pipeline used will vary and it may get re-evaluated up to 1 time per second. Each encoder and CSC option will be scored, taking into account the speed and quality requirements as well as the current network and CPU / GPU conditions. To show the details of those calculations, use the "score" debug flag:

xpra start -d score

Debug Auto-Refresh

When screen updates are sent using a lossless encoding (usually for performance reasons), the system will keep track of those regions and send a lossless auto-refresh packet later. To debug the auto-refresh logic, use the "-d refresh" logging option.

A similar mechanism applies to video regions, which uses the "-d regionrefresh" flag.

Last modified 2 months ago Last modified on 01/12/17 12:10:12