From a62f91291eb71e18531a2d4a66318e14771cbd64 Mon Sep 17 00:00:00 2001 From: bill Date: Thu, 19 Mar 2026 02:30:24 -0400 Subject: [PATCH] deintfix --- .../Filter/Vaapi/DeinterlaceVaapiFilter.cs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/ErsatzTV.FFmpeg/Filter/Vaapi/DeinterlaceVaapiFilter.cs b/ErsatzTV.FFmpeg/Filter/Vaapi/DeinterlaceVaapiFilter.cs index e8026cc67..503d1e6dc 100644 --- a/ErsatzTV.FFmpeg/Filter/Vaapi/DeinterlaceVaapiFilter.cs +++ b/ErsatzTV.FFmpeg/Filter/Vaapi/DeinterlaceVaapiFilter.cs @@ -6,14 +6,27 @@ public class DeinterlaceVaapiFilter : BaseFilter public DeinterlaceVaapiFilter(FrameState currentState) => _currentState = currentState; + private static string GetDeinterlaceFilter() + { + string? modeEnv = System.Environment.GetEnvironmentVariable("VAAPI_DEINT_MODE"); + + if (!string.IsNullOrEmpty(modeEnv) && int.TryParse(modeEnv, out int mode)) + { + return $"deinterlace_vaapi=mode={mode}"; + } + + // No mode specified - let driver pick default + return "deinterlace_vaapi"; + } + public override string Filter => _currentState.FrameDataLocation == FrameDataLocation.Hardware - ? "deinterlace_vaapi" - : "format=nv12|p010le|vaapi,hwupload,deinterlace_vaapi"; + ? GetDeinterlaceFilter() + : $"format=nv12|p010le|vaapi,hwupload,{GetDeinterlaceFilter()}"; public override FrameState NextState(FrameState currentState) => currentState with { Deinterlaced = true, FrameDataLocation = FrameDataLocation.Hardware }; -} +} \ No newline at end of file