mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""Local only processors for handling real time object processing."""
 | 
						|
 | 
						|
import logging
 | 
						|
from abc import ABC, abstractmethod
 | 
						|
 | 
						|
import numpy as np
 | 
						|
 | 
						|
from frigate.config import FrigateConfig
 | 
						|
 | 
						|
from ..types import DataProcessorMetrics
 | 
						|
 | 
						|
logger = logging.getLogger(__name__)
 | 
						|
 | 
						|
 | 
						|
class RealTimeProcessorApi(ABC):
 | 
						|
    @abstractmethod
 | 
						|
    def __init__(
 | 
						|
        self,
 | 
						|
        config: FrigateConfig,
 | 
						|
        metrics: DataProcessorMetrics,
 | 
						|
    ) -> None:
 | 
						|
        self.config = config
 | 
						|
        self.metrics = metrics
 | 
						|
        pass
 | 
						|
 | 
						|
    @abstractmethod
 | 
						|
    def process_frame(self, obj_data: dict[str, any], frame: np.ndarray) -> None:
 | 
						|
        """Processes the frame with object data.
 | 
						|
        Args:
 | 
						|
            obj_data (dict): containing data about focused object in frame.
 | 
						|
            frame (ndarray): full yuv frame.
 | 
						|
 | 
						|
        Returns:
 | 
						|
            None.
 | 
						|
        """
 | 
						|
        pass
 | 
						|
 | 
						|
    @abstractmethod
 | 
						|
    def handle_request(
 | 
						|
        self, topic: str, request_data: dict[str, any]
 | 
						|
    ) -> dict[str, any] | None:
 | 
						|
        """Handle metadata requests.
 | 
						|
        Args:
 | 
						|
            topic (str): topic that dictates what work is requested.
 | 
						|
            request_data (dict): containing data about requested change to process.
 | 
						|
 | 
						|
        Returns:
 | 
						|
            None if request was not handled, otherwise return response.
 | 
						|
        """
 | 
						|
        pass
 | 
						|
 | 
						|
    @abstractmethod
 | 
						|
    def expire_object(self, object_id: str) -> None:
 | 
						|
        """Handle objects that are no longer detected.
 | 
						|
        Args:
 | 
						|
            object_id (str): id of object that is no longer detected.
 | 
						|
 | 
						|
        Returns:
 | 
						|
            None.
 | 
						|
        """
 | 
						|
        pass
 |