Use hwaccel presets

This commit is contained in:
Nick Mowen 2022-09-14 15:30:43 -06:00
parent 3ea50c9584
commit 911fc2d08e
2 changed files with 15 additions and 4 deletions

View File

@ -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 = (

View File

@ -1,8 +1,11 @@
"""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",
@ -10,3 +13,10 @@ PRESETS_HW_ACCEL = {
"preset-nvidia-h264": "-c:v h264_cuvid",
"preset-nvidia-h265": "-c:v hevc_cuvid",
}
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)