• David Verbeiren's avatar
    LibVNCClient: Add H.264 encoding for framebuffer updates · d891478e
    David Verbeiren authored
    This patch implements support in LibVNCClient for framebuffer updates
    encoded as H.264 frames. Hardware accelerated decoding is performed
    using VA API.
    
    This is experimental support to let the community explore the possibilities
    offered by the potential bandwidth and latency reductions that H.264 encoding
    allows. This may be particularly useful for use cases such as online gaming,
    hosted desktops, hosted set top boxes...
    
    This patch only provides the client side support and is meant to be used
    with corresponding server-side support, as provided by an upcoming patch for
    qemu ui/vnc module (to view the display of a virtual machine executing under
    QEMU).
    
    With this H.264-based encoding, if multiple framebuffer update messages
    are generated for a single server framebuffer modification, the H.264
    frame data is sent only with the first update message. Subsequent update
    framebuffer messages will contain only the coordinates and size of the
    additional updated regions.
    
    Instructions/Requirements:
    * The patch should be applied on top of the previous patch I submitted with
    minor enhancements to the gtkvncviewer application:
    http://sourceforge.net/mailarchive/message.php?msg_id=30323804
    * Currently only works with libva 1.0: use branch "v1.0-branch" for libva and
    intel-driver. Those can be built as follows:
       cd libva
       git checkout v1.0-branch
       ./autogen.sh
       make
       sudo make install
       cd ..
       git clone git://anongit.freedesktop.org/vaapi/intel-driver
       cd intel-driver
       git checkout v1.0-branch
       ./autogen.sh
       make
       sudo make install
    Signed-off-by: 's avatarDavid Verbeiren <david.verbeiren@intel.com>
    d891478e
Name
Last commit
Last update
..
Makefile.am LibVNCClient: Add H.264 encoding for framebuffer updates
corre.c API change: Bool, KeySym, Pixel get prefix "rfb"; constants in rfbconfig.h get prefix "LIBVNCSERVER_"
cursor.c libvncclient: add GotCursorShape() and GotCopyRect(); x11vnc dep on libvncclient
h264.c LibVNCClient: Add H.264 encoding for framebuffer updates
hextile.c signed vs unsigned warnings eliminated (gcc 4.0.1)
listen.c IPv6 support for LibVNCServer, part four: add copyright notices to files with non-trivial changes.
rfbproto.c LibVNCClient: Add H.264 encoding for framebuffer updates
rre.c API change: Bool, KeySym, Pixel get prefix "rfb"; constants in rfbconfig.h get prefix "LIBVNCSERVER_"
sockets.c Tune the definitions needed when building with -ansi.
tight.c signed vs unsigned warnings eliminated (gcc 4.0.1)
tls.h Add anonymous TLS support in libvncclient
tls_gnutls.c LibVNCClient: Remove all those WITH_CLIENT_TLS #ifdefs and move GnuTLS specific functionality into tls_gnutls.c.
tls_none.c LibVNCClient: Fix build with no SSL/TLS library available.
tls_openssl.c Fix in milliseconds to struct timeval conversion
ultra.c Fix regression in Ultra encoding introduced by commit fe1ca16e.
vncviewer.c LibVNCClient: Add H.264 encoding for framebuffer updates
zlib.c signed vs unsigned warnings eliminated (gcc 4.0.1)
zrle.c Fix (most) MinGW32 compiler warnings.