ffmpeg: Attempt to fix RootPath on some linux distributions (#2292)
* fix ffmpeg lib path * Check if ffmpeg isn't found * Move code to FFmpegContext * Call it in static constructor * revert static instance * rollback * lazy initialization * Revert "lazy initialization" This reverts commit f675d26a5d15ade72e41a5ba899ba80aed3c396d.
This commit is contained in:
parent
c316c059ef
commit
7b8ad1c36c
2 changed files with 36 additions and 4 deletions
|
@ -1,6 +1,8 @@
|
|||
using FFmpeg.AutoGen;
|
||||
using Ryujinx.Common.Logging;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Ryujinx.Graphics.Nvdec.H264
|
||||
|
@ -28,6 +30,40 @@ namespace Ryujinx.Graphics.Nvdec.H264
|
|||
_packet = ffmpeg.av_packet_alloc();
|
||||
}
|
||||
|
||||
static FFmpegContext()
|
||||
{
|
||||
SetRootPath();
|
||||
}
|
||||
|
||||
private static 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)
|
||||
{
|
||||
if (level > ffmpeg.av_log_get_level())
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using ARMeilleure.Translation.PTC;
|
||||
using FFmpeg.AutoGen;
|
||||
using Gtk;
|
||||
using Ryujinx.Common.Configuration;
|
||||
using Ryujinx.Common.GraphicsDriver;
|
||||
|
@ -78,9 +77,6 @@ namespace Ryujinx
|
|||
if (OperatingSystem.IsLinux())
|
||||
{
|
||||
XInitThreads();
|
||||
|
||||
// Configure FFmpeg search path
|
||||
ffmpeg.RootPath = "/lib";
|
||||
}
|
||||
|
||||
string systemPath = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine);
|
||||
|
|
Loading…
Reference in a new issue