mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-12-07 22:05:44 +03:00
update stop_event handling
This commit is contained in:
parent
d3656c1d67
commit
3b50c087e6
@ -43,7 +43,7 @@ class MemryXDetector(DetectionApi):
|
|||||||
ModelTypeEnum.yolox,
|
ModelTypeEnum.yolox,
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, detector_config, stop_event=None):
|
def __init__(self, detector_config):
|
||||||
"""Initialize MemryX detector with the provided configuration."""
|
"""Initialize MemryX detector with the provided configuration."""
|
||||||
try:
|
try:
|
||||||
# Import MemryX SDK
|
# Import MemryX SDK
|
||||||
@ -54,8 +54,8 @@ class MemryXDetector(DetectionApi):
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
# Get stop_event from detector_config
|
# Initialize stop_event as None, will be set later by set_stop_event()
|
||||||
self.stop_event = getattr(detector_config, "_stop_event", stop_event)
|
self.stop_event = None
|
||||||
|
|
||||||
model_cfg = getattr(detector_config, "model", None)
|
model_cfg = getattr(detector_config, "model", None)
|
||||||
|
|
||||||
@ -366,7 +366,7 @@ class MemryXDetector(DetectionApi):
|
|||||||
"""Input callback function: wait for frames in the input queue, preprocess, and send to MX3 (return)"""
|
"""Input callback function: wait for frames in the input queue, preprocess, and send to MX3 (return)"""
|
||||||
while True:
|
while True:
|
||||||
# Check if shutdown is requested
|
# Check if shutdown is requested
|
||||||
if self.stop_event.is_set():
|
if self.stop_event and self.stop_event.is_set():
|
||||||
logger.debug("[process_input] Stop event detected, returning None")
|
logger.debug("[process_input] Stop event detected, returning None")
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
@ -395,7 +395,7 @@ class MemryXDetector(DetectionApi):
|
|||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# On timeout or stop event, return None
|
# On timeout or stop event, return None
|
||||||
if self.stop_event.is_set():
|
if self.stop_event and self.stop_event.is_set():
|
||||||
logger.debug("[receive_output] Stop event detected, exiting")
|
logger.debug("[receive_output] Stop event detected, exiting")
|
||||||
# Silently handle queue.Empty timeouts, they're expected during normal operation
|
# Silently handle queue.Empty timeouts, they're expected during normal operation
|
||||||
elif "Empty" not in str(type(e).__name__):
|
elif "Empty" not in str(type(e).__name__):
|
||||||
@ -850,6 +850,10 @@ class MemryXDetector(DetectionApi):
|
|||||||
f"{self.memx_model_type} is currently not supported for memryx. See the docs for more info on supported models."
|
f"{self.memx_model_type} is currently not supported for memryx. See the docs for more info on supported models."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def set_stop_event(self, stop_event):
|
||||||
|
"""Set the stop event for graceful shutdown."""
|
||||||
|
self.stop_event = stop_event
|
||||||
|
|
||||||
def shutdown(self):
|
def shutdown(self):
|
||||||
"""Gracefully shutdown the MemryX accelerator"""
|
"""Gracefully shutdown the MemryX accelerator"""
|
||||||
try:
|
try:
|
||||||
|
|||||||
@ -59,12 +59,12 @@ class BaseLocalDetector(ObjectDetector):
|
|||||||
self.input_transform = None
|
self.input_transform = None
|
||||||
self.dtype = InputDTypeEnum.int
|
self.dtype = InputDTypeEnum.int
|
||||||
|
|
||||||
# Attach stop_event to detector_config so detectors can access it
|
|
||||||
if detector_config and stop_event:
|
|
||||||
detector_config._stop_event = stop_event
|
|
||||||
|
|
||||||
self.detect_api = create_detector(detector_config)
|
self.detect_api = create_detector(detector_config)
|
||||||
|
|
||||||
|
# If the detector supports setting stop_event, provide it
|
||||||
|
if hasattr(self.detect_api, "set_stop_event") and stop_event:
|
||||||
|
self.detect_api.set_stop_event(stop_event)
|
||||||
|
|
||||||
def _transform_input(self, tensor_input: np.ndarray) -> np.ndarray:
|
def _transform_input(self, tensor_input: np.ndarray) -> np.ndarray:
|
||||||
if self.input_transform:
|
if self.input_transform:
|
||||||
tensor_input = np.transpose(tensor_input, self.input_transform)
|
tensor_input = np.transpose(tensor_input, self.input_transform)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user