From 2e1ce8a94afd48bab0a9c262fb4fddb4615fc712 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 19 Mar 2025 16:26:04 -0600 Subject: [PATCH] Update reviews state when sub label is set --- frigate/review/maintainer.py | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/frigate/review/maintainer.py b/frigate/review/maintainer.py index 3541fef3b..3819f4cb4 100644 --- a/frigate/review/maintainer.py +++ b/frigate/review/maintainer.py @@ -253,7 +253,8 @@ class ReviewSegmentMaintainer(threading.Thread): if len(active_objects) > 0: has_activity = True - should_update = False + should_update_image = False + should_update_state = False if frame_time > segment.last_update: segment.last_update = frame_time @@ -284,7 +285,8 @@ class ReviewSegmentMaintainer(threading.Thread): and camera_config.review.alerts.enabled ): segment.severity = SeverityEnum.alert - should_update = True + should_update_state = True + should_update_image = True # keep zones up to date if len(object["current_zones"]) > 0: @@ -293,17 +295,24 @@ class ReviewSegmentMaintainer(threading.Thread): segment.zones.append(zone) if len(active_objects) > segment.frame_active_count: - should_update = True + should_update_state = True + should_update_image = True - if should_update: + if prev_data["data"]["sub_labels"] != list(segment.sub_labels.values()): + should_update_state = True + + if should_update_state: try: - yuv_frame = self.frame_manager.get( - frame_name, camera_config.frame_shape_yuv - ) + if should_update_image: + yuv_frame = self.frame_manager.get( + frame_name, camera_config.frame_shape_yuv + ) - if yuv_frame is None: - logger.debug(f"Failed to get frame {frame_name} from SHM") - return + if yuv_frame is None: + logger.debug(f"Failed to get frame {frame_name} from SHM") + return + else: + yuv_frame = None self._publish_segment_update( segment, camera_config, yuv_frame, active_objects, prev_data