View Full Version : MeGUI development
Doom9
25th June 2006, 10:36
@daverc: I'm actually not losing any notification. Yours as well as mine is based on reading line after line from stdout/stderr (so not using the actual events that are being fired.. we use that just for the exit event and have some postprocessing after that). My two readers actually have little more code.. I use an mre so that when I get the exit event, I read whatever's yet unread from those two readers (encraw is like that.. if you misconfigure it, you get the exit even before all the output has been read.. I think it's a weird timing issue since after all encraw has to write output before it exits).. that does the trick for encraw but no good has come from it from x264. One of the problems I'm having is that I can't even reproduce it.. people post the log but don't post what happens when they run the commandline manually. If I had a scenario that I could reproduce, at least I could try a different approach and know if it helps or hurts before committing anything.
daverc
25th June 2006, 15:55
That was everything i could suggest about that area of the code. Sorry it did not help.
What about writting every output line to a log file ? On a temp basis, and on a testing build which you will give only to people having the issue.
It 's a simple way to collect enough data, and only need injection of 2 lines of code next to the readers methods.
Doom9
25th June 2006, 16:52
I don't think it's so much a problem of not processing the line as it is of not getting it at all.. with encraw I pulled all registers to make sure I'm reading everything.
daverc
25th June 2006, 17:15
And what about searching a way to use this exitcode ?
protected void proc_Exited(object sender, EventArgs e)
{
mre.Set(); // Make sure nothing is waiting for pause to stop
stdoutDone.WaitOne(); // wait for stdout to finish processing
stderrDone.WaitOne(); // wait for stderr to finish processing
if (proc.ExitCode != 0) // check the exitcode because x264.exe sometimes exits with error but without
su.HasError = true; // any commandline indication as to why
job.End = DateTime.Now;
su.IsComplete = true;
doExitConfig();
su.Log = log.ToString();
statusUpdate(su);
}
Doom9
25th June 2006, 18:02
you got a list of all errorcodes ready?
there's no rule as to what a program should use as exit code
daverc
25th June 2006, 18:14
Nope.
But i can give a look at x264 source to see if these error codes actually means something.
Sorry it is not a lead to follow.
x264 returns -1 if it fails on opening source
fprintf( stderr, "x264_encoder_open failed\n" );
or setting output file,
fprintf( stderr, "can't set outfile param\n" );
else it return 0.
Only message you can try to parse if it not already processed is
fprintf( stderr, "aborted at input frame %d\n", opt->i_seek + i_frame );
daverc
25th June 2006, 19:09
Even this last message is normal operation and seems to be called only when user presses CTRL+C, and that obviously never happens in MeGUI. That 's why i have not any found it in MeGUI code.
So completly forget the idea of using the exit code.
Anyway, if have a few ideas to test, but i'm not yet familiar with x264. If you are not working on it now, plz hold your work a little and i may be able to provide you more informations about the cases where x264 has abnormal termination.
Doom9
25th June 2006, 19:38
I'm kinda waiting for the one user that brought up the problem recently to tell me how I can reproduce it.. then I can take it from there. I haven't written a single line of code for megui since March.
daverc
25th June 2006, 20:48
Let me know when he will show up, and i might give a hand.
I have found the location and the mechanics of the logger in x264 code. Once i have figured a scheme, we will be able to parse everything we can read in a dos command line.
I will wait for the bug report before starting working on it, because i really don't know if it will be of any use.
Sharktooth
26th June 2006, 13:08
I promised berrinam i would have worked on megui the past weekend but it seems im cursed since my HDD crashed (damn maxtor!) but luckily i had a 3 days old backup so i recovered almost everything...
shon3i
26th June 2006, 23:27
(damn maxtor!) Oh, yea!!
daverc
28th June 2006, 23:15
I found a possible issue in avisynth script creator with filenames. Avisynth can't open some sources when avs file is coded in UTF8. Replace the stream writter by the blue line.
Encoding.Default is ANSI.
Line 1095 in avisynthwindow.cs
private void writeScript(string path)
{
try
{
////AVS scripts should be written in ANSI
////default stream writter encoding is UTF8
//StreamWriter sw = new StreamWriter(path);
//sw.Write(avisynthScript.Text);
//sw.Close();
File.WriteAllText(path, avisynthScript.Text, Encoding.Default);
}
catch (IOException i)
{
MessageBox.Show("An error ocurred
when trying to save the AviSynth script:\r\n" + i.Message);
}
}
hkl8324
29th June 2006, 12:20
Megui Bugs?
I encode a video using Megui (disk space 200MB:p ).
The encoded file is 120MB...
When Megui proceed to the muxing stage
, it produce a 0KB mp4 file in the end. (120+120>200MB)
and worse of all, Megui deleted my encode video and audio files...
Sharktooth
29th June 2006, 12:27
:search:
also this is the development thread and not the bug-report thread.
berrinam
3rd July 2006, 10:44
I'm working on a refactor which I spoke about earlier, which involves making most parts of the program be made up of interfaces and thus make all the separate components independent as possible. Anyway, I don't know how to make an interface for a Job-generator. At the moment, JobUtil generates all the Jobs for MeGUI, and everything is just a GUI for that. All of the jobs are trivial to create except for video job creation (since it can create multi-pass jobs). So, how do I make a polymorphic job generation interface, which can create jobs of an arbitrary type without building too much code inter-dependance?
The best I can think of is:
interface JobCreator
{
Job CreateJob(params object[] jobInfo);
}
Which is really just hopeless, as it (a) relies on the caller knowing exactly what the callee expects (which removes the abstraction that the interfaces are supposed to allow) and (b) removes any type-safety. Any suggestions? Perhaps independence is too much to hope for in this situation (this is required only so that the One Click Encoder and the AutoEncoder can generate video and audio jobs).
daverc
3rd July 2006, 14:56
So, how do I make a polymorphic job generation interface, which can create jobs of an arbitrary type without building too much code inter-dependance?
I don't know.
Here are my thought about it.
1 case :
I suppose you want to implement JobCreator in One Click Encoder and Auto Encoder.
Did you consider using the approach we use when we add a control to a control container, let's say a form. Ie a list of controls for the parent with an add method ?
This way the JobCreator will be more a "JobHost", and creator will be the constructor of each job.
interface JobCreator
{
Jobs List<Jobs>;
Add(Job J);
}
interface Job
{ ...
JobCreator Host;
}
2 case :
You want to implement it in AudioJobCreator, VideoJobCreator, etc ...
make the interface with a CreateJob method taking only few parameters, like the job name.
Then add several methods in AudioJobCreator, VideoJobCreator, etc ...
interface JobCreator
{
Job CreateJob(string name, JobType jobtype);
}
VideoJobCreator : JobCreator
{
Job CreateJob(string name, JobType jobtype);
{...}
Job CreateJob(some more params);
{...}
Job CreateJob(some even more params);
{...}
}
berrinam
3rd July 2006, 22:46
Did you consider using the approach we use when we add a control to a control container, let's say a form. Ie a list of controls for the parent with an add method ?
This way the JobCreator will be more a "JobHost", and creator will be the constructor of each job.
interface JobCreator
{
Jobs List<Jobs>;
Add(Job J);
}
interface Job
{ ...
JobCreator Host;
}
That's what I'm doing right now. It mostly works, but there's one situation where it falls down:
interface ITool
{
Run(MainForm info);
}
VideoTool : ITool
{
Run(...)
{
// Does some magic, and calls MainForm.AddJob() with a few new video jobs
...
}
}
OneClickEncoder : ITool
{
Run(...)
{
// This needs to generate a video job. Should it duplicate VideoTool's code (obviously not), or should it find some way to call it (yes, but how, without losing the abstraction?)? For instance, if we unregister the VideoTool, should we still be able to create video jobs via the OneClickEncoder?
}
}
AutoEncoder : ITool
{
Run(...)
{
// This needs to share a lot of code with the OneClickEncoder. So there are the same problems as above with how to do this well.
}
}
interface JobCreator
{
Job CreateJob(string name, JobType jobtype);
}
VideoJobCreator : JobCreator
{
Job CreateJob(string name, JobType jobtype);
{...}
Job CreateJob(some more params);
{...}
Job CreateJob(some even more params);
{...}
}
The whole point about the interface is that the parameters passed in the method defined by the interface are all that are required for the implementation. If we need to case-wise subclass the interface to work out what needs to be passed, we lose all the abstraction/extensibility/code-cleanliness.
My conclusion from trying to work it out: it isn't possible to maintain the abstraction of interfaces while asking for a very specific thing (ie video job generation). So, the OneClick- and Auto-Encoders will have to know the specific methods which generate the video jobs, as they do right now, anyway. It's a small loss in abstraction, but it's needed for interdependence, and I think we can assume that video encoding will always be in the core part of MeGUI. I don't know what happens in the future if more advanced interdependence is needed, but that's not my problem now....
daverc
3rd July 2006, 23:28
Just more thoughts.
adding a struct somewhere to store job types will help when you pass a job as parameter.
struct JobType
{
string audio;
string video;
string mux;
string null;
}
What about using an abstract class instead of an interface ?
What about inheriting from multiple atomics interfaces ?
My advice is to play with class diagram generator before getting into the code.
berrinam
4th July 2006, 01:28
Just more thoughts.
adding a struct somewhere to store job types will help when you pass a job as parameter.
struct JobType
{
string audio;
string video;
string mux;
string null;
}
I don't get the point of this, and it also seems to mean that job types will be limited to audio, video, and mux, whereas I have made that part extensible already.
What about using an abstract class instead of an interface ?How does this help?
What about inheriting from multiple atomics interfaces ?Can you show me what you mean please? I don't understand.
My advice is to play with class diagram generator before getting into the code.The code has already all been written (because MeGUI already works;)), which is a good thing, because I know what constraints I have and what to expect. I'm now trying to fit it into an interface system.
What I think I will do is leave audio and video encoding components as core parts of MeGUI, so anything can simply access JobUtil's methods for the common bits in the code.
daverc
4th July 2006, 02:43
These were just simple ideas i had when trying to figure out what was your goal.
1.Forget the JobType.
2.An abstract class would be :
- a place to hold the common code of OneClickEncoder and AutoEncoder.
- something that must be inherited and can't be used itself, just like every interface.
3.Inheriting multiple smaller interfaces may help if a single interface is not "generic enough"
What I think I will do is leave audio and video encoding components as core parts of MeGUI, so anything can simply access JobUtil's methods for the common bits in the code.
My conclusion from trying to work it out: it isn't possible to maintain the abstraction of interfaces while asking for a very specific thing (ie video job generation). So, the OneClick- and Auto-Encoders will have to know the specific methods which generate the video jobs, as they do right now, anyway. It's a small loss in abstraction, but it's needed for interdependence, and I think we can assume that video encoding will always be in the core part of MeGUI. I don't know what happens in the future if more advanced interdependence is needed, but that's not my problem now....
One day, you will end with a MeEngine and a MeGUI. :)
You may consider splitting them in separate namespaces now.
These are just simple thoughts ...
berrinam
4th July 2006, 05:12
One day, you will end with a MeEngine and a MeGUI. :)I've actually really thought about that idea.... MeGUI is very much becoming very generic/abstract and clever/powerful, so designing an AviSynth-like scripting language could be (IMHO) a really interesting idea. I thought about AviSynth's incredible succes, and I think the easy scripting language is one of the main reasons. It also frees up the work even more for developers, so different components can be worked on independantly, and since GUI would be separated from implementation, we could even look to a different (cross-platform) language, like Java or D. But that's another day's discussion....
You may consider splitting them in separate namespaces now.Already done! :D
foxyshadis
8th July 2006, 04:19
Is SVN official yet or is CVS still current? hm, I see they're both at the same revision so I'll use svn.
Xvid bugfixes based on incorrect or missing default values: (I know framedrop isn't exposed yet, but I threw it in anyway)
Index: CommandLineGenerator.cs
===================================================================
--- CommandLineGenerator.cs (revision 7)
+++ CommandLineGenerator.cs (working copy)
@@ -507,7 +507,7 @@
sb.Append("-packed ");
if (xs.MotionSearchPrecision != 6)
sb.Append("-quality " + xs.MotionSearchPrecision + " ");
- if (xs.VHQMode != 0)
+ if (xs.VHQMode != 1)
sb.Append("-vhqmode " + xs.VHQMode + " ");
if (xs.QPel)
sb.Append("-qpel ");
@@ -536,10 +536,10 @@
if (!xs.Trellis)
sb.Append("-notrellis ");
if (!xs.ChromaMotion)
- sb.Append(" -nochromame ");
+ sb.Append("-nochromame ");
if (xs.MinQuantizer != 2)
sb.Append("-imin " + xs.MinQuantizer + " ");
- if (xs.MaxQuantizer != 2)
+ if (xs.MaxQuantizer != 31)
sb.Append("-imax " + xs.MaxQuantizer + " ");
if (xs.MinPQuant != 2)
sb.Append("-pmin " + xs.MinPQuant + " ");
@@ -547,7 +547,9 @@
sb.Append("-pmax " + xs.MaxPQuant + " ");
if (!xs.ClosedGOP)
sb.Append("-noclosed_gop ");
- if (xs.NbBframes > 0)
+ if (xs.FrameDropRatio != 0)
+ sb.Append("-drop " + xs.FrameDropRatio + " ");
+ if (xs.NbBframes != 2)
{
sb.Append("-max_bframes " + xs.NbBframes + " ");
if (xs.VHQForBframes)
@@ -558,7 +560,7 @@
sb.Append("-bquant_offset " + xs.BQuantOffset + " ");
if (xs.MinBQuant != 2)
sb.Append("-bmin " + xs.MinBQuant + " ");
- if (xs.MaxBQuant != 2)
+ if (xs.MaxBQuant != 31)
sb.Append("-bmax " + xs.MaxBQuant + " ");
}
if (parX > 0 && parY > 0) // custom PAR mode
berrinam
8th July 2006, 05:19
Is SVN official yet or is CVS still current? hm, I see they're both at the same revision so I'll use svn.Correct. Your patch is now in SVN.
0.2.3.2178
Commit by berrinam:
- Add foxyshadis's XviD fixes
bob0r
8th July 2006, 17:37
Not sure if it was fixed, or if this is because of SVN, but the changelog tab is showing the changes correctly on my windows xp again.
Anyways good work on the svn!! :D
foxyshadis
10th July 2006, 10:04
Oops, forgot to fully test the patch, so here's a fix, without the silly mistake in the other. (Note: Don't code while asleep.)
Index: CommandLineGenerator.cs
===================================================================
--- CommandLineGenerator.cs (revision 8)
+++ CommandLineGenerator.cs (working copy)
@@ -549,9 +549,9 @@
sb.Append("-noclosed_gop ");
if (xs.FrameDropRatio != 0)
sb.Append("-drop " + xs.FrameDropRatio + " ");
+ if (xs.NbBframes != 2)
+ sb.Append("-max_bframes " + xs.NbBframes + " ");
if (xs.NbBframes > 0)
{
- sb.Append("-max_bframes " + xs.NbBframes + " ");
if (xs.VHQForBframes)
sb.Append("-bvhq ");
if (xs.BQuantRatio != 150)
Sharktooth
11th July 2006, 02:53
0.2.3.2179
Commit by Sharx1976:
- Foxyshadis quote: "Don't code while asleep"
Dayvon
12th July 2006, 19:16
Haven't dropped by in while, thought I'd just check in and weigh in with my 2cents.
You guys are flipping amazing.
Just got the newest MeGUI and between the autoupdate, the improved previews (DAR), the superiority of your AVISynth creator; you guys have THE BEST encoder/GUI I have ever used.
I just recently acquired Final Cut Studio for work and with it came Apple's Compressor program. MeGUI puts it to shame. Compressor is slow to encode, doesn't have near the customizability, lower quality overall, etc. etc.
So just to encourage you all (x264, AVIsynth devs as well), you have the best personal/semi-pro video encoding on the planet, and others are now playing catchup. Congrats and thanks!!!
Sharktooth
14th July 2006, 01:00
I'll commit a CommandLineGenerator.cs patch as soon as the SVN auth will work again...
In the meanwhile here are the bins: http://mirror05.x264.nl/Sharktooth/MeGUI/MeGUI-0.2.3.2180.7z
Sharktooth
16th July 2006, 02:36
@devs: Are you having problems with SVN or it's me? It seems i cant commit... auth failure.
squid_80
16th July 2006, 04:19
Maybe something to do with this?
( 2006-07-13 09:23:52 - Project CVS Service, Project Shell Service, Project Subversion (SVN) Service, SourceForge.net Web Site ) A recent kernel exploit was released that allowed a non admin user to escalate privileges on the host pr-shell1. We urge all users who frequent this host to change their password immediately and check their project group space for any tampering. As a precaution, we have blocked access to all project resources by password until the user resets their password. After the password has been reset, project resources should be accessible within 5 minutes.
Sharktooth
18th July 2006, 02:54
weird... i didnt get that notification in my mailbox...
0.2.3.2180
Commit by Sharx1976:
- Fixed x264 command line generation ("--analise " --> "--analyse none" when all macroblock disabled and adaptive dct enabled)
squid_80
18th July 2006, 04:00
I found it on the Site Status (http://sourceforge.net/docs/A04/) page, the first place I look when something on sourceforge won't work. (I look at it often...)
Sharktooth
31st July 2006, 02:45
Got some working code for the FTP support in the autoupdater but i need a working lib that handles FTP full PASV mode or users behind firewalls, misconfigured routers, NAT, proxies and other "port-blocking" softwares (most of internet users) will not be able to get updates.
Any ideas?
Sharktooth
31st July 2006, 13:27
0.2.3.2181
Commit by Sharx1976:
- Made x264 thread-input enabled by default
foxyshadis
31st July 2006, 14:47
New patch against 2181 (http://foxyshadis.slightlydark.com/random/megui-2181-xvidcustom.diff):
Mostly cosmetics on the xvid panel, plus enabling custom commandline.
Now for proposals:
* I'd like to put quantizer type selection with the custom matrix box. It would say "Quantizer Matrix" and would start with a drop-down of h263,mpeg,custom just like the current, but if you choose custom the box for loading a matrix shows up to the right. Disabling won't work as a visual because it's disabled already and no one can tell when three dots on the load button are enabled or disabled. Or we could just enable it when custom is selected, and possibly just prevent typing. Eh.
* I have the same issue with x264's. At least if it said "Load" instead of "..." it'd be visible. Hmm.
* I'd like to add an escape key and perhaps enter key handler, as well as rearranging the other key-bindings that interfere with standard windows keys. At the least, replacing ctrl-c,v, & x with alt-c,v, & x or similar. Also reenabling ctrl-a support.
* And I'd like to change the way the zone tab works. I'd like to make it so that when you click on an entry, the numbers will be loaded back in for you to edit, "add" becomes "update" (instead of needing a separate button). If a zone intersects over overwrites another zone, it will just be quietly removed or fixed up instead of giving an error, or ask first. Plus a bit of rearrangement.
I can whip up a prototype later if you'd like to see what all I have in mind, and exactly how I'd like it to peform in different cases.
Since I'm not versed in advanced C# like you guys, I figure I can at least help with the usability/cosmetics, starting with the parts that annoy me and then looking at the rest of the buglist. :p
foxyshadis
1st August 2006, 00:03
New patch against 2181 (http://foxyshadis.slightlydark.com/random/megui-2181-xvidpackedfix.diff):
Packed bistream fix, unrelated to above patch.
Doom9
1st August 2006, 10:01
* I'd like to add an escape key and perhaps enter key handler, as well as rearranging the other key-bindings that interfere with standard windows keys. At the least, replacing ctrl-c,v, & x with alt-c,v, & x or similar. Also reenabling ctrl-a support.What's wrong with the X button to close a dialog? That's universal.. escape isn't as apps tend to do different things when you press escape.
And what about enter? I can't begin to tell how I hate apps that do something when I press enter when I expected a linewrap instead. If you put enter as OK (as an example) in a codec config, then you suddenly can't force a value in a up/down element anymore (first you type, then you press enter so the value is taken into account without you having to enter another control).
As far as the shortcuts go.. do you have a good alternative (and while you're at it, can make them actually show up? Everything is written so that the menu should have underlined keys.. but they just don't show up).. since they don't show up it's so much more important that they are apparent when you look at the menu.. it can't be cryptic when you can't see what kind of shortcuts are available.
I'd like to make it so that when you click on an entry, the numbers will be loaded back in for you to edit, "add" becomes "update" (instead of needing a separate button).But you still need those two buttons.. how else are you going to add a new zone? Via update? That would be extremely confusing.
check
1st August 2006, 10:41
I'm with you on the enter button - it should be used for line breaks only - but the shortcuts in MeGUI are seriously messed up. Many times I've gone to copy something only to have the calculator pop up. Althouth the Chapter Creator only has 'C' initials, cut copy pasta have been using ctrl-x/c/v for too long to lightly mess with.
Also, while we're on the subject, where is ctrl-w for closing windows? I use this command all the time for most programs, but it's suspiciously absent in MeGUI.
foxyshadis
1st August 2006, 10:59
I dislike not having esc because I hate switching from keyboard to mouse, hate hunting for the x unless I'm near it already, and it's the standard cancel button for dialogs. Enter I don't care much about, it's mainly standard usage in messageboxes which this definitely isn't, I shouldn't have mentioned it.
Label hints already show up, but if "Show extra keyboard help in programs" in windows accessibility options is unchecked, you have to press Alt first.
As for zones, my idea was to make the button switch between add and update labels, but that's potentially confusing and realistically doesn't cover all expected possibilities; having to click off the list or on a pre-made "New Zone" line vs just hitting the add button. Add can overlap the functionality of update, with or without a confirmation box, but update doesn't really overlap add. So it will less new than I thought, mostly loading a zone's options in when clicked on, overwriting existing zone bounds, and synching update's bounds checking and behavior to add's. (Right now it seems to have none.)
Check, all standard windows accellerators are hooked by megui and disabled atm. =\
Doom9
1st August 2006, 12:18
You can close apps and windows with Alt-F4.. that's the universal shortcut, notd escape and not something with W (I've never even heard of that).
it's mainly standard usage in messageboxesI don't know what kind of programs you've used but if I could, I'd have given a couple software writers a good beating for making the Enter button do something in an app, especially if it does something irreversible. No way will I allow megui to ever become such an app where I have to fear for my life when meeting one of the users of my app.
And I find it suspcious that people can just complain but not make any productive suggestions with regards to the shortcuts.. if you have no productive input, it's often better not to say anything at all.
Sharktooth
1st August 2006, 12:45
0.2.3.2182
Commit by Sharx1976:
- Cosmetics on the xvid panel, plus enabling custom commandline.
- Packed bistream fix.
(both patches by foxyshadis)
Sharktooth
1st August 2006, 13:00
0.2.3.2183
Commit by Sharx1976:
- Fix: Unchecking lossless in x264 configuration now re-enables the bitrate/quantizer textbox
foxyshadis
1st August 2006, 13:11
And I find it suspcious that people can just complain but not make any productive suggestions with regards to the shortcuts.. if you have no productive input, it's often better not to say anything at all.
If you're asking for suggestions, the current assignments are not unreasonable, using alt instead of ctrl. Additions include:
Alt-b: Bitrate calc.
Alt-o: Open video file.
Alt-e: One click
Alt-u: Update.
Alt-m: Pop up tools->muxer menu. (Or a dialog to the same effect so it doesn't go poof when the mouse waves over it?)
Alt-n: Minimize. (Why alt-n? Because alt-shift-n has been minimize since windows 1.0.)
Alt-p: Import profiles
Alternates:
Alt-v: Open video.
Alt-a: Open audio.
And do the validation when you hit "Enqueue".
Alt-i: Import profiles
Alt-p: Export profiles (But I really think importing is more closely associated with the general concept of profiles... oh well.)
And we start hitting letter pressure at that point; if you want to have Enqueue be an accellerator you can steal e and give r to one click encoder. Ctrl can be mixed in if desired, but all alt is nice for consistency until you run out. (Alt-shift-v and alt-shift-a respectively for enqueue? ctrl-shift-v/a for config? Now this is getting silly.) Either way, free up View's mnemonic and give that menu another name (or, howabout dumping view and minimize altogether and using the old-fashioned left-corner "shift" menu, placing process info in tools).
You might notice I also reordered the tab stops (that is the most amazing VS2005 feature I've never heard of, you have to try it) in xvid and intend to do so for the other panels, to make tabbing through a little easier. Part of making life easier for keyboardists.
Sharktooth
1st August 2006, 14:08
new option in x264: --threads=auto to detect number of cpus
but we already have our cpu # detection code and we set the x264 and other codecs threads (where applicable) accordingly.
should we let x264 choose the # of threads or keep the current behaviour?
Sharktooth
1st August 2006, 15:04
0.2.3.2184
Commit by Sharx1976:
- Fixed xvid custom commandline options in CommandlineGenerator.cs
Sharktooth
1st August 2006, 15:38
0.2.3.2185
Commit by Sharx1976:
- Several cosmetic fixes
check
2nd August 2006, 03:56
Ok, I'll also put my money where my mouth is ;) - here are some suggestions. I also think it would be worth reordering the tools menu to something more in line with the expected workflow. As an addendum to my previous comments about keeping default windows shortcuts as they are - I enjoy having other custom shortcuts to take arbitrary shortcut letters that are simply easy to reach with one hand - so I can keep one hand on the mouse.
I prefer alt for new windows & similar and ctrl for same window commands.
o Open: ctrl-o. Having separate extensions for audio/video doesn't seem to smart, would there be some way to use one command to also ask for "open as"?
o Close window / quit (with confirmation): ctrl-w alt-x.
o d2v creator: alt-1 alt-d
o Avisynth Creator: alt-2 alt-a
o Bitrate Calc: alt-3 alt-b
o One click encoder: alt-4 alt-r
o Chapter Creator: alt-5 alt-c
o Muxers: alt-6 alt-e alt-m
o AVC Matrix Editor: alt-9
o AVC level - move to a button, either inside x264 config or in the video input config which only shows up when x264 is selected. If you want to keep it in the menu, shortcut: alt-0
o Profile management. Possibly have a large 'profile centre' sort of thing where you can access, import and delete all profile types. If so, the one click setup would get integrated here too. No shortcut.
o One click setup: No shortcut.
o Settings: alt-, .This is the mac shortcut - there's no equivalent for windows but I always expect it - even if it's rare I get to use it ;)
o Update: No shortcut.
Will add more as I remember what i'm missing.
Doom9
2nd August 2006, 09:46
Why alt-n? Because alt-shift-n has been minimize since windows 1.0.hmm... I've never heard of that so I tried on this w2k box I'm currently on.. Alt-N does nothing, Alt-Shift-N does nothing, Alt-Ctrl-N does nothing, only Ctrl-N does something (in Firefox and IE it opens a new windows, in windows explorer it doesn't do anything).
should we let x264 choose the # of threads or keep the current behaviour?is that new option in any way better than what we currently use? The disadvantages are: it's probably hardware controlled so even if you boot up with /onecpu, an asm based cpu detection would probably still report two cores, and we have other codecs that don't have an autodetection so the current code is still required.
As far as profiles go.. export: megui saves all profiles upon exit so that is redundant. Import: copying profiles to the proper place equals import so once again I think this is redundant.
foxyshadis
2nd August 2006, 11:20
Did I say alt-shift? I meant alt-space followed by n. Anyway, a real minimize icon on the upper right is still more useful and standard than any shortcut.
Firefox and other Mozilla apps do not respond to those standard windows shortcuts. However, most win32 software with an icon in the upper left corner will. (ie, explorer.)
alt-space+m is still a handy trick when you have a primary monitor screw up and you need to call up display options and get it to the second montior blindly in a hurry. >.>
Anyway, back on topic: Check, it is possible to subclass the standard open dialog to put a video/audio radio button on it. Hmm. Not sure if it'd be worth it in this case, but an interesting thought. Adding filetype detection would be better, but avisynth can be both.
Does anyone really use profile libraries in zip files? They're nice and useful in theory, but Teegedeck is the only one I know who's made use of them.
berrinam
2nd August 2006, 11:48
The profile import is also used in Sharktooth's AVC profiles, and they integrate nicely with auto updates, since they install without any fuss. I implemented them so that people don't have to muck around with the files that MeGUI should really control, and they also manage extra dependencies, like one click relying on other profiles, and CQM files.
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.