From e7e6660272396282bc2c424a1920ecca839c949d Mon Sep 17 00:00:00 2001 From: Joel Martin Date: Fri, 26 Oct 2012 18:08:00 -0500 Subject: [PATCH] include/playback.js: support binary (non-base64) data files. Data files should now set the variable VNC_frame_encoding to either "binary" or "base64". The python websockify recording mode adds this automatically based on what is negotiated with the client being recorded. --- include/playback.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/include/playback.js b/include/playback.js index 549eb8de..7756529d 100644 --- a/include/playback.js +++ b/include/playback.js @@ -79,10 +79,22 @@ queue_next_packet = function () { } }; +var bytes_processed = 0; + do_packet = function () { //Util.Debug("Processing frame: " + frame_idx); - var frame = VNC_frame_data[frame_idx]; - rfb.recv_message({'data' : frame.slice(frame.indexOf('{', 1) + 1)}); + var frame = VNC_frame_data[frame_idx], + start = frame.indexOf('{', 1) + 1; + bytes_processed += frame.length - start; + if (VNC_frame_encoding === 'binary') { + var u8 = new Uint8Array(frame.length - start); + for (var i = 0; i < frame.length - start; i++) { + u8[i] = frame.charCodeAt(start + i); + } + rfb.recv_message({'data' : u8}); + } else { + rfb.recv_message({'data' : frame.slice(start)}); + } frame_idx += 1; queue_next_packet();