@ -1605,7 +1605,7 @@ namespace MediaBrowser.Controller.MediaEncoding
// For VAAPI and CUVID decoder
// these encoders cannot automatically adjust the size of graphical subtitles to fit the output video,
// thus needs to be manually adjusted.
if ( string . Equals ( options . HardwareAccelerationType , "vaapi" , StringComparison . OrdinalIgnoreCase )
if ( IsVaapiSupported ( state ) & & string . Equals ( options . HardwareAccelerationType , "vaapi" , StringComparison . OrdinalIgnoreCase )
| | ( videoDecoder ? ? string . Empty ) . IndexOf ( "cuvid" , StringComparison . OrdinalIgnoreCase ) ! = - 1 )
{
var videoStream = state . VideoStream ;
@ -1636,7 +1636,7 @@ namespace MediaBrowser.Controller.MediaEncoding
var retStr = " -filter_complex \"[{0}:{1}]{4}[sub];[0:{2}][sub]overlay{3}\"" ;
// When the input may or may not be hardware VAAPI decodable
if ( string . Equals ( o ptions. HardwareAccelerationType , " vaapi", StringComparison . OrdinalIgnoreCase ) & & options . EnableHardwareEncoding )
if ( string . Equals ( o utputVideoCodec, "h264_ vaapi", StringComparison . OrdinalIgnoreCase ) )
{
/ *
[base] : HW scaling video to OutputSize
@ -1648,7 +1648,8 @@ namespace MediaBrowser.Controller.MediaEncoding
}
// If we're hardware VAAPI decoding and software encoding, download frames from the decoder first
else if ( string . Equals ( options . HardwareAccelerationType , "vaapi" , StringComparison . OrdinalIgnoreCase ) & & ! options . EnableHardwareEncoding )
else if ( string . Equals ( options . HardwareAccelerationType , "vaapi" , StringComparison . OrdinalIgnoreCase )
& & string . Equals ( outputVideoCodec , "libx264" , StringComparison . OrdinalIgnoreCase ) )
{
/ *
[base] : SW scaling video to OutputSize
@ -1996,14 +1997,14 @@ namespace MediaBrowser.Controller.MediaEncoding
var hasTextSubs = state . SubtitleStream ! = null & & state . SubtitleStream . IsTextSubtitleStream & & state . SubtitleDeliveryMethod = = SubtitleDeliveryMethod . Encode ;
// When the input may or may not be hardware VAAPI decodable
if ( string . Equals ( o ptions. HardwareAccelerationType , " vaapi", StringComparison . OrdinalIgnoreCase ) & & options . EnableHardwareEncoding )
if ( string . Equals ( o utputVideoCodec, "h264_ vaapi", StringComparison . OrdinalIgnoreCase ) )
{
filters . Add ( "format=nv12|vaapi" ) ;
filters . Add ( "hwupload" ) ;
}
// When the input may or may not be hardware QSV decodable
else if ( string . Equals ( o ptions. HardwareAccelerationType , " qsv", StringComparison . OrdinalIgnoreCase ) & & options . EnableHardwareEncoding )
else if ( string . Equals ( o utputVideoCodec, "h264_ qsv", StringComparison . OrdinalIgnoreCase ) )
{
if ( ! hasTextSubs )
{
@ -2013,8 +2014,8 @@ namespace MediaBrowser.Controller.MediaEncoding
}
// If we're hardware VAAPI decoding and software encoding, download frames from the decoder first
else if ( string . Equals ( options . HardwareAccelerationType , "vaapi ", StringComparison . OrdinalIgnoreCase ) & & ! options . EnableHardwareEncoding )
else if ( string . Equals ( options . HardwareAccelerationType , "vaapi" , StringComparison . OrdinalIgnoreCase )
& & string . Equals ( outputVideoCodec , "libx264 ", StringComparison . OrdinalIgnoreCase ) )
{
var codec = videoStream . Codec . ToLowerInvariant ( ) ;
var pixelFormat = videoStream . PixelFormat . ToLowerInvariant ( ) ;
@ -2077,7 +2078,7 @@ namespace MediaBrowser.Controller.MediaEncoding
filters . AddRange ( GetScalingFilters ( state , inputWidth , inputHeight , threeDFormat , videoDecoder , outputVideoCodec , request . Width , request . Height , request . MaxWidth , request . MaxHeight ) ) ;
// Add parameters to use VAAPI with burn-in text subttiles (GH issue #642)
if ( string . Equals ( o ptions. HardwareAccelerationType , " vaapi", StringComparison . OrdinalIgnoreCase ) & & options . EnableHardwareEncoding )
if ( string . Equals ( o utputVideoCodec, "h264_ vaapi", StringComparison . OrdinalIgnoreCase ) )
{
if ( state . SubtitleStream ! = null
& & state . SubtitleStream . IsTextSubtitleStream