From 46bf9ef990a065e84099f0a9d0eaaa005a6480fa Mon Sep 17 00:00:00 2001 From: Jason Dove <1695733+jasongdove@users.noreply.github.com> Date: Sat, 30 Sep 2023 13:10:23 -0500 Subject: [PATCH] fix intel vaapi pgs subtitle pixel format (#1455) --- CHANGELOG.md | 1 + .../Filter/Vaapi/VaapiSubtitlePixelFormatFilter.cs | 8 ++++++++ ErsatzTV.FFmpeg/Pipeline/VaapiPipelineBuilder.cs | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 ErsatzTV.FFmpeg/Filter/Vaapi/VaapiSubtitlePixelFormatFilter.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index f9cdf8f68..25ce35ec3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix NVIDIA subtitle scaling when `scale_npp` filter is unavailable - Remove ffmpeg and ffprobe as required dependencies for scanning media server libraries - Note that ffmpeg is still *always* required for playback to work +- Fix PGS subtitle pixel format with Intel VAAPI ### Changed - Upgrade ffmpeg to 6.1, which is now *required* for all installs diff --git a/ErsatzTV.FFmpeg/Filter/Vaapi/VaapiSubtitlePixelFormatFilter.cs b/ErsatzTV.FFmpeg/Filter/Vaapi/VaapiSubtitlePixelFormatFilter.cs new file mode 100644 index 000000000..36d027b91 --- /dev/null +++ b/ErsatzTV.FFmpeg/Filter/Vaapi/VaapiSubtitlePixelFormatFilter.cs @@ -0,0 +1,8 @@ +namespace ErsatzTV.FFmpeg.Filter.Vaapi; + +public class VaapiSubtitlePixelFormatFilter : BaseFilter +{ + public override FrameState NextState(FrameState currentState) => currentState; + + public override string Filter => "format=vaapi|yuva420p|yuva444p|yuva422p|rgba|abgr|bgra|gbrap|ya8"; +} diff --git a/ErsatzTV.FFmpeg/Pipeline/VaapiPipelineBuilder.cs b/ErsatzTV.FFmpeg/Pipeline/VaapiPipelineBuilder.cs index 930c898b8..2a7aca341 100644 --- a/ErsatzTV.FFmpeg/Pipeline/VaapiPipelineBuilder.cs +++ b/ErsatzTV.FFmpeg/Pipeline/VaapiPipelineBuilder.cs @@ -436,7 +436,7 @@ public class VaapiPipelineBuilder : SoftwarePipelineBuilder } else if (context.HasSubtitleOverlay) { - var pixelFormatFilter = new PixelFormatFilter(new PixelFormatArgb()); + var pixelFormatFilter = new VaapiSubtitlePixelFormatFilter(); subtitle.FilterSteps.Add(pixelFormatFilter); if (forceSoftwareOverlay)