fixes #2578 - [VAAPI Bug] HEVC Decoding not possible on Intel hardware without this ability

This commit is contained in:
Luke Pulverenti 2017-06-12 02:11:19 -04:00
parent 06967d540f
commit ceed0241fd
2 changed files with 20 additions and 7 deletions

View File

@ -42,6 +42,11 @@ namespace MediaBrowser.Controller.MediaEncoding
{
var hwType = encodingOptions.HardwareAccelerationType;
if (!encodingOptions.EnableHardwareEncoding)
{
hwType = null;
}
if (string.Equals(hwType, "qsv", StringComparison.OrdinalIgnoreCase) ||
string.Equals(hwType, "h264_qsv", StringComparison.OrdinalIgnoreCase))
{
@ -1761,14 +1766,11 @@ namespace MediaBrowser.Controller.MediaEncoding
return null;
}
if (state.VideoStream != null && !string.IsNullOrWhiteSpace(state.VideoStream.Codec))
if (state.VideoStream != null &&
!string.IsNullOrWhiteSpace(state.VideoStream.Codec) &&
!string.IsNullOrWhiteSpace(encodingOptions.HardwareAccelerationType) &&
encodingOptions.EnableHardwareDecoding)
{
if (!string.IsNullOrWhiteSpace(encodingOptions.HardwareAccelerationType))
{
// causing unpredictable results
//return "-hwaccel auto";
}
if (string.Equals(encodingOptions.HardwareAccelerationType, "qsv", StringComparison.OrdinalIgnoreCase))
{
switch (state.MediaSource.VideoStream.Codec.ToLower())
@ -1818,6 +1820,13 @@ namespace MediaBrowser.Controller.MediaEncoding
return "-c:v h264_cuvid ";
}
break;
case "hevc":
case "h265":
if (_mediaEncoder.SupportsDecoder("hevc_cuvid"))
{
return "-c:v hevc_cuvid ";
}
break;
}
}
}

View File

@ -13,6 +13,8 @@ namespace MediaBrowser.Model.Configuration
public string VaapiDevice { get; set; }
public int H264Crf { get; set; }
public string H264Preset { get; set; }
public bool EnableHardwareDecoding { get; set; }
public bool EnableHardwareEncoding { get; set; }
public EncodingOptions()
{
@ -22,6 +24,8 @@ namespace MediaBrowser.Model.Configuration
EncodingThreadCount = -1;
VaapiDevice = "/dev/dri/card0";
H264Crf = 23;
EnableHardwareDecoding = true;
EnableHardwareEncoding = true;
}
}
}