This commit is contained in:
royjr
2026-07-25 04:57:48 -04:00
parent 843f16da23
commit 735da70382
2 changed files with 21 additions and 4 deletions
@@ -109,17 +109,25 @@ class CompressedVipc:
while min(sm.recv_frame.values()) == 0:
sm.update(100)
stream_dimensions = {
vst: (sm[ENCODE_SOCKETS[vst]].width, sm[ENCODE_SOCKETS[vst]].height)
for vst in vision_streams
}
# The metadata subscribers are setup-only. Leaving them connected creates a
# second unread camera subscription whose TCP queues grow for the entire run.
sm.close()
self.vipc_server = VisionIpcServer(server_name)
for vst in vision_streams:
ed = sm[ENCODE_SOCKETS[vst]]
self.vipc_server.create_buffers(vst, 4, ed.width, ed.height)
width, height = stream_dimensions[vst]
self.vipc_server.create_buffers(vst, 4, width, height)
self.vipc_server.start_listener()
self.procs = []
process_context = multiprocessing.get_context("fork")
for vst in vision_streams:
ed = sm[ENCODE_SOCKETS[vst]]
p = process_context.Process(target=decoder, args=(addr, self.vipc_server, vst, ed.width, ed.height, debug))
width, height = stream_dimensions[vst]
p = process_context.Process(target=decoder, args=(addr, self.vipc_server, vst, width, height, debug))
p.start()
self.procs.append(p)
+9
View File
@@ -43,6 +43,10 @@ class ZmqSubSocket:
messages.append(message)
return messages
def close(self) -> None:
self.socket.close(linger=0)
self.context.term()
class ZmqSubMaster:
def __init__(self, services: list[str], address: str):
@@ -77,6 +81,11 @@ class ZmqSubMaster:
self.updated[service] = True
self.recv_frame[service] = self.frame
def close(self) -> None:
for sub in self.sockets.values():
self.poller.unregister(sub.socket)
sub.close()
class ZmqPubMaster:
def __init__(self, services: list[str]):