Remove faster_fifo (#7181)

* Remove faster_fifo

* Remove const
This commit is contained in:
Nicolas Mowen 2023-07-16 06:42:56 -06:00 committed by GitHub
parent 07155b1fa9
commit 662025a961
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 26 additions and 58 deletions

View File

@ -134,9 +134,7 @@ RUN apt-get -qq update \
libtbb2 libtbb-dev libdc1394-22-dev libopenexr-dev \ libtbb2 libtbb-dev libdc1394-22-dev libopenexr-dev \
libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev \
# scipy dependencies # scipy dependencies
gcc gfortran libopenblas-dev liblapack-dev \ gcc gfortran libopenblas-dev liblapack-dev && \
# faster-fifo dependencies
g++ cython3 && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \ RUN wget -q https://bootstrap.pypa.io/get-pip.py -O get-pip.py \

View File

@ -6,13 +6,12 @@ import shutil
import signal import signal
import sys import sys
import traceback import traceback
from multiprocessing import Queue
from multiprocessing.synchronize import Event as MpEvent from multiprocessing.synchronize import Event as MpEvent
from types import FrameType from types import FrameType
from typing import Optional from typing import Optional
import faster_fifo as ff
import psutil import psutil
from faster_fifo import Queue
from peewee_migrate import Router from peewee_migrate import Router
from playhouse.sqlite_ext import SqliteExtDatabase from playhouse.sqlite_ext import SqliteExtDatabase
from playhouse.sqliteq import SqliteQueueDatabase from playhouse.sqliteq import SqliteQueueDatabase
@ -27,7 +26,6 @@ from frigate.const import (
CLIPS_DIR, CLIPS_DIR,
CONFIG_DIR, CONFIG_DIR,
DEFAULT_DB_PATH, DEFAULT_DB_PATH,
DEFAULT_QUEUE_BUFFER_SIZE,
EXPORT_DIR, EXPORT_DIR,
MODEL_CACHE_DIR, MODEL_CACHE_DIR,
RECORD_DIR, RECORD_DIR,
@ -60,11 +58,11 @@ logger = logging.getLogger(__name__)
class FrigateApp: class FrigateApp:
def __init__(self) -> None: def __init__(self) -> None:
self.stop_event: MpEvent = mp.Event() self.stop_event: MpEvent = mp.Event()
self.detection_queue: Queue = ff.Queue() self.detection_queue: Queue = mp.Queue()
self.detectors: dict[str, ObjectDetectProcess] = {} self.detectors: dict[str, ObjectDetectProcess] = {}
self.detection_out_events: dict[str, MpEvent] = {} self.detection_out_events: dict[str, MpEvent] = {}
self.detection_shms: list[mp.shared_memory.SharedMemory] = [] self.detection_shms: list[mp.shared_memory.SharedMemory] = []
self.log_queue: Queue = ff.Queue() self.log_queue: Queue = mp.Queue()
self.plus_api = PlusApi() self.plus_api = PlusApi()
self.camera_metrics: dict[str, CameraMetricsTypes] = {} self.camera_metrics: dict[str, CameraMetricsTypes] = {}
self.feature_metrics: dict[str, FeatureMetricsTypes] = {} self.feature_metrics: dict[str, FeatureMetricsTypes] = {}
@ -210,14 +208,8 @@ class FrigateApp:
def init_queues(self) -> None: def init_queues(self) -> None:
# Queues for clip processing # Queues for clip processing
self.event_queue: Queue = ff.Queue( self.event_queue: Queue = mp.Queue()
DEFAULT_QUEUE_BUFFER_SIZE self.event_processed_queue: Queue = mp.Queue()
* sum(camera.enabled for camera in self.config.cameras.values())
)
self.event_processed_queue: Queue = ff.Queue(
DEFAULT_QUEUE_BUFFER_SIZE
* sum(camera.enabled for camera in self.config.cameras.values())
)
self.video_output_queue: Queue = mp.Queue( self.video_output_queue: Queue = mp.Queue(
maxsize=sum(camera.enabled for camera in self.config.cameras.values()) * 2 maxsize=sum(camera.enabled for camera in self.config.cameras.values()) * 2
) )
@ -228,29 +220,20 @@ class FrigateApp:
) )
# Queue for object recordings info # Queue for object recordings info
self.object_recordings_info_queue: Queue = ff.Queue( self.object_recordings_info_queue: Queue = mp.Queue()
DEFAULT_QUEUE_BUFFER_SIZE
* sum(camera.enabled for camera in self.config.cameras.values())
)
# Queue for audio recordings info if enabled # Queue for audio recordings info if enabled
self.audio_recordings_info_queue: Optional[Queue] = ( self.audio_recordings_info_queue: Optional[Queue] = (
ff.Queue( mp.Queue()
DEFAULT_QUEUE_BUFFER_SIZE
* sum(camera.audio.enabled for camera in self.config.cameras.values())
)
if len([c for c in self.config.cameras.values() if c.audio.enabled]) > 0 if len([c for c in self.config.cameras.values() if c.audio.enabled]) > 0
else None else None
) )
# Queue for timeline events # Queue for timeline events
self.timeline_queue: Queue = ff.Queue( self.timeline_queue: Queue = mp.Queue()
DEFAULT_QUEUE_BUFFER_SIZE
* sum(camera.enabled for camera in self.config.cameras.values())
)
# Queue for inter process communication # Queue for inter process communication
self.inter_process_queue: Queue = ff.Queue(DEFAULT_QUEUE_BUFFER_SIZE) self.inter_process_queue: Queue = mp.Queue()
def init_database(self) -> None: def init_database(self) -> None:
def vacuum_db(db: SqliteExtDatabase) -> None: def vacuum_db(db: SqliteExtDatabase) -> None:

View File

@ -1,11 +1,10 @@
import multiprocessing as mp import multiprocessing as mp
import queue import queue
import threading import threading
from multiprocessing import Queue
from multiprocessing.synchronize import Event as MpEvent from multiprocessing.synchronize import Event as MpEvent
from typing import Callable from typing import Callable
from faster_fifo import Queue
from frigate.comms.dispatcher import Communicator from frigate.comms.dispatcher import Communicator

View File

@ -46,7 +46,3 @@ DRIVER_INTEL_iHD = "iHD"
MAX_SEGMENT_DURATION = 600 MAX_SEGMENT_DURATION = 600
MAX_PLAYLIST_SECONDS = 7200 # support 2 hour segments for a single playlist to account for cameras with inconsistent segment times MAX_PLAYLIST_SECONDS = 7200 # support 2 hour segments for a single playlist to account for cameras with inconsistent segment times
# Queue Values
DEFAULT_QUEUE_BUFFER_SIZE = 1000 * 1000 # 1MB

View File

@ -9,7 +9,6 @@ import threading
from types import FrameType from types import FrameType
from typing import Optional, Tuple from typing import Optional, Tuple
import faster_fifo as ff
import numpy as np import numpy as np
import requests import requests
from setproctitle import setproctitle from setproctitle import setproctitle
@ -52,7 +51,7 @@ def get_ffmpeg_command(input_args: list[str], input_path: str, pipe: str) -> lis
def listen_to_audio( def listen_to_audio(
config: FrigateConfig, config: FrigateConfig,
recordings_info_queue: ff.Queue, recordings_info_queue: mp.Queue,
process_info: dict[str, FeatureMetricsTypes], process_info: dict[str, FeatureMetricsTypes],
inter_process_communicator: InterProcessCommunicator, inter_process_communicator: InterProcessCommunicator,
) -> None: ) -> None:
@ -152,7 +151,7 @@ class AudioEventMaintainer(threading.Thread):
def __init__( def __init__(
self, self,
camera: CameraConfig, camera: CameraConfig,
recordings_info_queue: ff.Queue, recordings_info_queue: mp.Queue,
feature_metrics: dict[str, FeatureMetricsTypes], feature_metrics: dict[str, FeatureMetricsTypes],
stop_event: mp.Event, stop_event: mp.Event,
inter_process_communicator: InterProcessCommunicator, inter_process_communicator: InterProcessCommunicator,

View File

@ -6,10 +6,10 @@ import logging
import os import os
import random import random
import string import string
from multiprocessing import Queue
from typing import Optional from typing import Optional
import cv2 import cv2
from faster_fifo import Queue
from frigate.config import CameraConfig, FrigateConfig from frigate.config import CameraConfig, FrigateConfig
from frigate.const import CLIPS_DIR from frigate.const import CLIPS_DIR

View File

@ -3,11 +3,10 @@ import logging
import queue import queue
import threading import threading
from enum import Enum from enum import Enum
from multiprocessing import Queue
from multiprocessing.synchronize import Event as MpEvent from multiprocessing.synchronize import Event as MpEvent
from typing import Dict from typing import Dict
from faster_fifo import Queue
from frigate.config import EventsConfig, FrigateConfig from frigate.config import EventsConfig, FrigateConfig
from frigate.models import Event from frigate.models import Event
from frigate.types import CameraMetricsTypes from frigate.types import CameraMetricsTypes

View File

@ -7,10 +7,10 @@ import signal
import threading import threading
from collections import deque from collections import deque
from logging import handlers from logging import handlers
from multiprocessing import Queue
from types import FrameType from types import FrameType
from typing import Deque, Optional from typing import Deque, Optional
from faster_fifo import Queue
from setproctitle import setproctitle from setproctitle import setproctitle
from frigate.util.builtin import clean_camera_user_pass from frigate.util.builtin import clean_camera_user_pass

View File

@ -7,7 +7,6 @@ import signal
import threading import threading
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
import faster_fifo as ff
import numpy as np import numpy as np
from setproctitle import setproctitle from setproctitle import setproctitle
@ -78,7 +77,7 @@ class LocalObjectDetector(ObjectDetector):
def run_detector( def run_detector(
name: str, name: str,
detection_queue: ff.Queue, detection_queue: mp.Queue,
out_events: dict[str, mp.Event], out_events: dict[str, mp.Event],
avg_speed, avg_speed,
start, start,

View File

@ -3,6 +3,7 @@
import asyncio import asyncio
import datetime import datetime
import logging import logging
import multiprocessing as mp
import os import os
import queue import queue
import random import random
@ -14,7 +15,6 @@ from multiprocessing.synchronize import Event as MpEvent
from pathlib import Path from pathlib import Path
from typing import Any, Optional, Tuple from typing import Any, Optional, Tuple
import faster_fifo as ff
import numpy as np import numpy as np
import psutil import psutil
@ -32,8 +32,8 @@ class RecordingMaintainer(threading.Thread):
def __init__( def __init__(
self, self,
config: FrigateConfig, config: FrigateConfig,
object_recordings_info_queue: ff.Queue, object_recordings_info_queue: mp.Queue,
audio_recordings_info_queue: Optional[ff.Queue], audio_recordings_info_queue: Optional[mp.Queue],
process_info: dict[str, FeatureMetricsTypes], process_info: dict[str, FeatureMetricsTypes],
stop_event: MpEvent, stop_event: MpEvent,
): ):

View File

@ -7,7 +7,6 @@ import threading
from types import FrameType from types import FrameType
from typing import Optional from typing import Optional
import faster_fifo as ff
from playhouse.sqliteq import SqliteQueueDatabase from playhouse.sqliteq import SqliteQueueDatabase
from setproctitle import setproctitle from setproctitle import setproctitle
@ -23,8 +22,8 @@ logger = logging.getLogger(__name__)
def manage_recordings( def manage_recordings(
config: FrigateConfig, config: FrigateConfig,
object_recordings_info_queue: ff.Queue, object_recordings_info_queue: mp.Queue,
audio_recordings_info_queue: ff.Queue, audio_recordings_info_queue: mp.Queue,
process_info: dict[str, FeatureMetricsTypes], process_info: dict[str, FeatureMetricsTypes],
) -> None: ) -> None:
stop_event = mp.Event() stop_event = mp.Event()

View File

@ -3,10 +3,9 @@
import logging import logging
import queue import queue
import threading import threading
from multiprocessing import Queue
from multiprocessing.synchronize import Event as MpEvent from multiprocessing.synchronize import Event as MpEvent
from faster_fifo import Queue
from frigate.config import FrigateConfig from frigate.config import FrigateConfig
from frigate.events.maintainer import EventTypeEnum from frigate.events.maintainer import EventTypeEnum
from frigate.models import Timeline from frigate.models import Timeline

View File

@ -1,10 +1,9 @@
from multiprocessing import Queue
from multiprocessing.context import Process from multiprocessing.context import Process
from multiprocessing.sharedctypes import Synchronized from multiprocessing.sharedctypes import Synchronized
from multiprocessing.synchronize import Event from multiprocessing.synchronize import Event
from typing import Optional, TypedDict from typing import Optional, TypedDict
from faster_fifo import Queue
from frigate.object_detection import ObjectDetectProcess from frigate.object_detection import ObjectDetectProcess

View File

@ -11,7 +11,6 @@ import time
from collections import defaultdict from collections import defaultdict
import cv2 import cv2
import faster_fifo as ff
import numpy as np import numpy as np
from setproctitle import setproctitle from setproctitle import setproctitle
@ -731,7 +730,7 @@ def get_consolidated_object_detections(detected_object_groups):
def process_frames( def process_frames(
camera_name: str, camera_name: str,
frame_queue: ff.Queue, frame_queue: mp.Queue,
frame_shape, frame_shape,
model_config: ModelConfig, model_config: ModelConfig,
detect_config: DetectConfig, detect_config: DetectConfig,
@ -739,7 +738,7 @@ def process_frames(
motion_detector: MotionDetector, motion_detector: MotionDetector,
object_detector: RemoteObjectDetector, object_detector: RemoteObjectDetector,
object_tracker: ObjectTracker, object_tracker: ObjectTracker,
detected_objects_queue: ff.Queue, detected_objects_queue: mp.Queue,
process_info: dict, process_info: dict,
objects_to_track: list[str], objects_to_track: list[str],
object_filters, object_filters,

View File

@ -1,6 +1,5 @@
click == 8.1.* click == 8.1.*
Flask == 2.3.* Flask == 2.3.*
faster-fifo == 1.4.*
imutils == 0.5.* imutils == 0.5.*
matplotlib == 3.7.* matplotlib == 3.7.*
mypy == 1.4.1 mypy == 1.4.1