Sorry for send-email mistakes. --- display.js | 16 ++++++++++++++++ enums.js | 11 +++++++++-- spicemsg.js | 24 ++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/display.js b/display.js index 4649ef2..5786792 100644 --- a/display.js +++ b/display.js @@ -881,6 +881,22 @@ SpiceDisplayConn.prototype.change_preferred_compression = function(compression_i this.send_msg(msg); } +SpiceDisplayConn.prototype.change_preferred_video_codec_type = function(video_codecs) +{ + var ch = this.channel_type(); + if (!this.channel_test_capability(SPICE_DISPLAY_CAP_PREF_VIDEO_CODEC_TYPE)) + { + this.log_warn(ch + " does not have capability to change the preferred video codec type"); + return; + } + + var msg = new SpiceMiniData(); + var video_codec_type = new SpiceMsgcDisplayPreferredVideoCodecType(video_codecs); + + msg.build_msg(SPICE_MSGC_DISPLAY_PREFERRED_VIDEO_CODEC_TYPE, video_codec_type); + this.send_msg(msg); +} + function handle_mouseover(e) { this.focus(); diff --git a/enums.js b/enums.js index b37cb20..d3d5bf2 100644 --- a/enums.js +++ b/enums.js @@ -135,6 +135,8 @@ var SPICE_MSG_DISPLAY_STREAM_ACTIVATE_REPORT = 319; var SPICE_MSGC_DISPLAY_INIT = 101; var SPICE_MSGC_DISPLAY_STREAM_REPORT = 102; var SPICE_MSGC_DISPLAY_PREFERRED_COMPRESSION = 103; +var SPICE_MSGC_DISPLAY_GL_DRAW_DONE = 104; +var SPICE_MSGC_DISPLAY_PREFERRED_VIDEO_CODEC_TYPE = 105; var SPICE_MSG_INPUTS_INIT = 101; var SPICE_MSG_INPUTS_KEY_MODIFIERS = 102; @@ -197,6 +199,9 @@ var SPICE_DISPLAY_CAP_GL_SCANOUT = 7; var SPICE_DISPLAY_CAP_MULTI_CODEC = 8; var SPICE_DISPLAY_CAP_CODEC_MJPEG = 9; var SPICE_DISPLAY_CAP_CODEC_VP8 = 10; +var SPICE_DISPLAY_CAP_CODEC_H264 = 11; +var SPICE_DISPLAY_CAP_PREF_VIDEO_CODEC_TYPE = 12; +var SPICE_DISPLAY_CAP_CODEC_VP9 = 13; var SPICE_AUDIO_DATA_MODE_INVALID = 0; var SPICE_AUDIO_DATA_MODE_RAW = 1; @@ -347,8 +352,10 @@ var SPICE_CURSOR_TYPE_ALPHA = 0, SPICE_CURSOR_TYPE_COLOR24 = 5, SPICE_CURSOR_TYPE_COLOR32 = 6; -var SPICE_VIDEO_CODEC_TYPE_MJPEG = 1; -var SPICE_VIDEO_CODEC_TYPE_VP8 = 2; +var SPICE_VIDEO_CODEC_TYPE_MJPEG = 1, + SPICE_VIDEO_CODEC_TYPE_VP8 = 2, + SPICE_VIDEO_CODEC_TYPE_H264 = 3, + SPICE_VIDEO_CODEC_TYPE_VP9 = 4; var VD_AGENT_PROTOCOL = 1; var VD_AGENT_MAX_DATA_SIZE = 2048; diff --git a/spicemsg.js b/spicemsg.js index 8a9eeed..dd684b7 100644 --- a/spicemsg.js +++ b/spicemsg.js @@ -1316,3 +1316,27 @@ SpiceMsgcDisplayPreferredCompression.prototype = return 1; } } + +function SpiceMsgcDisplayPreferredVideoCodecType(codecs) +{ + this.codecs = codecs; + this.num_of_codecs = codecs.length; +} + +SpiceMsgcDisplayPreferredVideoCodecType.prototype = +{ + to_buffer: function(a, at) + { + at = at || 0; + var dv = new SpiceDataView(a); + dv.setUint8(at, this.num_of_codecs, true); at += 1; + for (var i = 0; i < this.codecs.length; i++) + dv.setUint8(at + i, this.codecs[i], true); + at += this.num_of_codecs; + return at; + }, + buffer_size: function() + { + return this.num_of_codecs + 1; + } +} -- 2.9.5 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel