From a0050950b18e9e587762ad87eec3cfd2c9c74d8d Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Wed, 20 May 2020 13:07:04 +0300
Subject: [PATCH] Detect framerate

---
 web-service/public/js/bundle.js | 24 +++++++++++++++++-------
 web-service/public/js/index.js  | 22 +++++++++++++++++-----
 2 files changed, 34 insertions(+), 12 deletions(-)

diff --git a/web-service/public/js/bundle.js b/web-service/public/js/bundle.js
index 151c25053..65d67c028 100644
--- a/web-service/public/js/bundle.js
+++ b/web-service/public/js/bundle.js
@@ -122,25 +122,35 @@ webSocketTest = () => {
 
 connectToStream = () => {
     const element = document.getElementById('ftlab-stream-video');
-    const converter = new VideoConverter.default(element, 20, 6);
+    let converter = null;
 
     let rxcount = 0;
+    let ts = 0;
+    let dts = 0;
 
     peer.bind(current_data.uri, (latency, streampckg, pckg) => {
-        console.log("Packet", pckg[0]);
         if(pckg[0] === 2){
             rxcount++;
             if (rxcount >= 25) {
                 rxcount = 0;
-                console.log("RESEND");
                 peer.send(current_data.uri, 0, [1,0,255,0],[255,7,35,0,0,Buffer.alloc(0)]);
                 //peer.send(current_data.uri, 0, [255,7,35,0,0,Buffer.alloc(0)], [1,0,255,0]);
             }
-            function decode(value){
-                converter.appendRawData(value);
+
+            if (converter) {
+                function decode(value){
+                    converter.appendRawData(value);
+                }
+                decode(pckg[5]);
+                converter.play();
+            } else {
+                if (ts > 0) {
+                    dts = streampckg[0] - ts;
+                    console.log("Framerate = ", 1000/dts);
+                    converter = new VideoConverter.default(element, 1000/dts, 6);
+                }
+                ts = streampckg[0];
             }
-            decode(pckg[5]);
-            converter.play();
         };
     })
 
diff --git a/web-service/public/js/index.js b/web-service/public/js/index.js
index 35aca436e..b48e75333 100644
--- a/web-service/public/js/index.js
+++ b/web-service/public/js/index.js
@@ -120,9 +120,11 @@ webSocketTest = () => {
 
 connectToStream = () => {
     const element = document.getElementById('ftlab-stream-video');
-    const converter = new VideoConverter.default(element, 20, 6);
+    let converter = null;
 
     let rxcount = 0;
+    let ts = 0;
+    let dts = 0;
 
     peer.bind(current_data.uri, (latency, streampckg, pckg) => {
         if(pckg[0] === 2){
@@ -132,11 +134,21 @@ connectToStream = () => {
                 peer.send(current_data.uri, 0, [1,0,255,0],[255,7,35,0,0,Buffer.alloc(0)]);
                 //peer.send(current_data.uri, 0, [255,7,35,0,0,Buffer.alloc(0)], [1,0,255,0]);
             }
-            function decode(value){
-                converter.appendRawData(value);
+
+            if (converter) {
+                function decode(value){
+                    converter.appendRawData(value);
+                }
+                decode(pckg[5]);
+                converter.play();
+            } else {
+                if (ts > 0) {
+                    dts = streampckg[0] - ts;
+                    console.log("Framerate = ", 1000/dts);
+                    converter = new VideoConverter.default(element, 1000/dts, 6);
+                }
+                ts = streampckg[0];
             }
-            decode(pckg[5]);
-            converter.play();
         };
     })
 
-- 
GitLab