Commit Graph
1406 Commits
Author SHA1 Message Date
Nicolas MowenandGitHub 7854e1c2c1 Fix plus api (#13937)
* Fix plus api

* Fix regenerate api
2024-09-24 12:22:11 -05:00
Nicolas MowenandGitHub a9ff795948 More api fixes (#13936)
* Set correect return type for raw config

* Simplify parsing

* Formatting
2024-09-24 09:54:03 -06:00
Nicolas MowenandGitHub a8e2f97260 Improve performance of image fetching (#13933) 2024-09-24 09:50:20 -05:00
Nicolas MowenandGitHub d17253b023 Fix apis (#13932) 2024-09-24 09:27:10 -05:00
Josh HawkinsandGitHub ecbf0410eb Regenerate genai tracked object descriptions (#13930)
* add genai to frigateconfig

* add regenerate button if genai is enabled

* add endpoint and new zmq pub/sub model

* move publisher to app

* dont override

* logging

* debug timeouts

* clean up

* clean up

* allow saving of empty description

* ensure descriptions can be empty

* update search detail when results change

* revalidate explore page on focus

* global mutate hook

* description websocket hook and dispatcher

* revalidation and mutation

* fix merge conflicts

* update tests

* fix merge conflicts

* fix response message

* fix response message

* fix fastapi

* fix test

* remove log

* json content

* fix content response

* more json content fixes

* another one
2024-09-24 08:14:51 -06:00
cffc431bf0 Frigate HTTP API using FastAPI (#13871)
* POC: Added FastAPI with one endpoint (get /logs/service)

* POC: Revert error_log

* POC: Converted preview related endpoints to FastAPI

* POC: Converted two more endpoints to FastAPI

* POC: lint

* Convert all media endpoints to FastAPI. Added /media prefix (/media/camera && media/events && /media/preview)

* Convert all notifications API endpoints to FastAPI

* Convert first review API endpoints to FastAPI

* Convert remaining review API endpoints to FastAPI

* Convert export endpoints to FastAPI

* Fix path parameters

* Convert events endpoints to FastAPI

* Use body for multiple events endpoints

* Use body for multiple events endpoints (create and end event)

* Convert app endpoints to FastAPI

* Convert app endpoints to FastAPI

* Convert auth endpoints to FastAPI

* Removed flask app in favour of FastAPI app. Implemented FastAPI middleware to check CSRF, connect and disconnect from DB. Added middleware x-forwared-for headers

* Added starlette plugin to expose custom headers

* Use slowapi as the limiter

* Use query parameters for the frame latest endpoint

* Use query parameters for the media snapshot.jpg endpoint

* Use query parameters for the media MJPEG feed endpoint

* Revert initial nginx.conf change

* Added missing even_id for /events/search endpoint

* Removed left over comment

* Use FastAPI TestClient

* severity query parameter should be a string

* Use the same pattern for all tests

* Fix endpoint

* Revert media routers to old names. Order routes to make sure the dynamic ones from media.py are only used whenever there's no match on auth/etc

* Reverted paths for media on tsx files

* Deleted file

* Fix test_http to use TestClient

* Formatting

* Bind timeline to DB

* Fix http tests

* Replace filename with pathvalidate

* Fix latest.ext handling and disable uvicorn access logs

* Add cosntraints to api provided values

* Formatting

* Remove unused

* Remove unused

* Get rate limiter working

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2024-09-24 07:05:30 -06:00
gtsiamandGitHub dc54981784 Move more things out of FrigateApp (#13897)
* Moved FrigateApp.init_config() into FrigateConfig.load()

* Move frigate config loading into main

* Store PlusApi in FrigateConfig

* Register SIGTERM handler in main

* Ensure logging is setup during config parsing

* Removed pointless try

* Moved config initialization out of FrigateApp

* Made FrigateApp.shm_frame_count into a function

* Removed log calls from signal handlers

python's logging calls are not re-entrant, which caused at least one of
these to deadlock randomly.

* Reopen stdout/err on process fork

This helps avoid deadlocks (https://github.com/python/cpython/issues/91776).

* Make mypy happy

* Whoops. I might have forgotten to save.

Truly an amateur mistake.

* Always call FrigateApp.stop()
2024-09-24 07:07:47 -05:00
Josh HawkinsandGitHub a7ed90f042 try deleting zoom spaces if disabled (#13915) 2024-09-23 15:34:08 -05:00
Nicolas MowenandGitHub af84af7b7a Don't print error for requesting camera info (#13905) 2024-09-23 08:49:34 -05:00
Josh HawkinsandGitHub 0f813962be Chroma fixes (#13902)
* Ensure descriptions saved in chroma are non-empty

* delete only existing ids in event cleanup

* add debug logging
2024-09-23 06:53:19 -06:00
Nicolas MowenandGitHub 6bafb68d77 Remove PyYAML usages and dependency (#13889) 2024-09-22 14:08:36 -05:00
gtsiamandGitHub e8763b3697 Removed usage of PyYAML for config parsing. (#13883)
* Ignore entire __pycache__ folder instead of individual *.pyc files

* Ignore .mypy_cache in git

* Rework config YAML parsing to use only ruamel.yaml

PyYAML silently overrides keys when encountering duplicates, but ruamel
raises and exception by default. Since we're already using it elsewhere,
dropping PyYAML is an easy choice to make.

* Added EnvString in config to slim down runtime_config()

* Added gitlens to devcontainer

* Automatically call FrigateConfig.runtime_config()

runtime_config needed to be called manually before. Now, it's been
removed, but the same code is run by a pydantic validator.

* Fix handling of missing -segment_time

* Removed type annotation on FrigateConfig's parse

I'd like to keep them, but then mypy complains about some fundamental
errors with how the pydantic model is structured. I'd like to fix it,
but I'd rather work towards moving some of this config to the database.
2024-09-22 10:56:57 -05:00
Nicolas MowenandGitHub 062c305cd8 Remove context file (#13885) 2024-09-22 08:38:23 -06:00
Nicolas MowenandGitHub 61a4a4bc2f Update openvino to 2024.3 (#13861) 2024-09-20 17:20:11 -05:00
Josh HawkinsandGitHub 176af55e8c Fix similarity search (#13856)
* add event_id param to api

* exclude query from filtertype

* update review pane link for similarity search

* update filter group for similarity param and fix switch bug

* unneeded prop

* update query and input for similarity search param

* use undefined instead of empty string for query with similarity search
2024-09-20 12:05:55 -05:00
Nicolas MowenandGitHub 1a51ce712c Simplify tensorrt building (#13851)
* Simplify tensorrt building

* Use engine context cache
2024-09-20 10:49:44 -05:00
Nicolas MowenandGitHub d498fabe72 Update ffmpeg to 7 and update intel hwaccel docs (#13834)
* Update ffmpeg to 7 and update intel hwaccel docs

* Formatting

* Redo early gen naming

* Add gamma back in

* Fix table

* Add link to intel docs

* Add hwaccel arg for disabling gamma

* Formatting

* Fix tests

* Formatting

* Fix nvidia
2024-09-19 13:29:58 -06:00
Nicolas MowenandGitHub 7c63cb5bca Do not handle object if data is None (#13830) 2024-09-19 07:51:07 -06:00
Nicolas MowenandGitHub 4515eb4637 Rocm yolonas (#13816)
* Implement ROCm detectors

* Cleanup tensor input

* Fixup image creation

* Add support for yolonas in onnx

* Get build working with onnx

* Update docs and simplify config

* Remove unused imports
2024-09-18 19:34:07 -05:00
Nicolas MowenandGitHub e44a9e8921 Use cpu provider for embeddings models (#13806) 2024-09-17 17:20:18 -05:00
Josh HawkinsandGitHub ff9e1da1de Revert "Rewrite yaml loader (#13803)" (#13805)
This reverts commit 38ff46e45c.
2024-09-17 15:03:22 -06:00
Nicolas MowenandGitHub 1ed8642010 Refactor onnx providers (#13804)
* Ensure dirs exist for model caches

* Formatting

* Don't use tensorrt for embeddings
2024-09-17 15:54:44 -05:00
38ff46e45c Rewrite yaml loader (#13803)
* Ignore entire __pycache__ folder instead of individual *.pyc files

* Rewrite the yaml loader to match PyYAML

The old implementation would fail in weird ways with configs that were
incorrect in just the right way. The new implementation just does what
PyYAML would do, only diverging in case of duplicate keys.

* Clarify duplicate yaml key ValueError message

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2024-09-17 15:52:55 -05:00
Nicolas MowenandGitHub 2362d0e838 Override onnx clip loading (#13800)
* Set caching options for hardware providers

* Always use CPU for searching

* Use new install strategy to remove onnxruntime and then install post wheels
2024-09-17 13:24:35 -06:00
gtsiamandGitHub edababa88e Work through most of the cspell warnings in python (#13794) 2024-09-17 10:41:46 -05:00
1c24f0054a Make logging code self-contained (#13785)
* Make logging code self-contained.

Rewrite logging code to use python's builting QueueListener, effectively
moving the logging process into a thread of the Frigate app.

Also, wrap this behaviour in a easy-to-use context manager to encourage
some consistency.

* Fixed typing errors

* Remove todo note from log filter

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* Do not access log record's msg directly

* Clear all root handlers before starting app

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2024-09-17 08:26:25 -05:00
Nicolas MowenandGitHub 36d7eb7caa Support ONNX model caching (#13780)
* Support model caching

* Cleanup
2024-09-16 18:18:11 -06:00
Nicolas MowenandGitHub 4fc8d33d31 Fix detections logic (#13781) 2024-09-16 18:23:10 -05:00
Nicolas MowenandGitHub 2f69f5afe6 Add support for yolonas via ONNX and allow TensorRT execution provider to work correctly (#13776)
* Add support for yolonas in onnx

* Add correct deps

* Set ld library path

* Refactor cudnn to only be used in amd64

* Add onnx to docs and add explainer at the top

* Undo change

* Update comment

* Remove uneccesary

* Remove line change
2024-09-16 16:17:31 -05:00
Josh HawkinsandGitHub 9bcb928715 check for onvif movement support before attempting movement (#13771) 2024-09-16 10:46:35 -06:00
Josh HawkinsandGitHub e3edcf057c write prompts for genai at the camera level (#13767) 2024-09-16 08:46:11 -06:00
Nicolas MowenandGitHub 06ccf7e9e9 Always close connection to shm frame after detection (#13766) 2024-09-16 07:56:20 -06:00
Nicolas MowenandGitHub 0c86c77d42 Ffmpeg 6 (#13754)
* Move back to ffmpeg 6

* Use ffmpeg 6
2024-09-15 11:42:52 -06:00
Nicolas MowenandGitHub fc145016ea Use smarter logic for default ffmpeg handling (#13748) 2024-09-15 09:01:15 -06:00
Nicolas MowenandGitHub d5acd11164 Ffmpeg fixes (#13739)
* Only include hwaccel args if detect is being used

* Include both libmfx libraries
2024-09-14 13:22:03 -05:00
Nicolas MowenandGitHub 088a0fb4a5 Ffmpeg cleanup (#13737) 2024-09-14 07:03:39 -06:00
Josh HawkinsandGitHub 5aee70ac7a Explore view fixes (#13726)
* return description consistently under data object

* description type

* navigate to history view from explore video tab
2024-09-13 14:44:31 -06:00
Nicolas MowenandGitHub 5ff476c6f9 Configurable ffmpeg (#13722)
* Install multiple ffmpeg versions and add config to make it configurable

* Update docs

* Run ffprobe too

* Cleanup

* Apply config to go2rtc as well

* Fix ffmpeg bin

* Docs

* Restore path

* Cleanup env var

* Fix ffmpeg path for encoding

* Fix export

* Formatting
2024-09-13 15:14:51 -05:00
Nicolas MowenandGitHub 62657ad05a Ensure detections are not immediately deleted (#13683)
* Ensure detections are not immediately deleted

* Formatting
2024-09-11 15:46:24 -05:00
Nicolas MowenandGitHub 3972642ba0 Refactor search details into Explore Page (#13665) 2024-09-11 08:41:16 -06:00
Nicolas MowenandGitHub 07d1692f2b Make notifications toggleable via MQTT (#13657)
* Add ability to toggle mqtt state from MQTT / ws

* Listen to notification config updates

* Add docs for notifications
2024-09-10 11:24:44 -06:00
Nicolas MowenandGitHub 8db9824842 Don't save preview frames if recording is not enabled (#13656)
* Simplify check

* Don't write frames

* Write frames only if recording enabled
2024-09-10 11:12:42 -06:00
Nicolas MowenandGitHub ceb7aa8b36 Improve handling of empty frames (#13651) 2024-09-10 08:39:37 -05:00
Josh HawkinsandGitHub cae11cbb86 Add ability to filter based on search type (#13641) 2024-09-09 14:45:19 -05:00
Nicolas MowenandGitHub f5dbcd5465 Add types to date preview & vod api (#13636)
* Add types to date preview api

* Formatting
2024-09-09 11:03:53 -05:00
Josh HawkinsandGitHub f143fceceb UI tweaks (#13633)
* Object lifecycle and semantic search UI tweaks

* prevent console errors for sheet component
2024-09-09 09:33:38 -05:00
Nicolas MowenandGitHub 8be139d4d1 Fix thumbnail failure (#13634)
* Fix thumbnail failure

* Formatting

* Fix logic
2024-09-09 09:29:05 -05:00
Nicolas MowenandGitHub 18a6aa1824 Update ffmpeg to 7.0.2 (#13578)
* Update to ffmpeg 7.0

* Reduce CPU by not changing pixel format

* Add basic vulkan support

* Adjust gamma after vaapi change

* Formatting
2024-09-05 18:27:32 -06:00
Nicolas MowenandGitHub 055f0dfc22 Fix birdseye opening and not closing frames (#13553) 2024-09-04 08:25:00 -06:00
Josh HawkinsandGitHub ddf9163c47 Implement object lifecycle pane (#13550)
* Object lifecycle pane

* fix thumbnails and annotation offset math

* snapshot endpoint height and format, yaml types, bugfixes

* clean up for new type

* use get_image_from_recording in recordings snapshot api

* make height optional
2024-09-04 07:46:49 -06:00