From 565464f29cc7dced21cc5836ffef3b6a5408f8b9 Mon Sep 17 00:00:00 2001
From: Sami Spets <savasp@utu.fi>
Date: Thu, 21 Nov 2019 09:57:50 +0200
Subject: [PATCH] Debugging the Websocket player

---
 web-service/server/src/public/js/bundle.js    | 112 +++++++++---------
 web-service/server/src/public/js/index.js     |  20 +---
 .../server/src/public/js/lib/VideoPlayer.js   |  92 +++++++-------
 3 files changed, 110 insertions(+), 114 deletions(-)

diff --git a/web-service/server/src/public/js/bundle.js b/web-service/server/src/public/js/bundle.js
index f8da7e137..0ad0a5707 100644
--- a/web-service/server/src/public/js/bundle.js
+++ b/web-service/server/src/public/js/bundle.js
@@ -4663,23 +4663,9 @@ createPeer = () => {
 
 connectToStream = () => {
     console.log(current_data.uri)
-    const deocdedURI = decodeURIComponent(current_data.uri);
-    peer.bind(deocdedURI, (latency, streampckg, pckg) => {
-        console.log(pckg[0])
-        console.log("PAKETTI 5", [pckg[5]])
-        if(pckg[0] === 0){
-            player.playback(pckg[5]);
-            // const newBlob = new Blob( [pckg[5]], {type: "image/jpeg"});
-            // const canvas = document.getElementById("ftlab-stream-video");
-            // let modified = canvas.getContext("2d");
-            // let image = new Image();
-            // image.onload = () => {
-            //     modified.drawImage(image, 0, 0)
-            // }
-            // image.src = URL.createObjectURL(newBlob)
-        }
-    })
-    peer.send("get_stream", (current_data.uri, 10, 0, current_data.uri))
+    const uri = current_data.uri
+    const decodedURI = decodeURIComponent(current_data.uri);
+    player.playback(peer, decodedURI, uri);
 }
 
 closeStream = () => {
@@ -4821,7 +4807,10 @@ VideoPlayer.prototype._display_image = function(image) {
     });
 };
 
-VideoPlayer.prototype._handle_onload = function(frame) {
+
+
+
+VideoPlayer.prototype._handle_onload = function(peer, decodedURI, uri) {
     var that = this;
     this._set_status("initializing");
 
@@ -4830,33 +4819,26 @@ VideoPlayer.prototype._handle_onload = function(frame) {
         that._display_image(image);
         image.free();
     });
-
-    // var data = frame;
-    // var pos = 0;
-    // var remaining = data.byteLength;
     var ratio = null;
     var filters = false;
+    
 
-    var decode = function() {
-        if (!that.running) {
-            return;
-        }
-
+    var decode = function(pckg) {
+        if (!that.running) { return; }
+        console.log("DECODE FUNKKARI ALKU")
         var err;
-        // if (remaining === 0) {
-        //     err = decoder.flush();
-        // } else {
-            // var l = 4096;
-            // if (l > remaining) {
-            //     l = remaining;
-            // }
-
-            let tmp = frame
-            // var tmp = new Uint8Array(data, pos, l);
-            err = decoder.push_data(tmp);
-            // pos += l;
-            // remaining -= l;
-        // }
+        if (pckg == null) { return; }
+        else{
+
+            try {
+                var tmp = pckg
+                err = decoder.push_data(tmp);
+            } catch(err) {
+                console.log(err);
+                err = decoder.flush();
+                return;
+            }
+        }
         if (!libde265.de265_isOK(err)) {
             that._set_error(err, libde265.de265_get_error_text(err));
             return;
@@ -4875,7 +4857,8 @@ VideoPlayer.prototype._handle_onload = function(frame) {
         decoder.decode(function(err) {
             switch(err) {
             case libde265.DE265_ERROR_WAITING_FOR_INPUT_DATA:
-                // setTimeout(decode, 0);
+                console.log("DE265_ERROR_WAITING_FOR_INPUT_DATA");
+                setTimeout(decode(null), 0);
                 return;
 
             default:
@@ -4885,32 +4868,47 @@ VideoPlayer.prototype._handle_onload = function(frame) {
                 }
             }
 
-            // if (remaining > 0 || decoder.has_more()) {
-            //     // setTimeout(decode, 0);
-            //     return;
-            // }
+            if (decoder.has_more()) {
+                console.log("has more");
+                setTimeout(decode(null), 0);
+                return;
+            }
 
             decoder.free();
             that.stop();
         });
-    };
-    decode();
-    // setTimeout(decode, 0);
+        console.log("DECODE FUNKKARIN LOPPU")
+    }
+
+
+    peer.bind(decodedURI, (latency, streampckg, pckg) => {
+        console.log(pckg[0])
+        if(pckg[0] === 0){
+            decode([pckg[5]]);
+        };
+    })
+    // Start the transaction
+    peer.send("get_stream", (uri, 10, 0, uri));
 };
 
 /** @expose */
-VideoPlayer.prototype.playback = function(pckg) {
-    // this._reset();
-    // var request = new XMLHttpRequest();
-    // request.open("get", url, true);
-    // request.responseType = "arraybuffer";
+VideoPlayer.prototype.playback = function(peer, decodedURI, uri) {
+    this._reset();
+
+    console.log(peer);
+    console.log(uri)
+    this._handle_onload(peer, decodedURI, uri)
     // var that = this;
-    // request.onload = function(event) {
-    this._handle_onload(pckg);
+
+    // peer.sock.onopen = function() {
+    //     console.log("Stream open");
+    //     that._handle_onload(ws);
     // };
+
+    // ws.onclose = function() { console.log("Connection closed."); }
     this._set_status("loading");
     this.running = true;
-    // request.send();
+    console.log("piippiip")
 };
 
 /** @expose */
diff --git a/web-service/server/src/public/js/index.js b/web-service/server/src/public/js/index.js
index 813dee8a4..540e2ba83 100644
--- a/web-service/server/src/public/js/index.js
+++ b/web-service/server/src/public/js/index.js
@@ -143,23 +143,9 @@ createPeer = () => {
 
 connectToStream = () => {
     console.log(current_data.uri)
-    const deocdedURI = decodeURIComponent(current_data.uri);
-    peer.bind(deocdedURI, (latency, streampckg, pckg) => {
-        console.log(pckg[0])
-        console.log("PAKETTI 5", [pckg[5]])
-        if(pckg[0] === 0){
-            player.playback(pckg[5]);
-            // const newBlob = new Blob( [pckg[5]], {type: "image/jpeg"});
-            // const canvas = document.getElementById("ftlab-stream-video");
-            // let modified = canvas.getContext("2d");
-            // let image = new Image();
-            // image.onload = () => {
-            //     modified.drawImage(image, 0, 0)
-            // }
-            // image.src = URL.createObjectURL(newBlob)
-        }
-    })
-    peer.send("get_stream", (current_data.uri, 10, 0, current_data.uri))
+    const uri = current_data.uri
+    const decodedURI = decodeURIComponent(current_data.uri);
+    player.playback(peer, decodedURI, uri);
 }
 
 closeStream = () => {
diff --git a/web-service/server/src/public/js/lib/VideoPlayer.js b/web-service/server/src/public/js/lib/VideoPlayer.js
index acf62b8bf..c7ed3ef00 100644
--- a/web-service/server/src/public/js/lib/VideoPlayer.js
+++ b/web-service/server/src/public/js/lib/VideoPlayer.js
@@ -84,7 +84,10 @@ VideoPlayer.prototype._display_image = function(image) {
     });
 };
 
-VideoPlayer.prototype._handle_onload = function(frame) {
+
+
+
+VideoPlayer.prototype._handle_onload = function(peer, decodedURI, uri) {
     var that = this;
     this._set_status("initializing");
 
@@ -93,33 +96,26 @@ VideoPlayer.prototype._handle_onload = function(frame) {
         that._display_image(image);
         image.free();
     });
-
-    // var data = frame;
-    // var pos = 0;
-    // var remaining = data.byteLength;
     var ratio = null;
     var filters = false;
+    
 
-    var decode = function() {
-        if (!that.running) {
-            return;
-        }
-
+    var decode = function(pckg) {
+        if (!that.running) { return; }
+        console.log("DECODE FUNKKARI ALKU")
         var err;
-        // if (remaining === 0) {
-        //     err = decoder.flush();
-        // } else {
-            // var l = 4096;
-            // if (l > remaining) {
-            //     l = remaining;
-            // }
-
-            let tmp = frame
-            // var tmp = new Uint8Array(data, pos, l);
-            err = decoder.push_data(tmp);
-            // pos += l;
-            // remaining -= l;
-        // }
+        if (pckg == null) { return; }
+        else{
+
+            try {
+                var tmp = pckg
+                err = decoder.push_data(tmp);
+            } catch(err) {
+                console.log(err);
+                err = decoder.flush();
+                return;
+            }
+        }
         if (!libde265.de265_isOK(err)) {
             that._set_error(err, libde265.de265_get_error_text(err));
             return;
@@ -138,7 +134,8 @@ VideoPlayer.prototype._handle_onload = function(frame) {
         decoder.decode(function(err) {
             switch(err) {
             case libde265.DE265_ERROR_WAITING_FOR_INPUT_DATA:
-                // setTimeout(decode, 0);
+                console.log("DE265_ERROR_WAITING_FOR_INPUT_DATA");
+                setTimeout(decode(null), 0);
                 return;
 
             default:
@@ -148,32 +145,47 @@ VideoPlayer.prototype._handle_onload = function(frame) {
                 }
             }
 
-            // if (remaining > 0 || decoder.has_more()) {
-            //     // setTimeout(decode, 0);
-            //     return;
-            // }
+            if (decoder.has_more()) {
+                console.log("has more");
+                setTimeout(decode(null), 0);
+                return;
+            }
 
             decoder.free();
             that.stop();
         });
-    };
-    decode();
-    // setTimeout(decode, 0);
+        console.log("DECODE FUNKKARIN LOPPU")
+    }
+
+
+    peer.bind(decodedURI, (latency, streampckg, pckg) => {
+        console.log(pckg[0])
+        if(pckg[0] === 0){
+            decode([pckg[5]]);
+        };
+    })
+    // Start the transaction
+    peer.send("get_stream", (uri, 10, 0, uri));
 };
 
 /** @expose */
-VideoPlayer.prototype.playback = function(pckg) {
-    // this._reset();
-    // var request = new XMLHttpRequest();
-    // request.open("get", url, true);
-    // request.responseType = "arraybuffer";
+VideoPlayer.prototype.playback = function(peer, decodedURI, uri) {
+    this._reset();
+
+    console.log(peer);
+    console.log(uri)
+    this._handle_onload(peer, decodedURI, uri)
     // var that = this;
-    // request.onload = function(event) {
-    this._handle_onload(pckg);
+
+    // peer.sock.onopen = function() {
+    //     console.log("Stream open");
+    //     that._handle_onload(ws);
     // };
+
+    // ws.onclose = function() { console.log("Connection closed."); }
     this._set_status("loading");
     this.running = true;
-    // request.send();
+    console.log("piippiip")
 };
 
 /** @expose */
-- 
GitLab