summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/relay/index.js17
-rw-r--r--app/server/index.js15
-rw-r--r--public/assets/js/app.js47
-rw-r--r--public/index.html1
-rw-r--r--requirements.txt1
-rw-r--r--rpc/rpc.py38
6 files changed, 63 insertions, 56 deletions
diff --git a/app/relay/index.js b/app/relay/index.js
index eaec38b..a5a01b9 100644
--- a/app/relay/index.js
+++ b/app/relay/index.js
@@ -1,7 +1,6 @@
require('dotenv').config()
const io = require('socket.io-client')
-const ss = require('socket.io-stream')
const zerorpc = require('zerorpc')
const Readable = require('stream').Readable;
@@ -51,20 +50,8 @@ let relay = new zerorpc.Server({
send_frame: function (fn, frame, reply) {
reply()
- console.log('got frame, ' + frame.length + ' bytes')
- remote.emit('frame', fn, frame)
- // var stream = ss.createStream()
- // stream.on('data', () => { console.log('stream data...') })
- // // console.log(stream)
-
- // var rs = new Readable()
- // rs.on('data', (d) => { console.log('rs data...', d.length) })
- // rs._read = function noop() {}
- // rs.pipe(stream)
- // rs.push(frame)
- // rs.push(null)
- // ss(remote).on('frame', () => console.log('frame??'))
- // ss(remote).emit('frame', stream, {name: fn}, function(){ console.log('where am i') })
+ // console.log('got frame, ' + frame.length + ' bytes')
+ remote.emit('frame', { fn: fn, frame: frame })
}
})
relay.on("error", function(error) {
diff --git a/app/server/index.js b/app/server/index.js
index 0478b81..429cbb1 100644
--- a/app/server/index.js
+++ b/app/server/index.js
@@ -34,21 +34,12 @@ client.on('connect', socket => {
relay.on('connect', socket => {
console.log('Relay connected')
socket.on('res', data => {
- console.log('received response', data.cmd)
+ console.log('Received response', data.cmd)
client.emit('res', data)
})
- socket.on('frame', (fn, data) => {
- console.log('relay frame', fn, data.length)
- client.emit('frame', fn, data)
- })
-
- ss(relay).on('frame', (stream, data) => {
- console.log('received frame', data)
- Object.values(client.connected).map(socket => {
- console.log('emitting to socket')
- ss(socket).emit('frame', stream, data)
- })
+ socket.on('frame', (data) => {
+ client.emit('frame', data)
})
socket.on('disconnect', () => {
diff --git a/public/assets/js/app.js b/public/assets/js/app.js
index 87cb48d..0ea5eeb 100644
--- a/public/assets/js/app.js
+++ b/public/assets/js/app.js
@@ -1,28 +1,40 @@
-var socket = io.connect('/client');
+const container = document.querySelector('#container')
-ss(socket).on('frame', (stream, data) => {
- console.log('received frame', data)
- Object.values(client.connected).map(socket => {
- ss(socket).emit('frame', stream, data)
- })
-})
+let socket = io.connect('/client')
+let got_frame = false
socket.on('res', (data) => {
console.log(data)
})
-socket.on('frame', (fn, data) => {
- console.log('frame', fn, data.length)
- document.write(data)
+socket.on('frame', (data) => {
+ got_frame = true
+ console.log('frame', data.fn)
+ // console.log(data.frame)
+ // return
+ const blob = new Blob([data.frame], { type: 'image/jpg' })
+ const url = URL.createObjectURL(blob)
+
+ const img = new Image ()
+ img.onload = function() {
+ URL.revokeObjectURL(url)
+ container.innerHTML = ''
+ container.appendChild(img)
+ }
+ img.src = url
})
socket.emit('cmd', {
cmd: 'get_params',
})
-socket.emit('cmd', {
- cmd: 'get_last_frame',
-})
+setTimeout(() => {
+ if (!got_frame) {
+ socket.emit('cmd', {
+ cmd: 'get_last_frame',
+ })
+ }
+}, 500)
socket.emit('cmd', {
cmd: 'send_param',
@@ -31,12 +43,3 @@ socket.emit('cmd', {
'value': 'test',
}
})
-
-// $('#file').change(function(e) {
-// var file = e.target.files[0];
-// var stream = ss.createStream();
-
-// // // upload a file to the server.
-// // ss(socket).emit('file', stream, {size: file.size});
-// // ss.createBlobReadStream(file).pipe(stream);
-// }) \ No newline at end of file
diff --git a/public/index.html b/public/index.html
index 9f851c2..04817a1 100644
--- a/public/index.html
+++ b/public/index.html
@@ -13,7 +13,6 @@
<div id="container"></div>
</body>
<script src="/socket.io/socket.io.js"></script>
-<script src="/assets/js/vendor/socket.io-stream.js"></script>
<script>
var s = document.createElement('script');
s.setAttribute('src','assets/js/app.js?' + Date.now());
diff --git a/requirements.txt b/requirements.txt
index 10ee8a6..dfcc352 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,3 @@
python-dotenv
zerorpc
+pillow \ No newline at end of file
diff --git a/rpc/rpc.py b/rpc/rpc.py
index b6a67cc..ee40a0b 100644
--- a/rpc/rpc.py
+++ b/rpc/rpc.py
@@ -3,6 +3,9 @@ import os
import zerorpc
import gevent
import time
+from io import BytesIO
+import base64
+from PIL import Image
load_dotenv(find_dotenv())
@@ -30,13 +33,36 @@ class CortexRPC(object):
print("RPC connected...".format(val))
except zerorpc.TimeoutExpired:
print("RPC timeout :(")
- # return val
- print("defer sending a file...")
- gevent.sleep(1)
- return self.get_last_frame()
+ return val
+ # print("defer sending a file...")
+ # gevent.sleep(1)
+ # return self.get_last_frame()
def get_last_frame(self):
- self.send_frame("test.png", '01234567' * 8 * 8 * 8 * 8 * 2)
+ # self.send_frame("test.png", '01234567' * 8 * 8 * 8 * 8 * 2)
+ from os import listdir
+ from os.path import isfile, join
+ path = '/Users/user/Desktop/woods_videos/test_clahe_brightness_posterize_256/'
+ onlyfiles = sorted([f for f in listdir(path) if isfile(join(path, f))])
+
+ # im = Image.open(join(path, onlyfiles[0]))
+ # for f in onlyfiles:
+ # gevent.sleep(1/29)
+ # output = BytesIO()
+ # im.save(output, format="JPEG")
+ # frame = base64.b64encode(output.getvalue())
+ # output.close()
+ # self.send_frame(f, frame)
+
+ for f in onlyfiles:
+ gevent.sleep(1/30)
+ output = BytesIO()
+ im = Image.open(join(path, f))
+ im = im.convert('RGB')
+ im.save(output, format="JPEG")
+ frame = output.getvalue()
+ output.close()
+ self.send_frame(f.replace('png', 'jpg'), frame)
return "ok"
def send_param(self, key, value):
@@ -53,7 +79,7 @@ class CortexRPC(object):
def send_frame(self, fn, frame):
if self.relay is not None:
- print("Sending a frame...")
+ # print("Send frame " + fn)
self.relay.send_frame(fn, frame)
else:
print("Can't send frame, relay not ready...")