[chronojump] wecam getdevices Initial (untested) code for mac
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] wecam getdevices Initial (untested) code for mac
- Date: Fri, 29 Mar 2019 15:34:19 +0000 (UTC)
commit 683ca61ce758560cf0d0bb06716d39a23f0eadf3
Author: Xavier de Blas <xaviblas gmail com>
Date: Fri Mar 29 16:33:41 2019 +0100
wecam getdevices Initial (untested) code for mac
src/webcamFfmpegDevices.cs | 72 +++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 65 insertions(+), 7 deletions(-)
---
diff --git a/src/webcamFfmpegDevices.cs b/src/webcamFfmpegDevices.cs
index 56162d2d..3d0180ae 100644
--- a/src/webcamFfmpegDevices.cs
+++ b/src/webcamFfmpegDevices.cs
@@ -30,6 +30,8 @@ public abstract class WebcamFfmpegGetDevices
public abstract List<string> GetDevices();
protected abstract List<string> createParameters();
+
+ protected abstract List<string> parse(string devicesOutput);
}
public class WebcamFfmpegGetDevicesLinux : WebcamFfmpegGetDevices
@@ -60,6 +62,11 @@ public class WebcamFfmpegGetDevicesLinux : WebcamFfmpegGetDevices
{
return new List<string>();
}
+
+ protected override List<string> parse(string devicesOutput)
+ {
+ return new List<string>();
+ }
}
@@ -71,10 +78,7 @@ public class WebcamFfmpegGetDevicesWindows : WebcamFfmpegGetDevices
public override List<string> GetDevices()
{
- string executable = "ffmpeg";
- if(UtilAll.GetOSEnum() == UtilAll.OperatingSystems.WINDOWS)
- executable = System.IO.Path.Combine(Util.GetPrefixDir(), "bin/ffmpeg.exe");
-
+ string executable = System.IO.Path.Combine(Util.GetPrefixDir(), "bin/ffmpeg.exe");
List<string> parameters = createParameters();
ExecuteProcess.Result execute_result = ExecuteProcess.run (executable, parameters, true,
true);
@@ -130,7 +134,7 @@ public class WebcamFfmpegGetDevicesWindows : WebcamFfmpegGetDevices
return parameters;
}
- private List<string> parse(string devicesOutput)
+ protected override List<string> parse(string devicesOutput)
{
LogB.Information("Called parse");
@@ -173,11 +177,65 @@ public class WebcamFfmpegGetDevicesMac : WebcamFfmpegGetDevices
public override List<string> GetDevices()
{
- return new List<string>();
+ string executable = "ffmpeg";
+ List<string> parameters = createParameters();
+
+ ExecuteProcess.Result execute_result = ExecuteProcess.run (executable, parameters, true,
true);
+
+ LogB.Information("---- stdout: ----");
+ LogB.Information(execute_result.stdout);
+ LogB.Information("---- stderr: ----");
+ LogB.Information(execute_result.stderr);
+ LogB.Information("-----------------");
+
+ if(! execute_result.success)
+ {
+ /*
+ LogB.Information("WebcamFfmpegGetDevicesMac stdout: " + execute_result.stdout);
+ LogB.Information("WebcamFfmpegGetDevicesMac error: " + execute_result.stderr);
+ */
+
+ return new List<string>();
+ }
+ else
+ return parse(execute_result.stdout);
}
protected override List<string> createParameters()
{
- return new List<string>();
+ //ffmpeg -f avfoundation -list_devices true -i ""
+ List<string> parameters = new List<string>();
+
+ int i = 0;
+ parameters.Insert (i ++, "-f");
+ parameters.Insert (i ++, "avfoundation");
+ parameters.Insert (i ++, "-list_devices");
+ parameters.Insert (i ++, "true");
+ parameters.Insert (i ++, "-i");
+ parameters.Insert (i ++, "\"\"");
+
+ return parameters;
+ }
+
+ protected override List<string> parse(string devicesOutput)
+ {
+ LogB.Information("Called parse");
+
+ /*
+ * break the big string in \n strings
+ * https://stackoverflow.com/a/1547483
+ */
+ string[] lines = devicesOutput.Split(
+ new[] { Environment.NewLine },
+ StringSplitOptions.None
+ );
+
+ List<string> parsedList = new List<string>();
+ foreach(string l in lines)
+ {
+ parsedList.Add(l);
+ }
+
+ return parsedList;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]