Move code to FFmpegContext
This commit is contained in:
parent
d73ac20488
commit
a2c57de204
2 changed files with 33 additions and 25 deletions
|
@ -1,6 +1,8 @@
|
||||||
using FFmpeg.AutoGen;
|
using FFmpeg.AutoGen;
|
||||||
using Ryujinx.Common.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Ryujinx.Graphics.Nvdec.H264
|
namespace Ryujinx.Graphics.Nvdec.H264
|
||||||
|
@ -14,6 +16,8 @@ namespace Ryujinx.Graphics.Nvdec.H264
|
||||||
|
|
||||||
public FFmpegContext()
|
public FFmpegContext()
|
||||||
{
|
{
|
||||||
|
SetRootPath();
|
||||||
|
|
||||||
_logFunc = Log;
|
_logFunc = Log;
|
||||||
|
|
||||||
// Redirect log output
|
// Redirect log output
|
||||||
|
@ -28,6 +32,35 @@ namespace Ryujinx.Graphics.Nvdec.H264
|
||||||
_packet = ffmpeg.av_packet_alloc();
|
_packet = ffmpeg.av_packet_alloc();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetRootPath()
|
||||||
|
{
|
||||||
|
if (OperatingSystem.IsLinux())
|
||||||
|
{
|
||||||
|
// Configure FFmpeg search path
|
||||||
|
Process lddProcess = Process.Start(new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = "/bin/sh",
|
||||||
|
Arguments = "-c \"ldd $(which ffmpeg 2>/dev/null) | grep libavfilter\" 2>/dev/null",
|
||||||
|
UseShellExecute = false,
|
||||||
|
RedirectStandardOutput = true
|
||||||
|
});
|
||||||
|
|
||||||
|
string lddOutput = lddProcess.StandardOutput.ReadToEnd();
|
||||||
|
|
||||||
|
lddProcess.WaitForExit();
|
||||||
|
lddProcess.Close();
|
||||||
|
|
||||||
|
if (lddOutput.Contains(" => "))
|
||||||
|
{
|
||||||
|
ffmpeg.RootPath = Path.GetDirectoryName(lddOutput.Split(" => ")[1]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.Error?.PrintMsg(LogClass.FFmpeg, "FFmpeg wasn't found. Make sure that you have it installed and up to date.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Log(void* p0, int level, string format, byte* vl)
|
private void Log(void* p0, int level, string format, byte* vl)
|
||||||
{
|
{
|
||||||
if (level > ffmpeg.av_log_get_level())
|
if (level > ffmpeg.av_log_get_level())
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using ARMeilleure.Translation.PTC;
|
using ARMeilleure.Translation.PTC;
|
||||||
using FFmpeg.AutoGen;
|
|
||||||
using Gtk;
|
using Gtk;
|
||||||
using Ryujinx.Common.Configuration;
|
using Ryujinx.Common.Configuration;
|
||||||
using Ryujinx.Common.GraphicsDriver;
|
using Ryujinx.Common.GraphicsDriver;
|
||||||
|
@ -12,7 +11,6 @@ using Ryujinx.Ui;
|
||||||
using Ryujinx.Ui.Widgets;
|
using Ryujinx.Ui.Widgets;
|
||||||
using SixLabors.ImageSharp.Formats.Jpeg;
|
using SixLabors.ImageSharp.Formats.Jpeg;
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
@ -79,29 +77,6 @@ namespace Ryujinx
|
||||||
if (OperatingSystem.IsLinux())
|
if (OperatingSystem.IsLinux())
|
||||||
{
|
{
|
||||||
XInitThreads();
|
XInitThreads();
|
||||||
|
|
||||||
// Configure FFmpeg search path
|
|
||||||
Process lddProcess = Process.Start(new ProcessStartInfo
|
|
||||||
{
|
|
||||||
FileName = "/bin/sh",
|
|
||||||
Arguments = "-c \"ldd $(which ffmpeg) | grep libavfilter\"",
|
|
||||||
UseShellExecute = false,
|
|
||||||
RedirectStandardOutput = true
|
|
||||||
});
|
|
||||||
|
|
||||||
string lddOutput = lddProcess.StandardOutput.ReadToEnd();
|
|
||||||
|
|
||||||
lddProcess.WaitForExit();
|
|
||||||
lddProcess.Close();
|
|
||||||
|
|
||||||
if (lddOutput.Contains(" => "))
|
|
||||||
{
|
|
||||||
ffmpeg.RootPath = Path.GetDirectoryName(lddOutput.Split(" => ")[1]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Logger.Error?.PrintMsg(LogClass.FFmpeg, "FFmpeg wasn't found. Make sure that you have it installed and up to date.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
string systemPath = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine);
|
string systemPath = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine);
|
||||||
|
|
Loading…
Reference in a new issue