diff options
author | Yonit Halperin <yhalperi@redhat.com> | 2012-04-24 08:34:30 +0300 |
---|---|---|
committer | Yonit Halperin <yhalperi@redhat.com> | 2012-05-02 14:47:29 +0300 |
commit | 22fc0b0145876b90385c1c88923bcd72a6380812 (patch) | |
tree | a0350e5fc8f84b504d5ac3c6e442859302d832bf | |
parent | 178c7eaff6fa45b9051bb4d3cf90f45ea9319f83 (diff) |
video streaming: add support for frames of different sizes
rhbz #813826, #815426
Add SPICE_MSG_DISPLAY_STREAM_DATA_SIZED, for stream_data message
that also contains the size and destination box of the data.
The server can send such messages only to clients with
SPICE_DISPLAY_CAP_SIZED_STREAM.
-rw-r--r-- | common/messages.h | 15 | ||||
m--------- | spice-protocol | 0 | ||||
-rw-r--r-- | spice.proto | 19 | ||||
-rw-r--r-- | spice1.proto | 8 |
4 files changed, 36 insertions, 6 deletions
diff --git a/common/messages.h b/common/messages.h index 106a8d3..e3677d1 100644 --- a/common/messages.h +++ b/common/messages.h @@ -308,13 +308,26 @@ typedef struct SpiceMsgDisplayStreamCreate { SpiceClip clip; } SpiceMsgDisplayStreamCreate; -typedef struct SpiceMsgDisplayStreamData { +typedef struct SpiceStreamDataHeader { uint32_t id; uint32_t multi_media_time; +} SpiceStreamDataHeader; + +typedef struct SpiceMsgDisplayStreamData { + SpiceStreamDataHeader base; uint32_t data_size; uint8_t data[0]; } SpiceMsgDisplayStreamData; +typedef struct SpiceMsgDisplayStreamDataSized { + SpiceStreamDataHeader base; + uint32_t width; + uint32_t height; + SpiceRect dest; + uint32_t data_size; + uint8_t data[0]; +} SpiceMsgDisplayStreamDataSized; + typedef struct SpiceMsgDisplayStreamClip { uint32_t id; SpiceClip clip; diff --git a/spice-protocol b/spice-protocol -Subproject 2d24f61aae4f92746940fd1c0daf546c7a51dae +Subproject bf0daeb3a3c834133e781439f76b1c702470581 diff --git a/spice.proto b/spice.proto index 513fe87..71be9ac 100644 --- a/spice.proto +++ b/spice.proto @@ -591,6 +591,11 @@ struct String { } u @anon; }; +struct StreamDataHeader { + uint32 id; + uint32 multi_media_time; +}; + channel DisplayChannel : BaseChannel { server: message { @@ -637,10 +642,9 @@ channel DisplayChannel : BaseChannel { } stream_create = 122; message { - uint32 id; - uint32 multi_media_time; + StreamDataHeader base; uint32 data_size; - uint8 data[data_size] @end @nomarshal; + uint8 data[data_size] @end @nomarshal; } stream_data; message { @@ -785,6 +789,15 @@ channel DisplayChannel : BaseChannel { uint32 surface_id; } @ctype(SpiceMsgSurfaceDestroy) surface_destroy; + message { + StreamDataHeader base; + uint32 width; + uint32 height; + Rect dest; + uint32 data_size; + uint8 data[data_size] @end @nomarshal; + } stream_data_sized; + client: message { uint8 pixmap_cache_id; diff --git a/spice1.proto b/spice1.proto index fa2524b..2ed1058 100644 --- a/spice1.proto +++ b/spice1.proto @@ -533,6 +533,11 @@ struct String { } u @anon; }; +struct StreamDataHeader { + uint32 id; + uint32 multi_media_time; +}; + channel DisplayChannel : BaseChannel { server: message { @@ -580,8 +585,7 @@ channel DisplayChannel : BaseChannel { } stream_create = 122; message { - uint32 id; - uint32 multi_media_time; + StreamDataHeader base; uint32 data_size; uint32 pad_size @zero; uint8 data[data_size] @end @nomarshal; |