Jon Taylor commited on
Commit
690cc6d
1 Parent(s): 6e1bb73

fixed memory buffer

Browse files
Files changed (3) hide show
  1. app/bot.py +7 -5
  2. app/pipeline.py +2 -0
  3. frontend/app/page.js +15 -13
app/bot.py CHANGED
@@ -32,6 +32,7 @@ class DailyVision(EventHandler):
32
  self.__time = time.time()
33
  self.__queue = queue.Queue()
34
  self.__app_quit = False
 
35
  self.__bot_name = bot_name
36
  self.__room_url = room_url
37
  self.__room_name = room_name
@@ -79,7 +80,7 @@ class DailyVision(EventHandler):
79
 
80
  def on_participant_joined(self, participant):
81
  self.logger.info(f"Participant {participant['id']} joined, analyzing frames...")
82
- self.__client.set_video_renderer(participant["id"], self.on_video_frame)
83
 
84
  # Say hello
85
  self.wave()
@@ -114,13 +115,13 @@ class DailyVision(EventHandler):
114
  self.__app_quit = True
115
  break
116
  try:
117
- video_frame = self.__queue.get(timeout=5)
 
118
 
119
- if video_frame:
120
  image = Image.frombytes("RGB", (video_frame.width, video_frame.height), video_frame.buffer)
121
  result_image = self.__pipeline.predict(params, image)
122
  self.__camera.write_frame(result_image.tobytes())
123
- #pil = Image.fromarray(result.render()[0], mode="RGB").tobytes()
124
  except queue.Empty:
125
  pass
126
 
@@ -128,7 +129,8 @@ class DailyVision(EventHandler):
128
  # Process ~15 frames per second (considering incoming frames at 30fps).
129
  if time.time() - self.__time > 2: #0.05:
130
  self.__time = time.time()
131
- self.__queue.put(video_frame)
 
132
 
133
  def wave(self, emoji="👋"):
134
  self.__client.send_app_message(
 
32
  self.__time = time.time()
33
  self.__queue = queue.Queue()
34
  self.__app_quit = False
35
+ self.__image_buffer = None
36
  self.__bot_name = bot_name
37
  self.__room_url = room_url
38
  self.__room_name = room_name
 
80
 
81
  def on_participant_joined(self, participant):
82
  self.logger.info(f"Participant {participant['id']} joined, analyzing frames...")
83
+ self.__client.set_video_renderer(participant["id"], self.on_video_frame, color_format="RGB")
84
 
85
  # Say hello
86
  self.wave()
 
115
  self.__app_quit = True
116
  break
117
  try:
118
+ #video_frame = self.__queue.get(timeout=5)
119
+ video_frame = self.__image_buffer
120
 
121
+ if not video_frame == None:
122
  image = Image.frombytes("RGB", (video_frame.width, video_frame.height), video_frame.buffer)
123
  result_image = self.__pipeline.predict(params, image)
124
  self.__camera.write_frame(result_image.tobytes())
 
125
  except queue.Empty:
126
  pass
127
 
 
129
  # Process ~15 frames per second (considering incoming frames at 30fps).
130
  if time.time() - self.__time > 2: #0.05:
131
  self.__time = time.time()
132
+ self.__image_buffer = video_frame
133
+ #self.__queue.put(video_frame)
134
 
135
  def wave(self, emoji="👋"):
136
  self.__client.send_app_message(
app/pipeline.py CHANGED
@@ -222,11 +222,13 @@ class Pipeline:
222
  return None
223
  result_image = results.images[0]
224
 
 
225
  if os.getenv("CONTROL_NET_OVERLAY", True):
226
  # paste control_image on top of result_image
227
  w0, h0 = (200, 200)
228
  control_image = control_image.resize((w0, h0))
229
  w1, h1 = result_image.size
230
  result_image.paste(control_image, (w1 - w0, h1 - h0))
 
231
 
232
  return result_image
 
222
  return None
223
  result_image = results.images[0]
224
 
225
+ """
226
  if os.getenv("CONTROL_NET_OVERLAY", True):
227
  # paste control_image on top of result_image
228
  w0, h0 = (200, 200)
229
  control_image = control_image.resize((w0, h0))
230
  w1, h1 = result_image.size
231
  result_image.paste(control_image, (w1 - w0, h1 - h0))
232
+ """
233
 
234
  return result_image
frontend/app/page.js CHANGED
@@ -9,19 +9,21 @@ export default function Home() {
9
 
10
  async function start() {
11
  setStarting(true);
12
- const resp = await fetch(
13
- `${process.env.API_URL || "http://localhost:8000"}/start`,
14
- {
15
- method: "POST",
16
- mode: "cors",
17
- cache: "no-cache",
18
- credentials: "same-origin",
19
- headers: {
20
- "Content-Type": "application/json",
21
- },
22
- body: JSON.stringify({}),
23
- }
24
- );
 
 
25
 
26
  const data = await resp.json();
27
 
 
9
 
10
  async function start() {
11
  setStarting(true);
12
+
13
+ const apiUrl = `${
14
+ window.location.protocol === "https:" ? "https" : "http"
15
+ }:${window.location.host}`;
16
+
17
+ const resp = await fetch(`${process.env.API_URL || apiUrl}/start`, {
18
+ method: "POST",
19
+ mode: "cors",
20
+ cache: "no-cache",
21
+ credentials: "same-origin",
22
+ headers: {
23
+ "Content-Type": "application/json",
24
+ },
25
+ body: JSON.stringify({}),
26
+ });
27
 
28
  const data = await resp.json();
29