Log in

View Full Version : MeGUI development


Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 [68] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

kumi
13th November 2007, 12:03
might be more interesting to save the log as xml file instead of txt, right ?
Sorry to butt in, but how about something more human-readable like YAML?

Kurtnoise
13th November 2007, 12:15
sure...why not. :)

berrinam
13th November 2007, 12:51
can we change the picture for the treeview or did you use the one included in the windows system libs ?I used system icons for the log because that was all I could find. I know nothing about graphics creation, so I don't know where to get other images, although it is a simple task to use other images once they are provided -- other images simply need to be loaded into the ImageList in the LogTree widget.

might be more interesting to save the log as xml file instead of txt, right ?I actually did plain-text because I found it very human-readable, and more compact than something like XML. It's also very easy to produce programmatically, and the dashes mean that even non-monospaced fonts like SourceForge's bug tracker will preserve indentation. I'm not sure why you would want a "heavier" format, so to speak.

could be great to expand the node when the job/process is running and close it then the job is finished...or colors the node as bold (dunno if it's doable though).I imagine expansion and contraction of the nodes might not be too hard.

Just above Commandline node (in the Input part), add a new node (Input File: xxxxxxxxxxxxxxxxxxxxx\my_inputfile)You mean I should log the input file?

SpAwN_gUy
13th November 2007, 12:57
Sorry to butt in, but how about something more human-readable like YAML?
and some part of "new" features of meGUI could load those .logs and Show them with glowing and jumping texts.. with words "yeppie, you did it.. want to encode more?" ;) ..

sorry, those were my two cents..


but the idea with.. LogTreeView ('cause now one can start few processes same time) would be nice..
or.. i just miss-read.. ???

mroz
13th November 2007, 13:22
I actually did plain-text because I found it very human-readable, and more compact than something like XML. It's also very easy to produce programmatically, and the dashes mean that even non-monospaced fonts like SourceForge's bug tracker will preserve indentation. I'm not sure why you would want a "heavier" format, so to speak.

Yaml looks to be a good format with appeal to all applications. Very readable & also easy to parse. As to a use case, how about if one wants to batch process jobs then format a report summarising certain aspects of the results? It's also pretty compact, though if space is that much of a concern just zip each log, or logs over a certain age.

berrinam
13th November 2007, 13:30
Yaml looks to be a good format with appeal to all applications. Very readable & also easy to parse. As to a use case, how about if one wants to batch process jobs then format a report summarising certain aspects of the results? It's also pretty compact, though if space is that much of a concern just zip each log, or logs over a certain age.

I was really considering compactness in reading. Xml would be inappropriate for a log because you have to read so much junk along with the content. I don't know about YAML, not having used it, but I presently can't see a strong case for it being superior to the planned formatting, which is already very simple, parsable, and clear to read. Of course, most of you don't know what this will look like, so here's an example:
[Information] Log
-[Information] Version information
--[NoImage] MeGUI Version: 0.3.0.0
--[NoImage] OS used: Microsoft Windows XP Professional Service Pack 2
--[NoImage] .Net Framework installed: 2.0.50727.832
-[Information] Settings
--[NoImage] YadifPath: yadif.dll

Sharktooth
13th November 2007, 14:06
Oops... as usual i forgot to paste the new build changelog...
0.2.6.1037
- (Kurtnoise) [ProgressWindow] fixed timeElapsed issue for 24h+.
- (Kurtnoise) Updated wiki links.
- (Kurtnoise) [MP4BoxMuxer] workaround to avoid tmp command issues (fixed #1828277)

@berrinam: do you think it's time to update the stable folder of the auto-update server?

Kurtnoise
13th November 2007, 14:16
I actually did plain-text because I found it very human-readable, and more compact than something like XML. It's also very easy to produce programmatically, and the dashes mean that even non-monospaced fonts like SourceForge's bug tracker will preserve indentation. I'm not sure why you would want a "heavier" format, so to speak.
After reading your last reply, that makes sense. You're right...

You mean I should log the input file?
Yes, something like that...look at the picture just above. This is not really important for sure. :)



btw, I'm wondering if we can distinguish an Audio vs a Video job with our code ? I mean that could be great to have in the log some tuning like "[hh:mm:ss] Audio Encoding started..." or when we have a video job processing "[hh:mm:ss] Video Encoding started..."

Sharktooth
13th November 2007, 14:18
we can distinguish it...

Sharktooth
13th November 2007, 15:00
0.2.6.1038
- (Kurtnoise) [Progress Window] use TotalHours only, dude...

avdw
13th November 2007, 18:39
We are addressing this concern.

...
Please post your log and the options and tools you used on the Sourceforge bug tracker (http://sourceforge.net/tracker/?group_id=156112&atid=798476) and we will attempt to solve these problems as soon as possible.


Thanks for the help, unfortunatelly I already uninstalled this Megui frontend.

After all the problems I posted early, I also found that the encoded video contains MP3 audio which plays at about 100x(!!) the speed it has to, on top of that If I analyse some .VOB file in the AviSynth Script Editor, it spits out a different source type every time.

I actually got the best idea I had about this tools, compared the whole bunch of threads about bugs, problems, development, etc... etc.... to the times this program actually has been downloaded, and that made it very clear that i better get rid of it instead of wasting my time any further.
Thanks.

berrinam
13th November 2007, 23:38
@berrinam: do you think it's time to update the stable folder of the auto-update server?Yes. You said you had a script to do this, so would you be able to do that please?

but the idea with.. LogTreeView ('cause now one can start few processes same time) would be nice..
or.. i just miss-read.. ???You were right: it is a tree-based log, and it handles logs of parallel jobs properly.

berrinam
13th November 2007, 23:55
btw, I'm wondering if we can distinguish an Audio vs a Video job with our code ? I mean that could be great to have in the log some tuning like "[hh:mm:ss] Audio Encoding started..." or when we have a video job processing "[hh:mm:ss] Video Encoding started..."

could be great to expand the node when the job/process is running and close it then the job is finished...or colors the node as bold (dunno if it's doable though).

I've done these two things. I can't create a patch just for them, so I'll just show you the changes. For the first, I've done this:

Index: core/details/audio/AudioJob.cs
===================================================================
--- core/details/audio/AudioJob.cs (revision 341)
+++ core/details/audio/AudioJob.cs (working copy)
@@ -73,7 +73,7 @@
{
get
{
- return null;
+ return "audio";
}
}

Index: core/details/video/VideoJob.cs
===================================================================
--- core/details/video/VideoJob.cs (revision 341)
+++ core/details/video/VideoJob.cs (working copy)
@@ -76,6 +76,8 @@
{
get
{
+ return "video";
+ /*
int mode = settings.EncodingMode;
switch (mode)
{
@@ -99,7 +101,7 @@
case (int)VideoCodecSettings.Mode.threepass3:
return "3 pass 3rd pass";
}
- return "";
+ return "";*/
}
}
}
Index: core/gui/JobWorkerWindow.cs
===================================================================
--- core/gui/JobWorkerWindow.cs (revision 341)
+++ core/gui/JobWorkerWindow.cs (working copy)
@@ -556,6 +525,11 @@
{
try
{
log = mainForm.Log.Info("Log for " + job.Name);
+ log.LogValue("Job type", job.Job.EncodingMode);
log.LogEvent("Started handling job");

status = JobWorkerStatus.Running;
//Check to see if output file already exists before encoding.
if (File.Exists(job.Job.Output) && !mainForm.DialogManager.overwriteJobOutput(job.Job.Output))
Index: core/plugins/interfaces/Job.cs
===================================================================
--- core/plugins/interfaces/Job.cs (revision 341)
+++ core/plugins/interfaces/Job.cs (working copy)
@@ -113,11 +113,17 @@
#endregion

#region queue display details
+ /// <summary>
+ /// Codec used
+ /// </summary>
public abstract string CodecString
{
get;
}

+ /// <summary>
+ /// New meaning: Encoding mode means job type: video/audio/mux/index/split/etc
+ /// </summary>
public abstract string EncodingMode
{
get;

(that wasn't a proper patch, but it should be at least readable and give you an idea of what I've done)

For the second, I did this:
Index: core/gui/JobWorkerWindow.cs
===================================================================
--- core/gui/JobWorkerWindow.cs (revision 341)
+++ core/gui/JobWorkerWindow.cs (working copy)
@@ -446,10 +420,8 @@
currentJob = null;

// Logging
log.LogEvent("Job completed");
+ log.Collapse();

// Postprocessing
bool jobCompletedSuccessfully = (job.Status == JobStatus.DONE);
@@ -556,6 +525,11 @@
{
try
{
log = mainForm.Log.Info("Log for " + job.Name);
log.LogEvent("Started handling job");
+ log.Expand();

status = JobWorkerStatus.Running;
//Check to see if output file already exists before encoding.
if (File.Exists(job.Job.Output) && !mainForm.DialogManager.overwriteJobOutput(job.Job.Output))
Index: core/gui/LogTree.cs
===================================================================
--- core/gui/LogTree.cs (revision 0)
+++ core/gui/LogTree.cs (revision 0)
@@ -0,0 +1,136 @@
log.TypeChanged += delegate(object sender, EventArgs<ImageType> args)
{
Util.ThreadSafeRun(treeView, delegate { node.SelectedImageIndex = node.ImageIndex = (int)args.Data; });
};
+ log.Expanded += delegate(object sender, EventArgs e)
+ {
+ Util.ThreadSafeRun(treeView, delegate { node.Expand(); });
+ };
+ log.Collapsed += delegate(object sender, EventArgs e)
+ {
+ Util.ThreadSafeRun(treeView, delegate { node.Collapse(); });
+ };

return node;
}
Index: core/util/LogItem.cs
===================================================================
--- core/util/LogItem.cs (revision 0)
+++ core/util/LogItem.cs (revision 0)
@@ -0,0 +1,338 @@
public class LogItem
{
public event EventHandler<EventArgs<LogItem>> SubItemAdded;
public event EventHandler<EventArgs<ImageType>> TypeChanged;
+ public event EventHandler Expanded;
+ public event EventHandler Collapsed;
+
+ public void Expand()
+ {
+ if (Expanded != null)
+ Expanded(this, new EventArgs());
+ }
+
+ public void Collapse()
+ {
+ if (Collapsed != null)
+ Collapsed(this, new EventArgs());
+ }

public string Text
{


For a complete patch for testing (I haven't split it into little files this time) see http://megui.org/berrinam_patches/newlog2/. The old patch is newlog2.patch; the new patch is newlog4.patch. You can see the changes I've made by diffing the two, although it is essentially what I posted here.

@kurtnoise: I haven't done the input information, because I'm not entirely sure what you want. I'm sure you can add the information once this patch is in the SVN. In fact, we may generally want to add more information to the log in a number of places.

Sharktooth
14th November 2007, 16:16
Yes. You said you had a script to do this, so would you be able to do that please?Sure ill do that tonight.

Sharktooth
15th November 2007, 17:26
The stable folder of the auto-update server has been... ehrr... updated :)

Sharktooth
15th November 2007, 17:30
@berrinam: if you have some time please update the mediainfo lib to the newer version. it should fix the vista issues.

Kurtnoise
16th November 2007, 15:40
A patch (http://kurtnoise.free.fr/index.php?dir=MeGUI/&file=TimeElapsed-Remaining_days_format.patch) for the days Format concerning Time Elapsed/Remaining (#1832257 (http://sourceforge.net/tracker/index.php?func=detail&aid=1832257&group_id=156112&atid=798476)).



btw, what is the current status concerning the unused code ? Should we drop it or keep it ?

For my point of view: the trunk must be clean up. So, the unused code should be removed.

berrinam
17th November 2007, 03:51
I think removing unused code should be fine. If we need it again, it's always in the svn history.

Also, I've been thinking that putting the avisynth plugins by default in Avisynth's plugins folder is not a good choice. It interferes with other plugins and there's no easy way to remove that part of the megui installation. Perhaps we should put the avs plugins in a megui folder and add loadplugin calls to the generated avs scripts. There would be two things that alleviate the annoyance of this:
All of the avs filters MeGUI is aware of can be annotated with the plugin that contains them, so MeGUI can automatically add the required loaddll calls.
If the user wants to write their own scripts, we can add an .avsi file in the MeGUI plugins directory (NOT autoloaded) which calls loadplugin for all of the plugins in that directory. This means the user need only load that avsi file to have access to all of MeGUI's plugins, instead of loading each plugin separately.

In fact, this avsi file could even be put in the avs plugins directory, so that the plugins are autoloaded anyway, but without cluttering the avisynth plugins directory

In addition to the advantage of ease of uninstalling, this can solve plugin versioning problems, for instance with DGDecode and MVTools. For instance, this would allow MeGUI to support two different Didee scripts which might require different versions of MVTools, since the different copies could be put in different subdirectories of the MeGUI plugin directory.

Taurus
17th November 2007, 07:44
Also, I've been thinking that putting the avisynth plugins by default in Avisynth's plugins folder is not a good choice.It interferes with other plugins and there's no easy way to remove that part of the megui installation. Perhaps we should put the avs plugins in a megui folder and add loadplugin calls to the generated avs scripts.

Bravo!
My opinion: The best idea since inventing the wheel ;).

kumi
17th November 2007, 08:34
I think it's a great idea too. I like to keep my plugins folder clean, but MeGUI always clutters it up :)

St Devious
17th November 2007, 11:21
could megui have a copy stream option where u dont encode the vidoe or audio streams ? like in avidemux . u just process the video using avisynth and copy the video or split the video only without encoding .

Kurtnoise
17th November 2007, 12:13
could megui have a copy stream option where u dont encode the vidoe or audio streams ? like in avidemux . u just process the video using avisynth and copy the video or split the video only without encoding .
:sly::sly::sly:



@devs: what's wrong with the x264 command line updating ? Just one example: choose, say, the Mode 2pass - 2nd pass then go to the Advanced tab, select the BFrame Mode to Spatial (command line preview is updated). Now, go to RC and ME tab, select RDO L2 as Subpel Ref and you'll see that command line preview is not updated...:confused:

St Devious
17th November 2007, 12:21
:sly::sly::sly:





wat does this mean , yes or no to the idea ??

Kurtnoise
17th November 2007, 12:23
rtfm...

berrinam
17th November 2007, 14:14
could megui have a copy stream option where u dont encode the vidoe or audio streams ? like in avidemux . u just process the video using avisynth and copy the video or split the video only without encoding .

Avisynth won't work, because it doesn't transmit the uncompressed video. Any video that goes via Avisynth will have to be recompressed. However, there are ways in MeGUI to use and cut audio without recompressing.

berrinam
17th November 2007, 14:25
@devs: what's wrong with the x264 command line updating ? Just one example: choose, say, the Mode 2pass - 2nd pass then go to the Advanced tab, select the BFrame Mode to Spatial (command line preview is updated). Now, go to RC and ME tab, select RDO L2 as Subpel Ref and you'll see that command line preview is not updated...:confused:

Can't reproduce. Are you sure it didn't update?

berrinam
17th November 2007, 14:28
@kurtnoise: go ahead and commit your estimated-time patch; it looks fine.

Shall I commit the newlog patch?

St Devious
17th November 2007, 14:32
Avisynth won't work, because it doesn't transmit the uncompressed video. Any video that goes via Avisynth will have to be recompressed. However, there are ways in MeGUI to use and cut audio without recompressing.

thx for explaining that .

Kurtnoise
17th November 2007, 14:34
Can't reproduce. Are you sure it didn't update?
mmh...did you use your own profile/config or one of the Sharktooth ?

edit: weird...it works fine now.


Shall I commit the newlog patch?
sure...go ahead.

Underground78
17th November 2007, 16:36
Also, I've been thinking that putting the avisynth plugins by default in Avisynth's plugins folder is not a good choice. It interferes with other plugins and there's no easy way to remove that part of the megui installation. Perhaps we should put the avs plugins in a megui folder and add loadplugin calls to the generated avs scripts.

I think it's a very good idea ! :)

bluebebe
17th November 2007, 17:52
Megui dont work properly, please read this:

http://forum.doom9.org/showpost.php?p=1063503&postcount=47

and this:

http://forum.doom9.org/showpost.php?p=1065686&postcount=49

what can we do to get a working version? after complete reinstalls, always the same errors like Kumi describe.

Kurtnoise
17th November 2007, 20:55
god damn it...I'm really tired to read bugreports in this thread or anything else which doesn't belong to the development. Is it too hard for you or what ?

Anyway, have a look at this (http://forum.doom9.org/showthread.php?p=1066016#post1066016).


@devs: why not open a mailing-list on SF for the development discussion ?

berrinam
18th November 2007, 05:09
Please report bugs on the megui SourceForge bug tracker, not here, as this thread is dedicated to megui development. There is a link to the tracker in my signature.

You may also be able to get older versions of megui from the SourceForge project page.

berrinam
18th November 2007, 05:11
@devs: why not open a mailing-list on SF for the development discussion ?
I don't know. What are the advantages/disadvantages?

berrinam
18th November 2007, 05:50
I'm looking for comments on some changes I've made to the megui avisynth creator. What I've done is to integrate denoisers and resizers into MeGUI's profile system, which gives two significant advantages:
Users can create their own denoiser/resizer filters and they work as well as builtin denoise/resize filters used to work (there are no longer builtin denoise/resize filters in this modification)
It turns out that this neatly handles the distribution of plugin dlls, as they are just considered "required files" by the megui profile system (like CQM files), so megui automatically handles distribution of them with File->Import/Export profiles. This means that we can simply make a package of resizers/denoisers available on the autoupdate server, and autoupdate will save the plugin dlls into megui's 'extra' directory instead of the avs plugins directory.

The changes here are by no means complete. The main problem is that they only apply to resizers and denoisers, whereas I would like to do the same for other filters like flipvertical, colormatrix, and (most importantly) deinterlacing. I am having difficulties in creating a good solution for this, since there are some things that megui needs to remain aware of:
order of filters is important, eg resize must go after deinterlacing, etc
For some filter types, it makes sense to have multiple filters of the type (for instance, "input filters" such as flipvertical, colormatrix); for others, it doesn't (eg resizers, deinterlacers)

Also, it must remain simple for the novice user.

You can get the binary of this modification from http://megui.org/berrinam_patches/avscreator/megui-avisynth.zip.

berrinam
18th November 2007, 07:36
@devs: to avoid #1822000 and for coherency, we should populate the profiles dropdowns (audio and video) with only the profiles belonging to the selected codecs.

I've been thinking about how we manage profiles, because there are some annoying points, in particular in relation to handling video and audio profiles, which have different config dialogs for different codecs, as you say. Currently, we handle these different types with SettingsProviders, which are generally a hassle to create, and have the somewhat out-of-place feature that they keep track of the current video/audio settings, in place to allow the creation and editing of settings without creating a profile for those settings.

This last feature that MeGUI supports is very annoying to code with, as it requires the odd behaviour of SettingsProvider. In my resizer/denoiser megui modification posted above, I replaced this feature with the special name, "*scratchpad*". The rules for profiles change slightly:
For all types of profile, there must be at least 1 profile. If it does not exist, MeGUI will create one with the default settings by the name "*scratchpad*".
Unlike other profiles, the *scratchpad* profile will be automatically updated when closing the config box, without the user being asked
There must always be a profile selected. In the places in MeGUI which caused no profile to be selected, the *scratchpad* profile is now selected
I found these rules easier to code with, since we now have the guarantee that a profile is always selected. For audio and video, this means that the SettingsProvider no longer needs the GetCurrentSettings() and SetCurrentSettings() methods.

Do you think these changes are annoying to the user, or can we keep them because they are helpful for the developers?

I am reluctant to do exactly as you suggest, however, because it might mean you forget you have, say, a Snow profile. It was initially a tempting thought, because it is much simpler to handle a combobox with settings of only one type than one with multiple types of settings. When I think about it, there probably wouldn't be much to lose anyway, since the choice of codec generally comes before the choice of profile. However, I think I have a way to simplify the combobox handling, so I think the decision is ultimately one about UI rather than coding ease.

I will make some code changes to profile handling, and post a patch and see what you think.

berrinam
18th November 2007, 07:43
@berrinam: if you have some time please update the mediainfo lib to the newer version. it should fix the vista issues.I'll do this soon. The problem is that my main computer doesn't run vista, so it'll take some time.

Kurtnoise
18th November 2007, 09:29
I don't know. What are the advantages/disadvantages?
well...mailing-lists on SF are quite robust against the spams (or if you don't like SF mailings, there are also gmane.org). Moreover, searchs/discussions by subjects/threads are more easier than there in this topic. Anyway, you can look at this (http://www.philb.com/mail.htm) for the pros/cons.


About the new avisynth creator: first of all, it sounds good. :) But it's definitively not for the newbies. To improve it in this way, we can try to include auto-completion (http://msdn2.microsoft.com/en-us/library/system.windows.forms.autocompletesource.aspx) stuff.

About the profiles management: I need to play with it more extensively and check the code might be great too. :p


btw, I can do myself the MediaInfo lib compilation...I'm running on Vista most of the time at home. but the problem remains unfortunately. It's due to our wrapper.

Kurtnoise
18th November 2007, 12:01
We should add the date also in the log...some people complaining with long encodes.

Index: core/util/LogItem.cs
===================================================================
--- core/util/LogItem.cs (revision 374)
+++ core/util/LogItem.cs (working copy)
@@ -99,7 +99,7 @@

public LogItem LogEvent(string eventName, ImageType image)
{
- return Add(new LogItem(string.Format("[{0:T}] {1}", DateTime.Now, eventName), image));
+ return Add(new LogItem(string.Format("[{0:G}] {1}", DateTime.Now, eventName), image));
}

public LogItem Info(string text)

berrinam
18th November 2007, 12:04
About the new avisynth creator: first of all, it sounds good. :) But it's definitively not for the newbies.Well, the trick is to get it to a level where we distribute profiles that make it easier for newbies. But it is still a hard thing to do.

To improve it in this way, we can try to include auto-completion (http://msdn2.microsoft.com/en-us/library/system.windows.forms.autocompletesource.aspx) stuff.Interesting... I never knew about that.

btw, I can do myself the MediaInfo lib compilation...I'm running on Vista most of the time at home. but the problem remains unfortunately.
If you can get it to work, that would be great. Otherwise, I can look at it in a few days.

berrinam
18th November 2007, 12:39
We should add the date also in the log...some people complaining with long encodes.

Index: core/util/LogItem.cs
===================================================================
--- core/util/LogItem.cs (revision 374)
+++ core/util/LogItem.cs (working copy)
@@ -99,7 +99,7 @@

public LogItem LogEvent(string eventName, ImageType image)
{
- return Add(new LogItem(string.Format("[{0:T}] {1}", DateTime.Now, eventName), image));
+ return Add(new LogItem(string.Format("[{0:G}] {1}", DateTime.Now, eventName), image));
}

public LogItem Info(string text)


That's fine.

berrinam
19th November 2007, 04:56
This patch makes the custom filesizes, ARs, and FPSs persistent in the dropdown comboboxes: http://megui.org/berrinam_patches/dropdown_persistence.patch. This addresses #1822492.

berrinam
19th November 2007, 05:28
Dragdrop support in the bitrate calculator (#1819618): http://megui.org/berrinam_patches/dragdrop_bitratecalculator.patch.

berrinam
19th November 2007, 06:17
Remember columns positions for the job queue (#1817092): http://megui.org/berrinam_patches/save_column_positions.patch

berrinam
19th November 2007, 07:05
Local time estimation, instead of based on entire encode. I tested this with audio and it seems more stable there; I haven't found much difference otherwise. Addresses #1832899:

Index: core/details/StatusUpdate.cs
===================================================================
--- core/details/StatusUpdate.cs (revision 378)
+++ core/details/StatusUpdate.cs (working copy)
@@ -56,6 +56,12 @@
timeElapsed = TimeSpan.Zero;
processingspeed = null;
filesize = null;
+
+ for (int i = 0; i < UpdatesPerEstimate; ++i)
+ {
+ previousUpdates[i] = TimeSpan.Zero;
+ previousUpdatesProgress[i] = 0M;
+ }
}

/// <summary>
@@ -302,11 +308,28 @@

// Processing time
if (fraction.HasValue)
- estimatedTime = new TimeSpan((long)((decimal)timeElapsed.Ticks * ((1 / fraction.Value) - 1)));
+ {
+ TimeSpan time = timeElapsed - previousUpdates[updateIndex];
+ decimal progress = fraction.Value - previousUpdatesProgress[updateIndex];
+ if (progress > 0 && time > FiveSeconds)
+ estimatedTime = new TimeSpan((long)((decimal)time.Ticks * (1M - fraction) / progress));
+ else
+ estimatedTime = new TimeSpan((long)((decimal)timeElapsed.Ticks * ((1 / fraction.Value) - 1)));
+
+ previousUpdates[updateIndex] = timeElapsed;
+ previousUpdatesProgress[updateIndex] = fraction.Value;
+ updateIndex = (updateIndex+1)% UpdatesPerEstimate;
+ }
}
catch (Exception)
{
}
}
+
+ static readonly TimeSpan FiveSeconds = new TimeSpan(0, 0, 5);
+ const int UpdatesPerEstimate = 10;
+ TimeSpan[] previousUpdates = new TimeSpan[UpdatesPerEstimate];
+ decimal[] previousUpdatesProgress = new decimal[UpdatesPerEstimate];
+ int updateIndex = 0;
}
}

Kurtnoise
19th November 2007, 11:32
This patch makes the custom filesizes, ARs, and FPSs persistent in the dropdown comboboxes: http://megui.org/berrinam_patches/dropdown_persistence.patch. This addresses #1822492.

Dragdrop support in the bitrate calculator (#1819618): http://megui.org/berrinam_patches/dr...lculator.patch.

Remember columns positions for the job queue (#1817092): http://megui.org/berrinam_patches/sa...ositions.patch
all looks ok but not tested yet.


jfyi, one of the Aften developper is going to create a C# binding. That might be great...

berrinam
19th November 2007, 12:06
Don't we already support Aften in commandline form?

I'm not sure of the advantages of direct interface, since commandline already works well...

Kurtnoise
19th November 2007, 13:45
yeah, command line works flawlessly...it was just for information. :)

Kurtnoise
19th November 2007, 16:49
ok...last patches tested. That works fine. :)

I will make some code changes to profile handling
That reminds me something...Adding an output file format checking with the handle could be great too. Ex: an user select a video device profile (Ipod), File Format should be only MP4 and not MKV/RAW.

bob0r
19th November 2007, 19:13
Please remove the pause from compile-all.bat, it prevents my scripts from running automated.