Browse Source

improve vaapi capability detection (#1171)

pull/1172/head
Jason Dove 3 years ago committed by GitHub
parent
commit
018f759fa4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      CHANGELOG.md
  2. 1
      ErsatzTV.FFmpeg/Capabilities/Vaapi/VaapiEntrypoint.cs
  3. 16
      ErsatzTV.FFmpeg/Capabilities/VaapiHardwareCapabilities.cs

1
CHANGELOG.md

@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Fixed ### Fixed
- Align default docker image (no acceleration) with new images from [ErsatzTV-ffmpeg](https://github.com/jasongdove/ErsatzTV-ffmpeg) - 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 - Fix some transcoding pipelines that use software decoders
- Improve VAAPI encoder capability detection on newer hardware
### Changed ### Changed
- Plex, Jellyfin and Emby libraries now retrieve all metadata and statistics from the media server - Plex, Jellyfin and Emby libraries now retrieve all metadata and statistics from the media server

1
ErsatzTV.FFmpeg/Capabilities/Vaapi/VaapiEntrypoint.cs

@ -4,4 +4,5 @@ public class VaapiEntrypoint
{ {
public const string Decode = "VAEntrypointVLD"; public const string Decode = "VAEntrypointVLD";
public const string Encode = "VAEntrypointEncSlice"; public const string Encode = "VAEntrypointEncSlice";
public const string EncodeLowPower = "VAEntrypointEncSliceLP";
} }

16
ErsatzTV.FFmpeg/Capabilities/VaapiHardwareCapabilities.cs

@ -97,19 +97,27 @@ public class VaapiHardwareCapabilities : IHardwareCapabilities
VideoFormat.H264 => VideoFormat.H264 =>
_profileEntrypoints.Contains( _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 => VideoFormat.Hevc when bitDepth == 10 =>
_profileEntrypoints.Contains( _profileEntrypoints.Contains(
new VaapiProfileEntrypoint(VaapiProfile.HevcMain10, VaapiEntrypoint.Encode)), new VaapiProfileEntrypoint(VaapiProfile.HevcMain10, VaapiEntrypoint.Encode)) ||
_profileEntrypoints.Contains(
new VaapiProfileEntrypoint(VaapiProfile.HevcMain10, VaapiEntrypoint.EncodeLowPower)),
VideoFormat.Hevc => VideoFormat.Hevc =>
_profileEntrypoints.Contains( _profileEntrypoints.Contains(
new VaapiProfileEntrypoint(VaapiProfile.HevcMain, VaapiEntrypoint.Encode)), new VaapiProfileEntrypoint(VaapiProfile.HevcMain, VaapiEntrypoint.Encode)) ||
_profileEntrypoints.Contains(
new VaapiProfileEntrypoint(VaapiProfile.HevcMain, VaapiEntrypoint.EncodeLowPower)),
VideoFormat.Mpeg2Video => VideoFormat.Mpeg2Video =>
_profileEntrypoints.Contains( _profileEntrypoints.Contains(
new VaapiProfileEntrypoint(VaapiProfile.Mpeg2Main, VaapiEntrypoint.Encode)), new VaapiProfileEntrypoint(VaapiProfile.Mpeg2Main, VaapiEntrypoint.Encode)) ||
_profileEntrypoints.Contains(
new VaapiProfileEntrypoint(VaapiProfile.Mpeg2Main, VaapiEntrypoint.EncodeLowPower)),
_ => false _ => false
}; };

Loading…
Cancel
Save