[Spice-devel] [PATCH spice-common 1/2] add stream report messages
Yonit Halperin
yhalperi at redhat.com
Tue Feb 26 10:04:49 PST 2013
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.
---
common/client_marshallers.h | 1 +
common/messages.h | 18 ++++++++++++++++++
spice-protocol | 2 +-
spice.proto | 18 ++++++++++++++++++
4 files changed, 38 insertions(+), 1 deletion(-)
diff --git a/common/client_marshallers.h b/common/client_marshallers.h
index 9a2385d..85051a0 100644
--- a/common/client_marshallers.h
+++ b/common/client_marshallers.h
@@ -44,6 +44,7 @@ typedef struct {
void (*msgc_main_agent_token)(SpiceMarshaller *m, SpiceMsgcMainAgentTokens *msg);
void (*msgc_main_migrate_dst_do_seamless)(SpiceMarshaller *m, SpiceMsgcMainMigrateDstDoSeamless *msg);
void (*msgc_display_init)(SpiceMarshaller *m, SpiceMsgcDisplayInit *msg);
+ void (*msgc_display_stream_report)(SpiceMarshaller *m, SpiceMsgcDisplayStreamReport *msg);
void (*msgc_inputs_key_down)(SpiceMarshaller *m, SpiceMsgcKeyDown *msg);
void (*msgc_inputs_key_up)(SpiceMarshaller *m, SpiceMsgcKeyUp *msg);
void (*msgc_inputs_key_modifiers)(SpiceMarshaller *m, SpiceMsgcKeyModifiers *msg);
diff --git a/common/messages.h b/common/messages.h
index b145cfc..1d30b87 100644
--- a/common/messages.h
+++ b/common/messages.h
@@ -357,6 +357,24 @@ typedef struct SpiceMsgDisplayStreamDestroy {
uint32_t id;
} SpiceMsgDisplayStreamDestroy;
+typedef struct SpiceMsgDisplayStreamActivateReport {
+ uint32_t stream_id;
+ uint32_t unique_id;
+ uint32_t max_window_size;
+ uint32_t timeout_ms;
+} SpiceMsgDisplayStreamActivateReport;
+
+typedef struct SpiceMsgcDisplayStreamReport {
+ uint32_t stream_id;
+ uint32_t unique_id;
+ uint32_t start_frame_mm_time;
+ uint32_t end_frame_mm_time;
+ uint32_t num_frames;
+ uint32_t num_drops;
+ int32_t last_frame_delay;
+ uint32_t audio_delay;
+} SpiceMsgcDisplayStreamReport;
+
typedef struct SpiceMsgCursorInit {
SpicePoint16 position;
uint16_t trail_length;
diff --git a/spice-protocol b/spice-protocol
index 720af3d..95c4e58 160000
--- a/spice-protocol
+++ b/spice-protocol
@@ -1 +1 @@
-Subproject commit 720af3dff75ef42cd77f8ccec78f5cd23358ed9b
+Subproject commit 95c4e58868f6821112e9cd30385f0112eb6d5ea3
diff --git a/spice.proto b/spice.proto
index 655352a..97d1e1b 100644
--- a/spice.proto
+++ b/spice.proto
@@ -890,6 +890,13 @@ channel DisplayChannel : BaseChannel {
} data;
} draw_composite;
+ message {
+ uint32 stream_id;
+ uint32 unique_id;
+ uint32 max_window_size;
+ uint32 timeout_ms;
+ } stream_activate_report;
+
client:
message {
uint8 pixmap_cache_id;
@@ -897,6 +904,17 @@ channel DisplayChannel : BaseChannel {
uint8 glz_dictionary_id;
int32 glz_dictionary_window_size; // in pixels
} init = 101;
+
+ message {
+ uint32 stream_id;
+ uint32 unique_id;
+ uint32 start_frame_mm_time;
+ uint32 end_frame_mm_time;
+ uint32 num_frames;
+ uint32 num_drops;
+ int32 last_frame_delay;
+ uint32 audio_delay;
+ } stream_report;
};
flags16 keyboard_modifier_flags {
--
1.8.1
More information about the Spice-devel
mailing list