diff --git a/CHANGELOG.md b/CHANGELOG.md index dc95c37ca..4a2b94baf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Align default docker image (no acceleration) with new images from [ErsatzTV-ffmpeg](https://github.com/jasongdove/ErsatzTV-ffmpeg) - Fix some transcoding pipelines that use software decoders +- Improve VAAPI encoder capability detection on newer hardware ### Changed - Plex, Jellyfin and Emby libraries now retrieve all metadata and statistics from the media server diff --git a/ErsatzTV.FFmpeg/Capabilities/Vaapi/VaapiEntrypoint.cs b/ErsatzTV.FFmpeg/Capabilities/Vaapi/VaapiEntrypoint.cs index c990e5b88..041cb8f34 100644 --- a/ErsatzTV.FFmpeg/Capabilities/Vaapi/VaapiEntrypoint.cs +++ b/ErsatzTV.FFmpeg/Capabilities/Vaapi/VaapiEntrypoint.cs @@ -4,4 +4,5 @@ public class VaapiEntrypoint { public const string Decode = "VAEntrypointVLD"; public const string Encode = "VAEntrypointEncSlice"; + public const string EncodeLowPower = "VAEntrypointEncSliceLP"; } diff --git a/ErsatzTV.FFmpeg/Capabilities/VaapiHardwareCapabilities.cs b/ErsatzTV.FFmpeg/Capabilities/VaapiHardwareCapabilities.cs index e9e594d1e..146d2a0a6 100644 --- a/ErsatzTV.FFmpeg/Capabilities/VaapiHardwareCapabilities.cs +++ b/ErsatzTV.FFmpeg/Capabilities/VaapiHardwareCapabilities.cs @@ -97,19 +97,27 @@ public class VaapiHardwareCapabilities : IHardwareCapabilities VideoFormat.H264 => _profileEntrypoints.Contains( - new VaapiProfileEntrypoint(VaapiProfile.H264Main, VaapiEntrypoint.Encode)), + new VaapiProfileEntrypoint(VaapiProfile.H264Main, VaapiEntrypoint.Encode)) || + _profileEntrypoints.Contains( + new VaapiProfileEntrypoint(VaapiProfile.H264Main, VaapiEntrypoint.EncodeLowPower)), VideoFormat.Hevc when bitDepth == 10 => _profileEntrypoints.Contains( - new VaapiProfileEntrypoint(VaapiProfile.HevcMain10, VaapiEntrypoint.Encode)), + new VaapiProfileEntrypoint(VaapiProfile.HevcMain10, VaapiEntrypoint.Encode)) || + _profileEntrypoints.Contains( + new VaapiProfileEntrypoint(VaapiProfile.HevcMain10, VaapiEntrypoint.EncodeLowPower)), VideoFormat.Hevc => _profileEntrypoints.Contains( - new VaapiProfileEntrypoint(VaapiProfile.HevcMain, VaapiEntrypoint.Encode)), + new VaapiProfileEntrypoint(VaapiProfile.HevcMain, VaapiEntrypoint.Encode)) || + _profileEntrypoints.Contains( + new VaapiProfileEntrypoint(VaapiProfile.HevcMain, VaapiEntrypoint.EncodeLowPower)), VideoFormat.Mpeg2Video => _profileEntrypoints.Contains( - new VaapiProfileEntrypoint(VaapiProfile.Mpeg2Main, VaapiEntrypoint.Encode)), + new VaapiProfileEntrypoint(VaapiProfile.Mpeg2Main, VaapiEntrypoint.Encode)) || + _profileEntrypoints.Contains( + new VaapiProfileEntrypoint(VaapiProfile.Mpeg2Main, VaapiEntrypoint.EncodeLowPower)), _ => false };