From 45bb7e109bb0a8f658d35aac69655ee2b7268aa9 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Thu, 5 Sep 2024 14:35:20 -0600 Subject: [PATCH] Add basic vulkan support --- frigate/const.py | 1 + frigate/ffmpeg_presets.py | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/frigate/const.py b/frigate/const.py index 7cdb2b672..a6e945897 100644 --- a/frigate/const.py +++ b/frigate/const.py @@ -47,6 +47,7 @@ MAX_WAL_SIZE = 10 # MB FFMPEG_HWACCEL_NVIDIA = "preset-nvidia" FFMPEG_HWACCEL_VAAPI = "preset-vaapi" +FFMPEG_HWACCEL_VULKAN = "preset-vulkan" # Regex Consts diff --git a/frigate/ffmpeg_presets.py b/frigate/ffmpeg_presets.py index fb0fd4321..08c79da2e 100644 --- a/frigate/ffmpeg_presets.py +++ b/frigate/ffmpeg_presets.py @@ -5,7 +5,7 @@ import os from enum import Enum from typing import Any -from frigate.const import FFMPEG_HWACCEL_NVIDIA, FFMPEG_HWACCEL_VAAPI +from frigate.const import FFMPEG_HWACCEL_NVIDIA, FFMPEG_HWACCEL_VAAPI, FFMPEG_HWACCEL_VULKAN from frigate.util.services import vainfo_hwaccel from frigate.version import VERSION @@ -71,6 +71,8 @@ PRESETS_HW_ACCEL_DECODE = { "preset-jetson-h265": "-c:v hevc_nvmpi -resize {1}x{2}", "preset-rk-h264": "-hwaccel rkmpp -hwaccel_output_format drm_prime", "preset-rk-h265": "-hwaccel rkmpp -hwaccel_output_format drm_prime", + # experimental presets + FFMPEG_HWACCEL_VULKAN: "-hwaccel vulkan -init_hw_device vulkan=gpu:0 -filter_hw_device gpu -hwaccel_output_format vulkan" } PRESETS_HW_ACCEL_DECODE["preset-nvidia-h264"] = PRESETS_HW_ACCEL_DECODE[ FFMPEG_HWACCEL_NVIDIA @@ -94,6 +96,8 @@ PRESETS_HW_ACCEL_SCALE = { "preset-rk-h264": "-r {0} -vf scale_rkrga=w={1}:h={2}:format=yuv420p:force_original_aspect_ratio=0,hwmap=mode=read,format=yuv420p", "preset-rk-h265": "-r {0} -vf scale_rkrga=w={1}:h={2}:format=yuv420p:force_original_aspect_ratio=0,hwmap=mode=read,format=yuv420p", "default": "-r {0} -vf fps={0},scale={1}:{2}", + # experimental presets + FFMPEG_HWACCEL_VULKAN: "-r {0} -vf fps={0},hwupload,scale_vulkan=w={1}:h={2},hwdownload" } PRESETS_HW_ACCEL_SCALE["preset-nvidia-h264"] = PRESETS_HW_ACCEL_SCALE[ FFMPEG_HWACCEL_NVIDIA