Files
ersatztv/ErsatzTV.FFmpeg/Filter/SubtitleHardwareUploadFilter.cs
T
d855e4f20d Add initial support for Rockchip Media Process Platform (rkmpp) hardware acceleration (#2418)
* Add Rockchip Media Process Platform (rkmpp) acceleration

* remove fourcc stuff; it's exclusive to videotoolbox

* update changelog

---------

Co-authored-by: Jason Dove <1695733+jasongdove@users.noreply.github.com>
2025-09-16 00:51:56 +00:00

42 lines
1.5 KiB
C#

namespace ErsatzTV.FFmpeg.Filter;
public class SubtitleHardwareUploadFilter : BaseFilter
{
private readonly FrameState _currentState;
private readonly FFmpegState _ffmpegState;
public SubtitleHardwareUploadFilter(FrameState currentState, FFmpegState ffmpegState)
{
_currentState = currentState;
_ffmpegState = ffmpegState;
}
public override string Filter =>
_ffmpegState.EncoderHardwareAccelerationMode switch
{
HardwareAccelerationMode.None => string.Empty,
HardwareAccelerationMode.Nvenc => "hwupload_cuda",
HardwareAccelerationMode.Qsv => string.Empty,
// leave vaapi in software since we don't (yet) use overlay_vaapi
HardwareAccelerationMode.Vaapi when _currentState.FrameDataLocation == FrameDataLocation.Software =>
string.Empty,
// leave videotoolbox in software since we use a software overlay filter
HardwareAccelerationMode.VideoToolbox => string.Empty,
// leave amf in software since we use a software overlay filter
HardwareAccelerationMode.Amf => string.Empty,
// leave v4l2m2m in software since we use a software overlay filter
HardwareAccelerationMode.V4l2m2m => string.Empty,
// leave rkmpp in software since we use a software overlay filter
HardwareAccelerationMode.Rkmpp => string.Empty,
_ => "hwupload"
};
public override FrameState NextState(FrameState currentState) => currentState;
}