summaryrefslogtreecommitdiffstats
path: root/spice/enums.h
Commit message (Collapse)AuthorAgeFilesLines
* Rename SpiceImageCompress constantsChristophe Fergeau2015-07-231-12/+12
| | | | | | Having these constants use the same name as the ones in spice-server 0.12.5 causes compilation issues for spice-server users when using spice-server 0.12.5 or older, and spice-protocol 0.12.8.
* Update enums.h for preferred compression messageJavier Celaya2015-06-011-0/+14
|
* Add LZ4 compression display capability.Javier Celaya2014-12-021-0/+1
|
* Update enums.h for webdav channelMarc-André Lureau2014-03-191-2/+18
|
* Add support for the Opus codecJeremy White2014-01-021-0/+1
| | | | Signed-off-by: Jeremy White <jwhite@codeweavers.com>
* enums: add SPICE_MSG_BASE_LASTMarc-André Lureau2013-09-121-0/+1
| | | | | | Make it explicit that 100 is the last value of the base channel messages. This allows clients to use the generated enum value too. (see spice.proto)
* add SPICE_MSG_PLAYBACK_LATENCYYonit Halperin2013-04-221-0/+1
| | | | | | | SPICE_MSG_PLAYBACK_LATENCY is intended for adjusting the latency of the audio playback. It is used for synchronizing the audio and video playback. The corresponding capability is SPICE_PLAYBACK_CAP_LATENCY.
* add SPICE_MSGC_DISPLAY_STREAM_REPORTYonit Halperin2013-04-221-0/+2
| | | | | | | | | If the server & client support SPICE_DISPLAY_CAP_STREAM_REPORT, the server first sends SPICE_MSG_DISPLAY_STREAM_ACTIVATE_REPORT. Then, the client periodically sends SPICE_MSGC_DISPLAY_STREAM_REPORT messages that supply the server details about the current quality of the video streaming on the client side. The server analyses the report and adjust the stream parameters accordingly.
* Add port channel enum valuesMarc-André Lureau2012-11-301-0/+14
| | | | | | | | | | | | | | | | The channel is based on Spicevmc which simply tunnels data between client and server. A few messages have been added: SPICE_MSG_PORT_INIT: Describes the port state and fqdn name, should be sent only once when the client connects. SPICE_MSG_PORT_EVENT: Server port event. SPICE_PORT_EVENT_OPENED and SPICE_PORT_EVENT_CLOSED are typical values when the chardev is opened or closed. SPICE_MSGC_PORT_EVENT: Client port event. (See related spice.proto change in spice-common)
* inputs: add an INPUTS_KEY_SCANCODE messageMarc-André Lureau2012-08-271-0/+1
| | | | | | | | | | | | | | | Add a new arbitrary keyboard scancodes message. For now, it will be used to avoid unwanted key repeatition when there is jitter in the network and too much time between DOWN and UP messages, instead the client will send the press & release scancode in a sequence from a single message. If the server doesn't support INPUTS_CAP_KEY_SCANCODE, the client is responsible to handle a fallback mode with the exisiting KEY_DOWN and KEY_UP messages. See also: https://bugzilla.redhat.com/show_bug.cgi?id=812347
* seamless migration supportYonit Halperin2012-08-271-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The main difference between semi-seamless and seamless migration is that while in semi-seamless migration the state of all the channels is being completely reset after migration is complete, in seamless migration the essential parts of the state are restored on the server side, and are left the same on the client side. semi-seamless migration is equivalent to having the client disconnect from the src and connected from scratch to the dest, with the exception, that the handshake with the dest server occurs before the client has disconnected from the src. In semi-seamless migration in-flight data gets lost, e.g., a file transfer to a usb device might be disrupted. ======================= ===protocol details==== ======================= Let s1, s2, and c be the src server, dest server and client, respectively. Semi-Seamless migration protocol ================================ pre-migration phase: -------------------- (1) s1->c: SPICE_MSG_MAIN_MIGRATE_BEGIN In response, c tries to establish a connection to s2. After the connection is established, it is inactive (the client doesn't attempt to read or write messages from/to it) (2) c->s1: SPICE_MSGC_MAIN_MIGRATE_CONNECTED or SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR post migration phase: --------------------- (1) s1->c: SPICE_MSG_MAIN_MIGRATE_END or SPICE_MSG_MAIN_MIGRATE_CANCEL In case of the former, c disconnects from s1, resets all its channels states and switches to an active connection with s2. (2) c->s2: SPICE_MSGC_MAIN_MIGRATE_END The msg signals that all the channels have been migrated successfully to s2. Seamless migration protocol =========================== pre-migration phase: -------------------- In case qemu/libvirt/client do not support seamless migration, s1 takes the semi-seamless pathway for migration. Otherwise: (1) s1->c: SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS (*New*) The msg includes the version of the migration protocol of s1. In response c tries to establish a connection to s2. (2) If the connection fails: (2.1) c->s1: SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR If s2 supports SPICE_MAIN_CAP_SEAMLESS_MIGRATE: (2.2) c->s2: SPICE_MSGC_MAIN_MIGRATE_DST_DO_SEAMLESS (*New*) The msg includes the version of the migration protocol of s1. The msg is used for querying s2 if seamless migration is possible, given the migration protocol version of s1. (2.2.1) s2->c: SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK/NACK (*New*) (2.2.2) c->s1: SPICE_MSGC_MAIN_MIGRATE_CONNECTED_SEAMLESS (*New*) or SPICE_MSGC_MAIN_MIGRATE_CONNECTED The latter is sent when c receives SEAMLESS_NACK, and indicates s1 to apply semi-seamless protocol on post migraion phase. If s2 does not support SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE: (2.3) c->s1: SPICE_MSGC_MAIN_MIGRATE_CONNECTED (see 2.2.2) post migration phase: --------------------- While the pre migration phase was conducted by the main channel, this phase's protocol occurs in all the migrated channels. (1) s1->c: SPICE_MSG_MIGRATE The msg marks the client that the connection is paused from s1 side, and next to this msg, the only possible msg s1 can send is SPICE_MSG_MIGRATE_DATA msg optional flags: (a) MIGRATE_FLUSH_MARK This flag is required for finalizing the channel connection without losing any in-flight data. This flag indicates that s1 expects SPICE_MSGC_MIGRATE_FLUSH_MARK, for signaling that c will pause the connection and not send any more messages to s1. (b) MIGRATE_DATA The flag indicates that c should receive from s1 SPICE_MSG_MIGRATE_DATA (2) c->s1: SPICE_MSGC_MIGRATE_FLUSH_MARK (if required) c pushes the msg to the head of its output msg queue, and sends it before all its other pending msgs - they will be sent to s2 later. (3) s1->c: SPICE_MSG_MIGRATE_DATA (if required) The msg contains all the data that the server requires for restoring the channel's state on s2 side correctly. (4) c disconnects the channel from s1 and switches to an active connection with s2. (4) c->s2: SPICE_MSGC_MIGRATE_DATA
* add SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENSYonit Halperin2012-08-271-0/+1
| | | | | | Similarly to SPICE_MSG_AGENT_CONNECTED, the msg notifies the main channel about attaching an agent. In addition the msg also contains the number of tokens allocated to the client.
* Add support for QXLComposite to the Spice protocol headersSøren Sandmann Pedersen2012-08-221-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This new command is intended to be used for implementing the Composite request from the Render X extension. See http://www.x.org/releases/current/doc/renderproto/renderproto.txt for a description of the Render extension. Composite has three fields: src, mask and destination, of which mask is optional (can be NULL). There are also two pointers to transformations, one for each of src and mask. The command also has 32 bits of flags which indicates - which compositing operator to use - which filters to apply when sampling source and mask - which repeat mode to apply when sampling source and mask - whether the mask should be considered to have 'component alpha' - whether the alpha channel of any of the images should be ignored. The last one of these features is necessary because in the X protocol an offscreen surface is simply a collection of bits with no visual interpretation. In order for Render to use these bits, a wrapper object is used that contains the pixel format. Since one offscreen surface can be wrapped by multple objects, there is not a one-to-one correspondence between pixel formats and surfaces. In SPICE surfaces do have an associated pixel format, which means the above feature of Render cannot be supported without adding a similar concept to the wrapper object to the SPICE protocol. However, the most common use for having multiple wrappers for one offscreen surface is to interpret an alpha surface as not having an alpha channel or vice versa.
* Add an 8BIT_A formatSøren Sandmann Pedersen2012-08-131-0/+1
| | | | | This format corresponds to a sequence of bytes, each of which represents an alpha value.
* support multiple monitors on a single display channelAlon Levy2012-06-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds on device: RAM Header monitors_config - pointer QXLMonitorsConfig count == n max_allowed = N >= 0 QXLHead 1 ... QXLHead n id, surface_id, x, y, width, height, flags IO: QXL_IO_MONITORS_CONFIG server flushes command ring, then calls server callback for changing monitors config. New revision to let the driver know about the new io: QXL_REVISION_STABLE_V12=0x04, Adds server/client capability: SPICE_DISPLAY_CAP_MONITORS_CONFIG Server message will be added in spice-server and spice-common. Version is bumped to 0.12.0 to indicate new IO and structs
* enums.h: update for smartcard updated spice.protoAlon Levy2012-06-221-0/+18
|
* video streaming: add support for frames of different sizesYonit Halperin2012-04-241-0/+1
| | | | | | | | | | | | | | | | rhbz #815422 Add SPICE_MSG_DISPLAY_STREAM_DATA_SIZED, for stream_data message that in addition to the mjpeg data, also contains the (1) width and height of the compressed frame. (2) the destination box of the frame. The server can send such messages only to clients with SPICE_DISPLAY_CAP_SIZED_STREAM. When playing a youtube video on Windows guest, the driver sometimes sends images which contain the video frames, but also other parts of the screen (e.g., the youtube process bar). In order to prevent glitches, we send these images as part of the stream, using SPICE_MSG_DISPLAY_STREAM_DATA_SIZED.
* Add name & uuid messages on main channelMarc-André Lureau2012-03-051-0/+2
| | | | | | | | | | | | | | | | | | | | This allows a client to identify a Spice server. This can be useful to associate data/configuration with this particular server. The corresponding main channel messages are: message { uint8 uuid[16]; } uuid; message { uint32 name_len; uint8 name[name_len] @end @nomarshal; \* \0 terminated *\ } name; Those messages are sent by the server only if the capability SPICE_MAIN_CAP_NAME_AND_UUID is available on the client, and the server has the relevant data.
* enums.h: add SPICE_MSG_LISTYonit Halperin2012-01-121-3/+2
| | | | | | | | - enums.h was generated from spice.proto * as a result SPICE_CHANNEL_USER_DEFINED_START, which was added manually, was removed. It is not used yet. If it is going to be used it can be added to protocol.h in the future. - The new msg body is SpiceSubMessageList
* Release 0.9.10.9.1Yonit Halperin2011-10-021-0/+2
| | | | | | | | | | | Cherry-pick of abfdf4d8abf95d003678af5df814f3b1be1fd092 (Release 0.8.2) semi-seamless migration RHBZ 738262 Conflicts: NEWS configure.ac
* Change usbredir messages to spicevmc messagesHans de Goede2011-08-251-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While discussing various things with Alon in Vancouver, it came up that having a channel which simply passes through data coming out of a qemu chardev frontend unmodified, like the usbredir channel does, can be used for a lot of other cases too. To facilitate this the usbredir channel code will be turned into a generic spicevmc channel, which is just a passthrough to the client, from the spicevmc chardev. This patch renames the msg types to make clear that they are not usbredir specific, but instead are generic spicevmc data passthrough messages. The usbredir channel id is unmodified by this, although the same code and messages can now be used for multiple purposes, we still need unique ids for each purpose, so that the client knows how to interpret / represent the passed through data. Some examples of why having a generic spicevmc pass through is good: 1) We could add a monitor channel, allowing access to the qemu monitor from the spice client, since the monitor is a chardev frontend we could re-use the generic spicevmc channel server code, so all that is needed to add this (server side) would be reserving a new channel id for this. 2) We could allow users to come up with new channels of their own, without requiring qemu or server modification. The idea is to allow doing something like this on the qemu startup cmdline: -chardev spicevmc,name=generic,channelid=128 To ensure these new "generic" channels cannot conflict with newly added official types, the must start at the SPICE_CHANNEL_USER_DEFINED_START value this patch adds (128 or higher). These new user defined channels could then either be used with a special modified client, with client plugins (if we add support for those), or by exporting them on the client side for use by an external ap, see below. 3) We could also add support to the client to make user-defined channels end in a unix socket / pipe, allowing handling of the data by an external app, we could for example have a new spice client cmdline argument like this: --custom-channel unixsocket=/tmp/mysocket,channelid=128 This would allow for something like: $random app on guest -> virtio-serial -> spicevmc chardev -> -> spicevmc channel -> unix socket -> $random app on client 4) On hind sight this could also have been used for the smartcard stuff, with a 1 channel / reader model, rather then the current multiplexing code where we've our own multiplexing protocol wrapper over the libcacard smartcard protocol. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* Add definitions and enums for usbredir channelHans de Goede2011-08-131-0/+13
| | | | Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* spice: enums.h regeneratedMarc-André Lureau2011-06-221-70/+75
|
* enums: typedefy SpiceBitmapFmtfor_xorgAlon Levy2011-02-101-2/+2
|
* smartcard: add channelAlon Levy2010-10-251-0/+13
|
* Simplify SpiceLineAttr by removing unused elements and enumsAlexander Larsson2010-06-301-16/+0
|
* Remove SPICE_CLIP_TYPE_PATH enum.Alexander Larsson2010-06-241-1/+0
| | | | | | | Clip by path has not been supported since the pixman change, and the win32 drivers were neutered to never produce it a while ago. Also, even before that neutering it happened extremely seldom (never seen in real life).
* add image type for RGBA bitmaps that were compressed by a combination of ↵Yonit Halperin2010-06-211-0/+7
| | | | JPEG (RGB) and LZ (alpha channel).
* add image type for images that are compressed by zlib after they have been ↵Yonit Halperin2010-06-211-0/+1
| | | | compressed by glz
* Move all enums and flags to generated header fileAlexander Larsson2010-06-181-0/+513