View Full Version : MeGUI development
dimzon
7th March 2006, 18:17
what about such "logo"
http://img437.imageshack.us/img437/6491/mg324uc.png
http://img137.imageshack.us/img137/5025/mg506fm.png
http://img137.imageshack.us/img137/7938/mg728ad.png
buzzqw
7th March 2006, 18:21
too much google like ;)
BHH
Richard Berg
7th March 2006, 18:33
Ok, but you still own me explanation? Why x264.exe insists on YV12 inputs?
He doesn't owe you anything. x264.exe already supports Avisynth, which allows you do to just about anything you want - why does it matter whether the conversion to YV12 happens within avisynth.dll or x264.exe? Conversion code is hard to get fast & 100% correct - why do you want the x264 devs to reinvent the wheel?
Doom9
7th March 2006, 20:55
we already have some submitted logos.. I guess I'm the only one who still remembers.
dimzon
8th March 2006, 00:50
@Doom9 and other Developers
Some words about exception handling http://www.artima.com/intv/handcuffs.html
Bill Venners: So you think the more common case is that callers don't explicitly handle exceptions in deference to a general catch clause further up the call stack?
Anders Hejlsberg: It is funny how people think that the important thing about exceptions is handling them. That is not the important thing about exceptions. In a well-written application there's a ratio of ten to one, in my opinion, of try finally to try catch. Or in C#, using statements, which are like try finally.
Bill Venners: What's in the finally?
Anders Hejlsberg: In the finally, you protect yourself against the exceptions, but you don't actually handle them. Error handling you put somewhere else. Surely in any kind of event-driven application like any kind of modern UI, you typically put an exception handler around your main message pump, and you just handle exceptions as they fall out that way. But you make sure you protect yourself all the way out by deallocating any resources you've grabbed, and so forth. You clean up after yourself, so you're always in a consistent state. You don't want a program where in 100 different places you handle exceptions and pop up error dialogs. What if you want to change the way you put up that dialog box? That's just terrible. The exception handling should be centralized, and you should just protect yourself as the exceptions propagate out to the handler.
Richard Berg
8th March 2006, 05:06
I guess I'm the only one who still remembers.
I didn't say anything about the previous logos because I thought they were hideous.
Who needs VS2005 Pro? I got an extra copy (not for resale).
Doom9
8th March 2006, 09:18
The exception handling should be centralized, and you should just protect yourself as the exceptions propagate out to the handler.So, I'll translate that: you have one huge method that handles every exception. In order to figure out where the exception is from, you need to either catch them locally and throw out a custom exception, or you will be unable to inform the user in a useful matter about what has gone wrong. And that, quite frankly, is insane. Cleaning up locally, yes, all the time, but throwing custom exceptions all over the place? I don't think so. Say you have a db connection and your sql SP causes an exception and you've used a using statement.. so the db connection is properly cleaned up despite the exception.. but what do you do with the exception? Say you need your method to still do something after cleaning up, you can't just break out the generic exception handler. In my case, I have methods that do combined SQL and Webservice calls.. first there's a webservice call, if it succeeds, there are two sql SPs that need to be called, if they fail, I need to call another webservice (well, same service, different method.. to clean up everything again), and if hte SQL statements succed, yet a few more webservice methods. The only way you can handle that with exceptions, is that you catch the sqlexception locally, throw a custom exception that is detailed enough so the generic exception handler knows it needs to call the cleanup method on the webservice. So you need to dive down the object hierarchy again, proably reinit classes because they are not known in the launching class, just to finish the cleanup. That's just ineffective beyond measure.
dimzon
8th March 2006, 10:47
I didn't say anything about the previous logos because I thought they were hideous.
Who needs VS2005 Pro? I got an extra copy (not for resale).
Hmm... I can get distributive itself from my work. So I need only a legal serial...
In this case I can use VC++ from VS2005 at home...
btw I'm not too much care about licensing problem bcz my homework (meGUI/BeHappy/AviSynth plugins) development is 100% non-profit so I even can steal serial from my work too... (Maybe it's even legal - my company is Microsoft Platinum Partner and has corporate licence on WinXP/VS/Office)
dimzon
8th March 2006, 10:57
@Doom9
void someMethod()
{
try
{
//...
}
catch(SomeSpecificException ex)
{
throw new ApplicationException("User friendly description", ex)
}
}
Doom9
8th March 2006, 13:28
@dimzon: yes, and then your generic exception handler has to have a 100 position switch.. really darned pretty, plus you separate the logic from where it belongs.. why should a GUI class be aware of what can go wrong in some very specific processing class, and more importantly, why should the GUI class provide means to get back to that other class and do something in response to the user response after he was presented some message? In the end, with that approach you end up placing logic that blongs into a separate class into the main gui class.. and potentially add code fragments of a 100 different classes to your main gui class. Doesn't that go against everything OO stands for? It's like having one person in my company that is aware of sales tasks, finance tasks, engineering tasks, development tasks, installation tasks, building maintenance tasks, etc.
dimzon
8th March 2006, 13:38
@dimzon: yes, and then your generic exception handler has to have a 100 position switch..
Actually no. It's just
try
{
//...
}
catch(ApplicationException ae)
{
// Normal error
MessageBox.Show(ae.Message);
}
catch(Exception ue)
{
// Unexpected error
MessageBox.Show(ue.ToString());
}
Doom9
8th March 2006, 15:08
no, not at all. You don't just need to inform the user that something has gone wrong, you also often need to do something after the exception has ocurred. Not only freeing up used resources, but gracefully exiting.. like in my example from work where I need to go back and send some cleanup commands to the webservice (I'm adding project to project server.. if I create a project via webservice, and the sql commands fail, it's not enough to inform the user about an errror.. I need a rollback and since the webservice can't do that, I need to tell it to delete the project again.. and that deletion command most certainly doesn't belong in the GUI class but right there with all the other webservice calls and sql commands (naturally, sql commands are sent and processed in a different class than the one that sends webservice calls).
dimzon
8th March 2006, 16:11
no, not at all. You don't just need to inform the user that something has gone wrong, you also often need to do something after the exception has ocurred.
Yes, off couse sometimes it's requed.
like in my example from work where I need to go back and send some cleanup commands to the webservice (I'm adding project to project server.. if I create a project via webservice, and the sql commands fail, it's not enough to inform the user about an errror.. I need a rollback and since the webservice can't do that, I need to tell it to delete the project again.. and that deletion command most certainly doesn't belong in the GUI class but right there with all the other webservice calls and sql commands (naturally, sql commands are sent and processed in a different class than the one that sends webservice calls).
Yes, I know such techique. AviSyhthAudioEncoder use same for output file cleanup. There are special term for it : "Compensating transaction" - some actions to emulate transactions in non-transactional enviroment like filesystem or stateless webService
In such case I prefer such pattern
try
{
//...
}
catch(Exception e)
{
PerformSomeCompensation();
throw; // rethrow same error
}
Or
try
{
//...
}
catch(SomeExpectedException e)
{
PerformSomeCompensation();
throw new ApplicationException("User friendly mesage", e); // rethrow new error
}
In this case I perform some compensation logic so my state still valid BUT most error handling (like user notification) still placed in centralized error handler...
Doom9
8th March 2006, 16:40
you don't know exactly which state you're in when the exception is thrown... that's why I catch my sql exception right there, and report an error back to the caller, which in turn can either continue doing its work, or perform the rollback in case an error is signalled. And after that, an appropriate error message is presented (or rather, logged since this is a non user supervised process).
Regardless of all the teach you on msdn and the certifications, there's also a part about throwing errors being the opposite of resource friendly, so with each catch and rethrow you effectively increase the ineffectiveness of your software.. and there ain't nothing taking that away no matter how you turn it. that's why I prefer the catch, process and do whatever is applicable approach rather than the catch, process and rethrow (and then on top of the additional context switch having to have even more code to handle the rethrown exception) approch.
dimzon
8th March 2006, 16:52
Regardless of all the teach you on msdn and the certifications, there's also a part about throwing errors being the opposite of resource friendly, so with each catch and rethrow you effectively increase the ineffectiveness of your software.. and there ain't nothing taking that away no matter how you turn it. that's why I prefer the catch, process and do whatever is applicable approach rather than the catch, process and rethrow (and then on top of the additional context switch having to have even more code to handle the rethrown exception) approch.
Keep in mind - error-meaning Exception is something wich must not occur in 99.9999999% and if exception means error you doesn't worry about performance
Raithmir
8th March 2006, 22:34
What's the current opinion on migrating to SVN?... It'd be nice if I didn't have to have both SVN and CVS installed :D
ChronoCross
9th March 2006, 00:17
What's the current opinion on migrating to SVN?... It'd be nice if I didn't have to have both SVN and CVS installed :D
one only will suffice. it's hard to keep both of them up to date. I like svn but that's already known. but currently it is only hosted on cvs.
Sharktooth
9th March 2006, 00:27
a SVN migration is painless though...
max-holz
12th March 2006, 11:11
I have tested sourceforge svn with another project; it's not fast as x264's svn but it's not bad, certainly better that cvs.
Sharktooth
13th March 2006, 13:56
new binaries up on SF (2108).
dimzon
13th March 2006, 22:25
Can ANYBODY tell me why "Company Name" in MeGUI is shown as www.doom9.net
Sharktooth
13th March 2006, 22:50
what's wrong with it?
dimzon
14th March 2006, 00:01
what's wrong with it?
i belive it must be
www.doom9.org
not
www.doom9.net
Edit: Oh sorry, never know www.doom9.net is valid too (always use www.doom9.org )
dimzon
15th March 2006, 13:29
@Doom9
Any news about Your refactoring? Please, keep us informed!
Doom9
15th March 2006, 19:23
if I'm not posting that means nothing is happening. I have more than a full plate at work, trouble with the IRS and my ISP so I don't feel like even looking at code when I get home from work.
Sharktooth
16th March 2006, 12:22
CVS Update:
0.2.3.2109 16 March 2006
Commit by Sharx1976:
- Added a file type of all supported audio formats to the audio open dialog and defaulted to that (patch by SysKin).
Sharktooth
16th March 2006, 12:46
CVS Update:
0.2.3.2110 16 March 2006
Commit by Sharkx1976
- Fixed a bug in ChapterCreator.cs. If you want to add a chapter in the middle of an existing list the programm lost all chapter after the new one(+1). (patch by IMOON)
ChronoCross
16th March 2006, 19:48
I won't be bale to make another build until the end of the weekend as I'm fighting off a nasty bit of Food poisoning I got from the school cafeteria.
berrinam
16th March 2006, 20:34
0.2.3.2111 16 March 2006
Commit by berrinam:
- Altered Source Detector to use IsCombedTIVTC instead of IsCombed. TIVTC.dll is now required for Source Detection
- Fixed bug with checking lossless mode in x264 Encoder Configuration -- it would disable encoding mode, but not re-enable it
- Removed useless LoadPlugin(<dgdecode>) line at the beginning of generated AviSynth scripts. dgdecode.dll is required in the AviSynth plugins anyway
berrinam
16th March 2006, 21:41
0.2.3.2112 16 March 2006
Commit by berrinam:
- Fixed up AviSynth script generation from the bug I added in 0.2.3.2111
- Removed the remaining few #if FULL bits in the code. These were causing SAR calculation to be forgotten.
berrinam
17th March 2006, 08:42
0.2.3.2113 17 March 2006
Commit by berrinam:
- Fixed error when opening a first pass mode in AutoEncode
Sharktooth
19th March 2006, 14:33
x264 rev 474 supports a new option: --thread-input
it separates the --thread-input from --threads and gives a nice speedup on dual core/dual processor configurations.
Sharktooth
19th March 2006, 14:59
CVS Update:
0.2.3.2114 19 March 2006
Commit by Sharkx1976:
- Added support for --thread-input x264 option in CommandLineGenerator.cs
Note: it gets automatically added for --threads > 1.
bratao
19th March 2006, 23:52
I´m witout my work machine, but should someone look at aviMuxer ?
With auto encode, it work fine, but if i go to Menu, Muxer-> Avi,
Add a video and audio, set to Vbr and ok..
It allocate the all Video and Hang for hour , after that killed the program..
This is the nomal becavior ?
Doom9
20th March 2006, 09:47
mencoder is a shitty avi muxer I'm afraid.. messes up half the time, especially when your input is AC3. In the future, avi muxing will be done differently.
bratao
20th March 2006, 13:53
I dont think that is a mencoder error but a Megui.
Im setuping a debbuger machine to help with more info.
But like a already say, the merge feature of 1-click always work great, but the manual merge, kill the pc
Sharktooth
21st March 2006, 02:44
--subme 7 is now in SVN.
MeGUI-svn CC can be removed.
leowai
21st March 2006, 03:43
--subme 7 is now in SVN.
MeGUI-svn CC can be removed.
I've different point of view. I think MeGUI-svn should stick with SVN of x264. So, I would suggest (temperary) remove 'MeGUI' version rather than 'MeGUI-svn' version. Because now 'MeGUI' is only for x264 with experimental patches and 'MeGUI-svn' is named for x264 WITHOUT experimental patches.
Or in future releases, 'MeGUI' will only for SVN build of x264, 'MeGUI-Exp' (or other names) for x264 with experimental patches?
Kostarum Rex Persia
21st March 2006, 04:03
No, MeGUI-svn should be removed now.
ChronoCross
21st March 2006, 05:18
even the current full megui doesn't have settings for AQ. it is full svn right now. there is no feature in full that isn't in the current svn. svn conditional compiling should be removed as they are now equal.
foxyshadis
21st March 2006, 05:19
I think profiles based on patches should be relegated to custom command line, unless they extend existing options, like subme 7 did. The upside is it's obvious that it's experimental and requires no extra dev support, the downside is megui won't have the logic to dynamically add/remove it.
leowai
21st March 2006, 07:16
there is no feature in full that isn't in the current svn. svn conditional compiling should be removed as they are now equal.
Ya. I know about this. I just wondering how are you going to name future release of MeGUI. For me, I'm thinking of 'MeGUI-svn' as major build since most ppl use svn build of x264. 'MeGUI-full' is an add-on build for x264 with experimental patches. :confused:
In future release, how about making 'MeGUI' as use for SVN build of x264 while 'MeGUI-Full' is for x264 with experimental patches?
Sorry here if what I state above seems to be confusing. :confused:
berrinam
21st March 2006, 07:25
I'm all for managing it through custom command lines. The whole point about patches is that they are UNSTABLE, and since we do eventually want MeGUI to be stable, this is really the only way we can resolve the two.
Also, with almost 2000 posts, perhaps it's a good idea to close this thread and start afresh?
ChronoCross
21st March 2006, 08:26
Honestly I think if megui is going to be competitive and actually have public releases it should not have more than one way of compiling.
A full version is all we should have. it's not that hard to use. if we want to control svn features we could simply make a checkbox in the x264 dialog to block out all none svn options. IT'll make megui more stable in the end cause you won't have 2000 conditional versions floating around. next thing you know we'll need to have a conditional compilation for avisynth 3.0 ro some other thing that megui supports simply because we have become accustomed to catering tot he wants of a single svn. if we made a conditional version for each program based on it's cvs or svn we will have waaay too many compiling options.
Sharktooth
21st March 2006, 12:37
well, since there is no difference in options (now) "svn" CC could be safely removed.
in the meantime i'm working on a method to automatically distinguish custom builds from svn builds without the need of CC.
Kostarum Rex Persia
21st March 2006, 14:55
well, since there is no difference in options (now) "svn" CC could be safely removed.
in the meantime i'm working on a method to automatically distinguish custom builds from svn builds without the need of CC.
Vety good idea, Sharktooth.:goodpost:
Romario
21st March 2006, 17:18
No, MeGUI-svn should be removed now.
Yes, you are right, KRP.
berrinam
21st March 2006, 20:05
Look, will you two (KRP and Romario) stop polluting the MeGUI dev thread? You're not actually contributing anything to the discussion. If you raised some points about the argument, then that would be interesting, but as it is, you are just spamming. Once again, you are breaking rule 11:
11) Don't post just to increase your number of posts. If you have nothing to say on a certain matter then don't post.
smok3
21st March 2006, 20:51
x264 rev 474 supports a new option: --thread-input
it separates the --thread-input from --threads and gives a nice speedup on dual core/dual processor configurations.
is there '--threads auto' or similar?
---
and a quick test between old ce-quicktime and new one:
old:
x264 [info]: PSNR Mean Y:35.120 U:41.762 V:40.610 Avg:36.328 Global:35.707 kb/s: 504.58
new:
x264 [info]: PSNR Mean Y:35.418 U:41.797 V:40.624 Avg:36.590 Global:35.983 kb/s: 505.31
(could that be significant?) - i can actually see a difference on few frames, but i didnt really check if they are of the same type, anyway it seems that this new preset is a bit harsh when dealing with such low bitrates on this specific sample - only judging from this few frames.
Sharktooth
21st March 2006, 21:31
no "--threads auto" in x264, but megui can do it (check the settings).
also .2/.3db in PSNR usually means better quality...
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.