From 911fc2d08ecbf65fbad2694b0ea9d4012f565ec2 Mon Sep 17 00:00:00 2001 From: Nick Mowen Date: Wed, 14 Sep 2022 15:30:43 -0600 Subject: [PATCH] Use hwaccel presets --- frigate/config.py | 3 ++- frigate/ffmpeg_presets.py | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/frigate/config.py b/frigate/config.py index a2f7f3e63..991c0cf18 100644 --- a/frigate/config.py +++ b/frigate/config.py @@ -25,6 +25,7 @@ from frigate.util import ( load_config_with_no_duplicates, load_labels, ) +from frigate.ffmpeg_presets import parse_preset_hardware_acceleration logger = logging.getLogger(__name__) @@ -689,7 +690,7 @@ class CameraConfig(FrigateBaseModel): return None global_args = ffmpeg_input.global_args or self.ffmpeg.global_args - hwaccel_args = ffmpeg_input.hwaccel_args or self.ffmpeg.hwaccel_args + hwaccel_args = ffmpeg_input.hwaccel_args or parse_preset_hardware_acceleration(self.ffmpeg.hwaccel_args) or self.ffmpeg.hwaccel_args input_args = ffmpeg_input.input_args or self.ffmpeg.input_args global_args = ( diff --git a/frigate/ffmpeg_presets.py b/frigate/ffmpeg_presets.py index 5c031c43a..eb5c46528 100644 --- a/frigate/ffmpeg_presets.py +++ b/frigate/ffmpeg_presets.py @@ -1,12 +1,22 @@ """Handles inserting and maintaining ffmpeg presets.""" +from typing import Any + + PRESETS_HW_ACCEL = { - "preset-rpi-32": "-c:v h264_v4l2m2m", - "preset-rpi-64": "-c:v h264_v4l2m2m", + "preset-rpi-32-h264": "-c:v h264_v4l2m2m", + "preset-rpi-64-h264": "-c:v h264_v4l2m2m", "preset-intel-vaapi": "-hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format yuv420p", "preset-intel-qsv-h264": "-c:v h264_qsv", "preset-intel-qsv-h265": "-c:v hevc_qsv", "preset-amd-vaapi": "-hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format yuv420p", "preset-nvidia-h264": "-c:v h264_cuvid", "preset-nvidia-h265": "-c:v hevc_cuvid", -} \ No newline at end of file +} + +def parse_preset_hardware_acceleration(arg: Any) -> str: + """Return the correct preset if in preset format otherwise return raw input.""" + if not isinstance(arg, str): + return None + + return PRESETS_HW_ACCEL.get(arg, None) \ No newline at end of file