Doh, this is what i get for not checking the list and updating this morning. sorry, it is there thanks! -aric On 9/6/12 9:13 AM, Aric Stewart wrote: > Checking in here. Looks like Jeremy acked this but it never got pushed? > > Could someone help me with that? > > thanks! > -aric > > On 8/27/12 10:59 AM, Aric Stewart wrote: >> Signed-off-by: Aric Stewart <aric@xxxxxxxxxxxxxxx> >> --- >> display.js | 66 ++++++++++++++++++++++++++++++++++++++++++ >> enums.js | 2 + >> spicemsg.js | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> 3 files changed, 160 insertions(+), 0 deletions(-) >> >> diff --git a/display.js b/display.js >> index 3efabb1..dd0a2e2 100644 >> --- a/display.js >> +++ b/display.js >> @@ -421,6 +421,72 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg) >> return true; >> } >> >> + if (msg.type == SPICE_MSG_DISPLAY_STREAM_CREATE) >> + { >> + var m = new SpiceMsgDisplayStreamCreate(msg.data); >> + DEBUG > 1 && console.log(this.type + ": MsgStreamCreate id" + m.id); >> + if (!this.streams) >> + this.streams = new Array(); >> + if (this.streams[m.id]) >> + console.log("Stream already exists"); >> + else >> + this.streams[m.id] = m; >> + if (m.codec_type != SPICE_VIDEO_CODEC_TYPE_MJPEG) >> + console.log("Unhandled stream codec: "+m.codec_type); >> + return true; >> + } >> + >> + if (msg.type == SPICE_MSG_DISPLAY_STREAM_DATA) >> + { >> + var m = new SpiceMsgDisplayStreamData(msg.data); >> + if (!this.streams[m.base.id]) >> + { >> + console.log("no stream for data"); >> + return false; >> + } >> + if (this.streams[m.base.id].codec_type === SPICE_VIDEO_CODEC_TYPE_MJPEG) >> + { >> + var tmpstr = "data:image/jpeg,"; >> + var img = new Image; >> + var i; >> + for (i = 0; i < m.data.length; i++) >> + { >> + tmpstr += '%'; >> + if (m.data[i] < 16) >> + tmpstr += '0'; >> + tmpstr += m.data[i].toString(16); >> + } >> + var strm_base = new SpiceMsgDisplayBase(); >> + strm_base.surface_id = this.streams[m.base.id].surface_id; >> + strm_base.box = this.streams[m.base.id].dest; >> + strm_base.clip = this.streams[m.base.id].clip; >> + img.o = >> + { base: strm_base, >> + tag: "mjpeg." + m.base.id, >> + descriptor: null, >> + sc : this, >> + }; >> + img.onload = handle_draw_jpeg_onload; >> + img.src = tmpstr; >> + } >> + return true; >> + } >> + >> + if (msg.type == SPICE_MSG_DISPLAY_STREAM_CLIP) >> + { >> + var m = new SpiceMsgDisplayStreamClip(msg.data); >> + DEBUG > 1 && console.log(this.type + ": MsgStreamClip id" + m.id); >> + this.streams[m.id].clip = m.clip; >> + return true; >> + } >> + >> + if (msg.type == SPICE_MSG_DISPLAY_STREAM_DESTROY) >> + { >> + var m = new SpiceMsgDisplayStreamDestroy(msg.data); >> + DEBUG > 1 && console.log(this.type + ": MsgStreamDestroy id" + m.id); >> + this.streams[m.id] = undefined; >> + return true; >> + } >> >> return false; >> } >> diff --git a/enums.js b/enums.js >> index cbf9056..fa541a4 100644 >> --- a/enums.js >> +++ b/enums.js >> @@ -278,3 +278,5 @@ var SPICE_CURSOR_TYPE_ALPHA = 0, >> SPICE_CURSOR_TYPE_COLOR16 = 4, >> SPICE_CURSOR_TYPE_COLOR24 = 5, >> SPICE_CURSOR_TYPE_COLOR32 = 6; >> + >> +var SPICE_VIDEO_CODEC_TYPE_MJPEG = 1; >> diff --git a/spicemsg.js b/spicemsg.js >> index 79c76bc..31e54a0 100644 >> --- a/spicemsg.js >> +++ b/spicemsg.js >> @@ -789,3 +789,95 @@ function SpiceMsgcKeyUp(e) >> /* Use the same functions as for KeyDown */ >> SpiceMsgcKeyUp.prototype.to_buffer = SpiceMsgcKeyDown.prototype.to_buffer; >> SpiceMsgcKeyUp.prototype.buffer_size = SpiceMsgcKeyDown.prototype.buffer_size; >> + >> +function SpiceMsgDisplayStreamCreate(a, at) >> +{ >> + this.from_buffer(a, at); >> +} >> + >> +SpiceMsgDisplayStreamCreate.prototype = >> +{ >> + from_buffer: function(a, at) >> + { >> + at = at || 0; >> + var dv = new SpiceDataView(a); >> + this.surface_id = dv.getUint32(at, true); at += 4; >> + this.id = dv.getUint32(at, true); at += 4; >> + this.flags = dv.getUint8(at, true); at += 1; >> + this.codec_type = dv.getUint8(at, true); at += 1; >> + /*stamp */ at += 8; >> + this.stream_width = dv.getUint32(at, true); at += 4; >> + this.stream_height = dv.getUint32(at, true); at += 4; >> + this.src_width = dv.getUint32(at, true); at += 4; >> + this.src_height = dv.getUint32(at, true); at += 4; >> + >> + this.dest = new SpiceRect; >> + at = this.dest.from_dv(dv, at, a); >> + this.clip = new SpiceClip; >> + this.clip.from_dv(dv, at, a); >> + }, >> +} >> + >> +function SpiceStreamDataHeader(a, at) >> +{ >> +} >> + >> +SpiceStreamDataHeader.prototype = >> +{ >> + from_dv : function(dv, at, mb) >> + { >> + this.id = dv.getUint32(at, true); at += 4; >> + this.multi_media_time = dv.getUint32(at, true); at += 4; >> + return at; >> + }, >> +} >> + >> +function SpiceMsgDisplayStreamData(a, at) >> +{ >> + this.from_buffer(a, at); >> +} >> + >> +SpiceMsgDisplayStreamData.prototype = >> +{ >> + from_buffer: function(a, at) >> + { >> + at = at || 0; >> + var dv = new SpiceDataView(a); >> + this.base = new SpiceStreamDataHeader; >> + at = this.base.from_dv(dv, at, a); >> + this.data_size = dv.getUint32(at, true); at += 4; >> + this.data = dv.u8.subarray(at, at + this.data_size); >> + }, >> +} >> + >> +function SpiceMsgDisplayStreamClip(a, at) >> +{ >> + this.from_buffer(a, at); >> +} >> + >> +SpiceMsgDisplayStreamClip.prototype = >> +{ >> + from_buffer: function(a, at) >> + { >> + at = at || 0; >> + var dv = new SpiceDataView(a); >> + this.id = dv.getUint32(at, true); at += 4; >> + this.clip = new SpiceClip; >> + this.clip.from_dv(dv, at, a); >> + }, >> +} >> + >> +function SpiceMsgDisplayStreamDestroy(a, at) >> +{ >> + this.from_buffer(a, at); >> +} >> + >> +SpiceMsgDisplayStreamDestroy.prototype = >> +{ >> + from_buffer: function(a, at) >> + { >> + at = at || 0; >> + var dv = new SpiceDataView(a); >> + this.id = dv.getUint32(at, true); at += 4; >> + }, >> +} > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/spice-devel > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel