Go to file
Vivek Kasireddy 6b951f3fbf dcc-send: Encode and send gl_draw stream data to the remote client (v3)
For remote (or non-gl) clients, if a valid gl_draw stream exists,
then we first extract the dmabuf fd associated with the scanout and
share it with the encoder along with other key parameters such as
stride, width and height. Once the encoder finishes creating an
encoded buffer (using the dmabuf fd as input), we then send it
over to the client. And, as soon as the encoder notifies that it
is no longer using the dmabuf fd, we send a gl_draw_done async to
the application.

v2: (suggestions and fixups from Frediano)
- Moved the DisplayStreamData initialization code from
  red_marshall_stream_data() into a separate function that is reused
  when marshalling gl_draw_stream.
- Used new/delete instead of g_new/g_free for creating and destroying
  dmabuf_data object
- s/notify_mem_free/free
  s/red_gst_mem_free_cb/red_free_fb
- Removed the usage of opaque from red_free_cb

v3:
- Obtain the key params such as fd, stride, etc from the stream instead
  of the scanout
- Replace the switch with if in red_marshall_gl_draw_stream() to avoid
  printing a warning (and spamming the console) when a frame is dropped

Cc: Frediano Ziglio <freddy77@gmail.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
Cc: Dongwon Kim <dongwon.kim@intel.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
2024-03-04 02:47:54 -08:00
build-aux ci: Update makecheck-windows job to Meson 2023-05-30 20:35:57 +01:00
docs docs: Fix building manual with Meson from tarball 2021-04-19 17:05:29 +01:00
m4 Exclude a warning causing new compiler to fail 2022-07-19 10:10:26 +01:00
server dcc-send: Encode and send gl_draw stream data to the remote client (v3) 2024-03-04 02:47:54 -08:00
subprojects Update spice-common submodule 2022-07-19 10:07:06 +01:00
tests migrate.py: By default try to search system qemu executable 2020-03-09 12:28:45 +00:00
tools Fix compatibility with mremap and Darwin 2020-05-19 10:01:47 +01:00
uncrustify_cfg fresh start 2009-10-14 15:06:41 +02:00
.gitignore docs: update Makefile to match meson dist 2019-10-14 13:49:18 +01:00
.gitlab-ci.yml test-listen: Use OpenSSL BIO instead of GIO library 2023-11-22 07:36:40 +00:00
.gitmodules build: Move spice-common to subprojects/ directory 2018-07-23 14:49:19 -03:00
.mailmap syntax-check: Fix missing AUTHORS 2016-12-05 13:48:28 +00:00
.travis.yml Remove Celt support 2020-03-17 17:15:51 +00:00
AUTHORS gstreamer-encoder: Use an env var to override converter format 2023-11-15 18:04:56 +00:00
autogen.sh build-sys: Pass --enable-python-checks when running autogen.sh 2015-04-23 10:38:24 +02:00
cfg.mk Converting Spice_for_newbies.odt to AsciiDoctor format 2019-05-31 15:06:10 +01:00
CHANGELOG.md build: Prepare for 0.15.2 release 2023-05-11 12:26:06 +01:00
configure.ac build: Remove support for GStreamer 0.10 2023-09-17 10:00:41 +01:00
COPYING Relicense everything from GPL to LGPL 2.1+ 2010-04-13 22:22:15 +02:00
doxygen.cfg build: Add Doxygen support 2020-06-25 09:12:37 +01:00
doxygen.sh build: Add Doxygen support 2020-06-25 09:12:37 +01:00
GNUmakefile syntax-check: Update gnufiles 2016-11-18 12:06:53 +00:00
maint.mk syntax-check: Update gnufiles 2016-11-18 12:06:53 +00:00
Makefile.am build: Add missing file to distribution 2023-05-11 12:26:06 +01:00
meson_options.txt build: Remove support for GStreamer 0.10 2023-09-17 10:00:41 +01:00
meson.build build: Remove support for GStreamer 0.10 2023-09-17 10:00:41 +01:00
README Update spice-protocol version 2019-04-26 11:45:12 +01:00
README.Windows.md Add some notes for the Windows port 2019-05-07 10:14:35 +01:00
spice-server.pc.in build: Change Autotools pkg-config name field to match Meson 2020-04-10 15:28:16 +01:00
TODO.multiclient Remove trailing whitespace from end of lines 2012-01-13 18:11:59 +02:00

   SPICE: Simple Protocol for Independent Computing Environments
   =============================================================

SPICE is a remote display system built for virtual environments which
allows you to view a computing 'desktop' environment not only on the
machine where it is running, but from anywhere on the Internet and
from a wide variety of machine architectures.

Installation
------------

The SPICE package uses GNU autotools, so the build install process
follows the standard process documented in the INSTALL file. As a
quick start you can do

  ./configure --prefix=/usr --sysconfdir=/etc \
        --localstatedir=/var --libdir=/usr/lib
  make
  sudo make install

Or to install into a private user specific location

  ./configure --prefix=$HOME/spice
  make
  make install

The following mandatory dependencies are required in order to
build SPICE

    Spice protocol >= 0.14.0
    Pixman         >= 0.17.7
    OpenSSL
    libjpeg
    zlib

The following optional dependencies increase the available
functionality

    Cyrus-SASL
    libcacard      >= 2.5.1             (Smartcard support)
    Opus           >= 1.0.0             (Opus audio encoding support)
    LZ4                                 (LZ4 compression support)
    GStreamer      >= 1.0.0

Communication
-------------

To communicate with the development team, or to post patches
there is a technical mailing list:

   http://lists.freedesktop.org/mailman/listinfo/spice-devel

There is also a mailing list for new release announcements:

   http://lists.freedesktop.org/archives/spice-announce/

To view known bugs, or report new bugs, in SPICE visit

   https://gitlab.freedesktop.org/spice/spice/issues/new?

Bugs found when using an OS distribution's binary packages should
be reported to the OS vendors' own bug tracker first.

The latest SPICE code can be found in GIT at:

   https://gitlab.freedesktop.org/spice/

Licensing
---------

SPICE is provided under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

Please see the COPYING file for the complete LGPLv2+ license
terms, or visit <http://www.gnu.org/licenses/>.

Experimental Features
---------------------
To enable multiple client connections, set:
SPICE_DEBUG_ALLOW_MC=1

-- End of readme