View Full Version : MeGUI development
Sharktooth
16th June 2008, 20:25
i was against dvd decrypter info file from the beginning even before this "problem".
@kurt: i dont have vista to test the NSIS UAC plugin.
about adaptive muxer, i think it was added for the newbies. however, ill see if i can fix it.
x264 zones, is the last thing to worry about... :)
oh... i made a small cleanup in x264configpanel (grouped aqstrenght change event in the general update event)... so ensure to do an update before committing anything new.
Kurtnoise
16th June 2008, 20:27
yes but DGindex is able also to extract audio streams from mpeg and/or vob files not decrypted from DVDDecrypter. So, we need to add the log preview from DGindex to include this case... :)
Sharktooth
16th June 2008, 20:34
yep. however i was editing my previous post while you were typing...
Underground78
16th June 2008, 22:09
it's correct. I'll add this.
So I assume that it's the same thing for the "Chroma M.E." checkbox, sorry for not reporting this at the same time than the others but I didn't see this at that moment ... :(
PS : Is reporting those "bugs" useful or are they too minor to be reported ?
Index: x264ConfigurationPanel.Designer.cs
===================================================================
--- x264ConfigurationPanel.Designer.cs (revision 529)
+++ x264ConfigurationPanel.Designer.cs (working copy)
@@ -665,6 +665,7 @@
this.x264ChromaMe.Size = new System.Drawing.Size(278, 23);
this.x264ChromaMe.TabIndex = 0;
this.x264ChromaMe.Text = "Chroma M.E.";
+ this.x264ChromaMe.CheckedChanged += new System.EventHandler(this.updateEvent);
//
// x264MERangeLabel
//
tre31
17th June 2008, 00:35
what about a minimize button on the preview?
yep that'll do it ;), or as an alternative have some way of configuring the Always on Top mode (via a checkbox in settings, or on the actual preview window itself, or in its window properties menu (right/left click top left corner) where you could have a tick indicating yes/no for always on top).
There's 3 options rather than none - which is what it is at present.
berrinam
17th June 2008, 00:40
I'm back from a long holiday, followed by moving city and getting caught up in Uni... So, sorry about leaving my things in a bit of a mess.
Anyway, I've obviously not kept up with megui development. What's happening at the moment? Is there something helpful I can do at the moment?
I've also now switched to Ubuntu as my main OS, and in the future it would be nice to run megui on that. Mono now claims to support all of WinForms 2.0. What's the status of your port, Sharktooth? EDIT: I see that actually, Mutant_Fruit has more recently been working on a mono port. My apologies.
I also see that Mutant_Fruit has posted in more detail about megui/mono problems, so my following comments are probably not very helpful...
I've tried running megui essentially as-is on mono, and it works except for the P/Invoke calls. However, it seems to fail the second time I run it. (Also, it has no knowledge of how to run avs2yuv, etc, under wine, so it doesn't actually do anything yet.)
berrinam
17th June 2008, 02:53
I'm not sure what you've done/decided about and I don't want to intrude, but what I was planning when I was working on it before was to move the zones config outside the x264 config: I assume that zones are used for credits/ads, and and are thus source-specific. It doesn't make sense to keep the together with x264 profiles which you could potentially reuse for every encode.
Sharktooth
17th June 2008, 03:00
So I assume that it's the same thing for the "Chroma M.E." checkbox, sorry for not reporting this at the same time than the others but I didn't see this at that moment ... :(
PS : Is reporting those "bugs" useful or are they too minor to be reported ?
Index: x264ConfigurationPanel.Designer.cs
===================================================================
--- x264ConfigurationPanel.Designer.cs (revision 529)
+++ x264ConfigurationPanel.Designer.cs (working copy)
@@ -665,6 +665,7 @@
this.x264ChromaMe.Size = new System.Drawing.Size(278, 23);
this.x264ChromaMe.TabIndex = 0;
this.x264ChromaMe.Text = "Chroma M.E.";
+ this.x264ChromaMe.CheckedChanged += new System.EventHandler(this.updateEvent);
//
// x264MERangeLabel
//
Thanks for reporting, and yes, it's really appreciated. I'll fix it asap.
@berrinam: welcome back :)
development has slown down a bit coz both kurt and i had some priorities. however, we made some bugfixes and new bugs appeared... as usual :)
0.3.x is useable but still there are minor problems. mutant fruit did some nice work on the *nix compatibility side, but it's still a work in progress and he's busy right now.
feel free to propose changes and additions for the next 0.4 version. 0.3 needs just some work on stabilization and if you want to help, it would be really appreciated.
here's the situation:
- adaptive muxer is not working (there's a problem with muxpaths)
- there's the need to add support for dgindex 1.5 final (have a look at the last 5 or 6 pages of this thread)
- zones for x264 are missing, but if you want to move them outside the codec config, then some work is needed
- bugs, bugs, bugs... have a look at the bugtracker.
i think once those things are fixed and working, we can release 0.3 and move on. for 0.4 we should sit on a table and do some serious planning, so we can "work" better.
have a read at the post i made some time ago: https://forum.doom9.org/showthread.php?p=1135925#post1135925
feel free to open a discussion... the same for the other devs.
alcatron
17th June 2008, 05:49
Just had a question in regards to future megui development, will megui support encoding via graphics cards? Eg. new graphics cards coming out from nvidia and utilizing maybe the graphic card power and CPU power..
Thanks
berrinam
17th June 2008, 05:52
I had a quick look at the adaptive muxer, to reproduce the bug reported here (http://sourceforge.net/tracker/index.php?func=detail&aid=1945737&group_id=156112&atid=798476). Here is a patch which fixes that specific problem:
Index: packages/reader/mediainfo/MediaInfoFile.cs
===================================================================
--- packages/reader/mediainfo/MediaInfoFile.cs (revision 529)
+++ packages/reader/mediainfo/MediaInfoFile.cs (working copy)
@@ -257,9 +257,9 @@
MediaInfoWrapper.VideoTrack track = info.Video[0];
checked
{
- ulong width = (ulong)easyParseInt(track.Width);
- ulong height = (ulong)easyParseInt(track.Height);
- ulong frameCount = (ulong)easyParseInt(track.FrameCount);
+ ulong width = (ulong)easyParseInt(track.Width).Value;
+ ulong height = (ulong)easyParseInt(track.Height).Value;
+ ulong frameCount = (ulong)(easyParseInt(track.FrameCount) ?? 0);
double fps = (easyParseDouble(track.FrameRate) ?? 25.0);
vCodec = getVideoCodec(track.Codec);
vType = getVideoType(vCodec, cType, file);
@@ -274,7 +274,7 @@
}
#region methods
- private static int easyParseInt(string value)
+ private static int? easyParseInt(string value)
{
try
{
@@ -282,7 +282,7 @@
}
catch (Exception)
{
- return -1;
+ return null;
}
}
It fixes that specific problem. Are there others?
The problem (as has happened before) comes from the fragile framework in MeGUI for information about sources; it was failing because the information provided was incomplete, which it can't handle. In future we need to make the framework handle missing information better (eg with nullable types) but hopefully my change doesn't break anything by allowing framecounts of 0 to be introduced.
berrinam
17th June 2008, 05:54
@alcatron: MeGUI is only a frontend and can only supply graphics card encoding when the backend tools provide it. Currently, they don't, so the answer is no.
Kurtnoise
17th June 2008, 06:49
i dont have vista to test the NSIS UAC plugin.
No need to have Vista to test it...:p I already tested it (not with megui installer though) and it works great. I'll add it this weekend. But if you want some details, I can give you some hints...
Download the last package where I pointed the link.
Put UAC.dll in your NSIS plugins folder.
Put UAC.nsh in your NSIS include folder.
Add several lines to the script (that's the main task but there are some examples in the package [UAC_RealWorldFullyLoadedDualModeExample]).
Compile & Test it.
@berrinam : glad you're back...:cool: There are also several bugs reported in the SF bugstracker. If you have some time, just look them. Your patch for the adaptive muxer looks ok...I'll test it tonight.
berrinam
17th June 2008, 08:07
This adds zones support back, in the main window. I've attempted to do the minimum changes simply to get it working:
http://www.box.net/shared/97swopctcg
toytown
17th June 2008, 12:47
There still seems to be a bug whereby on Vista, Megui is assuming the install path is c:\program files (x86)\megui. Therefore when you start megui it tells you a new version is available and you download it, restart and your still on the previous version and you get the popup again telling you to upgrade.
To fix it i manually copy megui.exe from c:\program files (x86)\megui to the proper location.
EDIT - Still has bug in Vista, whereby when you click file open or ... box after enqueuing a encode, the application will freeze, workaround is to enqueue 1 movie, restart megui and enqueue next and so on and so. Then encode. Does this on Vista32 and Vista64
Underground78
17th June 2008, 13:05
Hello,
I think something broke the "Quantizer Matrices choice" default size in rev. 530 :
http://www.imagehosting.com/out.php/i1793448_before.gif
Moreover I've seen that the caption text wasn't displayed because it was erased when the selected profil wasn't "High Profil". I've changed this to always display the text, maybe I'm wrong but it seems more logical to me ... Now it looks like this :
http://www.imagehosting.com/out.php/i1793460_after.gif
Index: x264ConfigurationPanel.cs
===================================================================
--- x264ConfigurationPanel.cs (revision 531)
+++ x264ConfigurationPanel.cs (working copy)
@@ -749,7 +749,6 @@
x264NumberOfBFrames.Enabled = false;
x264NumberOfRefFramesLabel.Enabled = false;
cqmComboBox1.SelectedIndex = 0;
- quantizerMatrixGroupbox.Text = "";
quantizerMatrixGroupbox.Enabled = false;
x264LosslessMode.Checked = false;
x264LosslessMode.Enabled = false;
@@ -759,7 +758,6 @@
x264NumberOfBFrames.Enabled = true;
x264NumberOfRefFramesLabel.Enabled = true;
cqmComboBox1.SelectedIndex = 0;
- quantizerMatrixGroupbox.Text = "";
quantizerMatrixGroupbox.Enabled = false;
x264LosslessMode.Checked = false;
x264LosslessMode.Enabled = false;
Index: x264ConfigurationPanel.Designer.cs
===================================================================
--- x264ConfigurationPanel.Designer.cs (revision 531)
+++ x264ConfigurationPanel.Designer.cs (working copy)
@@ -1496,13 +1496,13 @@
this.cqmComboBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.cqmComboBox1.Filter = "Quantizer matrix files (*.cfg)|*.cfg|All Files (*.*)|*.*";
- this.cqmComboBox1.Location = new System.Drawing.Point(6, 19);
+ this.cqmComboBox1.Location = new System.Drawing.Point(12, 19);
this.cqmComboBox1.MaximumSize = new System.Drawing.Size(1000, 29);
this.cqmComboBox1.MinimumSize = new System.Drawing.Size(64, 29);
this.cqmComboBox1.Name = "cqmComboBox1";
this.cqmComboBox1.SelectedIndex = -1;
this.cqmComboBox1.SelectedItem = null;
- this.cqmComboBox1.Size = new System.Drawing.Size(348, 29);
+ this.cqmComboBox1.Size = new System.Drawing.Size(300, 29);
this.cqmComboBox1.TabIndex = 5;
this.cqmComboBox1.SelectionChanged += new MeGUI.StringChanged(this.cqmComboBox1_SelectionChanged);
//
Sharktooth
17th June 2008, 13:46
vs2008 designer weirdness... fixed
@berrinam: the adaptive muxer fix seems to work. committed. if there are no complaints i will port it to the stable version too.
@devs: sorry for the fast bins updates, but i want to have an "useable" 0.3 version out for ppl running 0.3.0.1004...
donnyj
17th June 2008, 20:35
The preview video window is set too "Always on top" as its window property making it pretty much useless as you have too move it out of the screen too see the script creator behind it. Tiny error (obviously you forgot too set the window properties) but it does affect usability.
I didn't close the preview window and then when I hit autoencode, that window opened behind the preview window. I could not close the preview and couldn't bring autoencode to the front. After some sweating (didn't want to test out queue saving after setting up several jobs), I managed to close the autoencode window, then the preview window.
donnyj
17th June 2008, 20:43
I just queued up 50 jobs.... no changes to workers, etc. when I hit start... three of the seven "sets" of jobs started in parallel at once. To make things worse, there is no way (that I could see) of telling which running job was which... IMHO, the status window should at least show a job number.... thanks
Kurtnoise
17th June 2008, 21:21
your comments will be ignored...:stupid:
berrinam
18th June 2008, 03:25
There's many things I want to do in MeGUI, but we all only have limited time. However, some general comments:
The ITool setup generally seems quite easy to handle. Especially the completely independent tools like the AVS Cutter, D2V creator, seem to work well in the tools menu, since their code can basically be kept separate. Ideally, I would like to extend this to genuine runtime plugin support, but that's probably a waste of time in the short term.
However, the main aspect of MeGUI which doesn't fit well with the ITool system is the Audio/VideoEncodingComponent which sit in the main form. I see no reason for them to do so. I believe it also makes the code more interdependent, and hence more complicated. I would like to move these two things of the main form and into their own tools.
It's always nice to add some more external tools, like VC-1, vfw support, ProjectX, ffmpeg, etc. The ease of doing this relies largely on the abovementioned pluggability; not just the ITool system, but also other interfaces like IVideoEncoder and perhaps in future, ISourcePreparer (for DGMPGDec/DGAVCDec/ProjectX)
On a similar point, MeGUI is (somewhat understandably) unintuitive for novices, since a typical manual workflow would look like this:
Decrypt DVD with some external tool
MeGUI's D2V Creator
Avisynth creator
AutoEncode.
In some cases, the Oneclicker can be set up with a small effort, but in other cases it can't (eg commercial skipping, more fine control, etc). There should be some tool which allows the user to select their input file(s), and the steps in the encoding chain are graphically laid out (maybe like R4R) with the user able to choose which are done automatically, manually, or not at all, if applicable. This is still complicated, but it should not be unintuitive; a smart novice should be able to use it.
Queued jobs should be fully editable.
I've been considering the idea of "future files". For instance, if you want to encode some files then mux them, then you have two choices: run the encoder jobs, wait a few hours, then come back and queue and run the mux job; or use the AutoEncoder, which was originally designed specifically for this purpose.
With future files, when you queue a job — say, one which produces a file called out.264 — MeGUI creates a small placeholder file in the output's location. This file has information about which job is going to make it, what kind of file it will be, etc. So, now that you have queued but not run your video encoding job, you can queue the mux job, because the file is already there, and the muxer knows how to handle it. This does what AutoEncode does, but (hopefully) without all the hoops AutoEncode/OneClick jump through to manipulate filenames which do not yet exist. It also then becomes apparent when two queued jobs will produce the same output, and you don't get back to your computer to find that the second job has not started, because MeGUI is asking you "do you want to overwrite this file?".
It would be nice to clean up a lot of the code.
rebkell
18th June 2008, 04:10
:thanks: Sounds great.
Sharktooth
18th June 2008, 13:29
VFW cant be taken into consideration. it will be a problem for linux compatibility. about VC1, i thought at it a while ago, but my conclusion was "it's not worth the time". we already have x264, a better performing codec that is also compatible with the media supports and flash for streaming. VC1 is just M$ stuff...
Future files is a great idea. I'd suggest to use a new approach for output file management for every tool though. The files could be stored in a temp dir (maybe system/user temp folder), inside a subfolder named using the parent job name and timestamp. The intermediate jobs output files should be always named videoN.ext or audioN.ext (where N is the track number). after all the jobs are done the resulting file could be moved to the user desired location. doing this way we can avoid a lot of problems running parallel jobs.
-OT-
use linux Mint instead of Ubuntu.
Kurtnoise
18th June 2008, 20:02
Here is a patch to put "Always on Top" (or not) the Video Preview via the Settings (asked from here (http://forum.doom9.org/showthread.php?p=1150167#post1150167)) :
Index: core/details/MeGUISettings.cs
===================================================================
--- core/details/MeGUISettings.cs (revision 538)
+++ core/details/MeGUISettings.cs (working copy)
@@ -18,7 +18,7 @@
defaultLanguage1, defaultLanguage2, afterEncodingCommand;
private bool recalculateMainMovieBitrate, autoForceFilm, autoStartQueue, enableMP3inMP4, autoOpenScript,
overwriteStats, keep2of3passOutput, deleteCompletedJobs, autoSetNbThreads, deleteIntermediateFiles,
- deleteAbortedOutput, openProgressWindow, useadvancedtooltips, freshOggEnc2, autoscroll;
+ deleteAbortedOutput, openProgressWindow, useadvancedtooltips, freshOggEnc2, autoscroll, alwaysOnTop;
private ulong audioSamplesPerUpdate;
private AfterEncoding afterEncoding;
private decimal forceFilmThreshold, acceptableFPSError;
@@ -86,6 +86,7 @@
videoExtension = "";
audioExtension = "";
safeProfileAlteration = false;
+ alwaysOnTop = false;
}
#region properties
public string YadifPath
@@ -174,6 +175,14 @@
get { return useadvancedtooltips; }
set { useadvancedtooltips = value; }
}
+ ///<summary>
+ /// gets / sets whether megui puts the Video Preview Form "Always on Top" or not
+ /// </summary>
+ public bool AlwaysOnTop
+ {
+ get { return alwaysOnTop; }
+ set { alwaysOnTop = value; }
+ }
/// <summary>
/// path of besplit.exe
Index: core/gui/SettingsForm.cs
===================================================================
--- core/gui/SettingsForm.cs (revision 538)
+++ core/gui/SettingsForm.cs (working copy)
@@ -144,6 +144,8 @@
private TextBox tbAften;
private Label lbAften;
private Button selectAftenExecutableButton;
+ private GroupBox gbVideoPreview;
+ private CheckBox chAlwaysOnTop;
/// <summary>
/// Required designer variable.
/// </summary>
@@ -310,6 +312,8 @@
this.nbPassesLabel = new System.Windows.Forms.Label();
this.nbPasses = new System.Windows.Forms.NumericUpDown();
this.helpButton1 = new MeGUI.core.gui.HelpButton();
+ this.gbVideoPreview = new System.Windows.Forms.GroupBox();
+ this.chAlwaysOnTop = new System.Windows.Forms.CheckBox();
groupBox1 = new System.Windows.Forms.GroupBox();
groupBox1.SuspendLayout();
this.otherGroupBox.SuspendLayout();
@@ -333,6 +337,7 @@
this.tabPage6.SuspendLayout();
this.tabPage7.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nbPasses)).BeginInit();
+ this.gbVideoPreview.SuspendLayout();
this.SuspendLayout();
//
// groupBox1
@@ -741,6 +746,7 @@
//
// tabPage3
//
+ this.tabPage3.Controls.Add(this.gbVideoPreview);
this.tabPage3.Controls.Add(groupBox1);
this.tabPage3.Controls.Add(this.autoUpdateGroupBox);
this.tabPage3.Controls.Add(this.outputExtensions);
@@ -760,7 +766,7 @@
this.autoUpdateGroupBox.Controls.Add(this.useAutoUpdateCheckbox);
this.autoUpdateGroupBox.Location = new System.Drawing.Point(227, 82);
this.autoUpdateGroupBox.Name = "autoUpdateGroupBox";
- this.autoUpdateGroupBox.Size = new System.Drawing.Size(240, 203);
+ this.autoUpdateGroupBox.Size = new System.Drawing.Size(240, 139);
this.autoUpdateGroupBox.TabIndex = 3;
this.autoUpdateGroupBox.TabStop = false;
this.autoUpdateGroupBox.Text = "Auto Update";
@@ -1664,6 +1670,26 @@
this.helpButton1.Size = new System.Drawing.Size(47, 23);
this.helpButton1.TabIndex = 1;
//
+ // gbVideoPreview
+ //
+ this.gbVideoPreview.Controls.Add(this.chAlwaysOnTop);
+ this.gbVideoPreview.Location = new System.Drawing.Point(228, 228);
+ this.gbVideoPreview.Name = "gbVideoPreview";
+ this.gbVideoPreview.Size = new System.Drawing.Size(239, 62);
+ this.gbVideoPreview.TabIndex = 4;
+ this.gbVideoPreview.TabStop = false;
+ this.gbVideoPreview.Text = "Video Preview";
+ //
+ // chAlwaysOnTop
+ //
+ this.chAlwaysOnTop.AutoSize = true;
+ this.chAlwaysOnTop.Location = new System.Drawing.Point(8, 21);
+ this.chAlwaysOnTop.Name = "chAlwaysOnTop";
+ this.chAlwaysOnTop.Size = new System.Drawing.Size(169, 17);
+ this.chAlwaysOnTop.TabIndex = 0;
+ this.chAlwaysOnTop.Text = "Set the Form \"Always on Top\"";
+ this.chAlwaysOnTop.UseVisualStyleBackColor = true;
+ //
// SettingsForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
@@ -1712,6 +1738,8 @@
this.tabPage7.ResumeLayout(false);
this.tabPage7.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nbPasses)).EndInit();
+ this.gbVideoPreview.ResumeLayout(false);
+ this.gbVideoPreview.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
@@ -2008,6 +2036,7 @@
settings.FFMpegPath = textBox7.Text;
settings.AftenPath = tbAften.Text;
settings.AedSettings = this.autoEncodeDefaults;
+ settings.AlwaysOnTop = chAlwaysOnTop.Checked;
return settings;
}
set
@@ -2066,6 +2095,7 @@
textBox7.Text = settings.FFMpegPath;
tbAften.Text = settings.AftenPath;
this.autoEncodeDefaults = settings.AedSettings;
+ chAlwaysOnTop.Checked = settings.AlwaysOnTop;
}
}
#endregion
Index: core/gui/VideoPlayer.cs
===================================================================
--- core/gui/VideoPlayer.cs (revision 538)
+++ core/gui/VideoPlayer.cs (working copy)
@@ -643,7 +643,6 @@
this.Name = "VideoPlayer";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
this.Text = "VideoPlayer";
- this.TopMost = true;
((System.ComponentModel.ISupportInitialize)(this.videoPreview)).EndInit();
this.previewGroupbox.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.positionSlider)).EndInit();
Index: packages/AviSynthWindow.cs
===================================================================
--- packages/AviSynthWindow.cs (revision 538)
+++ packages/AviSynthWindow.cs (working copy)
@@ -1441,6 +1441,7 @@
player.Show();
reader = player.Reader;
sendCropValues();
+ if (mainForm.Settings.AlwaysOnTop) player.TopMost = true;
return true;
}
else
Kurtnoise
18th June 2008, 20:05
About future idea : I'm against to include the VFW interface too...:D I see none advantages to use this nowadays.
btw, I've some plans to add new things but I prefer to wait for the moment. :)
Ajax_Undone
18th June 2008, 22:18
Well not to sound for or against the Idea of vfw but I think that some people would still like the idea of direct interaction with the codec via a GUI rather then a CLI...
Sharktooth
19th June 2008, 02:51
vfw is a windows specific framework. since we planned a megui port for linux, vfw cant be integrated.
also it would require a huge rewrite of the codebase and a rework of the workflow.
way too much effort for a small and problematic gain.
berrinam
19th June 2008, 05:18
You may be right about vfw, but I'm not entirely sure. I agree, certainly not in the short term.
However, I at one stage looked into supporting vfw via the command-line tool avs2avi. Combining that with PInvoke to launch codec config shouldn't be too hard, and it wouldn't break linux compatibility if we were able to provide it in a plugin: linux users just wouldn't install the plugin.
But I agree that many things have higher priorities. I was just trying to say that with the right structure, many tools can be added with relatively little fuss.
Sharktooth
19th June 2008, 13:02
the avs2avi solution is indeed an easier way.
berrinam
19th June 2008, 13:56
According to doom9kumi's comment on this bug (http://sourceforge.net/tracker/index.php?func=detail&aid=1868857&group_id=156112&atid=798476), this should tell mkvmerge to read the AR info from the bitstream. It appears to work for me. Is there a reason that we wouldn't want this switch enabled?
Index: packages/mux/mkv/MkvMergeMuxer.cs
===================================================================
--- packages/mux/mkv/MkvMergeMuxer.cs (revision 543)
+++ packages/mux/mkv/MkvMergeMuxer.cs (working copy)
@@ -75,6 +75,8 @@
if (settings.DAR.HasValue)
sb.Append(" --aspect-ratio 0:" + settings.DAR.Value.X + "/" + settings.DAR.Value.Y);
+ else
+ sb.Append(" --engage keep_bitstream_ar_info");
if (settings.VideoName.Length > 0)
sb.Append(" --track-name \"0:" + settings.VideoName + "\"");
berrinam
19th June 2008, 14:11
Here is a patch to put "Always on Top" (or not) the Video Preview via the Settings (asked from here (http://forum.doom9.org/showthread.php?p=1150167#post1150167)) :
I've tested it and it seems fine for the AVS creator. However, did you intentionally not do anything to previews in the main window's videoencodingcomponent?
Underground78
19th June 2008, 15:17
Hello,
Just a little not very interesting fix : there was an inversion in the context help for min quantizer and for max quantizer in x264 control panel if I am not mistaken ...
Index: ContextHelp.xml
===================================================================
--- ContextHelp.xml (revision 544)
+++ ContextHelp.xml (working copy)
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<ContextHelp version="0.4" Author="Kurtnoise" LastUpdated="11-05-08">
+<ContextHelp version="0.4" Author="Kurtnoise" LastUpdated="19-06-08">
<Codec name="x264">
<!--To Do List:
1 Use info from x264 help - DONE
@@ -165,16 +165,16 @@
</crf>
<qpmin name="Minimum Quantizer">
<Advanced>
-Enforces a minimum Quantizer. Prevents the codec from outputting frames with too much compression,
-causing reduced quality. Note: This is disregarded in Constant Quality or Quality Based VBR modes.</Advanced>
+Enforces a minimum Quantizer. Prevents the codec from outputting frames with too little
+compression, wasting bits. Note: This is disregarded in Constant Quality or Quality Based VBR modes.</Advanced>
<Basic>Set minimum Quantizer factor.</Basic>
<Recommended>10</Recommended>
<Default>10</Default>
</qpmin>
<qpmax name="Maximum Quantizer">
<Advanced>
-Enforces a maximum Quantizer. Prevents the codec from outputting frames with too little
-compression, wasting bits. Note: This is disregarded in Constant Quality or Quality Based VBR modes.</Advanced>
+Enforces a maximum Quantizer. Prevents the codec from outputting frames with too much compression,
+causing reduced quality. Note: This is disregarded in Constant Quality or Quality Based VBR modes.</Advanced>
<Basic>Set maximum Quantizer factor.</Basic>
<Recommended>51</Recommended>
<Default>51</Default>
Kurtnoise
19th June 2008, 20:40
this should tell mkvmerge to read the AR info from the bitstream. It appears to work for me. Is there a reason that we wouldn't want this switch enabled?
due to limited free time, this hasn't been implemented I think...
did you intentionally not do anything to previews in the main window's videoencodingcomponent?
nope...a missing part of my side. :) I'll add this tomorrow probably, if no one object.
Just a little not very interesting fix : there was an inversion in the context help for min quantizer and for max quantizer in x264 control panel if I am not mistaken ...
all sort of patches are always welcome...;) I'll fix it later if someone else doesn't applied the patch first.
berrinam
19th June 2008, 22:50
due to limited free time, this hasn't been implemented I think...
I meant, is it ok to commit with it always enabled, or should we put it into a settings option?
Kurtnoise
20th June 2008, 06:46
well...I vote to have it always enabled (not as a settings option).
berrinam
20th June 2008, 07:08
Committed.
berrinam
20th June 2008, 09:30
I wonder if we should sometime reorganise the SVN folder structure to look more like this:
|megui
|--|trunk
|--|--files...
|--|tags
|--|--|0_2_x_x
|--|--...
|--|branches
|--|--...
|updatecopier
|--|trunk
|--|--files...
|MediaInfoWrapper
|--|trunk
|--|--files...
|MessageBoxExLib
|--|trunk
|--|--files...
...
instead of how it currently looks, which is
|trunk
|--|megui
|--|--files..
|--|updatecopier
|--|--files...
|--|MediaInfoWrapper
|--|--files...
|--...
|tags
|--|0_2_x_x
|--|--|megui
|--|--|updatecopier
|--|--|MediaInfoWrapper
...
because at the moment, all the smaller projects -- which have no dependence on megui -- are copied into every tag/branch, although the code is the same.
Unfortunately, megui depends on two of these subprojects through a dll, so to compile megui, you have to first compile MediaInfoWrapper and MessageBoxExLib, and then copy the dlls into the megui folder.
The rest, however, are only *.exe file dependencies like x264, so there should be no dependency problems for them: autoupdate is sufficient.
Kurtnoise
20th June 2008, 10:40
I'm totally agreed with that...:D
Sharktooth
20th June 2008, 15:16
me too. it just needs a small update to the compile.bat files to have the dlls in the right folders.
Sharktooth
20th June 2008, 15:52
stable:0.2.6.1048
- (berrinam) Fix #1939862 ("Number of Passes" Setting Ignored)
- (berrinam) Fix for #1945737 (Error message with Adaptive Muxer)
- (berrinam) Fix #1996457 (preview and autoencode window priorities): opening AutoEncode closes preview window.
- (berrinam) Fix #1996499 (re-open original video player button glitch)
dev:0.3.0.1009 (includes the fixes and additions up to ver. 0.2.6.1048)
- (kurtnoise) updated project files
- (kurtnoise) moved Avc2AviMuxer.cs in the mux folder.
- (kurtnoise) added an option in the Settings to set up the video preview always on top or not.
- (kurtnoise) fixed a stupid copy & paste, spotted by Underground78.
- (kurtnoise) added manifest files for the x86 & x64 platforms.
- (berrinam) Add "--engage keep_bitstream_ar_info" to mkvmerge commandline so that muxed mkv files have same AR as source.
- (kurtnoise) added x86 and x64 target platforms for the file project.
- (kurtnoise) [VideoUtil] added a function to get basic information about a video source based on its DGindex generated log file. Useful to use the last DGindex release...
- (berrinam) [AVSCutter] Reenabled "Remove" button
Kurtnoise
20th June 2008, 17:16
@berrinam : is it thread safe to use this function ? (I need it to create the DGindex logfile)
Index: packages/tools/d2vcreator/VobinputWindow.cs
===================================================================
--- packages/tools/d2vcreator/VobinputWindow.cs (revision 553)
+++ packages/tools/d2vcreator/VobinputWindow.cs (working copy)
@@ -462,7 +462,8 @@
{
openVideo(openIFODialog.FileName);
projectName.Text = Path.ChangeExtension(openIFODialog.FileName, ".d2v");
- checkIndexIO();
+ CreateDGindexLogFile(openIFODialog.FileName);
+ checkIndexIO();
}
}
}
@@ -493,6 +494,24 @@
}
demuxSelectedTracks.Checked = !demuxAllTracks.Checked;
}
+
+ private void CreateDGindexLogFile(string fileName)
+ {
+ StringBuilder sb = new StringBuilder();
+ System.Diagnostics.Process process1;
+ process1 = new System.Diagnostics.Process();
+
+ //Do not receive an event when the process exits.
+ process1.EnableRaisingEvents = false;
+
+ if (mainForm.Settings.DgIndexPath != "")
+ {
+ sb.Append(" -SD=< -AIF=<" + fileName +"< -OF=<" + Path.ChangeExtension(fileName, ".log") +"< -preview -minimize -exit");
+ System.Diagnostics.Process.Start(mainForm.Settings.DgIndexPath, sb.ToString());
+ }
+ process1.Close();
+ }
+
/// <summary>
/// creates a dgindex project
/// </summary>
If you have a better idea, let me know...:)
berrinam
21st June 2008, 15:04
I don't think that function actually works. You could try this:
private void CreateDGindexLogFile(string fileName)
{
StringBuilder sb = new StringBuilder();
System.Diagnostics.Process process1;
if (mainForm.Settings.DgIndexPath != "")
{
sb.Append(" -SD=< -AIF=<" + fileName +"< -OF=<" + Path.ChangeExtension(fileName, ".log") +"< -preview -minimize -exit");
process1 = System.Diagnostics.Process.Start(mainForm.Settings.DgIndexPath, sb.ToString());
//Do not receive an event when the process exits.
process1.EnableRaisingEvents = false;
Thread.Sleep(2000);
process1.CloseMainWindow();
}
}
This waits 2s for DGIndex to open and run, and then calls CloseMainWindow, which should hopefully tell DGIndex to clean up after itself. If that's not required, just use Kill. Close() doesn't actually kill the process afaik.
There are two main problems with the approach I suggested: it relies on DGIndex loading in 2s; and the GUI will be a little unresponsive for 2s. The first could perhaps be fixed by a better waiting algorithm: perhaps something which waits 2s for DGIndex to load, then checks every 200ms if (process1.MainWindowHandle != IntPtr.Zero), in which case kill DGIndex; if it hasn't loaded in 10s, give up. The second problem could be addressed by running the whole thing in a separate thread; I don't know whether this solution is relevant because I'm not sure what you need DGIndex to run for; at the moment, nothing seems to be using its output.
I hope that helps.
Kurtnoise
21st June 2008, 15:50
well...the logfile is created as well using my function. I wasn't sure about the safety of the running thread. That's why I asked. I'll replace Close() by CloseMainWindow() then if it's more safer. Therefore, I'm not sure that Thread.Sleep(...) is required in your case.
and yes, for the moment nothing uses its output because some parts haven't been committed yet. ;) The last DGindex requires track IDs from now instead of track numbers to demux some audio streams. I started something with the DVDDecrypter file info (which gives also these track IDs) but this implies that we have always this file somewhere. However, this tool beeing dead, some people use some others things to decrypt their DVDs. That's why we need to create the logfile from DGindex first and load these track IDs if we want to use the last DGindex release correctly.
The function to parse the logfile is already in the code...
All in all, It was not my idea to change the DGindex release. :p I'm more interested by the creation of an IFO parser but you know...
berrinam
21st June 2008, 15:58
Well, if all we can present to the user is the (uninformative) "Track 1", "Track 2", ..., would a better solution be simply to only provide "don't demux audio" and "demux all audio tracks", i.e. don't give any track selection?
As far as the Thread.Sleep goes, I haven't tried omitting it, but I thought that CloseMainWindow() would just fail, since the main window hasn't opened, and then DGIndex will continue running and MeGUI won't try CloseMainWindow again...
berrinam
22nd June 2008, 03:04
Is there a x64 build of MeGUI somewhere? Because this bug (https://sourceforge.net/tracker/index.php?func=detail&aid=1999136&group_id=156112&atid=798476) claims the problems is that MeGUI was built targetting x64. I thought all our builds were for x86.
berrinam
22nd June 2008, 03:42
What's the status of this bug (https://sourceforge.net/tracker/index.php?func=detail&aid=1858101&group_id=156112&atid=798476)? The OP claims that when "Automatically set number of threads" is set, the xvid commandline has "-threads 1". However, I just tested and it clearly has "-threads 0", which I have verified does actually cause xvid to auto-set the threadcount. However, I can't see any bugfixes in the log which would have changed "-threads 1" to "-threads 0", so it seems like the OP was just wrong. Shall I close it?
berrinam
22nd June 2008, 04:03
I think 0.3.x.x is getting quite stable now. Most of the bugs on the SF tracker are either fixed or can't be reproduced.
As there are a number of small features in the feature request tracker that I'd like to implement, I would like to tag 0.3.x.x now and -- after the new DGIndex code and my zones code is committed -- only commit bug fixes. Also, I think we should put 0.3.x.x on the stable autoupdate servers.
berrinam
22nd June 2008, 04:27
I've always considered the code in the bitrate calculator tool which changes the main form's video config's bitrate to be quite annoying. I propose that we no longer let the bitrate calculator change the bitrate of the main form's video config; if someone wants to encode to a specific target size, they already can use the autoencode tool to do that.
arrirc
22nd June 2008, 06:20
I would like to install the development version as the last stable version is not working. But I can not compile from source, so could someone please post a link to the development version compiled for Windows XP SP2 32 bit?
Kurtnoise
22nd June 2008, 09:15
Well, if all we can present to the user is the (uninformative) "Track 1", "Track 2", ..., would a better solution be simply to only provide "don't demux audio" and "demux all audio tracks", i.e. don't give any track selection?
as developper, that will be the easier solution but in the other hand as end user point of view, that could be seen as a feature regression...:)
Kurtnoise
22nd June 2008, 09:18
Is there a x64 build of MeGUI somewhere? Because this bug (https://sourceforge.net/tracker/index.php?func=detail&aid=1999136&group_id=156112&atid=798476) claims the problems is that MeGUI was built targetting x64. I thought all our builds were for x86.
using 2008 project file with "Any CPU" release config, the result it's targeted as x64 (see this post (http://forum.doom9.org/showthread.php?p=1146071#post1146071)). That's why I created some different target platforms.
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.