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