[longomatch] Add support for auto exporting plays in live
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Add support for auto exporting plays in live
- Date: Thu, 27 Jun 2013 20:30:51 +0000 (UTC)
commit 16f2b6ebff2aff2b155c3765ebe3553029823c63
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Thu Jun 27 21:47:42 2013 +0200
Add support for auto exporting plays in live
LongoMatch.Core/Common/EncodingSettings.cs | 9 +++++
LongoMatch.Services/Services/Core.cs | 10 +++---
LongoMatch.Services/Services/EventsManager.cs | 41 ++++++++++++++++++++++++-
3 files changed, 54 insertions(+), 6 deletions(-)
---
diff --git a/LongoMatch.Core/Common/EncodingSettings.cs b/LongoMatch.Core/Common/EncodingSettings.cs
index ec151e3..bffa991 100644
--- a/LongoMatch.Core/Common/EncodingSettings.cs
+++ b/LongoMatch.Core/Common/EncodingSettings.cs
@@ -40,6 +40,15 @@ namespace LongoMatch.Common
public uint Framerate_d;
public string OutputFile;
public uint TitleSize;
+
+
+ public static EncodingSettings DefaultRenderingSettings (string outputFilepath) {
+ return new EncodingSettings (Config.RenderVideoStandard,
+ Config.RenderEncodingProfile,
+ Config.RenderEncodingQuality,
+ Config.FPS_N, Config.FPS_D,
+ outputFilepath, 20);
+ }
}
}
diff --git a/LongoMatch.Services/Services/Core.cs b/LongoMatch.Services/Services/Core.cs
index abef5cf..36a9421 100644
--- a/LongoMatch.Services/Services/Core.cs
+++ b/LongoMatch.Services/Services/Core.cs
@@ -82,16 +82,16 @@ namespace LongoMatch.Services
dbManager = new DataBaseManager (Config.DBDir, guiToolkit);
dbManager.SetActiveByName (Config.CurrentDatabase);
+ /* Start the rendering jobs manager */
+ videoRenderer = new RenderingJobsManager(multimediaToolkit, guiToolkit);
+
/* Start the events manager */
- eManager = new EventsManager(guiToolkit);
-
+ eManager = new EventsManager(guiToolkit, videoRenderer);
+
/* Start the hotkeys manager */
hkManager = new HotKeysManager(guiToolkit.MainWindow);
hkManager.newMarkEvent += eManager.OnNewTag;
- /* Start the rendering jobs manager */
- videoRenderer = new RenderingJobsManager(multimediaToolkit, guiToolkit);
-
/* Start Game Units manager */
guManager = new GameUnitsManager(mainWindow, mainWindow.Player);
diff --git a/LongoMatch.Services/Services/EventsManager.cs b/LongoMatch.Services/Services/EventsManager.cs
index e5793e7..353a153 100644
--- a/LongoMatch.Services/Services/EventsManager.cs
+++ b/LongoMatch.Services/Services/EventsManager.cs
@@ -26,6 +26,7 @@ using LongoMatch.Interfaces;
using LongoMatch.Interfaces.GUI;
using LongoMatch.Store;
using Mono.Unix;
+using System.IO;
namespace LongoMatch.Services
{
@@ -48,10 +49,12 @@ namespace LongoMatch.Services
IMainWindow mainWindow;
IPlayer player;
ICapturer capturer;
+ IRenderingJobsManager renderer;
- public EventsManager(IGUIToolkit guiToolkit)
+ public EventsManager(IGUIToolkit guiToolkit, IRenderingJobsManager renderer)
{
this.guiToolkit = guiToolkit;
+ this.renderer = renderer;
mainWindow = guiToolkit.MainWindow;
player = mainWindow.Player;
capturer = mainWindow.Capturer;
@@ -100,6 +103,35 @@ namespace LongoMatch.Services
player.DrawFrame += OnDrawFrame;
}
+ void RenderPlay (Project project, Play play, MediaFile file) {
+ PlayList playlist;
+ EncodingSettings settings;
+ EditionJob job;
+ string outputDir, outputFile;
+
+ if (Config.AutoRenderDir == null ||
+ !Directory.Exists (Config.AutoRenderDir)) {
+ outputDir = Config.VideosDir;
+ } else {
+ outputDir = Config.AutoRenderDir;
+ }
+
+ outputFile = String.Format ("{0}-{0}.mp4", play.Category.Name, play.Name);
+ outputFile = Path.Combine (outputDir, project.Description.Title, outputFile);
+ try {
+ Directory.CreateDirectory (Path.GetDirectoryName (outputFile));
+ settings = EncodingSettings.DefaultRenderingSettings (outputFile);
+ playlist = new PlayList();
+ playlist.Add (new PlayListPlay (play, file, 1, true));
+
+ job = new EditionJob (playlist, settings, Config.EnableAudio,
Config.OverlayTitle);
+ renderer.AddJob (job);
+ } catch (Exception ex) {
+ Log.Exception (ex);
+ }
+
+ }
+
private void ProcessNewTag(Category category,Time pos) {
Time length, startTime, stopTime, start, stop, fStart, fStop;
@@ -157,6 +189,13 @@ namespace LongoMatch.Services
player.Play();
}
Save (openedProject);
+
+ if (projectType == ProjectType.CaptureProject ||
+ projectType == ProjectType.URICaptureProject) {
+ if (Config.AutoRenderPlaysInLive) {
+ RenderPlay (openedProject, play, openedProject.Description.File);
+ }
+ }
}
protected virtual void OnNewTagAtFrame(Category category, int frame) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]