|
|
@ -5,17 +5,28 @@ namespace ErsatzTV.FFmpeg.GlobalOption.HardwareAcceleration; |
|
|
|
public class VaapiHardwareAccelerationOption : GlobalOption |
|
|
|
public class VaapiHardwareAccelerationOption : GlobalOption |
|
|
|
{ |
|
|
|
{ |
|
|
|
private readonly FFmpegCapability _decodeCapability; |
|
|
|
private readonly FFmpegCapability _decodeCapability; |
|
|
|
private readonly string _vaapiDevice; |
|
|
|
private readonly Option<string> _vaapiDevice; |
|
|
|
|
|
|
|
|
|
|
|
public VaapiHardwareAccelerationOption(string vaapiDevice, FFmpegCapability decodeCapability) |
|
|
|
public VaapiHardwareAccelerationOption(Option<string> vaapiDevice, FFmpegCapability decodeCapability) |
|
|
|
{ |
|
|
|
{ |
|
|
|
_vaapiDevice = vaapiDevice; |
|
|
|
_vaapiDevice = vaapiDevice; |
|
|
|
_decodeCapability = decodeCapability; |
|
|
|
_decodeCapability = decodeCapability; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public override string[] GlobalOptions => _decodeCapability == FFmpegCapability.Hardware |
|
|
|
public override string[] GlobalOptions |
|
|
|
? new[] { "-hwaccel", "vaapi", "-vaapi_device", _vaapiDevice } |
|
|
|
{ |
|
|
|
: new[] { "-vaapi_device", _vaapiDevice }; |
|
|
|
get |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
foreach (string vaapiDevice in _vaapiDevice) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return _decodeCapability == FFmpegCapability.Hardware |
|
|
|
|
|
|
|
? ["-hwaccel", "vaapi", "-vaapi_device", vaapiDevice] |
|
|
|
|
|
|
|
: ["-vaapi_device", vaapiDevice]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return [ "-hwaccel", "vaapi" ]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public override FrameState NextState(FrameState currentState) => currentState with |
|
|
|
public override FrameState NextState(FrameState currentState) => currentState with |
|
|
|
{ |
|
|
|
{ |
|
|
|