dashcam: re-enable screen recorder, disable training data video
- Re-enable FrogPilot OMX screen recorder (H.264 MP4, 1440x720, 2Mbps) - Auto-start recording when car is on, auto-stop when off - Hide all recorder UI elements (invisible to driver) - Add ScreenRecorderDebug param for bench testing without car - Disable encoderd (camera .hevc files) — CAN/sensor logs still recorded - Raise deleter free space threshold from 5GB to 9GB - Deleter rotates oldest videos before log segments - Add CLAUDE.md project documentation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,11 +8,15 @@ from openpilot.system.loggerd.config import get_available_bytes, get_available_p
|
||||
from openpilot.system.loggerd.uploader import listdir_by_creation
|
||||
from openpilot.system.loggerd.xattr_cache import getxattr
|
||||
|
||||
MIN_BYTES = 5 * 1024 * 1024 * 1024
|
||||
# CLEARPILOT: increased from 5 GB to 9 GB to reserve space for screen recordings
|
||||
MIN_BYTES = 9 * 1024 * 1024 * 1024
|
||||
MIN_PERCENT = 10
|
||||
|
||||
DELETE_LAST = ['boot', 'crash']
|
||||
|
||||
# CLEARPILOT: screen recorder video directory
|
||||
VIDEOS_DIR = '/data/media/0/videos'
|
||||
|
||||
PRESERVE_ATTR_NAME = 'user.preserve'
|
||||
PRESERVE_ATTR_VALUE = b'1'
|
||||
PRESERVE_COUNT = 5
|
||||
@@ -44,12 +48,37 @@ def get_preserved_segments(dirs_by_creation: list[str]) -> list[str]:
|
||||
return preserved
|
||||
|
||||
|
||||
def delete_oldest_video():
|
||||
"""CLEARPILOT: delete the oldest screen recording MP4 when disk space is low."""
|
||||
try:
|
||||
if not os.path.isdir(VIDEOS_DIR):
|
||||
return False
|
||||
videos = sorted(
|
||||
(f for f in os.listdir(VIDEOS_DIR) if f.endswith('.mp4')),
|
||||
key=lambda f: os.path.getctime(os.path.join(VIDEOS_DIR, f))
|
||||
)
|
||||
if not videos:
|
||||
return False
|
||||
delete_path = os.path.join(VIDEOS_DIR, videos[0])
|
||||
cloudlog.info(f"deleting video {delete_path}")
|
||||
os.remove(delete_path)
|
||||
return True
|
||||
except OSError:
|
||||
cloudlog.exception(f"issue deleting video from {VIDEOS_DIR}")
|
||||
return False
|
||||
|
||||
|
||||
def deleter_thread(exit_event):
|
||||
while not exit_event.is_set():
|
||||
out_of_bytes = get_available_bytes(default=MIN_BYTES + 1) < MIN_BYTES
|
||||
out_of_percent = get_available_percent(default=MIN_PERCENT + 1) < MIN_PERCENT
|
||||
|
||||
if out_of_percent or out_of_bytes:
|
||||
# CLEARPILOT: try deleting oldest video first, then fall back to log segments
|
||||
if delete_oldest_video():
|
||||
exit_event.wait(.1)
|
||||
continue
|
||||
|
||||
dirs = listdir_by_creation(Paths.log_root())
|
||||
|
||||
# skip deleting most recent N preserved segments (and their prior segment)
|
||||
|
||||
Reference in New Issue
Block a user