mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-10-05 00:12:48 +08:00
62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package hardware
|
|
|
|
import "github.com/AlexxIT/go2rtc/internal/api"
|
|
|
|
const ProbeDXVA2H264 = "-init_hw_device dxva2 -f lavfi -i testsrc2 -t 1 -c h264_qsv -f null -"
|
|
const ProbeDXVA2H265 = "-init_hw_device dxva2 -f lavfi -i testsrc2 -t 1 -c hevc_qsv -f null -"
|
|
const ProbeDXVA2JPEG = "-init_hw_device dxva2 -f lavfi -i testsrc2 -t 1 -c mjpeg_qsv -f null -"
|
|
const ProbeCUDAH264 = "-init_hw_device cuda -f lavfi -i testsrc2 -t 1 -c h264_nvenc -f null -"
|
|
const ProbeCUDAH265 = "-init_hw_device cuda -f lavfi -i testsrc2 -t 1 -c hevc_nvenc -f null -"
|
|
|
|
func ProbeAll(bin string) []*api.Source {
|
|
return []*api.Source{
|
|
{
|
|
Name: runToString(bin, ProbeDXVA2H264),
|
|
URL: "ffmpeg:...#video=h264#hardware=" + EngineDXVA2,
|
|
},
|
|
{
|
|
Name: runToString(bin, ProbeDXVA2H265),
|
|
URL: "ffmpeg:...#video=h265#hardware=" + EngineDXVA2,
|
|
},
|
|
{
|
|
Name: runToString(bin, ProbeDXVA2JPEG),
|
|
URL: "ffmpeg:...#video=mjpeg#hardware=" + EngineDXVA2,
|
|
},
|
|
{
|
|
Name: runToString(bin, ProbeCUDAH264),
|
|
URL: "ffmpeg:...#video=h264#hardware=" + EngineCUDA,
|
|
},
|
|
{
|
|
Name: runToString(bin, ProbeCUDAH265),
|
|
URL: "ffmpeg:...#video=h265#hardware=" + EngineCUDA,
|
|
},
|
|
}
|
|
}
|
|
|
|
func ProbeHardware(bin, name string) string {
|
|
switch name {
|
|
case "h264":
|
|
if run(bin, ProbeCUDAH264) {
|
|
return EngineCUDA
|
|
}
|
|
if run(bin, ProbeDXVA2H264) {
|
|
return EngineDXVA2
|
|
}
|
|
|
|
case "h265":
|
|
if run(bin, ProbeCUDAH265) {
|
|
return EngineCUDA
|
|
}
|
|
if run(bin, ProbeDXVA2H265) {
|
|
return EngineDXVA2
|
|
}
|
|
|
|
case "mjpeg":
|
|
if run(bin, ProbeDXVA2JPEG) {
|
|
return EngineDXVA2
|
|
}
|
|
}
|
|
|
|
return EngineSoftware
|
|
}
|