improve vaapi capability detection (#1171)

This commit is contained in:
Jason Dove
2023-02-21 09:53:23 -06:00
committed by GitHub
parent 1afff11063
commit 018f759fa4
3 changed files with 14 additions and 4 deletions
+1
View File
@@ -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
@@ -4,4 +4,5 @@ public class VaapiEntrypoint
{
public const string Decode = "VAEntrypointVLD";
public const string Encode = "VAEntrypointEncSlice";
public const string EncodeLowPower = "VAEntrypointEncSliceLP";
}
@@ -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
};