(3) Great fps now

This commit is contained in:
BOTAlex 2025-03-07 17:18:19 +01:00
parent 3f763204b6
commit a29da9f922

View File

@ -19,7 +19,7 @@ from .DataPacket import PacketHeader # Python imports stupid. missed a single ".
WAIT_TIME = 0.1
BUFFER_SIZE = 1024
NUM_FRAGMENTS = 48
NUM_FRAGMENTS = 8
HEADER_FORMAT = "iii"
RED = "\033[91m"
@ -105,7 +105,7 @@ class UDP_Camera(ICameraSource):
self.packets: list[PacketHeader|None] = [None] * NUM_FRAGMENTS # Reset packets
self.num_loaded = 0
self.currentFrameNum = packet.frame_num
self.rawFullDataBuffer.fill(0)
self.rawFullDataBuffer[:] = 0
# print("Reset frame capture")
if (self.packets[packet.id] is None
@ -135,6 +135,7 @@ class UDP_Camera(ICameraSource):
self.num_loaded = 0
self.packets: list[PacketHeader|None] = [None] * NUM_FRAGMENTS # Reset packets
self.rawFullDataBuffer[:] = 0
def process_and_push_image(self):
@ -148,18 +149,27 @@ class UDP_Camera(ICameraSource):
current_frame_time = time.time()
delta_time = current_frame_time - self.last_frame_time
self.last_frame_time = current_frame_time
self.fps = (self.fps + self.pf_fps) / 2
self.newft = time.time()
self.fps = 1 / (self.newft - self.prevft)
self.prevft = self.newft
self.fps = int(self.fps)
if len(self.fl) < 60:
self.fl.append(self.fps)
# Avoid division by zero
if delta_time > 0:
fps = 1.0 / delta_time
else:
self.fl.pop(0)
self.fl.append(self.fps)
fps = 0
# Smooth the FPS using a moving average
self.fl.append(fps)
if len(self.fl) > 60:
self.fl.pop(0) # Keep the list length constant
# Compute average FPS
self.fps = sum(self.fl) / len(self.fl)
# Compute bandwidth per second (bps)
self.bps = image.nbytes * self.fps
self.frame_number = self.frame_number + 1
# Increment frame count
self.frame_number += 1
# Push the frame to queue
self.push_image_to_queue(image, self.frame_number, self.fps)