has been a while since I posted a patchset on this.
One reason is that the feature set of the series is not changed.
Basically all pieces from DRM prime handling to VAAPI (hardware
encoding acceleration), forcing streaming and fallback to software
encoding are there.
The main concern about these patches are the status of some
implementation. The mainly hacks and fixes came from streaming.
The idea of the streaming code currently is recognizing and
optimizing video streaming done by virtual machine.
With Virgl (using host rendering which is the current target)
the streaming code is used continually so this part of code is
quite stressed. Basically when Virgl kicks in all display become
a big and continuous video.
This introduce some issues like the fact that if user interaction
stops the frame rate fall down to a 0 average causing some
The other big problems came introducing hardware acceleration
and DRM primes. Hardware accelerations means the use of different
encoders (VAAPI was chosen). The status of these encoders and
the gstreamer plugins (the part of code to use them) status is
not so optimal like software encoders (for instance there is the
lack for changing bit rate dynamically although supported by
VAAPI). Also our gstreamer support code needs specific settings
for every new encoders (for instance to support live streaming).
Another problem with hardware encoders is license issues which
could limit the usage and distribution of the required software;
this lead to having to support fallback to software encoders
to avoid blank screen.
As said above all these are implemented but with lot of hacks
Reordering the patches and list of todos/bugs I realized that
the main issues came from streaming. For this reason I decided
to focus first of all on the streaming part. The first step
will be the implementation of a proper test as a unit test
for the encoding code checking for different aspect from
encoders, formats (at the beginning just different bitmap
formats, after DRM primes), clipping, bit rate handling.
This will help in the next step to add support for different
formats (DRM primes) and encoders (hardware ones).
Spice-devel mailing list